summaryrefslogtreecommitdiff
path: root/libhidlcache
diff options
context:
space:
mode:
authorHoward Chen <howardsoc@google.com>2018-01-10 17:26:13 +0800
committerHoward Chen <howardsoc@google.com>2018-01-19 10:25:03 +0800
commit280fa6ba39fc21b1e3c6f3193a91eb6590d3feff (patch)
treead11840850fdd61325a27589d2a7137426d8b530 /libhidlcache
parent5a1767d7b6154ce2d26ecf3f282255593e1445a3 (diff)
downloadlibhidl-280fa6ba39fc21b1e3c6f3193a91eb6590d3feff.tar.gz
Add test cases for MemoryDealer
Test memory allocate, deallocate and required alignment. Test: hidl_cache_test/ internal master/ sailfish Bug: 70309364 Change-Id: Id96eeac5e55cddf80588fb64a974a9bd7c57d2e5
Diffstat (limited to 'libhidlcache')
-rw-r--r--libhidlcache/libhidlcache_test.cpp46
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();