Merge "Support generation of make rule for vts profiler."
diff --git a/test/Android.bp b/test/Android.bp
index b5bd3f2..6c99082 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"],
@@ -39,7 +40,6 @@
"android.hardware.tests.inheritance@1.0-impl",
"android.hardware.tests.pointer@1.0-impl",
"android.hardware.tests.memory@1.0-impl",
- "android.hidl.memory@1.0-impl", // TODO remove this line when b/32185232 is fixed
],
cflags: [
diff --git a/test/main.cpp b/test/main.cpp
index fb0e773..e56608c 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,13 +347,17 @@
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
+
+ ashmemAllocator = IAllocator::getService("ashmem");
+ ASSERT_NE(ashmemAllocator, nullptr);
+ ASSERT_TRUE(ashmemAllocator->isRemote()); // allocator is always remote
+
// getStub is true if we are in passthrough mode to skip checking
// binderized server, false for binderized mode.
- ashmemAllocator = IAllocator::getService("ashmem", gMode == PASSTHROUGH /* getStub */);
- ASSERT_NE(ashmemAllocator, nullptr);
- ASSERT_EQ(ashmemAllocator->isRemote(), gMode == BINDERIZED);
-
memoryTest = IMemoryTest::getService("memory", gMode == PASSTHROUGH /* getStub */);
ASSERT_NE(memoryTest, nullptr);
ASSERT_EQ(memoryTest->isRemote(), gMode == BINDERIZED);
@@ -427,7 +435,6 @@
ALOGI("Environment setup beginning...");
size_t i = 0;
- addServer<IAllocator>("ashmem");
addServer<IMemoryTest>("memory");
addServer<IChild>("child");
addServer<IParent>("parent");
@@ -447,6 +454,7 @@
class HidlTest : public ::testing::Test {
public:
sp<IServiceManager> manager;
+ sp<ITokenManager> tokenManager;
sp<IAllocator> ashmemAllocator;
sp<IMemoryTest> memoryTest;
sp<IFetcher> fetcher;
@@ -477,6 +485,7 @@
env = gPassthroughEnvironment;
}
manager = env->manager;
+ tokenManager = env->tokenManager;
ashmemAllocator = env->ashmemAllocator;
memoryTest = env->memoryTest;
fetcher = env->fetcher;
@@ -644,6 +653,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;