diff options
author | Howard Chen <howardsoc@google.com> | 2018-02-26 04:14:01 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-02-26 04:14:01 +0000 |
commit | abb32bcd77674322c1c9db0ed59ef1bc4118bfc0 (patch) | |
tree | 57e038af973a830f2ae31eee53aa57e50309c2be | |
parent | f3b5b940a2b68e7f9238378aea9f535a151d2a03 (diff) | |
parent | aff573f340f9daff0c26a1eb684f89830dab5ac4 (diff) | |
download | libhidl-abb32bcd77674322c1c9db0ed59ef1bc4118bfc0.tar.gz |
Merge "Add test cases for MemoryDealer" am: 566c383bf8
am: aff573f340
Change-Id: I556f9c381681ab725dd9f9db34b877a13e7ca2b4
-rw-r--r-- | libhidlcache/libhidlcache_test.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/libhidlcache/libhidlcache_test.cpp b/libhidlcache/libhidlcache_test.cpp index ce21c6f..e514460 100644 --- a/libhidlcache/libhidlcache_test.cpp +++ b/libhidlcache/libhidlcache_test.cpp @@ -20,6 +20,7 @@ #include <android/hidl/memory/1.0/IMemory.h> #include <android/hidl/memory/token/1.0/IMemoryToken.h> #include <gtest/gtest.h> +#include <hidlcache/MemoryDealer.h> #include <hidlcache/mapping.h> #include <hidlmemory/HidlMemoryToken.h> #include <hidlmemory/mapping.h> @@ -105,6 +106,51 @@ TEST_F(HidlCacheTest, TestAll) { hardware::HidlCacheWhiteBoxTest(); } +TEST_F(HidlCacheTest, MemoryDealer) { + using ::android::hardware::HidlMemory; + using ::android::hardware::hidl_memory; + using ::android::hardware::HidlMemoryDealer; + using ::android::hidl::allocator::V1_0::IAllocator; + using ::android::hidl::memory::block::V1_0::MemoryBlock; + + sp<IAllocator> ashmemAllocator; + + ashmemAllocator = IAllocator::getService("ashmem"); + sp<HidlMemory> m1; + sp<HidlMemory> m2; + // test MemoryDealer + EXPECT_OK(ashmemAllocator->allocate(2048, [&m1](bool success, const hidl_memory& mem) { + ASSERT_TRUE(success); + m1 = HidlMemory::getInstance(mem); + })); + + EXPECT_OK(ashmemAllocator->allocate(4096, [&m2](bool success, const hidl_memory& mem) { + ASSERT_TRUE(success); + m2 = HidlMemory::getInstance(mem); + })); + + sp<HidlMemoryDealer> dealer; + + // m1 does not statisfy the alignment requirement and should fail. + dealer = HidlMemoryDealer::getInstance(*m1); + EXPECT_EQ(nullptr, dealer.get()); + + dealer = HidlMemoryDealer::getInstance(*m2); + EXPECT_NE(nullptr, dealer.get()); + + EXPECT_EQ(dealer->heap()->getSize(), 4096ULL); + MemoryBlock blk = dealer->allocate(1024); + EXPECT_TRUE(HidlMemoryDealer::isOk(blk)); + MemoryBlock blk2 = dealer->allocate(2048); + EXPECT_TRUE(HidlMemoryDealer::isOk(blk2)); + + MemoryBlock blk3 = dealer->allocate(2048); + EXPECT_FALSE(HidlMemoryDealer::isOk(blk3)); + dealer->deallocate(blk2.offset); + blk3 = dealer->allocate(2048); + EXPECT_TRUE(HidlMemoryDealer::isOk(blk3)); +} + int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); |