diff options
author | 2024-12-11 21:33:08 +0000 | |
---|---|---|
committer | 2024-12-12 14:04:35 +0000 | |
commit | 96ce823a87d0e58c67e4cb214635cc3e7a2ec70b (patch) | |
tree | 8a959cd6d3b5ae28f73413e1d15b4fdccd826509 | |
parent | f0b78a46c293dac5f3e04e16ef46004ca0346e1c (diff) |
Return detailed codes while executing mitigations
Returning int in while executing mitigations in
1. onExecuteBootLoopMitigation
2. onExecuteHealthCheckMitigation
Bug: 377635591
Test: TH
Flag: EXEMPT refactoring
Change-Id: I3d2964cec26ec1553c4f58e948aa5c86a8aa4335
8 files changed, 228 insertions, 54 deletions
diff --git a/packages/CrashRecovery/services/module/java/com/android/server/PackageWatchdog.java b/packages/CrashRecovery/services/module/java/com/android/server/PackageWatchdog.java index 8b8ab587e84a..31e1eb36ad8d 100644 --- a/packages/CrashRecovery/services/module/java/com/android/server/PackageWatchdog.java +++ b/packages/CrashRecovery/services/module/java/com/android/server/PackageWatchdog.java @@ -767,6 +767,70 @@ public class PackageWatchdog { } /** + * Indicates that the result of a mitigation executed during + * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} or + * {@link PackageHealthObserver#onExecuteBootLoopMitigation} is unknown. + */ + public static final int MITIGATION_RESULT_UNKNOWN = + ObserverMitigationResult.MITIGATION_RESULT_UNKNOWN; + + /** + * Indicates that a mitigation was successfully triggered or executed during + * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} or + * {@link PackageHealthObserver#onExecuteBootLoopMitigation}. + */ + public static final int MITIGATION_RESULT_SUCCESS = + ObserverMitigationResult.MITIGATION_RESULT_SUCCESS; + + /** + * Indicates that a mitigation executed during + * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} or + * {@link PackageHealthObserver#onExecuteBootLoopMitigation} was skipped. + */ + public static final int MITIGATION_RESULT_SKIPPED = + ObserverMitigationResult.MITIGATION_RESULT_SKIPPED; + + /** + * Indicates that a mitigation executed during + * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} or + * {@link PackageHealthObserver#onExecuteBootLoopMitigation} failed, + * but the failure is potentially retryable. + */ + public static final int MITIGATION_RESULT_FAILURE_RETRYABLE = + ObserverMitigationResult.MITIGATION_RESULT_FAILURE_RETRYABLE; + + /** + * Indicates that a mitigation executed during + * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} or + * {@link PackageHealthObserver#onExecuteBootLoopMitigation} failed, + * and the failure is not retryable. + */ + public static final int MITIGATION_RESULT_FAILURE_NON_RETRYABLE = + ObserverMitigationResult.MITIGATION_RESULT_FAILURE_NON_RETRYABLE; + + /** + * Possible return values of the for mitigations executed during + * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} and + * {@link PackageHealthObserver#onExecuteBootLoopMitigation}. + * @hide + */ + @Retention(SOURCE) + @IntDef(prefix = "MITIGATION_RESULT_", value = { + ObserverMitigationResult.MITIGATION_RESULT_UNKNOWN, + ObserverMitigationResult.MITIGATION_RESULT_SUCCESS, + ObserverMitigationResult.MITIGATION_RESULT_SKIPPED, + ObserverMitigationResult.MITIGATION_RESULT_FAILURE_RETRYABLE, + ObserverMitigationResult.MITIGATION_RESULT_FAILURE_NON_RETRYABLE, + }) + public @interface ObserverMitigationResult { + int MITIGATION_RESULT_UNKNOWN = 0; + int MITIGATION_RESULT_SUCCESS = 1; + int MITIGATION_RESULT_SKIPPED = 2; + int MITIGATION_RESULT_FAILURE_RETRYABLE = 3; + int MITIGATION_RESULT_FAILURE_NON_RETRYABLE = 4; + } + + /** * The minimum value that can be returned by any observer. * It represents that no mitigations were available. */ @@ -852,13 +916,20 @@ public class PackageWatchdog { * health check. * * @param versionedPackage the package that is failing. This may be null if a native - * service is crashing. - * @param failureReason the type of failure that is occurring. + * service is crashing. + * @param failureReason the type of failure that is occurring. * @param mitigationCount the number of times mitigation has been called for this package - * (including this time). - * @return {@code true} if action was executed successfully, {@code false} otherwise + * (including this time). + * @return {@link #MITIGATION_RESULT_SUCCESS} if the mitigation was successful, + * {@link #MITIGATION_RESULT_FAILURE_RETRYABLE} if the mitigation failed but can be + * retried, + * {@link #MITIGATION_RESULT_FAILURE_NON_RETRYABLE} if the mitigation failed and + * cannot be retried, + * {@link #MITIGATION_RESULT_UNKNOWN} if the result of the mitigation is unknown, + * or {@link #MITIGATION_RESULT_SKIPPED} if the mitigation was skipped. */ - boolean onExecuteHealthCheckMitigation(@Nullable VersionedPackage versionedPackage, + @ObserverMitigationResult int onExecuteHealthCheckMitigation( + @Nullable VersionedPackage versionedPackage, @FailureReasons int failureReason, int mitigationCount); @@ -885,10 +956,16 @@ public class PackageWatchdog { * @param mitigationCount the number of times mitigation has been attempted for this * boot loop (including this time). * - * @return {@code true} if action was executed successfully, {@code false} otherwise + * @return {@link #MITIGATION_RESULT_SUCCESS} if the mitigation was successful, + * {@link #MITIGATION_RESULT_FAILURE_RETRYABLE} if the mitigation failed but can be + * retried, + * {@link #MITIGATION_RESULT_FAILURE_NON_RETRYABLE} if the mitigation failed and + * cannot be retried, + * {@link #MITIGATION_RESULT_UNKNOWN} if the result of the mitigation is unknown, + * or {@link #MITIGATION_RESULT_SKIPPED} if the mitigation was skipped. */ - default boolean onExecuteBootLoopMitigation(int mitigationCount) { - return false; + default @ObserverMitigationResult int onExecuteBootLoopMitigation(int mitigationCount) { + return ObserverMitigationResult.MITIGATION_RESULT_SKIPPED; } // TODO(b/120598832): Ensure uniqueness? diff --git a/packages/CrashRecovery/services/module/java/com/android/server/RescueParty.java b/packages/CrashRecovery/services/module/java/com/android/server/RescueParty.java index bad6ab7c1dd4..bb9e96238e1c 100644 --- a/packages/CrashRecovery/services/module/java/com/android/server/RescueParty.java +++ b/packages/CrashRecovery/services/module/java/com/android/server/RescueParty.java @@ -16,6 +16,8 @@ package com.android.server; +import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SKIPPED; +import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SUCCESS; import static com.android.server.crashrecovery.CrashRecoveryUtils.logCrashRecoveryEvent; import android.annotation.IntDef; @@ -728,10 +730,10 @@ public class RescueParty { } @Override - public boolean onExecuteHealthCheckMitigation(@Nullable VersionedPackage failedPackage, + public int onExecuteHealthCheckMitigation(@Nullable VersionedPackage failedPackage, @FailureReasons int failureReason, int mitigationCount) { if (isDisabled()) { - return false; + return MITIGATION_RESULT_SKIPPED; } Slog.i(TAG, "Executing remediation." + " failedPackage: " @@ -753,9 +755,9 @@ public class RescueParty { } executeRescueLevel(mContext, failedPackage == null ? null : failedPackage.getPackageName(), level); - return true; + return MITIGATION_RESULT_SUCCESS; } else { - return false; + return MITIGATION_RESULT_SKIPPED; } } @@ -796,9 +798,9 @@ public class RescueParty { } @Override - public boolean onExecuteBootLoopMitigation(int mitigationCount) { + public int onExecuteBootLoopMitigation(int mitigationCount) { if (isDisabled()) { - return false; + return MITIGATION_RESULT_SKIPPED; } boolean mayPerformReboot = !shouldThrottleReboot(); final int level; @@ -813,7 +815,7 @@ public class RescueParty { level = getRescueLevel(mitigationCount, mayPerformReboot); } executeRescueLevel(mContext, /*failedPackage=*/ null, level); - return true; + return MITIGATION_RESULT_SUCCESS; } @Override diff --git a/packages/CrashRecovery/services/module/java/com/android/server/rollback/RollbackPackageHealthObserver.java b/packages/CrashRecovery/services/module/java/com/android/server/rollback/RollbackPackageHealthObserver.java index c80a1a4ea187..c75f3aa60ac4 100644 --- a/packages/CrashRecovery/services/module/java/com/android/server/rollback/RollbackPackageHealthObserver.java +++ b/packages/CrashRecovery/services/module/java/com/android/server/rollback/RollbackPackageHealthObserver.java @@ -16,6 +16,8 @@ package com.android.server.rollback; +import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SKIPPED; +import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SUCCESS; import static com.android.server.crashrecovery.CrashRecoveryUtils.logCrashRecoveryEvent; import android.annotation.AnyThread; @@ -172,7 +174,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve } @Override - public boolean onExecuteHealthCheckMitigation(@Nullable VersionedPackage failedPackage, + public int onExecuteHealthCheckMitigation(@Nullable VersionedPackage failedPackage, @FailureReasons int rollbackReason, int mitigationCount) { Slog.i(TAG, "Executing remediation." + " failedPackage: " @@ -183,7 +185,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve List<RollbackInfo> availableRollbacks = getAvailableRollbacks(); if (rollbackReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH) { mHandler.post(() -> rollbackAllLowImpact(availableRollbacks, rollbackReason)); - return true; + return MITIGATION_RESULT_SUCCESS; } List<RollbackInfo> lowImpactRollbacks = getRollbacksAvailableForImpactLevel( @@ -198,7 +200,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve } else { if (rollbackReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH) { mHandler.post(() -> rollbackAll(rollbackReason)); - return true; + return MITIGATION_RESULT_SUCCESS; } RollbackInfo rollback = getAvailableRollback(failedPackage); @@ -210,7 +212,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve } // Assume rollbacks executed successfully - return true; + return MITIGATION_RESULT_SUCCESS; } @Override @@ -226,15 +228,15 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve } @Override - public boolean onExecuteBootLoopMitigation(int mitigationCount) { + public int onExecuteBootLoopMitigation(int mitigationCount) { if (Flags.recoverabilityDetection()) { List<RollbackInfo> availableRollbacks = getAvailableRollbacks(); triggerLeastImpactLevelRollback(availableRollbacks, PackageWatchdog.FAILURE_REASON_BOOT_LOOP); - return true; + return MITIGATION_RESULT_SUCCESS; } - return false; + return MITIGATION_RESULT_SKIPPED; } @Override 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 4fea9372971d..ffae5176cebf 100644 --- a/packages/CrashRecovery/services/platform/java/com/android/server/PackageWatchdog.java +++ b/packages/CrashRecovery/services/platform/java/com/android/server/PackageWatchdog.java @@ -752,6 +752,70 @@ public class PackageWatchdog { return mPackagesExemptFromImpactLevelThreshold; } + /** + * Indicates that the result of a mitigation executed during + * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} or + * {@link PackageHealthObserver#onExecuteBootLoopMitigation} is unknown. + */ + public static final int MITIGATION_RESULT_UNKNOWN = + ObserverMitigationResult.MITIGATION_RESULT_UNKNOWN; + + /** + * Indicates that a mitigation was successfully triggered or executed during + * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} or + * {@link PackageHealthObserver#onExecuteBootLoopMitigation}. + */ + public static final int MITIGATION_RESULT_SUCCESS = + ObserverMitigationResult.MITIGATION_RESULT_SUCCESS; + + /** + * Indicates that a mitigation executed during + * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} or + * {@link PackageHealthObserver#onExecuteBootLoopMitigation} was skipped. + */ + public static final int MITIGATION_RESULT_SKIPPED = + ObserverMitigationResult.MITIGATION_RESULT_SKIPPED; + + /** + * Indicates that a mitigation executed during + * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} or + * {@link PackageHealthObserver#onExecuteBootLoopMitigation} failed, + * but the failure is potentially retryable. + */ + public static final int MITIGATION_RESULT_FAILURE_RETRYABLE = + ObserverMitigationResult.MITIGATION_RESULT_FAILURE_RETRYABLE; + + /** + * Indicates that a mitigation executed during + * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} or + * {@link PackageHealthObserver#onExecuteBootLoopMitigation} failed, + * and the failure is not retryable. + */ + public static final int MITIGATION_RESULT_FAILURE_NON_RETRYABLE = + ObserverMitigationResult.MITIGATION_RESULT_FAILURE_NON_RETRYABLE; + + /** + * Possible return values of the for mitigations executed during + * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} and + * {@link PackageHealthObserver#onExecuteBootLoopMitigation}. + * @hide + */ + @Retention(SOURCE) + @IntDef(prefix = "MITIGATION_RESULT_", value = { + ObserverMitigationResult.MITIGATION_RESULT_UNKNOWN, + ObserverMitigationResult.MITIGATION_RESULT_SUCCESS, + ObserverMitigationResult.MITIGATION_RESULT_SKIPPED, + ObserverMitigationResult.MITIGATION_RESULT_FAILURE_RETRYABLE, + ObserverMitigationResult.MITIGATION_RESULT_FAILURE_NON_RETRYABLE, + }) + public @interface ObserverMitigationResult { + int MITIGATION_RESULT_UNKNOWN = 0; + int MITIGATION_RESULT_SUCCESS = 1; + int MITIGATION_RESULT_SKIPPED = 2; + int MITIGATION_RESULT_FAILURE_RETRYABLE = 3; + int MITIGATION_RESULT_FAILURE_NON_RETRYABLE = 4; + } + /** Possible severity values of the user impact of a * {@link PackageHealthObserver#onExecuteHealthCheckMitigation}. * @hide @@ -809,16 +873,25 @@ public class PackageWatchdog { int mitigationCount); /** - * Executes mitigation for {@link #onHealthCheckFailed}. + * This would be called after {@link #onHealthCheckFailed}. + * This is called only if current observer returned least impact mitigation for failed + * health check. * * @param versionedPackage the package that is failing. This may be null if a native - * service is crashing. - * @param failureReason the type of failure that is occurring. + * service is crashing. + * @param failureReason the type of failure that is occurring. * @param mitigationCount the number of times mitigation has been called for this package - * (including this time). - * @return {@code true} if action was executed successfully, {@code false} otherwise + * (including this time). + * @return {@link #MITIGATION_RESULT_SUCCESS} if the mitigation was successful, + * {@link #MITIGATION_RESULT_FAILURE_RETRYABLE} if the mitigation failed but can be + * retried, + * {@link #MITIGATION_RESULT_FAILURE_NON_RETRYABLE} if the mitigation failed and + * cannot be retried, + * {@link #MITIGATION_RESULT_UNKNOWN} if the result of the mitigation is unknown, + * or {@link #MITIGATION_RESULT_SKIPPED} if the mitigation was skipped. */ - boolean onExecuteHealthCheckMitigation(@Nullable VersionedPackage versionedPackage, + @ObserverMitigationResult int onExecuteHealthCheckMitigation( + @Nullable VersionedPackage versionedPackage, @FailureReasons int failureReason, int mitigationCount); @@ -834,12 +907,23 @@ public class PackageWatchdog { } /** - * Executes mitigation for {@link #onBootLoop} + * This would be called after {@link #onBootLoop}. + * This is called only if current observer returned least impact mitigation for fixing + * boot loop. + * * @param mitigationCount the number of times mitigation has been attempted for this * boot loop (including this time). + * + * @return {@link #MITIGATION_RESULT_SUCCESS} if the mitigation was successful, + * {@link #MITIGATION_RESULT_FAILURE_RETRYABLE} if the mitigation failed but can be + * retried, + * {@link #MITIGATION_RESULT_FAILURE_NON_RETRYABLE} if the mitigation failed and + * cannot be retried, + * {@link #MITIGATION_RESULT_UNKNOWN} if the result of the mitigation is unknown, + * or {@link #MITIGATION_RESULT_SKIPPED} if the mitigation was skipped. */ - default boolean onExecuteBootLoopMitigation(int mitigationCount) { - return false; + default @ObserverMitigationResult int onExecuteBootLoopMitigation(int mitigationCount) { + return ObserverMitigationResult.MITIGATION_RESULT_SKIPPED; } // TODO(b/120598832): Ensure uniqueness? 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 2bb72fb43dff..c6452d31f881 100644 --- a/packages/CrashRecovery/services/platform/java/com/android/server/RescueParty.java +++ b/packages/CrashRecovery/services/platform/java/com/android/server/RescueParty.java @@ -18,6 +18,8 @@ package com.android.server; import static android.provider.DeviceConfig.Properties; +import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SKIPPED; +import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SUCCESS; import static com.android.server.crashrecovery.CrashRecoveryUtils.logCrashRecoveryEvent; import android.annotation.IntDef; @@ -859,10 +861,10 @@ public class RescueParty { } @Override - public boolean onExecuteHealthCheckMitigation(@Nullable VersionedPackage failedPackage, + public int onExecuteHealthCheckMitigation(@Nullable VersionedPackage failedPackage, @FailureReasons int failureReason, int mitigationCount) { if (isDisabled()) { - return false; + return MITIGATION_RESULT_SKIPPED; } Slog.i(TAG, "Executing remediation." + " failedPackage: " @@ -884,9 +886,9 @@ public class RescueParty { } executeRescueLevel(mContext, failedPackage == null ? null : failedPackage.getPackageName(), level); - return true; + return MITIGATION_RESULT_SUCCESS; } else { - return false; + return MITIGATION_RESULT_SKIPPED; } } @@ -927,9 +929,9 @@ public class RescueParty { } @Override - public boolean onExecuteBootLoopMitigation(int mitigationCount) { + public int onExecuteBootLoopMitigation(int mitigationCount) { if (isDisabled()) { - return false; + return MITIGATION_RESULT_SKIPPED; } boolean mayPerformReboot = !shouldThrottleReboot(); final int level; @@ -944,7 +946,7 @@ public class RescueParty { level = getRescueLevel(mitigationCount, mayPerformReboot); } executeRescueLevel(mContext, /*failedPackage=*/ null, level); - return true; + return MITIGATION_RESULT_SUCCESS; } @Override 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 0692cdbc5e40..04115373e926 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 @@ -18,6 +18,8 @@ package com.android.server.rollback; import static android.content.pm.Flags.provideInfoOfApkInApex; +import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SKIPPED; +import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SUCCESS; import static com.android.server.crashrecovery.CrashRecoveryUtils.logCrashRecoveryEvent; import android.annotation.AnyThread; @@ -175,7 +177,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve } @Override - public boolean onExecuteHealthCheckMitigation(@Nullable VersionedPackage failedPackage, + public int onExecuteHealthCheckMitigation(@Nullable VersionedPackage failedPackage, @FailureReasons int rollbackReason, int mitigationCount) { Slog.i(TAG, "Executing remediation." + " failedPackage: " @@ -186,7 +188,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve List<RollbackInfo> availableRollbacks = getAvailableRollbacks(); if (rollbackReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH) { mHandler.post(() -> rollbackAllLowImpact(availableRollbacks, rollbackReason)); - return true; + return MITIGATION_RESULT_SUCCESS; } List<RollbackInfo> lowImpactRollbacks = getRollbacksAvailableForImpactLevel( @@ -201,7 +203,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve } else { if (rollbackReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH) { mHandler.post(() -> rollbackAll(rollbackReason)); - return true; + return MITIGATION_RESULT_SUCCESS; } RollbackInfo rollback = getAvailableRollback(failedPackage); @@ -213,7 +215,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve } // Assume rollbacks executed successfully - return true; + return MITIGATION_RESULT_SUCCESS; } @Override @@ -229,15 +231,15 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve } @Override - public boolean onExecuteBootLoopMitigation(int mitigationCount) { + public int onExecuteBootLoopMitigation(int mitigationCount) { if (Flags.recoverabilityDetection()) { List<RollbackInfo> availableRollbacks = getAvailableRollbacks(); triggerLeastImpactLevelRollback(availableRollbacks, PackageWatchdog.FAILURE_REASON_BOOT_LOOP); - return true; + return MITIGATION_RESULT_SUCCESS; } - return false; + return MITIGATION_RESULT_SKIPPED; } @Override diff --git a/services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java b/services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java index f40d8038da3b..db04d39e772c 100644 --- a/services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java @@ -25,6 +25,8 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; import static com.android.dx.mockito.inline.extended.ExtendedMockito.when; +import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SKIPPED; +import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SUCCESS; import static com.android.server.RescueParty.DEFAULT_FACTORY_RESET_THROTTLE_DURATION_MIN; import static com.android.server.RescueParty.LEVEL_FACTORY_RESET; @@ -357,11 +359,13 @@ public class RescuePartyTest { SystemProperties.set(RescueParty.PROP_ENABLE_RESCUE, Boolean.toString(false)); SystemProperties.set(PROP_DISABLE_RESCUE, Boolean.toString(true)); assertEquals(RescuePartyObserver.getInstance(mMockContext).onExecuteHealthCheckMitigation( - sFailingPackage, PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 1), false); + sFailingPackage, PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 1), + MITIGATION_RESULT_SKIPPED); SystemProperties.set(RescueParty.PROP_ENABLE_RESCUE, Boolean.toString(true)); - assertTrue(RescuePartyObserver.getInstance(mMockContext).onExecuteHealthCheckMitigation( - sFailingPackage, PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 1)); + assertEquals(RescuePartyObserver.getInstance(mMockContext).onExecuteHealthCheckMitigation( + sFailingPackage, PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 1), + MITIGATION_RESULT_SUCCESS); } @Test @@ -370,7 +374,8 @@ public class RescuePartyTest { SystemProperties.set(PROP_DEVICE_CONFIG_DISABLE_FLAG, Boolean.toString(true)); assertEquals(RescuePartyObserver.getInstance(mMockContext).onExecuteHealthCheckMitigation( - sFailingPackage, PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 1), false); + sFailingPackage, PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 1), + MITIGATION_RESULT_SKIPPED); // Restore the property value initialized in SetUp() SystemProperties.set(RescueParty.PROP_ENABLE_RESCUE, Boolean.toString(true)); diff --git a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java index c64dc7296f0a..928e2326498d 100644 --- a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java +++ b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java @@ -19,6 +19,7 @@ package com.android.server; import static android.service.watchdog.ExplicitHealthCheckService.PackageConfig; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer; +import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SUCCESS; import static com.google.common.truth.Truth.assertThat; @@ -1933,12 +1934,12 @@ public class PackageWatchdogTest { return mImpact; } - public boolean onExecuteHealthCheckMitigation(VersionedPackage versionedPackage, + public int onExecuteHealthCheckMitigation(VersionedPackage versionedPackage, int failureReason, int mitigationCount) { mMitigatedPackages.add(versionedPackage.getPackageName()); mMitigationCounts.add(mitigationCount); mLastFailureReason = failureReason; - return true; + return MITIGATION_RESULT_SUCCESS; } public String getUniqueIdentifier() { @@ -1957,11 +1958,10 @@ public class PackageWatchdogTest { return mImpact; } - public boolean onExecuteBootLoopMitigation(int level) { - Slog.w("hrm1243", "I'm here " + level); + public int onExecuteBootLoopMitigation(int level) { mMitigatedBootLoop = true; mBootMitigationCounts.add(level); - return true; + return MITIGATION_RESULT_SUCCESS; } public boolean mitigatedBootLoop() { |