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

Commit 639957c7 authored by Kevin Chyn's avatar Kevin Chyn
Browse files

Use mock IBiometricsFingerprint for Fingerprint21Test

Let's not depend on the actual HAL, since it can cause tests
to be flaky.

Fixes: 178245995
Test: atest Fingerprint21Test
Change-Id: I5a8acc23983a0481746e9c35fe46b6bf5b2225a8
parent 77bb0b72
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import android.util.Slog;
import android.util.proto.ProtoOutputStream;

import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.FrameworkStatsLog;
import com.android.server.biometrics.SensorServiceStateProto;
import com.android.server.biometrics.SensorStateProto;
@@ -397,7 +398,8 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
        });
    }

    private synchronized IBiometricsFingerprint getDaemon() {
    @VisibleForTesting
    synchronized IBiometricsFingerprint getDaemon() {
        if (mTestHalEnabled) {
            final TestHal testHal = new TestHal();
            testHal.setNotify(mHalResultController);
+21 −1
Original line number Diff line number Diff line
@@ -19,17 +19,20 @@ package com.android.server.biometrics.sensors.fingerprint.hidl;
import static junit.framework.Assert.assertEquals;

import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.content.res.Resources;
import android.hardware.biometrics.BiometricManager;
import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint;
import android.os.Handler;
import android.os.Looper;
import android.os.UserManager;
import android.platform.test.annotations.Presubmit;

import androidx.annotation.NonNull;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;

@@ -80,7 +83,7 @@ public class Fingerprint21Test {
                .thenReturn(5);

        mLockoutResetDispatcher = new LockoutResetDispatcher(mContext);
        mFingerprint21 = new Fingerprint21(mContext, mScheduler,
        mFingerprint21 = new TestableFingerprint21(mContext, mScheduler,
                new Handler(Looper.getMainLooper()), SENSOR_ID,
                BiometricManager.Authenticators.BIOMETRIC_WEAK, mLockoutResetDispatcher,
                mHalResultController);
@@ -100,4 +103,21 @@ public class Fingerprint21Test {
        waitForIdle();
        verify(mScheduler).reset();
    }

    private static class TestableFingerprint21 extends Fingerprint21 {

        TestableFingerprint21(@NonNull Context context,
                @NonNull BiometricScheduler scheduler,
                @NonNull Handler handler, int sensorId, int strength,
                @NonNull LockoutResetDispatcher lockoutResetDispatcher,
                @NonNull HalResultController controller) {
            super(context, scheduler, handler, sensorId, strength, lockoutResetDispatcher,
                    controller);
        }

        @Override
        synchronized IBiometricsFingerprint getDaemon() {
            return mock(IBiometricsFingerprint.class);
        }
    }
}