From 14ab40b9e792212e23fccb1fe6f35a758d7f71ac Mon Sep 17 00:00:00 2001 From: Zhuoyao Zhang Date: Thu, 8 Feb 2018 20:57:30 -0800 Subject: [PATCH] Convert keymaster hal test to use VtsHalHidlTargetTestEnvBase Bug: 64203181 Test: make vts vts-tradefed run vts -m VtsHalKeymasterV3_0Target Change-Id: I6f245996749a53418b71f516ba782fe9d4321501 --- .../functional/keymaster_hidl_hal_test.cpp | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/keymaster/3.0/vts/functional/keymaster_hidl_hal_test.cpp b/keymaster/3.0/vts/functional/keymaster_hidl_hal_test.cpp index e7b222a1fb..d5c006ea8f 100644 --- a/keymaster/3.0/vts/functional/keymaster_hidl_hal_test.cpp +++ b/keymaster/3.0/vts/functional/keymaster_hidl_hal_test.cpp @@ -33,19 +33,14 @@ #include "key_param_output.h" #include +#include #include "attestation_record.h" #include "openssl_utils.h" using ::android::sp; - using ::std::string; -// This service_name will be passed to getService when retrieving the keymaster service to test. To -// change it from "default" specify the selected service name on the command line. The first -// non-gtest argument will be used as the service name. -string service_name = "default"; - static bool arm_deleteAllKeys = false; static bool dump_Attestations = false; @@ -417,6 +412,20 @@ constexpr uint64_t kOpHandleSentinel = 0xFFFFFFFFFFFFFFFF; } // namespace +// Test environment for Keymaster HIDL HAL. +class KeymasterHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase { + public: + // get the test environment singleton + static KeymasterHidlEnvironment* Instance() { + static KeymasterHidlEnvironment* instance = new KeymasterHidlEnvironment; + return instance; + } + + virtual void registerTestServices() override { registerTestService(); } + private: + KeymasterHidlEnvironment() {} +}; + class KeymasterHidlTest : public ::testing::VtsHalHidlTargetTestBase { public: void TearDown() override { @@ -428,7 +437,8 @@ class KeymasterHidlTest : public ::testing::VtsHalHidlTargetTestBase { // SetUpTestCase runs only once per test case, not once per test. static void SetUpTestCase() { - keymaster_ = IKeymasterDevice::getService(service_name); + keymaster_ = ::testing::VtsHalHidlTargetTestBase::getService( + KeymasterHidlEnvironment::Instance()->getServiceName()); ASSERT_NE(keymaster_, nullptr); ASSERT_TRUE( @@ -4190,8 +4200,10 @@ TEST_F(KeyDeletionTest, DeleteAllKeys) { } // namespace android int main(int argc, char** argv) { + using android::hardware::keymaster::V3_0::test::KeymasterHidlEnvironment; + ::testing::AddGlobalTestEnvironment(KeymasterHidlEnvironment::Instance()); ::testing::InitGoogleTest(&argc, argv); - std::vector positional_args; + KeymasterHidlEnvironment::Instance()->init(&argc, argv); for (int i = 1; i < argc; ++i) { if (argv[i][0] == '-') { if (std::string(argv[i]) == "--arm_deleteAllKeys") { @@ -4200,14 +4212,8 @@ int main(int argc, char** argv) { if (std::string(argv[i]) == "--dump_attestations") { dump_Attestations = true; } - } else { - positional_args.push_back(argv[i]); } } - if (positional_args.size()) { - ALOGI("Running keymaster VTS against service \"%s\"", positional_args[0].c_str()); - service_name = positional_args[0]; - } int status = RUN_ALL_TESTS(); ALOGI("Test result = %d", status); return status;