Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 14ab40b9 authored by Zhuoyao Zhang's avatar Zhuoyao Zhang
Browse files

Convert keymaster hal test to use VtsHalHidlTargetTestEnvBase

Bug: 64203181
Test: make vts
      vts-tradefed run vts -m VtsHalKeymasterV3_0Target

Change-Id: I6f245996749a53418b71f516ba782fe9d4321501
parent 8f7ff573
Loading
Loading
Loading
Loading
+20 −14
Original line number Diff line number Diff line
@@ -33,19 +33,14 @@
#include "key_param_output.h"

#include <VtsHalHidlTargetTestBase.h>
#include <VtsHalHidlTargetTestEnvBase.h>

#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<IKeymasterDevice>(); }
   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<IKeymasterDevice>(
            KeymasterHidlEnvironment::Instance()->getServiceName<IKeymasterDevice>());
        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<std::string> 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,13 +4212,7 @@ 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);