Loading biometrics/fingerprint/2.1/vts/functional/VtsHalBiometricsFingerprintV2_1TargetTest.cpp +213 −232 Original line number Diff line number Diff line Loading @@ -16,14 +16,15 @@ #define LOG_TAG "fingerprint_hidl_hal_test" #include <VtsHalHidlTargetTestBase.h> #include <VtsHalHidlTargetTestEnvBase.h> #include <android-base/logging.h> #include <android-base/properties.h> #include <android/hardware/biometrics/fingerprint/2.1/IBiometricsFingerprint.h> #include <android/hardware/biometrics/fingerprint/2.1/IBiometricsFingerprintClientCallback.h> #include <gtest/gtest.h> #include <hidl/GtestPrinter.h> #include <hidl/HidlSupport.h> #include <hidl/HidlTransportSupport.h> #include <hidl/ServiceManagement.h> #include <utils/Condition.h> #include <cinttypes> Loading Loading @@ -183,23 +184,10 @@ class RemoveCallback : public FingerprintCallbackBase { std::promise<void> promise; }; // Test environment for Fingerprint HIDL HAL. class FingerprintHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase { public: // get the test environment singleton static FingerprintHidlEnvironment* Instance() { static FingerprintHidlEnvironment* instance = new FingerprintHidlEnvironment; return instance; } virtual void registerTestServices() override { registerTestService<IBiometricsFingerprint>(); } }; class FingerprintHidlTest : public ::testing::VtsHalHidlTargetTestBase { class FingerprintHidlTest : public ::testing::TestWithParam<std::string> { public: virtual void SetUp() override { mService = ::testing::VtsHalHidlTargetTestBase::getService<IBiometricsFingerprint>( FingerprintHidlEnvironment::Instance()->getServiceName<IBiometricsFingerprint>()); mService = IBiometricsFingerprint::getService(GetParam()); ASSERT_FALSE(mService == nullptr); /* Loading Loading @@ -230,22 +218,21 @@ class FingerprintHidlTest : public ::testing::VtsHalHidlTargetTestBase { sp<IBiometricsFingerprint> mService; }; // The service should be reachable. TEST_F(FingerprintHidlTest, ConnectTest) { TEST_P(FingerprintHidlTest, ConnectTest) { sp<FingerprintCallbackBase> cb = new FingerprintCallbackBase(); Return<uint64_t> rc = mService->setNotify(cb); ASSERT_NE(0UL, static_cast<uint64_t>(rc)); } // Starting the service with null callback should succeed. TEST_F(FingerprintHidlTest, ConnectNullTest) { TEST_P(FingerprintHidlTest, ConnectNullTest) { Return<uint64_t> rc = mService->setNotify(NULL); ASSERT_NE(0UL, static_cast<uint64_t>(rc)); } // Pre-enroll should always return unique, cryptographically secure, non-zero number TEST_F(FingerprintHidlTest, PreEnrollTest) { TEST_P(FingerprintHidlTest, PreEnrollTest) { std::map<uint64_t, uint64_t> m; for (unsigned int i = 0; i < kIterations; ++i) { Loading @@ -257,7 +244,7 @@ TEST_F(FingerprintHidlTest, PreEnrollTest) { } // Enroll with an invalid (all zeroes) HAT should fail. TEST_F(FingerprintHidlTest, EnrollInvalidHatTest) { TEST_P(FingerprintHidlTest, EnrollInvalidHatTest) { sp<ErrorCallback> cb = new ErrorCallback(); Return<uint64_t> rc = mService->setNotify(cb); ASSERT_NE(0UL, static_cast<uint64_t>(rc)); Loading @@ -276,7 +263,7 @@ TEST_F(FingerprintHidlTest, EnrollInvalidHatTest) { } // Enroll with an invalid (null) HAT should fail. TEST_F(FingerprintHidlTest, EnrollNullTest) { TEST_P(FingerprintHidlTest, EnrollNullTest) { sp<ErrorCallback> cb = new ErrorCallback(); Return<uint64_t> rc = mService->setNotify(cb); ASSERT_NE(0UL, static_cast<uint64_t>(rc)); Loading @@ -291,7 +278,7 @@ TEST_F(FingerprintHidlTest, EnrollNullTest) { } // PostEnroll should always return within 3s TEST_F(FingerprintHidlTest, PostEnrollTest) { TEST_P(FingerprintHidlTest, PostEnrollTest) { sp<FingerprintCallbackBase> cb = new FingerprintCallbackBase(); Return<uint64_t> rc = mService->setNotify(cb); Loading @@ -302,13 +289,13 @@ TEST_F(FingerprintHidlTest, PostEnrollTest) { } // getAuthenticatorId should always return non-zero numbers TEST_F(FingerprintHidlTest, GetAuthenticatorIdTest) { TEST_P(FingerprintHidlTest, GetAuthenticatorIdTest) { Return<uint64_t> res = mService->getAuthenticatorId(); EXPECT_NE(0UL, static_cast<uint64_t>(res)); } // Enumerate should always trigger onEnumerated(fid=0, rem=0) when there are no fingerprints TEST_F(FingerprintHidlTest, EnumerateTest) { TEST_P(FingerprintHidlTest, EnumerateTest) { sp<EnumerateCallback> cb = new EnumerateCallback(); Return<uint64_t> rc = mService->setNotify(cb); ASSERT_NE(0UL, static_cast<uint64_t>(rc)); Loading @@ -318,12 +305,11 @@ TEST_F(FingerprintHidlTest, EnumerateTest) { ASSERT_TRUE(waitForCallback(cb->promise.get_future())); EXPECT_EQ(0UL, cb->fingerId); EXPECT_EQ(0UL, cb->remaining); } // Remove should succeed on any inputs // At least one callback with "remaining=0" should occur TEST_F(FingerprintHidlTest, RemoveFingerprintTest) { TEST_P(FingerprintHidlTest, RemoveFingerprintTest) { // Register callback sp<RemoveCallback> cb = new RemoveCallback(kGroupId); Return<uint64_t> rc = mService->setNotify(cb); Loading @@ -339,7 +325,7 @@ TEST_F(FingerprintHidlTest, RemoveFingerprintTest) { // Remove should accept 0 to delete all fingerprints // At least one callback with "remaining=0" should occur. TEST_F(FingerprintHidlTest, RemoveAllFingerprintsTest) { TEST_P(FingerprintHidlTest, RemoveAllFingerprintsTest) { // Register callback sp<RemoveCallback> cb = new RemoveCallback(kGroupId); Return<uint64_t> rc = mService->setNotify(cb); Loading @@ -352,7 +338,7 @@ TEST_F(FingerprintHidlTest, RemoveAllFingerprintsTest) { } // Active group should successfully set to a writable location. TEST_F(FingerprintHidlTest, SetActiveGroupTest) { TEST_P(FingerprintHidlTest, SetActiveGroupTest) { // Create an active group Return<RequestStatus> res = mService->setActiveGroup(2, kTmpDir); ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res)); Loading @@ -363,7 +349,7 @@ TEST_F(FingerprintHidlTest, SetActiveGroupTest) { } // Active group should fail to set to an unwritable location. TEST_F(FingerprintHidlTest, SetActiveGroupUnwritableTest) { TEST_P(FingerprintHidlTest, SetActiveGroupUnwritableTest) { // Create an active group to an unwritable location (device root dir) Return<RequestStatus> res = mService->setActiveGroup(3, "/"); ASSERT_NE(RequestStatus::SYS_OK, static_cast<RequestStatus>(res)); Loading @@ -374,7 +360,7 @@ TEST_F(FingerprintHidlTest, SetActiveGroupUnwritableTest) { } // Active group should fail to set to a null location. TEST_F(FingerprintHidlTest, SetActiveGroupNullTest) { TEST_P(FingerprintHidlTest, SetActiveGroupNullTest) { // Create an active group to a null location. Return<RequestStatus> res = mService->setActiveGroup(4, nullptr); ASSERT_NE(RequestStatus::SYS_OK, static_cast<RequestStatus>(res)); Loading @@ -386,7 +372,7 @@ TEST_F(FingerprintHidlTest, SetActiveGroupNullTest) { // Cancel should always return ERROR_CANCELED from any starting state including // the IDLE state. TEST_F(FingerprintHidlTest, CancelTest) { TEST_P(FingerprintHidlTest, CancelTest) { sp<ErrorCallback> cb = new ErrorCallback(true, FingerprintError::ERROR_CANCELED); Return<uint64_t> rc = mService->setNotify(cb); ASSERT_NE(0UL, static_cast<uint64_t>(rc)); Loading @@ -402,7 +388,7 @@ TEST_F(FingerprintHidlTest, CancelTest) { } // A call to cancel should succeed during enroll. TEST_F(FingerprintHidlTest, CancelEnrollTest) { TEST_P(FingerprintHidlTest, CancelEnrollTest) { Return<RequestStatus> res = mService->setActiveGroup(kGroupId, kTmpDir); ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res)); Loading @@ -426,7 +412,7 @@ TEST_F(FingerprintHidlTest, CancelEnrollTest) { } // A call to cancel should succeed during authentication. TEST_F(FingerprintHidlTest, CancelAuthTest) { TEST_P(FingerprintHidlTest, CancelAuthTest) { sp<ErrorCallback> cb = new ErrorCallback(true, FingerprintError::ERROR_CANCELED); Return<uint64_t> rc = mService->setNotify(cb); ASSERT_NE(0U, static_cast<uint64_t>(rc)); Loading @@ -446,7 +432,7 @@ TEST_F(FingerprintHidlTest, CancelAuthTest) { } // A call to cancel should succeed during authentication. TEST_F(FingerprintHidlTest, CancelRemoveTest) { TEST_P(FingerprintHidlTest, CancelRemoveTest) { sp<ErrorCallback> cb = new ErrorCallback(true, FingerprintError::ERROR_CANCELED); Return<uint64_t> rc = mService->setNotify(cb); ASSERT_NE(0U, static_cast<uint64_t>(rc)); Loading @@ -466,7 +452,7 @@ TEST_F(FingerprintHidlTest, CancelRemoveTest) { } // A call to cancel should succeed during authentication. TEST_F(FingerprintHidlTest, CancelRemoveAllTest) { TEST_P(FingerprintHidlTest, CancelRemoveAllTest) { sp<ErrorCallback> cb = new ErrorCallback(true, FingerprintError::ERROR_CANCELED); Return<uint64_t> rc = mService->setNotify(cb); ASSERT_NE(0U, static_cast<uint64_t>(rc)); Loading @@ -486,12 +472,7 @@ TEST_F(FingerprintHidlTest, CancelRemoveAllTest) { } } // anonymous namespace int main(int argc, char **argv) { ::testing::AddGlobalTestEnvironment(FingerprintHidlEnvironment::Instance()); ::testing::InitGoogleTest(&argc, argv); FingerprintHidlEnvironment::Instance()->init(&argc, argv); int status = RUN_ALL_TESTS(); LOG(INFO) << "Test result = " << status; return status; } INSTANTIATE_TEST_SUITE_P(PerInstance, FingerprintHidlTest, testing::ValuesIn(android::hardware::getAllHalInstanceNames( IBiometricsFingerprint::descriptor)), android::hardware::PrintInstanceNameToString); Loading
biometrics/fingerprint/2.1/vts/functional/VtsHalBiometricsFingerprintV2_1TargetTest.cpp +213 −232 Original line number Diff line number Diff line Loading @@ -16,14 +16,15 @@ #define LOG_TAG "fingerprint_hidl_hal_test" #include <VtsHalHidlTargetTestBase.h> #include <VtsHalHidlTargetTestEnvBase.h> #include <android-base/logging.h> #include <android-base/properties.h> #include <android/hardware/biometrics/fingerprint/2.1/IBiometricsFingerprint.h> #include <android/hardware/biometrics/fingerprint/2.1/IBiometricsFingerprintClientCallback.h> #include <gtest/gtest.h> #include <hidl/GtestPrinter.h> #include <hidl/HidlSupport.h> #include <hidl/HidlTransportSupport.h> #include <hidl/ServiceManagement.h> #include <utils/Condition.h> #include <cinttypes> Loading Loading @@ -183,23 +184,10 @@ class RemoveCallback : public FingerprintCallbackBase { std::promise<void> promise; }; // Test environment for Fingerprint HIDL HAL. class FingerprintHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase { public: // get the test environment singleton static FingerprintHidlEnvironment* Instance() { static FingerprintHidlEnvironment* instance = new FingerprintHidlEnvironment; return instance; } virtual void registerTestServices() override { registerTestService<IBiometricsFingerprint>(); } }; class FingerprintHidlTest : public ::testing::VtsHalHidlTargetTestBase { class FingerprintHidlTest : public ::testing::TestWithParam<std::string> { public: virtual void SetUp() override { mService = ::testing::VtsHalHidlTargetTestBase::getService<IBiometricsFingerprint>( FingerprintHidlEnvironment::Instance()->getServiceName<IBiometricsFingerprint>()); mService = IBiometricsFingerprint::getService(GetParam()); ASSERT_FALSE(mService == nullptr); /* Loading Loading @@ -230,22 +218,21 @@ class FingerprintHidlTest : public ::testing::VtsHalHidlTargetTestBase { sp<IBiometricsFingerprint> mService; }; // The service should be reachable. TEST_F(FingerprintHidlTest, ConnectTest) { TEST_P(FingerprintHidlTest, ConnectTest) { sp<FingerprintCallbackBase> cb = new FingerprintCallbackBase(); Return<uint64_t> rc = mService->setNotify(cb); ASSERT_NE(0UL, static_cast<uint64_t>(rc)); } // Starting the service with null callback should succeed. TEST_F(FingerprintHidlTest, ConnectNullTest) { TEST_P(FingerprintHidlTest, ConnectNullTest) { Return<uint64_t> rc = mService->setNotify(NULL); ASSERT_NE(0UL, static_cast<uint64_t>(rc)); } // Pre-enroll should always return unique, cryptographically secure, non-zero number TEST_F(FingerprintHidlTest, PreEnrollTest) { TEST_P(FingerprintHidlTest, PreEnrollTest) { std::map<uint64_t, uint64_t> m; for (unsigned int i = 0; i < kIterations; ++i) { Loading @@ -257,7 +244,7 @@ TEST_F(FingerprintHidlTest, PreEnrollTest) { } // Enroll with an invalid (all zeroes) HAT should fail. TEST_F(FingerprintHidlTest, EnrollInvalidHatTest) { TEST_P(FingerprintHidlTest, EnrollInvalidHatTest) { sp<ErrorCallback> cb = new ErrorCallback(); Return<uint64_t> rc = mService->setNotify(cb); ASSERT_NE(0UL, static_cast<uint64_t>(rc)); Loading @@ -276,7 +263,7 @@ TEST_F(FingerprintHidlTest, EnrollInvalidHatTest) { } // Enroll with an invalid (null) HAT should fail. TEST_F(FingerprintHidlTest, EnrollNullTest) { TEST_P(FingerprintHidlTest, EnrollNullTest) { sp<ErrorCallback> cb = new ErrorCallback(); Return<uint64_t> rc = mService->setNotify(cb); ASSERT_NE(0UL, static_cast<uint64_t>(rc)); Loading @@ -291,7 +278,7 @@ TEST_F(FingerprintHidlTest, EnrollNullTest) { } // PostEnroll should always return within 3s TEST_F(FingerprintHidlTest, PostEnrollTest) { TEST_P(FingerprintHidlTest, PostEnrollTest) { sp<FingerprintCallbackBase> cb = new FingerprintCallbackBase(); Return<uint64_t> rc = mService->setNotify(cb); Loading @@ -302,13 +289,13 @@ TEST_F(FingerprintHidlTest, PostEnrollTest) { } // getAuthenticatorId should always return non-zero numbers TEST_F(FingerprintHidlTest, GetAuthenticatorIdTest) { TEST_P(FingerprintHidlTest, GetAuthenticatorIdTest) { Return<uint64_t> res = mService->getAuthenticatorId(); EXPECT_NE(0UL, static_cast<uint64_t>(res)); } // Enumerate should always trigger onEnumerated(fid=0, rem=0) when there are no fingerprints TEST_F(FingerprintHidlTest, EnumerateTest) { TEST_P(FingerprintHidlTest, EnumerateTest) { sp<EnumerateCallback> cb = new EnumerateCallback(); Return<uint64_t> rc = mService->setNotify(cb); ASSERT_NE(0UL, static_cast<uint64_t>(rc)); Loading @@ -318,12 +305,11 @@ TEST_F(FingerprintHidlTest, EnumerateTest) { ASSERT_TRUE(waitForCallback(cb->promise.get_future())); EXPECT_EQ(0UL, cb->fingerId); EXPECT_EQ(0UL, cb->remaining); } // Remove should succeed on any inputs // At least one callback with "remaining=0" should occur TEST_F(FingerprintHidlTest, RemoveFingerprintTest) { TEST_P(FingerprintHidlTest, RemoveFingerprintTest) { // Register callback sp<RemoveCallback> cb = new RemoveCallback(kGroupId); Return<uint64_t> rc = mService->setNotify(cb); Loading @@ -339,7 +325,7 @@ TEST_F(FingerprintHidlTest, RemoveFingerprintTest) { // Remove should accept 0 to delete all fingerprints // At least one callback with "remaining=0" should occur. TEST_F(FingerprintHidlTest, RemoveAllFingerprintsTest) { TEST_P(FingerprintHidlTest, RemoveAllFingerprintsTest) { // Register callback sp<RemoveCallback> cb = new RemoveCallback(kGroupId); Return<uint64_t> rc = mService->setNotify(cb); Loading @@ -352,7 +338,7 @@ TEST_F(FingerprintHidlTest, RemoveAllFingerprintsTest) { } // Active group should successfully set to a writable location. TEST_F(FingerprintHidlTest, SetActiveGroupTest) { TEST_P(FingerprintHidlTest, SetActiveGroupTest) { // Create an active group Return<RequestStatus> res = mService->setActiveGroup(2, kTmpDir); ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res)); Loading @@ -363,7 +349,7 @@ TEST_F(FingerprintHidlTest, SetActiveGroupTest) { } // Active group should fail to set to an unwritable location. TEST_F(FingerprintHidlTest, SetActiveGroupUnwritableTest) { TEST_P(FingerprintHidlTest, SetActiveGroupUnwritableTest) { // Create an active group to an unwritable location (device root dir) Return<RequestStatus> res = mService->setActiveGroup(3, "/"); ASSERT_NE(RequestStatus::SYS_OK, static_cast<RequestStatus>(res)); Loading @@ -374,7 +360,7 @@ TEST_F(FingerprintHidlTest, SetActiveGroupUnwritableTest) { } // Active group should fail to set to a null location. TEST_F(FingerprintHidlTest, SetActiveGroupNullTest) { TEST_P(FingerprintHidlTest, SetActiveGroupNullTest) { // Create an active group to a null location. Return<RequestStatus> res = mService->setActiveGroup(4, nullptr); ASSERT_NE(RequestStatus::SYS_OK, static_cast<RequestStatus>(res)); Loading @@ -386,7 +372,7 @@ TEST_F(FingerprintHidlTest, SetActiveGroupNullTest) { // Cancel should always return ERROR_CANCELED from any starting state including // the IDLE state. TEST_F(FingerprintHidlTest, CancelTest) { TEST_P(FingerprintHidlTest, CancelTest) { sp<ErrorCallback> cb = new ErrorCallback(true, FingerprintError::ERROR_CANCELED); Return<uint64_t> rc = mService->setNotify(cb); ASSERT_NE(0UL, static_cast<uint64_t>(rc)); Loading @@ -402,7 +388,7 @@ TEST_F(FingerprintHidlTest, CancelTest) { } // A call to cancel should succeed during enroll. TEST_F(FingerprintHidlTest, CancelEnrollTest) { TEST_P(FingerprintHidlTest, CancelEnrollTest) { Return<RequestStatus> res = mService->setActiveGroup(kGroupId, kTmpDir); ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res)); Loading @@ -426,7 +412,7 @@ TEST_F(FingerprintHidlTest, CancelEnrollTest) { } // A call to cancel should succeed during authentication. TEST_F(FingerprintHidlTest, CancelAuthTest) { TEST_P(FingerprintHidlTest, CancelAuthTest) { sp<ErrorCallback> cb = new ErrorCallback(true, FingerprintError::ERROR_CANCELED); Return<uint64_t> rc = mService->setNotify(cb); ASSERT_NE(0U, static_cast<uint64_t>(rc)); Loading @@ -446,7 +432,7 @@ TEST_F(FingerprintHidlTest, CancelAuthTest) { } // A call to cancel should succeed during authentication. TEST_F(FingerprintHidlTest, CancelRemoveTest) { TEST_P(FingerprintHidlTest, CancelRemoveTest) { sp<ErrorCallback> cb = new ErrorCallback(true, FingerprintError::ERROR_CANCELED); Return<uint64_t> rc = mService->setNotify(cb); ASSERT_NE(0U, static_cast<uint64_t>(rc)); Loading @@ -466,7 +452,7 @@ TEST_F(FingerprintHidlTest, CancelRemoveTest) { } // A call to cancel should succeed during authentication. TEST_F(FingerprintHidlTest, CancelRemoveAllTest) { TEST_P(FingerprintHidlTest, CancelRemoveAllTest) { sp<ErrorCallback> cb = new ErrorCallback(true, FingerprintError::ERROR_CANCELED); Return<uint64_t> rc = mService->setNotify(cb); ASSERT_NE(0U, static_cast<uint64_t>(rc)); Loading @@ -486,12 +472,7 @@ TEST_F(FingerprintHidlTest, CancelRemoveAllTest) { } } // anonymous namespace int main(int argc, char **argv) { ::testing::AddGlobalTestEnvironment(FingerprintHidlEnvironment::Instance()); ::testing::InitGoogleTest(&argc, argv); FingerprintHidlEnvironment::Instance()->init(&argc, argv); int status = RUN_ALL_TESTS(); LOG(INFO) << "Test result = " << status; return status; } INSTANTIATE_TEST_SUITE_P(PerInstance, FingerprintHidlTest, testing::ValuesIn(android::hardware::getAllHalInstanceNames( IBiometricsFingerprint::descriptor)), android::hardware::PrintInstanceNameToString);