From b19aeb63b6c0ffdba9fc5193f64c52d30c474897 Mon Sep 17 00:00:00 2001 From: lbill Date: Wed, 30 Nov 2022 02:47:43 +0000 Subject: [PATCH] Fix flaky fingerprintUdfpsOverlayEnrollment_PlaysAllAnimationsAssetsCorrectly We should return the corresponding getStageThresholdSteps() for udfps test, otherwise the test can simulate last stage only and make the test fail. Bug: 228100413 Bug: 260659253 Test: make RunSettingsRoboTests ROBOTEST_FILTER= \ "com.android.settings.biometrics.fingerprint .FingerprintEnrollEnrollingTest" Change-Id: I4c712c84f357f275e5a169d16d2ed382fa4494ef --- .../FingerprintEnrollEnrollingTest.java | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java index 185af9e7213..f9d4445a658 100644 --- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java @@ -91,7 +91,10 @@ public class FingerprintEnrollEnrollingTest { private Resources.Theme mTheme; + private static final int TOTAL_ENROLL_STEPS = 25; + private final int[] mSfpsStageThresholds = new int[]{0, 9, 13, 19, 25}; + private final int[] mUdfpsStageThresholds = new int[]{0, 13, 17, 22}; private FingerprintEnrollEnrolling mActivity; private Context mContext; @@ -190,19 +193,19 @@ public class FingerprintEnrollEnrollingTest { public void fingerprintUdfpsOverlayEnrollment_PlaysAllAnimationsAssetsCorrectly() { initializeActivityFor(TYPE_UDFPS_OPTICAL); - int totalEnrollSteps = 25; int initStageSteps = -1, initStageRemaining = 0; + final int totalStages = mUdfpsStageThresholds.length; when(mSidecar.getEnrollmentSteps()).thenReturn(initStageSteps); when(mSidecar.getEnrollmentRemaining()).thenReturn(initStageRemaining); mActivity.onEnrollmentProgressChange(initStageSteps, initStageRemaining); - when(mSidecar.getEnrollmentSteps()).thenReturn(totalEnrollSteps); + when(mSidecar.getEnrollmentSteps()).thenReturn(TOTAL_ENROLL_STEPS); - for (int remaining = totalEnrollSteps; remaining > 0; remaining--) { + for (int remaining = TOTAL_ENROLL_STEPS; remaining > 0; remaining--) { when(mSidecar.getEnrollmentRemaining()).thenReturn(remaining); - mActivity.onEnrollmentProgressChange(totalEnrollSteps, remaining); + mActivity.onEnrollmentProgressChange(TOTAL_ENROLL_STEPS, remaining); } List expectedLottieAssetOrder = List.of( @@ -213,7 +216,7 @@ public class FingerprintEnrollEnrollingTest { ); ArgumentCaptor lottieAssetCaptor = ArgumentCaptor.forClass(Integer.class); - verify(mIllustrationLottie, times(4)).setAnimation(lottieAssetCaptor.capture()); + verify(mIllustrationLottie, times(totalStages)).setAnimation(lottieAssetCaptor.capture()); List observedLottieAssetOrder = lottieAssetCaptor.getAllValues(); assertThat(observedLottieAssetOrder).isEqualTo(expectedLottieAssetOrder); } @@ -222,7 +225,6 @@ public class FingerprintEnrollEnrollingTest { public void fingerprintSfpsEnroll_PlaysAllAnimationsAssetsCorrectly() { initializeActivityFor(TYPE_POWER_BUTTON); - int totalEnrollSteps = 25; int initStageSteps = -1, initStageRemaining = 0; when(mSidecar.getEnrollmentSteps()).thenReturn(initStageSteps); @@ -230,11 +232,11 @@ public class FingerprintEnrollEnrollingTest { mActivity.onEnrollmentProgressChange(initStageSteps, initStageRemaining); - when(mSidecar.getEnrollmentSteps()).thenReturn(totalEnrollSteps); + when(mSidecar.getEnrollmentSteps()).thenReturn(TOTAL_ENROLL_STEPS); - for (int remaining = totalEnrollSteps; remaining > 0; remaining--) { + for (int remaining = TOTAL_ENROLL_STEPS; remaining > 0; remaining--) { when(mSidecar.getEnrollmentRemaining()).thenReturn(remaining); - mActivity.onEnrollmentProgressChange(totalEnrollSteps, remaining); + mActivity.onEnrollmentProgressChange(TOTAL_ENROLL_STEPS, remaining); } List expectedLottieAssetOrder = List.of( @@ -360,6 +362,16 @@ public class FingerprintEnrollEnrollingTest { doReturn(true).when(mSidecar).isEnrolling(); } + if (sensorType == TYPE_UDFPS_OPTICAL) { + // UDFPS : STAGE_CENTER = 0, ... , STAGE_RIGHT_EDGE = 3 + final int totalStages = mUdfpsStageThresholds.length - 1; + for (int stage = 0; stage <= totalStages; stage++) { + doReturn(mUdfpsStageThresholds[stage]).when(mActivity).getStageThresholdSteps( + stage); + } + doReturn(true).when(mSidecar).isEnrolling(); + } + ActivityController.of(mActivity).create(savedInstanceState); mTheme = mActivity.getTheme(); }