summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/CrashRecovery/services/module/java/com/android/server/PackageWatchdog.java93
-rw-r--r--packages/CrashRecovery/services/module/java/com/android/server/RescueParty.java16
-rw-r--r--packages/CrashRecovery/services/module/java/com/android/server/rollback/RollbackPackageHealthObserver.java16
-rw-r--r--packages/CrashRecovery/services/platform/java/com/android/server/PackageWatchdog.java102
-rw-r--r--packages/CrashRecovery/services/platform/java/com/android/server/RescueParty.java16
-rw-r--r--packages/CrashRecovery/services/platform/java/com/android/server/rollback/RollbackPackageHealthObserver.java16
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java13
-rw-r--r--tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java10
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() {