Add tests for android.hidl.token@1.0.
Test: hidl_test
Bug: 33058559
Change-Id: I6ab11620ca56334e79695661618d6225a800977e
diff --git a/test/Android.bp b/test/Android.bp
index b5bd3f2..4ac4d64 100644
--- a/test/Android.bp
+++ b/test/Android.bp
@@ -24,7 +24,8 @@
"android.hardware.tests.inheritance@1.0",
"android.hardware.tests.pointer@1.0",
"android.hardware.tests.memory@1.0",
- "android.hidl.memory@1.0", // TODO remove this line when b/32185232 is fixed
+ "android.hidl.memory@1.0",
+ "android.hidl.token@1.0",
],
static_libs: ["libgtest"],
diff --git a/test/main.cpp b/test/main.cpp
index fb0e773..d40de59 100644
--- a/test/main.cpp
+++ b/test/main.cpp
@@ -7,6 +7,8 @@
#include <android/hidl/memory/1.0/IAllocator.h>
#include <android/hidl/memory/1.0/IMemory.h>
+#include <android/hidl/token/1.0/ITokenManager.h>
+
#include <android/hardware/tests/foo/1.0/IFoo.h>
#include <android/hardware/tests/foo/1.0/IFooCallback.h>
#include <android/hardware/tests/foo/1.0/BnSimple.h>
@@ -106,6 +108,7 @@
using ::android::hidl::manager::V1_0::IServiceNotification;
using ::android::hidl::memory::V1_0::IAllocator;
using ::android::hidl::memory::V1_0::IMemory;
+using ::android::hidl::token::V1_0::ITokenManager;
using ::android::sp;
using ::android::wp;
using ::android::to_string;
@@ -317,6 +320,7 @@
public:
sp<IServiceManager> manager;
+ sp<ITokenManager> tokenManager;
sp<IAllocator> ashmemAllocator;
sp<IMemoryTest> memoryTest;
sp<IFetcher> fetcher;
@@ -343,6 +347,10 @@
ASSERT_NE(manager, nullptr);
ASSERT_TRUE(manager->isRemote()); // manager is always remote
+ tokenManager = ITokenManager::getService("manager");
+ ASSERT_NE(tokenManager, nullptr);
+ ASSERT_TRUE(tokenManager->isRemote()); // tokenManager is always remote
+
// getStub is true if we are in passthrough mode to skip checking
// binderized server, false for binderized mode.
@@ -447,6 +455,7 @@
class HidlTest : public ::testing::Test {
public:
sp<IServiceManager> manager;
+ sp<ITokenManager> tokenManager;
sp<IAllocator> ashmemAllocator;
sp<IMemoryTest> memoryTest;
sp<IFetcher> fetcher;
@@ -477,6 +486,7 @@
env = gPassthroughEnvironment;
}
manager = env->manager;
+ tokenManager = env->tokenManager;
ashmemAllocator = env->ashmemAllocator;
memoryTest = env->memoryTest;
fetcher = env->fetcher;
@@ -644,6 +654,29 @@
}
}
+TEST_F(HidlTest, TestToken) {
+ Return<uint64_t> ret = tokenManager->createToken(manager);
+ EXPECT_OK(ret);
+ uint64_t token = ret;
+
+ EXPECT_OK(tokenManager->get(token, [&](const auto &store) {
+ EXPECT_NE(nullptr, store.get());
+ sp<IServiceManager> retManager = IServiceManager::castFrom(store);
+
+ // TODO(b/33818800): should have only one Bp per process
+ // EXPECT_EQ(manager, retManager);
+
+ EXPECT_NE(nullptr, retManager.get());
+ }));
+
+ Return<bool> unregisterRet = tokenManager->unregister(token);
+
+ EXPECT_OK(unregisterRet);
+ if (unregisterRet.isOk()) {
+ EXPECT_TRUE(ret);
+ }
+}
+
TEST_F(HidlTest, TestSharedMemory) {
const uint8_t kValue = 0xCA;
hidl_memory mem_copy;