From 809ea677bfc6874d715c2969a06e071a6fdce7c4 Mon Sep 17 00:00:00 2001 From: nelsonli Date: Tue, 19 Nov 2019 16:04:56 +0800 Subject: [PATCH] [vts-core] add VtsHalBiometricsFaceV1_0TargetTest to vts-core Convert VtsHalBiometricsFaceV1_0TargetTest to be parameterized test and add it to vts-core Bug: 142397658 Bug: 144744276 Test: $atest VtsHalBiometricsFaceV1_0TargetTest Change-Id: I7b5839619885f05ed8a24d6c2fefe0ffa92cb644 --- biometrics/face/1.0/vts/functional/Android.bp | 2 +- .../VtsHalBiometricsFaceV1_0TargetTest.cpp | 71 +++++++------------ 2 files changed, 27 insertions(+), 46 deletions(-) diff --git a/biometrics/face/1.0/vts/functional/Android.bp b/biometrics/face/1.0/vts/functional/Android.bp index fa68c4e8d7..f2598a7934 100644 --- a/biometrics/face/1.0/vts/functional/Android.bp +++ b/biometrics/face/1.0/vts/functional/Android.bp @@ -19,6 +19,6 @@ cc_test { defaults: ["VtsHalTargetTestDefaults"], srcs: ["VtsHalBiometricsFaceV1_0TargetTest.cpp"], static_libs: ["android.hardware.biometrics.face@1.0"], - test_suites: ["general-tests"], + test_suites: ["general-tests", "vts-core"], } diff --git a/biometrics/face/1.0/vts/functional/VtsHalBiometricsFaceV1_0TargetTest.cpp b/biometrics/face/1.0/vts/functional/VtsHalBiometricsFaceV1_0TargetTest.cpp index d3d738798b..ff3d282e52 100644 --- a/biometrics/face/1.0/vts/functional/VtsHalBiometricsFaceV1_0TargetTest.cpp +++ b/biometrics/face/1.0/vts/functional/VtsHalBiometricsFaceV1_0TargetTest.cpp @@ -20,9 +20,10 @@ #include #include -#include -#include #include +#include +#include +#include #include #include @@ -114,27 +115,11 @@ class FaceCallback : public ::testing::VtsHalHidlTargetCallbackBase(); } - - private: - FaceHidlEnvironment() = default; -}; - // Test class for the BiometricsFace HAL. -class FaceHidlTest : public ::testing::VtsHalHidlTargetTestBase { +class FaceHidlTest : public ::testing::TestWithParam { public: void SetUp() override { - mService = ::testing::VtsHalHidlTargetTestBase::getService( - FaceHidlEnvironment::Instance()->getServiceName()); + mService = IBiometricsFace::getService(GetParam()); ASSERT_NE(mService, nullptr); mCallback = new FaceCallback(); mCallback->SetWaitTimeoutDefault(kTimeout); @@ -157,7 +142,7 @@ class FaceHidlTest : public ::testing::VtsHalHidlTargetTestBase { // generateChallenge should always return a unique, cryptographically secure, // non-zero number. -TEST_F(FaceHidlTest, GenerateChallengeTest) { +TEST_P(FaceHidlTest, GenerateChallengeTest) { std::map m; for (int i = 0; i < kGenerateChallengeIterations; ++i) { Return ret = @@ -172,7 +157,7 @@ TEST_F(FaceHidlTest, GenerateChallengeTest) { } // enroll with an invalid (all zeroes) HAT should fail. -TEST_F(FaceHidlTest, EnrollZeroHatTest) { +TEST_P(FaceHidlTest, EnrollZeroHatTest) { // Filling HAT with zeros hidl_vec token(69); for (size_t i = 0; i < 69; i++) { @@ -189,7 +174,7 @@ TEST_F(FaceHidlTest, EnrollZeroHatTest) { } // enroll with an invalid HAT should fail. -TEST_F(FaceHidlTest, EnrollGarbageHatTest) { +TEST_P(FaceHidlTest, EnrollGarbageHatTest) { // Filling HAT with pseudorandom invalid data. // Using default seed to make the test reproducible. std::mt19937 gen(std::mt19937::default_seed); @@ -209,7 +194,7 @@ TEST_F(FaceHidlTest, EnrollGarbageHatTest) { } // setFeature with an invalid (all zeros) HAT should fail. -TEST_F(FaceHidlTest, SetFeatureZeroHatTest) { +TEST_P(FaceHidlTest, SetFeatureZeroHatTest) { hidl_vec token(69); for (size_t i = 0; i < 69; i++) { token[i] = 0; @@ -220,7 +205,7 @@ TEST_F(FaceHidlTest, SetFeatureZeroHatTest) { } // setFeature with an invalid HAT should fail. -TEST_F(FaceHidlTest, SetFeatureGarbageHatTest) { +TEST_P(FaceHidlTest, SetFeatureGarbageHatTest) { // Filling HAT with pseudorandom invalid data. // Using default seed to make the test reproducible. std::mt19937 gen(std::mt19937::default_seed); @@ -242,16 +227,16 @@ void assertGetFeatureFails(const sp& service, uint32_t faceId, ASSERT_TRUE(res.isOk()); } -TEST_F(FaceHidlTest, GetFeatureRequireAttentionTest) { +TEST_P(FaceHidlTest, GetFeatureRequireAttentionTest) { assertGetFeatureFails(mService, 0 /* faceId */, Feature::REQUIRE_ATTENTION); } -TEST_F(FaceHidlTest, GetFeatureRequireDiversityTest) { +TEST_P(FaceHidlTest, GetFeatureRequireDiversityTest) { assertGetFeatureFails(mService, 0 /* faceId */, Feature::REQUIRE_DIVERSITY); } // revokeChallenge should always return within the timeout -TEST_F(FaceHidlTest, RevokeChallengeTest) { +TEST_P(FaceHidlTest, RevokeChallengeTest) { auto start = std::chrono::system_clock::now(); Return ret = mService->revokeChallenge(); auto elapsed = std::chrono::system_clock::now() - start; @@ -260,14 +245,14 @@ TEST_F(FaceHidlTest, RevokeChallengeTest) { } // The call to getAuthenticatorId should succeed. -TEST_F(FaceHidlTest, GetAuthenticatorIdTest) { +TEST_P(FaceHidlTest, GetAuthenticatorIdTest) { Return ret = mService->getAuthenticatorId( [](const OptionalUint64& res) { ASSERT_EQ(Status::OK, res.status); }); ASSERT_TRUE(ret.isOk()); } // The call to enumerate should succeed. -TEST_F(FaceHidlTest, EnumerateTest) { +TEST_P(FaceHidlTest, EnumerateTest) { Return ret = mService->enumerate(); ASSERT_EQ(Status::OK, static_cast(ret)); auto res = mCallback->WaitForCallback(kCallbackNameOnEnumerate); @@ -275,21 +260,21 @@ TEST_F(FaceHidlTest, EnumerateTest) { } // The call to remove should succeed for any faceId -TEST_F(FaceHidlTest, RemoveFaceTest) { +TEST_P(FaceHidlTest, RemoveFaceTest) { // Remove a face Return ret = mService->remove(kFaceId); ASSERT_EQ(Status::OK, static_cast(ret)); } // Remove should accept 0 to delete all faces -TEST_F(FaceHidlTest, RemoveAllFacesTest) { +TEST_P(FaceHidlTest, RemoveAllFacesTest) { // Remove all faces Return ret = mService->remove(0); ASSERT_EQ(Status::OK, static_cast(ret)); } // Active user should successfully set to a writable location. -TEST_F(FaceHidlTest, SetActiveUserTest) { +TEST_P(FaceHidlTest, SetActiveUserTest) { // Create an active user Return ret = mService->setActiveUser(2, kFacedataDir); ASSERT_EQ(Status::OK, static_cast(ret)); @@ -300,7 +285,7 @@ TEST_F(FaceHidlTest, SetActiveUserTest) { } // Active user should fail to set to an unwritable location. -TEST_F(FaceHidlTest, SetActiveUserUnwritableTest) { +TEST_P(FaceHidlTest, SetActiveUserUnwritableTest) { // Create an active user to an unwritable location (device root dir) Return ret = mService->setActiveUser(3, "/"); ASSERT_NE(Status::OK, static_cast(ret)); @@ -311,7 +296,7 @@ TEST_F(FaceHidlTest, SetActiveUserUnwritableTest) { } // Active user should fail to set to a null location. -TEST_F(FaceHidlTest, SetActiveUserNullTest) { +TEST_P(FaceHidlTest, SetActiveUserNullTest) { // Create an active user to a null location. Return ret = mService->setActiveUser(4, nullptr); ASSERT_NE(Status::OK, static_cast(ret)); @@ -323,7 +308,7 @@ TEST_F(FaceHidlTest, SetActiveUserNullTest) { // Cancel should always return CANCELED from any starting state including // the IDLE state. -TEST_F(FaceHidlTest, CancelTest) { +TEST_P(FaceHidlTest, CancelTest) { Return ret = mService->cancel(); // check that we were able to make an IPC request successfully ASSERT_EQ(Status::OK, static_cast(ret)); @@ -333,7 +318,7 @@ TEST_F(FaceHidlTest, CancelTest) { EXPECT_EQ(FaceError::CANCELED, res.args->error); } -TEST_F(FaceHidlTest, OnLockoutChangedTest) { +TEST_P(FaceHidlTest, OnLockoutChangedTest) { // Update active user and ensure onLockoutChanged was called. Return ret = mService->setActiveUser(kUserId + 1, kFacedataDir); ASSERT_EQ(Status::OK, static_cast(ret)); @@ -345,11 +330,7 @@ TEST_F(FaceHidlTest, OnLockoutChangedTest) { } // anonymous namespace -int main(int argc, char** argv) { - ::testing::AddGlobalTestEnvironment(FaceHidlEnvironment::Instance()); - ::testing::InitGoogleTest(&argc, argv); - FaceHidlEnvironment::Instance()->init(&argc, argv); - int status = RUN_ALL_TESTS(); - LOG(INFO) << "Test result = " << status; - return status; -} +INSTANTIATE_TEST_SUITE_P( + PerInstance, FaceHidlTest, + testing::ValuesIn(android::hardware::getAllHalInstanceNames(IBiometricsFace::descriptor)), + android::hardware::PrintInstanceNameToString);