diff options
8 files changed, 204 insertions, 613 deletions
diff --git a/packages/CrashRecovery/services/platform/java/com/android/server/PackageWatchdog.java b/packages/CrashRecovery/services/platform/java/com/android/server/PackageWatchdog.java index be339cdb75ab..129e47f22f38 100644 --- a/packages/CrashRecovery/services/platform/java/com/android/server/PackageWatchdog.java +++ b/packages/CrashRecovery/services/platform/java/com/android/server/PackageWatchdog.java @@ -383,7 +383,7 @@ public class PackageWatchdog { * * <p>If monitoring a package supporting explicit health check, at the end of the monitoring * duration if {@link #onHealthCheckPassed} was never called, - * {@link PackageHealthObserver#execute} will be called as if the package failed. + * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} will be called as if the package failed. * * <p>If {@code observer} is already monitoring a package in {@code packageNames}, * the monitoring window of that package will be reset to {@code durationMs} and the health @@ -546,8 +546,8 @@ public class PackageWatchdog { maybeExecute(currentObserverToNotify, versionedPackage, failureReason, currentObserverImpact, mitigationCount); } else { - currentObserverToNotify.execute(versionedPackage, - failureReason, mitigationCount); + currentObserverToNotify.onExecuteHealthCheckMitigation( + versionedPackage, failureReason, mitigationCount); } } } @@ -582,7 +582,8 @@ public class PackageWatchdog { maybeExecute(currentObserverToNotify, failingPackage, failureReason, currentObserverImpact, /*mitigationCount=*/ 1); } else { - currentObserverToNotify.execute(failingPackage, failureReason, 1); + currentObserverToNotify.onExecuteHealthCheckMitigation(failingPackage, + failureReason, 1); } } } @@ -596,7 +597,8 @@ public class PackageWatchdog { synchronized (mLock) { mLastMitigation = mSystemClock.uptimeMillis(); } - currentObserverToNotify.execute(versionedPackage, failureReason, mitigationCount); + currentObserverToNotify.onExecuteHealthCheckMitigation(versionedPackage, failureReason, + mitigationCount); } } @@ -658,12 +660,12 @@ public class PackageWatchdog { currentObserverInternal.setBootMitigationCount( currentObserverMitigationCount); saveAllObserversBootMitigationCountToMetadata(METADATA_FILE); - currentObserverToNotify.executeBootLoopMitigation( + currentObserverToNotify.onExecuteBootLoopMitigation( currentObserverMitigationCount); } else { mBootThreshold.setMitigationCount(mitigationCount); mBootThreshold.saveMitigationCountToMetadata(); - currentObserverToNotify.executeBootLoopMitigation(mitigationCount); + currentObserverToNotify.onExecuteBootLoopMitigation(mitigationCount); } } } @@ -749,7 +751,8 @@ public class PackageWatchdog { return mPackagesExemptFromImpactLevelThreshold; } - /** Possible severity values of the user impact of a {@link PackageHealthObserver#execute}. + /** Possible severity values of the user impact of a + * {@link PackageHealthObserver#onExecuteHealthCheckMitigation}. * @hide */ @Retention(SOURCE) @@ -797,7 +800,7 @@ public class PackageWatchdog { * * * @return any one of {@link PackageHealthObserverImpact} to express the impact - * to the user on {@link #execute} + * to the user on {@link #onExecuteHealthCheckMitigation} */ @PackageHealthObserverImpact int onHealthCheckFailed( @Nullable VersionedPackage versionedPackage, @@ -814,7 +817,7 @@ public class PackageWatchdog { * (including this time). * @return {@code true} if action was executed successfully, {@code false} otherwise */ - boolean execute(@Nullable VersionedPackage versionedPackage, + boolean onExecuteHealthCheckMitigation(@Nullable VersionedPackage versionedPackage, @FailureReasons int failureReason, int mitigationCount); @@ -834,7 +837,7 @@ public class PackageWatchdog { * @param mitigationCount the number of times mitigation has been attempted for this * boot loop (including this time). */ - default boolean executeBootLoopMitigation(int mitigationCount) { + default boolean onExecuteBootLoopMitigation(int mitigationCount) { return false; } @@ -1115,7 +1118,7 @@ public class PackageWatchdog { if (versionedPkg != null) { Slog.i(TAG, "Explicit health check failed for package " + versionedPkg); - registeredObserver.execute(versionedPkg, + registeredObserver.onExecuteHealthCheckMitigation(versionedPkg, PackageWatchdog.FAILURE_REASON_EXPLICIT_HEALTH_CHECK, 1); } } diff --git a/packages/CrashRecovery/services/platform/java/com/android/server/RescueParty.java b/packages/CrashRecovery/services/platform/java/com/android/server/RescueParty.java index feb5775e5aac..f757236613d1 100644 --- a/packages/CrashRecovery/services/platform/java/com/android/server/RescueParty.java +++ b/packages/CrashRecovery/services/platform/java/com/android/server/RescueParty.java @@ -859,7 +859,7 @@ public class RescueParty { } @Override - public boolean execute(@Nullable VersionedPackage failedPackage, + public boolean onExecuteHealthCheckMitigation(@Nullable VersionedPackage failedPackage, @FailureReasons int failureReason, int mitigationCount) { if (isDisabled()) { return false; @@ -927,7 +927,7 @@ public class RescueParty { } @Override - public boolean executeBootLoopMitigation(int mitigationCount) { + public boolean onExecuteBootLoopMitigation(int mitigationCount) { if (isDisabled()) { return false; } diff --git a/packages/CrashRecovery/services/platform/java/com/android/server/rollback/RollbackPackageHealthObserver.java b/packages/CrashRecovery/services/platform/java/com/android/server/rollback/RollbackPackageHealthObserver.java index d206c66ed09a..7445534e95bf 100644 --- a/packages/CrashRecovery/services/platform/java/com/android/server/rollback/RollbackPackageHealthObserver.java +++ b/packages/CrashRecovery/services/platform/java/com/android/server/rollback/RollbackPackageHealthObserver.java @@ -158,7 +158,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve // Note: For non-native crashes the rollback-all step has higher impact impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_30; } else if (getAvailableRollback(failedPackage) != null) { - // Rollback is available, we may get a callback into #execute + // Rollback is available, we may get a callback into #onExecuteHealthCheckMitigation impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_30; } else if (anyRollbackAvailable) { // If any rollbacks are available, we will commit them @@ -175,7 +175,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve } @Override - public boolean execute(@Nullable VersionedPackage failedPackage, + public boolean onExecuteHealthCheckMitigation(@Nullable VersionedPackage failedPackage, @FailureReasons int rollbackReason, int mitigationCount) { Slog.i(TAG, "Executing remediation." + " failedPackage: " @@ -229,7 +229,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve } @Override - public boolean executeBootLoopMitigation(int mitigationCount) { + public boolean onExecuteBootLoopMitigation(int mitigationCount) { if (Flags.recoverabilityDetection()) { List<RollbackInfo> availableRollbacks = getAvailableRollbacks(); diff --git a/services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java b/services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java index f2acbc31b008..f40d8038da3b 100644 --- a/services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java @@ -45,13 +45,11 @@ import android.crashrecovery.flags.Flags; import android.os.RecoverySystem; import android.os.SystemProperties; import android.os.UserHandle; -import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.FlagsParameterization; import android.platform.test.flag.junit.SetFlagsRule; import android.provider.DeviceConfig; import android.provider.Settings; -import android.util.ArraySet; import com.android.dx.mockito.inline.extended.ExtendedMockito; import com.android.server.PackageWatchdog.PackageHealthObserverImpact; @@ -74,11 +72,9 @@ import org.mockito.quality.Strictness; import org.mockito.stubbing.Answer; import java.lang.reflect.Field; -import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; @@ -250,37 +246,6 @@ public class RescuePartyTest { } @Test - @DisableFlags({Flags.FLAG_RECOVERABILITY_DETECTION, - Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS}) - public void testBootLoop() { - // this is old test where the flag needs to be disabled - RescueParty.onSettingsProviderPublished(mMockContext); - verify(() -> DeviceConfig.setMonitorCallback(eq(mMockContentResolver), - any(Executor.class), - mMonitorCallbackCaptor.capture())); - HashMap<String, Integer> verifiedTimesMap = new HashMap<String, Integer>(); - - noteBoot(1); - - // Record DeviceConfig accesses - RescuePartyObserver observer = RescuePartyObserver.getInstance(mMockContext); - DeviceConfig.MonitorCallback monitorCallback = mMonitorCallbackCaptor.getValue(); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE1, NAMESPACE1); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE1, NAMESPACE2); - - final String[] expectedAllResetNamespaces = new String[]{NAMESPACE1, NAMESPACE2}; - - noteBoot(2); - noteBoot(3); - - noteBoot(4); - assertTrue(RescueParty.isRebootPropertySet()); - - setCrashRecoveryPropAttemptingReboot(false); - noteBoot(5); - assertTrue(RescueParty.isFactoryResetPropertySet()); - } - @Test @EnableFlags(Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS) public void testBootLoopNoFlags() { // this is old test where the flag needs to be disabled @@ -293,61 +258,6 @@ public class RescuePartyTest { } @Test - @EnableFlags(Flags.FLAG_RECOVERABILITY_DETECTION) - @DisableFlags(Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS) - public void testBootLoopRecoverability() { - RescueParty.onSettingsProviderPublished(mMockContext); - verify(() -> DeviceConfig.setMonitorCallback(eq(mMockContentResolver), - any(Executor.class), - mMonitorCallbackCaptor.capture())); - HashMap<String, Integer> verifiedTimesMap = new HashMap<String, Integer>(); - - // Record DeviceConfig accesses - DeviceConfig.MonitorCallback monitorCallback = mMonitorCallbackCaptor.getValue(); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE1, NAMESPACE1); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE1, NAMESPACE2); - - final String[] expectedAllResetNamespaces = new String[]{NAMESPACE1, NAMESPACE2}; - - - noteBoot(1); - - noteBoot(2); - assertTrue(RescueParty.isRebootPropertySet()); - - noteBoot(3); - - verifyOnlySettingsReset(Settings.RESET_MODE_UNTRUSTED_DEFAULTS); - - noteBoot(4); - verifyOnlySettingsReset(Settings.RESET_MODE_UNTRUSTED_CHANGES); - - noteBoot(5); - verifyOnlySettingsReset(Settings.RESET_MODE_TRUSTED_DEFAULTS); - - setCrashRecoveryPropAttemptingReboot(false); - noteBoot(6); - assertTrue(RescueParty.isFactoryResetPropertySet()); - } - - @Test - @DisableFlags({Flags.FLAG_RECOVERABILITY_DETECTION, - Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS}) - public void testPersistentAppCrash() { - // this is old test where the flag needs to be disabled - noteAppCrash(1, true); - noteAppCrash(2, true); - noteAppCrash(3, true); - - noteAppCrash(4, true); - assertTrue(RescueParty.isRebootPropertySet()); - - setCrashRecoveryPropAttemptingReboot(false); - noteAppCrash(5, true); - assertTrue(RescueParty.isFactoryResetPropertySet()); - } - - @Test @EnableFlags(Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS) public void testPersistentAppCrashNoFlags() { // this is old test where the flag needs to be disabled @@ -360,98 +270,6 @@ public class RescuePartyTest { } @Test - @EnableFlags(Flags.FLAG_RECOVERABILITY_DETECTION) - @DisableFlags(Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS) - public void testPersistentAppCrashRecoverability() { - RescueParty.onSettingsProviderPublished(mMockContext); - verify(() -> DeviceConfig.setMonitorCallback(eq(mMockContentResolver), - any(Executor.class), - mMonitorCallbackCaptor.capture())); - HashMap<String, Integer> verifiedTimesMap = new HashMap<String, Integer>(); - - // Record DeviceConfig accesses - DeviceConfig.MonitorCallback monitorCallback = mMonitorCallbackCaptor.getValue(); - monitorCallback.onDeviceConfigAccess(PERSISTENT_PACKAGE, NAMESPACE1); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE1, NAMESPACE1); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE1, NAMESPACE2); - - final String[] expectedResetNamespaces = new String[]{NAMESPACE1}; - final String[] expectedAllResetNamespaces = new String[]{NAMESPACE1, NAMESPACE2}; - - noteAppCrash(1, true); - - noteAppCrash(2, true); - - noteAppCrash(3, true); - assertTrue(RescueParty.isRebootPropertySet()); - - noteAppCrash(4, true); - verifyOnlySettingsReset(Settings.RESET_MODE_UNTRUSTED_DEFAULTS); - - noteAppCrash(5, true); - verifyOnlySettingsReset(Settings.RESET_MODE_UNTRUSTED_CHANGES); - - noteAppCrash(6, true); - verifyOnlySettingsReset(Settings.RESET_MODE_TRUSTED_DEFAULTS); - - setCrashRecoveryPropAttemptingReboot(false); - noteAppCrash(7, true); - assertTrue(RescueParty.isFactoryResetPropertySet()); - } - - @Test - @DisableFlags({Flags.FLAG_RECOVERABILITY_DETECTION, - Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS}) - public void testNonPersistentApp() { - // this is old test where the flag needs to be disabled - noteAppCrash(1, false); - noteAppCrash(2, false); - noteAppCrash(3, false); - assertFalse(RescueParty.isRebootPropertySet()); - - noteAppCrash(5, false); - assertFalse(RescueParty.isFactoryResetPropertySet()); - } - - @Test - @EnableFlags(Flags.FLAG_RECOVERABILITY_DETECTION) - @DisableFlags(Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS) - public void testNonPersistentAppOnlyPerformsFlagResetsRecoverabilityDetection() { - RescueParty.onSettingsProviderPublished(mMockContext); - verify(() -> DeviceConfig.setMonitorCallback(eq(mMockContentResolver), - any(Executor.class), - mMonitorCallbackCaptor.capture())); - HashMap<String, Integer> verifiedTimesMap = new HashMap<String, Integer>(); - - // Record DeviceConfig accesses - DeviceConfig.MonitorCallback monitorCallback = mMonitorCallbackCaptor.getValue(); - monitorCallback.onDeviceConfigAccess(NON_PERSISTENT_PACKAGE, NAMESPACE1); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE1, NAMESPACE1); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE1, NAMESPACE2); - - final String[] expectedResetNamespaces = new String[]{NAMESPACE1}; - final String[] expectedAllResetNamespaces = new String[]{NAMESPACE1, NAMESPACE2}; - - noteAppCrash(1, false); - - noteAppCrash(2, false); - - noteAppCrash(3, false); - assertFalse(RescueParty.isRebootPropertySet()); - - noteAppCrash(4, false); - verifyNoSettingsReset(Settings.RESET_MODE_UNTRUSTED_DEFAULTS); - noteAppCrash(5, false); - verifyNoSettingsReset(Settings.RESET_MODE_UNTRUSTED_CHANGES); - noteAppCrash(6, false); - verifyNoSettingsReset(Settings.RESET_MODE_TRUSTED_DEFAULTS); - - setCrashRecoveryPropAttemptingReboot(false); - noteAppCrash(7, false); - assertFalse(RescueParty.isFactoryResetPropertySet()); - } - - @Test public void testIsRecoveryTriggeredReboot() { for (int i = 0; i < LEVEL_FACTORY_RESET; i++) { noteBoot(i + 1); @@ -522,6 +340,7 @@ public class RescuePartyTest { @Test public void testNotThrottlingAfterTimeoutOnAppCrash() { + when(mMockContext.getPackageManager()).thenReturn(mPackageManager); setCrashRecoveryPropAttemptingReboot(false); long now = System.currentTimeMillis(); long afterTimeout = now - TimeUnit.MINUTES.toMillis( @@ -534,30 +353,15 @@ public class RescuePartyTest { } @Test - @DisableFlags(Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS) - public void testNativeRescuePartyResets() { - doReturn(true).when(() -> SettingsToPropertiesMapper.isNativeFlagsResetPerformed()); - doReturn(FAKE_RESET_NATIVE_NAMESPACES).when( - () -> SettingsToPropertiesMapper.getResetNativeCategories()); - - RescueParty.onSettingsProviderPublished(mMockContext); - - verify(() -> DeviceConfig.resetToDefaults(Settings.RESET_MODE_TRUSTED_DEFAULTS, - FAKE_NATIVE_NAMESPACE1)); - verify(() -> DeviceConfig.resetToDefaults(Settings.RESET_MODE_TRUSTED_DEFAULTS, - FAKE_NATIVE_NAMESPACE2)); - } - - @Test public void testExplicitlyEnablingAndDisablingRescue() { SystemProperties.set(RescueParty.PROP_ENABLE_RESCUE, Boolean.toString(false)); SystemProperties.set(PROP_DISABLE_RESCUE, Boolean.toString(true)); - assertEquals(RescuePartyObserver.getInstance(mMockContext).execute(sFailingPackage, - PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 1), false); + assertEquals(RescuePartyObserver.getInstance(mMockContext).onExecuteHealthCheckMitigation( + sFailingPackage, PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 1), false); SystemProperties.set(RescueParty.PROP_ENABLE_RESCUE, Boolean.toString(true)); - assertTrue(RescuePartyObserver.getInstance(mMockContext).execute(sFailingPackage, - PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 1)); + assertTrue(RescuePartyObserver.getInstance(mMockContext).onExecuteHealthCheckMitigation( + sFailingPackage, PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 1)); } @Test @@ -565,8 +369,8 @@ public class RescuePartyTest { SystemProperties.set(RescueParty.PROP_ENABLE_RESCUE, Boolean.toString(false)); SystemProperties.set(PROP_DEVICE_CONFIG_DISABLE_FLAG, Boolean.toString(true)); - assertEquals(RescuePartyObserver.getInstance(mMockContext).execute(sFailingPackage, - PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 1), false); + assertEquals(RescuePartyObserver.getInstance(mMockContext).onExecuteHealthCheckMitigation( + sFailingPackage, PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 1), false); // Restore the property value initialized in SetUp() SystemProperties.set(RescueParty.PROP_ENABLE_RESCUE, Boolean.toString(true)); @@ -587,75 +391,6 @@ public class RescuePartyTest { } @Test - @DisableFlags({Flags.FLAG_RECOVERABILITY_DETECTION, - Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS}) - public void testHealthCheckLevels() { - // this is old test where the flag needs to be disabled - RescuePartyObserver observer = RescuePartyObserver.getInstance(mMockContext); - - // Ensure that no action is taken for cases where the failure reason is unknown - assertEquals(observer.onHealthCheckFailed(null, PackageWatchdog.FAILURE_REASON_UNKNOWN, 1), - PackageHealthObserverImpact.USER_IMPACT_LEVEL_0); - - // Ensure the correct user impact is returned for each mitigation count. - assertEquals(observer.onHealthCheckFailed(null, - PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 1), - PackageHealthObserverImpact.USER_IMPACT_LEVEL_10); - - assertEquals(observer.onHealthCheckFailed(null, - PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 2), - PackageHealthObserverImpact.USER_IMPACT_LEVEL_10); - - assertEquals(observer.onHealthCheckFailed(null, - PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 3), - PackageHealthObserverImpact.USER_IMPACT_LEVEL_50); - - assertEquals(observer.onHealthCheckFailed(null, - PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 4), - PackageHealthObserverImpact.USER_IMPACT_LEVEL_50); - } - - @Test - @DisableFlags(Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS) - @EnableFlags(Flags.FLAG_RECOVERABILITY_DETECTION) - public void testHealthCheckLevelsRecoverabilityDetection() { - RescuePartyObserver observer = RescuePartyObserver.getInstance(mMockContext); - - // Ensure that no action is taken for cases where the failure reason is unknown - assertEquals(observer.onHealthCheckFailed(sFailingPackage, - PackageWatchdog.FAILURE_REASON_UNKNOWN, 1), - PackageHealthObserverImpact.USER_IMPACT_LEVEL_0); - - // Ensure the correct user impact is returned for each mitigation count. - assertEquals(observer.onHealthCheckFailed(sFailingPackage, - PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 1), - PackageHealthObserverImpact.USER_IMPACT_LEVEL_10); - - assertEquals(observer.onHealthCheckFailed(sFailingPackage, - PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 2), - PackageHealthObserverImpact.USER_IMPACT_LEVEL_40); - - assertEquals(observer.onHealthCheckFailed(sFailingPackage, - PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 3), - PackageHealthObserverImpact.USER_IMPACT_LEVEL_40); - - assertEquals(observer.onHealthCheckFailed(sFailingPackage, - PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 4), - PackageHealthObserverImpact.USER_IMPACT_LEVEL_40); - - assertEquals(observer.onHealthCheckFailed(sFailingPackage, - PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 5), - PackageHealthObserverImpact.USER_IMPACT_LEVEL_40); - - assertEquals(observer.onHealthCheckFailed(sFailingPackage, - PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 6), - PackageHealthObserverImpact.USER_IMPACT_LEVEL_40); - - assertEquals(observer.onHealthCheckFailed(sFailingPackage, - PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 7), - PackageHealthObserverImpact.USER_IMPACT_LEVEL_40); - } - @Test @EnableFlags(Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS) public void testHealthCheckLevelsNoFlags() { // this is old test where the flag needs to be disabled @@ -674,36 +409,6 @@ public class RescuePartyTest { PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 2), PackageHealthObserverImpact.USER_IMPACT_LEVEL_100); } - @Test - @DisableFlags({Flags.FLAG_RECOVERABILITY_DETECTION, - Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS}) - public void testBootLoopLevels() { - // this is old test where the flag needs to be disabled - - - RescuePartyObserver observer = RescuePartyObserver.getInstance(mMockContext); - - assertEquals(observer.onBootLoop(0), PackageHealthObserverImpact.USER_IMPACT_LEVEL_0); - assertEquals(observer.onBootLoop(1), PackageHealthObserverImpact.USER_IMPACT_LEVEL_10); - assertEquals(observer.onBootLoop(2), PackageHealthObserverImpact.USER_IMPACT_LEVEL_10); - assertEquals(observer.onBootLoop(3), PackageHealthObserverImpact.USER_IMPACT_LEVEL_50); - assertEquals(observer.onBootLoop(4), PackageHealthObserverImpact.USER_IMPACT_LEVEL_50); - assertEquals(observer.onBootLoop(5), PackageHealthObserverImpact.USER_IMPACT_LEVEL_100); - } - - @Test - @DisableFlags(Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS) - @EnableFlags(Flags.FLAG_RECOVERABILITY_DETECTION) - public void testBootLoopLevelsRecoverabilityDetection() { - RescuePartyObserver observer = RescuePartyObserver.getInstance(mMockContext); - - assertEquals(observer.onBootLoop(1), PackageHealthObserverImpact.USER_IMPACT_LEVEL_40); - assertEquals(observer.onBootLoop(2), PackageHealthObserverImpact.USER_IMPACT_LEVEL_50); - assertEquals(observer.onBootLoop(3), PackageHealthObserverImpact.USER_IMPACT_LEVEL_71); - assertEquals(observer.onBootLoop(4), PackageHealthObserverImpact.USER_IMPACT_LEVEL_75); - assertEquals(observer.onBootLoop(5), PackageHealthObserverImpact.USER_IMPACT_LEVEL_80); - assertEquals(observer.onBootLoop(6), PackageHealthObserverImpact.USER_IMPACT_LEVEL_100); - } @Test @EnableFlags(Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS) @@ -714,129 +419,6 @@ public class RescuePartyTest { assertEquals(observer.onBootLoop(2), PackageHealthObserverImpact.USER_IMPACT_LEVEL_100); } - @Test - @DisableFlags(Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS) - public void testResetDeviceConfigForPackagesOnlyRuntimeMap() { - RescueParty.onSettingsProviderPublished(mMockContext); - verify(() -> DeviceConfig.setMonitorCallback(eq(mMockContentResolver), - any(Executor.class), - mMonitorCallbackCaptor.capture())); - - // Record DeviceConfig accesses - RescuePartyObserver observer = RescuePartyObserver.getInstance(mMockContext); - DeviceConfig.MonitorCallback monitorCallback = mMonitorCallbackCaptor.getValue(); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE1, NAMESPACE1); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE1, NAMESPACE2); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE2, NAMESPACE2); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE2, NAMESPACE3); - // Fake DeviceConfig value changes - monitorCallback.onNamespaceUpdate(NAMESPACE1); - monitorCallback.onNamespaceUpdate(NAMESPACE2); - monitorCallback.onNamespaceUpdate(NAMESPACE3); - - doReturn("").when(() -> DeviceConfig.getString( - eq(RescueParty.NAMESPACE_CONFIGURATION), - eq(RescueParty.NAMESPACE_TO_PACKAGE_MAPPING_FLAG), - eq(""))); - - RescueParty.resetDeviceConfigForPackages(Arrays.asList(new String[]{CALLING_PACKAGE1})); - ArraySet<String> expectedNamespacesWiped = new ArraySet<String>( - Arrays.asList(new String[]{NAMESPACE1, NAMESPACE2})); - assertEquals(mNamespacesWiped, expectedNamespacesWiped); - } - - @Test - @DisableFlags(Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS) - public void testResetDeviceConfigForPackagesOnlyPresetMap() { - RescueParty.onSettingsProviderPublished(mMockContext); - verify(() -> DeviceConfig.setMonitorCallback(eq(mMockContentResolver), - any(Executor.class), - mMonitorCallbackCaptor.capture())); - - String presetMapping = NAMESPACE1 + ":" + CALLING_PACKAGE1 + "," - + NAMESPACE2 + ":" + CALLING_PACKAGE2 + "," - + NAMESPACE3 + ":" + CALLING_PACKAGE1; - doReturn(presetMapping).when(() -> DeviceConfig.getString( - eq(RescueParty.NAMESPACE_CONFIGURATION), - eq(RescueParty.NAMESPACE_TO_PACKAGE_MAPPING_FLAG), - eq(""))); - - RescueParty.resetDeviceConfigForPackages(Arrays.asList(new String[]{CALLING_PACKAGE1})); - ArraySet<String> expectedNamespacesWiped = new ArraySet<String>( - Arrays.asList(new String[]{NAMESPACE1, NAMESPACE3})); - assertEquals(mNamespacesWiped, expectedNamespacesWiped); - } - - @Test - @DisableFlags(Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS) - public void testResetDeviceConfigForPackagesBothMaps() { - RescueParty.onSettingsProviderPublished(mMockContext); - verify(() -> DeviceConfig.setMonitorCallback(eq(mMockContentResolver), - any(Executor.class), - mMonitorCallbackCaptor.capture())); - - // Record DeviceConfig accesses - RescuePartyObserver observer = RescuePartyObserver.getInstance(mMockContext); - DeviceConfig.MonitorCallback monitorCallback = mMonitorCallbackCaptor.getValue(); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE1, NAMESPACE1); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE1, NAMESPACE2); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE2, NAMESPACE2); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE2, NAMESPACE3); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE3, NAMESPACE4); - // Fake DeviceConfig value changes - monitorCallback.onNamespaceUpdate(NAMESPACE1); - monitorCallback.onNamespaceUpdate(NAMESPACE2); - monitorCallback.onNamespaceUpdate(NAMESPACE3); - monitorCallback.onNamespaceUpdate(NAMESPACE4); - - String presetMapping = NAMESPACE1 + ":" + CALLING_PACKAGE1 + "," - + NAMESPACE2 + ":" + CALLING_PACKAGE2 + "," - + NAMESPACE4 + ":" + CALLING_PACKAGE3; - doReturn(presetMapping).when(() -> DeviceConfig.getString( - eq(RescueParty.NAMESPACE_CONFIGURATION), - eq(RescueParty.NAMESPACE_TO_PACKAGE_MAPPING_FLAG), - eq(""))); - - RescueParty.resetDeviceConfigForPackages( - Arrays.asList(new String[]{CALLING_PACKAGE1, CALLING_PACKAGE2})); - ArraySet<String> expectedNamespacesWiped = new ArraySet<String>( - Arrays.asList(new String[]{NAMESPACE1, NAMESPACE2, NAMESPACE3})); - assertEquals(mNamespacesWiped, expectedNamespacesWiped); - } - - @Test - @DisableFlags(Flags.FLAG_DEPRECATE_FLAGS_AND_SETTINGS_RESETS) - public void testResetDeviceConfigNoExceptionWhenFlagMalformed() { - RescueParty.onSettingsProviderPublished(mMockContext); - verify(() -> DeviceConfig.setMonitorCallback(eq(mMockContentResolver), - any(Executor.class), - mMonitorCallbackCaptor.capture())); - - // Record DeviceConfig accesses - RescuePartyObserver observer = RescuePartyObserver.getInstance(mMockContext); - DeviceConfig.MonitorCallback monitorCallback = mMonitorCallbackCaptor.getValue(); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE1, NAMESPACE1); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE2, NAMESPACE3); - monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE3, NAMESPACE4); - // Fake DeviceConfig value changes - monitorCallback.onNamespaceUpdate(NAMESPACE1); - monitorCallback.onNamespaceUpdate(NAMESPACE2); - monitorCallback.onNamespaceUpdate(NAMESPACE3); - monitorCallback.onNamespaceUpdate(NAMESPACE4); - - String invalidPresetMapping = NAMESPACE2 + ":" + CALLING_PACKAGE2 + "," - + NAMESPACE1 + "." + CALLING_PACKAGE2; - doReturn(invalidPresetMapping).when(() -> DeviceConfig.getString( - eq(RescueParty.NAMESPACE_CONFIGURATION), - eq(RescueParty.NAMESPACE_TO_PACKAGE_MAPPING_FLAG), - eq(""))); - - RescueParty.resetDeviceConfigForPackages( - Arrays.asList(new String[]{CALLING_PACKAGE1, CALLING_PACKAGE2})); - ArraySet<String> expectedNamespacesWiped = new ArraySet<String>( - Arrays.asList(new String[]{NAMESPACE1, NAMESPACE3})); - assertEquals(mNamespacesWiped, expectedNamespacesWiped); - } private void verifySettingsResets(int resetMode, String[] resetNamespaces, HashMap<String, Integer> configResetVerifiedTimesMap) { @@ -858,13 +440,14 @@ public class RescuePartyTest { } private void noteBoot(int mitigationCount) { - RescuePartyObserver.getInstance(mMockContext).executeBootLoopMitigation(mitigationCount); + RescuePartyObserver.getInstance(mMockContext).onExecuteBootLoopMitigation(mitigationCount); } private void noteAppCrash(int mitigationCount, boolean isPersistent) { String packageName = isPersistent ? PERSISTENT_PACKAGE : NON_PERSISTENT_PACKAGE; - RescuePartyObserver.getInstance(mMockContext).execute(new VersionedPackage( - packageName, 1), PackageWatchdog.FAILURE_REASON_APP_CRASH, mitigationCount); + RescuePartyObserver.getInstance(mMockContext).onExecuteHealthCheckMitigation( + new VersionedPackage(packageName, 1), PackageWatchdog.FAILURE_REASON_APP_CRASH, + mitigationCount); } // Mock CrashRecoveryProperties as they cannot be accessed due to SEPolicy restrictions diff --git a/services/tests/mockingservicestests/src/com/android/server/rollback/RollbackPackageHealthObserverTest.java b/services/tests/mockingservicestests/src/com/android/server/rollback/RollbackPackageHealthObserverTest.java index e0c7bfe91890..347dc81c6734 100644 --- a/services/tests/mockingservicestests/src/com/android/server/rollback/RollbackPackageHealthObserverTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/rollback/RollbackPackageHealthObserverTest.java @@ -109,14 +109,11 @@ public class RollbackPackageHealthObserverTest { private static final String PROP_DISABLE_HIGH_IMPACT_ROLLBACK_FLAG = "persist.device_config.configuration.disable_high_impact_rollback"; - private SystemConfig mSysConfig; @Rule public TemporaryFolder mTemporaryFolder = new TemporaryFolder(); @Before public void setup() { - mSysConfig = new SystemConfigTestClass(); - mSession = ExtendedMockito.mockitoSession() .initMocks(this) .strictness(Strictness.LENIENT) @@ -184,7 +181,7 @@ public class RollbackPackageHealthObserverTest { @Test public void testHealthCheckLevels() { RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); VersionedPackage testFailedPackage = new VersionedPackage(APP_A, VERSION_CODE); VersionedPackage secondFailedPackage = new VersionedPackage(APP_B, VERSION_CODE); @@ -228,14 +225,14 @@ public class RollbackPackageHealthObserverTest { @Test public void testIsPersistent() { RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); assertTrue(observer.isPersistent()); } @Test public void testMayObservePackage_withoutAnyRollback() { RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); when(mRollbackManager.getAvailableRollbacks()).thenReturn(List.of()); assertFalse(observer.mayObservePackage(APP_A)); @@ -245,7 +242,7 @@ public class RollbackPackageHealthObserverTest { public void testMayObservePackage_forPersistentApp() throws PackageManager.NameNotFoundException { RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); ApplicationInfo info = new ApplicationInfo(); info.flags = ApplicationInfo.FLAG_PERSISTENT | ApplicationInfo.FLAG_SYSTEM; when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); @@ -260,7 +257,7 @@ public class RollbackPackageHealthObserverTest { public void testMayObservePackage_forNonPersistentApp() throws PackageManager.NameNotFoundException { RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); when(mRollbackManager.getAvailableRollbacks()).thenReturn(List.of(mRollbackInfo)); when(mRollbackInfo.getPackages()).thenReturn(List.of(mPackageRollbackInfo)); @@ -286,7 +283,7 @@ public class RollbackPackageHealthObserverTest { false, null, 111, PackageManager.ROLLBACK_USER_IMPACT_LOW); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); VersionedPackage secondFailedPackage = new VersionedPackage(APP_B, VERSION_CODE); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); @@ -317,7 +314,7 @@ public class RollbackPackageHealthObserverTest { false, null, 111, PackageManager.ROLLBACK_USER_IMPACT_HIGH); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); VersionedPackage secondFailedPackage = new VersionedPackage(APP_B, VERSION_CODE); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); @@ -348,7 +345,7 @@ public class RollbackPackageHealthObserverTest { false, null, 111, PackageManager.ROLLBACK_USER_IMPACT_ONLY_MANUAL); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); VersionedPackage secondFailedPackage = new VersionedPackage(APP_B, VERSION_CODE); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); @@ -386,7 +383,7 @@ public class RollbackPackageHealthObserverTest { false, null, 222, PackageManager.ROLLBACK_USER_IMPACT_HIGH); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); VersionedPackage failedPackage = new VersionedPackage(APP_C, VERSION_CODE); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); @@ -419,7 +416,7 @@ public class RollbackPackageHealthObserverTest { PackageManager.ROLLBACK_USER_IMPACT_LOW); VersionedPackage secondFailedPackage = new VersionedPackage(APP_B, VERSION_CODE); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); // Make the rollbacks available @@ -427,7 +424,7 @@ public class RollbackPackageHealthObserverTest { when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager); when(mMockPackageManager.getModuleInfo(any(), eq(0))).thenReturn(null); - observer.execute(secondFailedPackage, + observer.onExecuteHealthCheckMitigation(secondFailedPackage, PackageWatchdog.FAILURE_REASON_NATIVE_CRASH, 1); waitForIdleHandler(observer.getHandler(), Duration.ofSeconds(10)); @@ -461,7 +458,7 @@ public class RollbackPackageHealthObserverTest { false, null, 222, PackageManager.ROLLBACK_USER_IMPACT_LOW); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); ArgumentCaptor<Integer> argument = ArgumentCaptor.forClass(Integer.class); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); @@ -471,7 +468,8 @@ public class RollbackPackageHealthObserverTest { when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager); when(mMockPackageManager.getModuleInfo(any(), eq(0))).thenReturn(null); - observer.execute(appBFrom, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); + observer.onExecuteHealthCheckMitigation(appBFrom, PackageWatchdog.FAILURE_REASON_APP_CRASH, + 1); waitForIdleHandler(observer.getHandler(), Duration.ofSeconds(10)); verify(mRollbackManager).commitRollback(argument.capture(), any(), any()); @@ -506,7 +504,7 @@ public class RollbackPackageHealthObserverTest { PackageManager.ROLLBACK_USER_IMPACT_LOW); VersionedPackage failedPackage = new VersionedPackage(APP_C, VERSION_CODE); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); ArgumentCaptor<Integer> argument = ArgumentCaptor.forClass(Integer.class); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); @@ -516,7 +514,8 @@ public class RollbackPackageHealthObserverTest { when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager); when(mMockPackageManager.getModuleInfo(any(), eq(0))).thenReturn(null); - observer.execute(failedPackage, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); + observer.onExecuteHealthCheckMitigation(failedPackage, + PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); waitForIdleHandler(observer.getHandler(), Duration.ofSeconds(10)); verify(mRollbackManager, times(2)).commitRollback( @@ -552,7 +551,7 @@ public class RollbackPackageHealthObserverTest { PackageManager.ROLLBACK_USER_IMPACT_HIGH); VersionedPackage failedPackage = new VersionedPackage(APP_C, VERSION_CODE); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); ArgumentCaptor<Integer> argument = ArgumentCaptor.forClass(Integer.class); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); @@ -562,7 +561,8 @@ public class RollbackPackageHealthObserverTest { when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager); when(mMockPackageManager.getModuleInfo(any(), eq(0))).thenReturn(null); - observer.execute(failedPackage, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); + observer.onExecuteHealthCheckMitigation(failedPackage, + PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); waitForIdleHandler(observer.getHandler(), Duration.ofSeconds(10)); verify(mRollbackManager, times(1)).commitRollback( @@ -590,7 +590,7 @@ public class RollbackPackageHealthObserverTest { PackageManager.ROLLBACK_USER_IMPACT_HIGH); VersionedPackage failedPackage = new VersionedPackage(APP_C, VERSION_CODE); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); ArgumentCaptor<Integer> argument = ArgumentCaptor.forClass(Integer.class); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); @@ -599,7 +599,8 @@ public class RollbackPackageHealthObserverTest { when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager); when(mMockPackageManager.getModuleInfo(any(), eq(0))).thenReturn(null); - observer.execute(failedPackage, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); + observer.onExecuteHealthCheckMitigation(failedPackage, + PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); waitForIdleHandler(observer.getHandler(), Duration.ofSeconds(10)); verify(mRollbackManager, never()).commitRollback(argument.capture(), any(), any()); @@ -621,7 +622,7 @@ public class RollbackPackageHealthObserverTest { false, null, 111, PackageManager.ROLLBACK_USER_IMPACT_LOW); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); // Make the rollbacks available @@ -646,7 +647,7 @@ public class RollbackPackageHealthObserverTest { false, null, 111, PackageManager.ROLLBACK_USER_IMPACT_HIGH); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); // Make the rollbacks available @@ -672,7 +673,7 @@ public class RollbackPackageHealthObserverTest { false, null, 111, PackageManager.ROLLBACK_USER_IMPACT_HIGH); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); // Make the rollbacks available @@ -701,7 +702,7 @@ public class RollbackPackageHealthObserverTest { false, null, 111, PackageManager.ROLLBACK_USER_IMPACT_ONLY_MANUAL); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); // Make the rollbacks available @@ -737,7 +738,7 @@ public class RollbackPackageHealthObserverTest { false, null, 222, PackageManager.ROLLBACK_USER_IMPACT_HIGH); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); // Make the rollbacks available @@ -776,7 +777,7 @@ public class RollbackPackageHealthObserverTest { false, null, 222, PackageManager.ROLLBACK_USER_IMPACT_LOW); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); ArgumentCaptor<Integer> argument = ArgumentCaptor.forClass(Integer.class); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); @@ -786,7 +787,7 @@ public class RollbackPackageHealthObserverTest { when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager); when(mMockPackageManager.getModuleInfo(any(), eq(0))).thenReturn(null); - observer.executeBootLoopMitigation(1); + observer.onExecuteBootLoopMitigation(1); waitForIdleHandler(observer.getHandler(), Duration.ofSeconds(10)); verify(mRollbackManager, times(2)).commitRollback( @@ -821,7 +822,7 @@ public class RollbackPackageHealthObserverTest { false, null, 222, PackageManager.ROLLBACK_USER_IMPACT_HIGH); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); ArgumentCaptor<Integer> argument = ArgumentCaptor.forClass(Integer.class); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); @@ -831,7 +832,7 @@ public class RollbackPackageHealthObserverTest { when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager); when(mMockPackageManager.getModuleInfo(any(), eq(0))).thenReturn(null); - observer.executeBootLoopMitigation(1); + observer.onExecuteBootLoopMitigation(1); waitForIdleHandler(observer.getHandler(), Duration.ofSeconds(10)); verify(mRollbackManager, times(1)).commitRollback( @@ -857,7 +858,7 @@ public class RollbackPackageHealthObserverTest { false, null, 111, PackageManager.ROLLBACK_USER_IMPACT_HIGH); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); ArgumentCaptor<Integer> argument = ArgumentCaptor.forClass(Integer.class); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); @@ -866,7 +867,7 @@ public class RollbackPackageHealthObserverTest { when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager); when(mMockPackageManager.getModuleInfo(any(), eq(0))).thenReturn(null); - observer.executeBootLoopMitigation(1); + observer.onExecuteBootLoopMitigation(1); waitForIdleHandler(observer.getHandler(), Duration.ofSeconds(10)); verify(mRollbackManager, times(1)).commitRollback( @@ -902,7 +903,7 @@ public class RollbackPackageHealthObserverTest { PackageManager.ROLLBACK_USER_IMPACT_ONLY_MANUAL); VersionedPackage failedPackage = new VersionedPackage(APP_C, VERSION_CODE); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); ArgumentCaptor<Integer> argument = ArgumentCaptor.forClass(Integer.class); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); @@ -912,7 +913,8 @@ public class RollbackPackageHealthObserverTest { when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager); when(mMockPackageManager.getModuleInfo(any(), eq(0))).thenReturn(null); - observer.execute(failedPackage, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); + observer.onExecuteHealthCheckMitigation(failedPackage, + PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); waitForIdleHandler(observer.getHandler(), Duration.ofSeconds(10)); verify(mRollbackManager, times(1)).commitRollback( @@ -938,7 +940,7 @@ public class RollbackPackageHealthObserverTest { PackageManager.ROLLBACK_USER_IMPACT_ONLY_MANUAL); VersionedPackage failedPackage = new VersionedPackage(APP_C, VERSION_CODE); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); ArgumentCaptor<Integer> argument = ArgumentCaptor.forClass(Integer.class); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); @@ -947,7 +949,8 @@ public class RollbackPackageHealthObserverTest { when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager); when(mMockPackageManager.getModuleInfo(any(), eq(0))).thenReturn(null); - observer.execute(failedPackage, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); + observer.onExecuteHealthCheckMitigation(failedPackage, + PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); waitForIdleHandler(observer.getHandler(), Duration.ofSeconds(10)); verify(mRollbackManager, never()).commitRollback(argument.capture(), any(), any()); @@ -980,7 +983,7 @@ public class RollbackPackageHealthObserverTest { PackageManager.ROLLBACK_USER_IMPACT_HIGH); VersionedPackage failedPackage = new VersionedPackage(APP_C, VERSION_CODE); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); ArgumentCaptor<Integer> argument = ArgumentCaptor.forClass(Integer.class); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); @@ -990,7 +993,7 @@ public class RollbackPackageHealthObserverTest { when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager); when(mMockPackageManager.getModuleInfo(any(), eq(0))).thenReturn(null); - observer.executeBootLoopMitigation(1); + observer.onExecuteBootLoopMitigation(1); waitForIdleHandler(observer.getHandler(), Duration.ofSeconds(10)); verify(mRollbackManager, times(1)).commitRollback( @@ -1026,7 +1029,7 @@ public class RollbackPackageHealthObserverTest { false, null, 111, PackageManager.ROLLBACK_USER_IMPACT_HIGH); RollbackPackageHealthObserver observer = - spy(new RollbackPackageHealthObserver(mMockContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mMockContext)); ArgumentCaptor<Integer> argument = ArgumentCaptor.forClass(Integer.class); when(mMockContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); @@ -1036,7 +1039,7 @@ public class RollbackPackageHealthObserverTest { when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager); when(mMockPackageManager.getModuleInfo(any(), eq(0))).thenReturn(null); - observer.executeBootLoopMitigation(1); + observer.onExecuteBootLoopMitigation(1); waitForIdleHandler(observer.getHandler(), Duration.ofSeconds(10)); verify(mRollbackManager, never()).commitRollback( diff --git a/tests/PackageWatchdog/src/com/android/server/CrashRecoveryTest.java b/tests/PackageWatchdog/src/com/android/server/CrashRecoveryTest.java index 8d143b69d124..05a0f8f34337 100644 --- a/tests/PackageWatchdog/src/com/android/server/CrashRecoveryTest.java +++ b/tests/PackageWatchdog/src/com/android/server/CrashRecoveryTest.java @@ -224,39 +224,39 @@ public class CrashRecoveryTest { PackageWatchdog watchdog = createWatchdog(); RescuePartyObserver rescuePartyObserver = setUpRescuePartyObserver(watchdog); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(1); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(1); for (int i = 0; i < PackageWatchdog.DEFAULT_BOOT_LOOP_TRIGGER_COUNT; i++) { watchdog.noteBoot(); } - verify(rescuePartyObserver).executeBootLoopMitigation(1); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(2); + verify(rescuePartyObserver).onExecuteBootLoopMitigation(1); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(2); watchdog.noteBoot(); - verify(rescuePartyObserver).executeBootLoopMitigation(2); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(3); + verify(rescuePartyObserver).onExecuteBootLoopMitigation(2); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(3); watchdog.noteBoot(); - verify(rescuePartyObserver).executeBootLoopMitigation(3); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(4); + verify(rescuePartyObserver).onExecuteBootLoopMitigation(3); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(4); watchdog.noteBoot(); - verify(rescuePartyObserver).executeBootLoopMitigation(4); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(5); + verify(rescuePartyObserver).onExecuteBootLoopMitigation(4); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(5); watchdog.noteBoot(); - verify(rescuePartyObserver).executeBootLoopMitigation(5); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(6); + verify(rescuePartyObserver).onExecuteBootLoopMitigation(5); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(6); watchdog.noteBoot(); - verify(rescuePartyObserver).executeBootLoopMitigation(6); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(7); + verify(rescuePartyObserver).onExecuteBootLoopMitigation(6); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(7); } @Test @@ -265,14 +265,14 @@ public class CrashRecoveryTest { RollbackPackageHealthObserver rollbackObserver = setUpRollbackPackageHealthObserver(watchdog); - verify(rollbackObserver, never()).executeBootLoopMitigation(1); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(1); for (int i = 0; i < PackageWatchdog.DEFAULT_BOOT_LOOP_TRIGGER_COUNT; i++) { watchdog.noteBoot(); } - verify(rollbackObserver).executeBootLoopMitigation(1); - verify(rollbackObserver, never()).executeBootLoopMitigation(2); + verify(rollbackObserver).onExecuteBootLoopMitigation(1); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(2); // Update the list of available rollbacks after executing bootloop mitigation once when(mRollbackManager.getAvailableRollbacks()).thenReturn(List.of(ROLLBACK_INFO_HIGH, @@ -280,15 +280,15 @@ public class CrashRecoveryTest { watchdog.noteBoot(); - verify(rollbackObserver).executeBootLoopMitigation(2); - verify(rollbackObserver, never()).executeBootLoopMitigation(3); + verify(rollbackObserver).onExecuteBootLoopMitigation(2); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(3); // Update the list of available rollbacks after executing bootloop mitigation once when(mRollbackManager.getAvailableRollbacks()).thenReturn(List.of(ROLLBACK_INFO_MANUAL)); watchdog.noteBoot(); - verify(rollbackObserver, never()).executeBootLoopMitigation(3); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(3); } @Test @@ -299,61 +299,61 @@ public class CrashRecoveryTest { RollbackPackageHealthObserver rollbackObserver = setUpRollbackPackageHealthObserver(watchdog); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(1); - verify(rollbackObserver, never()).executeBootLoopMitigation(1); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(1); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(1); for (int i = 0; i < PackageWatchdog.DEFAULT_BOOT_LOOP_TRIGGER_COUNT; i++) { watchdog.noteBoot(); } - verify(rescuePartyObserver).executeBootLoopMitigation(1); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(2); - verify(rollbackObserver, never()).executeBootLoopMitigation(1); + verify(rescuePartyObserver).onExecuteBootLoopMitigation(1); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(2); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(1); watchdog.noteBoot(); - verify(rescuePartyObserver).executeBootLoopMitigation(2); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(3); - verify(rollbackObserver, never()).executeBootLoopMitigation(2); + verify(rescuePartyObserver).onExecuteBootLoopMitigation(2); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(3); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(2); watchdog.noteBoot(); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(3); - verify(rollbackObserver).executeBootLoopMitigation(1); - verify(rollbackObserver, never()).executeBootLoopMitigation(2); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(3); + verify(rollbackObserver).onExecuteBootLoopMitigation(1); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(2); // Update the list of available rollbacks after executing bootloop mitigation once when(mRollbackManager.getAvailableRollbacks()).thenReturn(List.of(ROLLBACK_INFO_HIGH, ROLLBACK_INFO_MANUAL)); watchdog.noteBoot(); - verify(rescuePartyObserver).executeBootLoopMitigation(3); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(4); - verify(rollbackObserver, never()).executeBootLoopMitigation(2); + verify(rescuePartyObserver).onExecuteBootLoopMitigation(3); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(4); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(2); watchdog.noteBoot(); - verify(rescuePartyObserver).executeBootLoopMitigation(4); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(5); - verify(rollbackObserver, never()).executeBootLoopMitigation(2); + verify(rescuePartyObserver).onExecuteBootLoopMitigation(4); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(5); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(2); watchdog.noteBoot(); - verify(rescuePartyObserver).executeBootLoopMitigation(5); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(6); - verify(rollbackObserver, never()).executeBootLoopMitigation(2); + verify(rescuePartyObserver).onExecuteBootLoopMitigation(5); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(6); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(2); watchdog.noteBoot(); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(6); - verify(rollbackObserver).executeBootLoopMitigation(2); - verify(rollbackObserver, never()).executeBootLoopMitigation(3); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(6); + verify(rollbackObserver).onExecuteBootLoopMitigation(2); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(3); // Update the list of available rollbacks after executing bootloop mitigation when(mRollbackManager.getAvailableRollbacks()).thenReturn(List.of(ROLLBACK_INFO_MANUAL)); watchdog.noteBoot(); - verify(rescuePartyObserver).executeBootLoopMitigation(6); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(7); - verify(rollbackObserver, never()).executeBootLoopMitigation(3); + verify(rescuePartyObserver).onExecuteBootLoopMitigation(6); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(7); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(3); moveTimeForwardAndDispatch(PackageWatchdog.DEFAULT_DEESCALATION_WINDOW_MS + 1); Mockito.reset(rescuePartyObserver); @@ -361,8 +361,8 @@ public class CrashRecoveryTest { for (int i = 0; i < PackageWatchdog.DEFAULT_BOOT_LOOP_TRIGGER_COUNT; i++) { watchdog.noteBoot(); } - verify(rescuePartyObserver).executeBootLoopMitigation(1); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(2); + verify(rescuePartyObserver).onExecuteBootLoopMitigation(1); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(2); } @Test @@ -373,37 +373,37 @@ public class CrashRecoveryTest { RollbackPackageHealthObserver rollbackObserver = setUpRollbackPackageHealthObserver(watchdog); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(1); - verify(rollbackObserver, never()).executeBootLoopMitigation(1); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(1); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(1); for (int i = 0; i < PackageWatchdog.DEFAULT_BOOT_LOOP_TRIGGER_COUNT; i++) { watchdog.noteBoot(); } - verify(rescuePartyObserver).executeBootLoopMitigation(1); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(2); - verify(rollbackObserver, never()).executeBootLoopMitigation(1); + verify(rescuePartyObserver).onExecuteBootLoopMitigation(1); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(2); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(1); watchdog.noteBoot(); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(2); - verify(rollbackObserver).executeBootLoopMitigation(1); - verify(rollbackObserver, never()).executeBootLoopMitigation(2); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(2); + verify(rollbackObserver).onExecuteBootLoopMitigation(1); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(2); // Update the list of available rollbacks after executing bootloop mitigation once when(mRollbackManager.getAvailableRollbacks()).thenReturn(List.of(ROLLBACK_INFO_HIGH, ROLLBACK_INFO_MANUAL)); watchdog.noteBoot(); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(2); - verify(rollbackObserver).executeBootLoopMitigation(2); - verify(rollbackObserver, never()).executeBootLoopMitigation(3); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(2); + verify(rollbackObserver).onExecuteBootLoopMitigation(2); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(3); // Update the list of available rollbacks after executing bootloop mitigation when(mRollbackManager.getAvailableRollbacks()).thenReturn(List.of(ROLLBACK_INFO_MANUAL)); watchdog.noteBoot(); - verify(rescuePartyObserver).executeBootLoopMitigation(2); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(3); - verify(rollbackObserver, never()).executeBootLoopMitigation(3); + verify(rescuePartyObserver).onExecuteBootLoopMitigation(2); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(3); + verify(rollbackObserver, never()).onExecuteBootLoopMitigation(3); moveTimeForwardAndDispatch(PackageWatchdog.DEFAULT_DEESCALATION_WINDOW_MS + 1); Mockito.reset(rescuePartyObserver); @@ -411,8 +411,8 @@ public class CrashRecoveryTest { for (int i = 0; i < PackageWatchdog.DEFAULT_BOOT_LOOP_TRIGGER_COUNT; i++) { watchdog.noteBoot(); } - verify(rescuePartyObserver).executeBootLoopMitigation(1); - verify(rescuePartyObserver, never()).executeBootLoopMitigation(2); + verify(rescuePartyObserver).onExecuteBootLoopMitigation(1); + verify(rescuePartyObserver, never()).onExecuteBootLoopMitigation(2); } @Test @@ -435,46 +435,46 @@ public class CrashRecoveryTest { Arrays.asList(versionedPackageA), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: SCOPED_DEVICE_CONFIG_RESET - verify(rescuePartyObserver).execute(versionedPackageA, + verify(rescuePartyObserver).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); - verify(rescuePartyObserver, never()).execute(versionedPackageA, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); - verify(rollbackObserver, never()).execute(versionedPackageA, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(versionedPackageA), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: ALL_DEVICE_CONFIG_RESET - verify(rescuePartyObserver).execute(versionedPackageA, + verify(rescuePartyObserver).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); - verify(rescuePartyObserver, never()).execute(versionedPackageA, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 3); - verify(rollbackObserver, never()).execute(versionedPackageA, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(versionedPackageA), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: WARM_REBOOT - verify(rescuePartyObserver).execute(versionedPackageA, + verify(rescuePartyObserver).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 3); - verify(rescuePartyObserver, never()).execute(versionedPackageA, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 4); - verify(rollbackObserver, never()).execute(versionedPackageA, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(versionedPackageA), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: Low impact rollback - verify(rollbackObserver).execute(versionedPackageA, + verify(rollbackObserver).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); - verify(rescuePartyObserver, never()).execute(versionedPackageA, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 4); // update available rollbacks to mock rollbacks being applied after the call to - // rollbackObserver.execute + // rollbackObserver.onExecuteHealthCheckMitigation when(mRollbackManager.getAvailableRollbacks()).thenReturn( List.of(ROLLBACK_INFO_HIGH, ROLLBACK_INFO_MANUAL)); @@ -482,9 +482,9 @@ public class CrashRecoveryTest { Arrays.asList(versionedPackageA), PackageWatchdog.FAILURE_REASON_APP_CRASH); // DEFAULT_MAJOR_USER_IMPACT_LEVEL_THRESHOLD reached. No more mitigations applied - verify(rescuePartyObserver, never()).execute(versionedPackageA, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 4); - verify(rollbackObserver, never()).execute(versionedPackageA, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); } @@ -510,24 +510,24 @@ public class CrashRecoveryTest { Arrays.asList(versionedPackageA), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: WARM_REBOOT - verify(rescuePartyObserver).execute(versionedPackageA, + verify(rescuePartyObserver).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); - verify(rescuePartyObserver, never()).execute(versionedPackageA, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); - verify(rollbackObserver, never()).execute(versionedPackageA, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(versionedPackageA), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: Low impact rollback - verify(rollbackObserver).execute(versionedPackageA, + verify(rollbackObserver).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); - verify(rescuePartyObserver, never()).execute(versionedPackageA, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); // update available rollbacks to mock rollbacks being applied after the call to - // rollbackObserver.execute + // rollbackObserver.onExecuteHealthCheckMitigation when(mRollbackManager.getAvailableRollbacks()).thenReturn( List.of(ROLLBACK_INFO_HIGH, ROLLBACK_INFO_MANUAL)); @@ -535,9 +535,9 @@ public class CrashRecoveryTest { Arrays.asList(versionedPackageA), PackageWatchdog.FAILURE_REASON_APP_CRASH); // DEFAULT_MAJOR_USER_IMPACT_LEVEL_THRESHOLD reached. No more mitigations applied - verify(rescuePartyObserver, never()).execute(versionedPackageA, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); - verify(rollbackObserver, never()).execute(versionedPackageA, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageA, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); } @@ -567,48 +567,48 @@ public class CrashRecoveryTest { Arrays.asList(versionedPackageUi), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: SCOPED_DEVICE_CONFIG_RESET - verify(rescuePartyObserver).execute(versionedPackageUi, + verify(rescuePartyObserver).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); - verify(rescuePartyObserver, never()).execute(versionedPackageUi, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); - verify(rollbackObserver, never()).execute(versionedPackageUi, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(versionedPackageUi), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: ALL_DEVICE_CONFIG_RESET - verify(rescuePartyObserver).execute(versionedPackageUi, + verify(rescuePartyObserver).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); - verify(rescuePartyObserver, never()).execute(versionedPackageUi, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 3); - verify(rollbackObserver, never()).execute(versionedPackageUi, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(versionedPackageUi), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: WARM_REBOOT - verify(rescuePartyObserver).execute(versionedPackageUi, + verify(rescuePartyObserver).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 3); - verify(rescuePartyObserver, never()).execute(versionedPackageUi, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 4); - verify(rollbackObserver, never()).execute(versionedPackageUi, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(versionedPackageUi), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: Low impact rollback - verify(rollbackObserver).execute(versionedPackageUi, + verify(rollbackObserver).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); - verify(rescuePartyObserver, never()).execute(versionedPackageUi, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 4); - verify(rollbackObserver, never()).execute(versionedPackageUi, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); // update available rollbacks to mock rollbacks being applied after the call to - // rollbackObserver.execute + // rollbackObserver.onExecuteHealthCheckMitigation when(mRollbackManager.getAvailableRollbacks()).thenReturn( List.of(ROLLBACK_INFO_HIGH, ROLLBACK_INFO_MANUAL)); @@ -616,44 +616,44 @@ public class CrashRecoveryTest { Arrays.asList(versionedPackageUi), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: RESET_SETTINGS_UNTRUSTED_DEFAULTS - verify(rescuePartyObserver).execute(versionedPackageUi, + verify(rescuePartyObserver).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 4); - verify(rescuePartyObserver, never()).execute(versionedPackageUi, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 5); - verify(rollbackObserver, never()).execute(versionedPackageUi, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(versionedPackageUi), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: RESET_SETTINGS_UNTRUSTED_CHANGES - verify(rescuePartyObserver).execute(versionedPackageUi, + verify(rescuePartyObserver).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 5); - verify(rescuePartyObserver, never()).execute(versionedPackageUi, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 6); - verify(rollbackObserver, never()).execute(versionedPackageUi, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(versionedPackageUi), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: RESET_SETTINGS_TRUSTED_DEFAULTS - verify(rescuePartyObserver).execute(versionedPackageUi, + verify(rescuePartyObserver).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 6); - verify(rescuePartyObserver, never()).execute(versionedPackageUi, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 7); - verify(rollbackObserver, never()).execute(versionedPackageUi, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(versionedPackageUi), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: Factory reset. High impact rollbacks are performed only for boot loops. - verify(rescuePartyObserver).execute(versionedPackageUi, + verify(rescuePartyObserver).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 7); - verify(rescuePartyObserver, never()).execute(versionedPackageUi, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 8); - verify(rollbackObserver, never()).execute(versionedPackageUi, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); } @@ -685,26 +685,26 @@ public class CrashRecoveryTest { Arrays.asList(versionedPackageUi), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: WARM_REBOOT - verify(rescuePartyObserver).execute(versionedPackageUi, + verify(rescuePartyObserver).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); - verify(rescuePartyObserver, never()).execute(versionedPackageUi, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); - verify(rollbackObserver, never()).execute(versionedPackageUi, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(versionedPackageUi), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: Low impact rollback - verify(rollbackObserver).execute(versionedPackageUi, + verify(rollbackObserver).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1); - verify(rescuePartyObserver, never()).execute(versionedPackageUi, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); - verify(rollbackObserver, never()).execute(versionedPackageUi, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); // update available rollbacks to mock rollbacks being applied after the call to - // rollbackObserver.execute + // rollbackObserver.onExecuteHealthCheckMitigation when(mRollbackManager.getAvailableRollbacks()).thenReturn( List.of(ROLLBACK_INFO_HIGH, ROLLBACK_INFO_MANUAL)); @@ -712,17 +712,17 @@ public class CrashRecoveryTest { Arrays.asList(versionedPackageUi), PackageWatchdog.FAILURE_REASON_APP_CRASH); // Mitigation: Factory reset. High impact rollbacks are performed only for boot loops. - verify(rescuePartyObserver).execute(versionedPackageUi, + verify(rescuePartyObserver).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); - verify(rescuePartyObserver, never()).execute(versionedPackageUi, + verify(rescuePartyObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 3); - verify(rollbackObserver, never()).execute(versionedPackageUi, + verify(rollbackObserver, never()).onExecuteHealthCheckMitigation(versionedPackageUi, PackageWatchdog.FAILURE_REASON_APP_CRASH, 2); } RollbackPackageHealthObserver setUpRollbackPackageHealthObserver(PackageWatchdog watchdog) { RollbackPackageHealthObserver rollbackObserver = - spy(new RollbackPackageHealthObserver(mSpyContext, mApexManager)); + spy(new RollbackPackageHealthObserver(mSpyContext)); when(mSpyContext.getSystemService(RollbackManager.class)).thenReturn(mRollbackManager); when(mRollbackManager.getAvailableRollbacks()).thenReturn(List.of(ROLLBACK_INFO_LOW, ROLLBACK_INFO_HIGH, ROLLBACK_INFO_MANUAL)); @@ -785,7 +785,7 @@ public class CrashRecoveryTest { Handler handler = new Handler(mTestLooper.getLooper()); PackageWatchdog watchdog = new PackageWatchdog(mSpyContext, policyFile, handler, handler, controller, - mConnectivityModuleConnector, mTestClock); + mTestClock); mockCrashRecoveryProperties(watchdog); // Verify controller is not automatically started diff --git a/tests/PackageWatchdog/src/com/android/server/ExplicitHealthCheckServiceTest.java b/tests/PackageWatchdog/src/com/android/server/ExplicitHealthCheckServiceTest.java index 2fbfeba47b13..cd2ab86d6444 100644 --- a/tests/PackageWatchdog/src/com/android/server/ExplicitHealthCheckServiceTest.java +++ b/tests/PackageWatchdog/src/com/android/server/ExplicitHealthCheckServiceTest.java @@ -35,6 +35,8 @@ public class ExplicitHealthCheckServiceTest { private ExplicitHealthCheckService mExplicitHealthCheckService; private static final String PACKAGE_NAME = "com.test.package"; + private static final String EXTRA_HEALTH_CHECK_PASSED_PACKAGE = + "android.service.watchdog.extra.health_check_passed_package"; @Before public void setup() throws Exception { @@ -50,7 +52,7 @@ public class ExplicitHealthCheckServiceTest { IBinder binder = mExplicitHealthCheckService.onBind(new Intent()); CountDownLatch countDownLatch = new CountDownLatch(1); RemoteCallback callback = new RemoteCallback(result -> { - assertThat(result.get(ExplicitHealthCheckService.EXTRA_HEALTH_CHECK_PASSED_PACKAGE)) + assertThat(result.get(EXTRA_HEALTH_CHECK_PASSED_PACKAGE)) .isEqualTo(PACKAGE_NAME); countDownLatch.countDown(); }); diff --git a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java index 0364781ab064..a540a8d567a1 100644 --- a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java +++ b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java @@ -1754,7 +1754,7 @@ public class PackageWatchdogTest { Handler handler = new Handler(mTestLooper.getLooper()); PackageWatchdog watchdog = new PackageWatchdog(mSpyContext, policyFile, handler, handler, controller, - mConnectivityModuleConnector, mTestClock); + mTestClock); mockCrashRecoveryProperties(watchdog); // Verify controller is not automatically started @@ -1869,8 +1869,8 @@ public class PackageWatchdogTest { return mImpact; } - public boolean execute(VersionedPackage versionedPackage, int failureReason, - int mitigationCount) { + public boolean onExecuteHealthCheckMitigation(VersionedPackage versionedPackage, + int failureReason, int mitigationCount) { mMitigatedPackages.add(versionedPackage.getPackageName()); mMitigationCounts.add(mitigationCount); mLastFailureReason = failureReason; @@ -1893,7 +1893,7 @@ public class PackageWatchdogTest { return mImpact; } - public boolean executeBootLoopMitigation(int level) { + public boolean onExecuteBootLoopMitigation(int level) { mMitigatedBootLoop = true; mBootMitigationCounts.add(level); return true; |