summaryrefslogtreecommitdiff
path: root/tests/PackageWatchdog/src
diff options
context:
space:
mode:
authorJW Wang <wangchun@google.com>2019-09-10 15:06:43 +0800
committerJW Wang <wangchun@google.com>2019-09-17 21:07:17 +0800
commite0f2f3d85dac3dea8d88ab4f078910770d125dbe (patch)
treed0d2ea1b9277b58594284757d5a6a5660c5f700a /tests/PackageWatchdog/src
parente4828cb97c43c0bdc06cfbc88b0e97ee62f2e970 (diff)
Use a default value in case of an invalid parameter
Since startObservingHealth is called during boot, it is less desirable to cause boot loops by an uncaught exception. We will fall back to DEFAULT_OBSERVING_DURATION_MS when invalid durationMs is passed. See b/140780361 for more details about the design decision. Bug: 140780361 Test: atest PackageWatchdogTest Change-Id: I2bcbecb2dc4c2448ef697001dd93aea5f50f9dbf
Diffstat (limited to 'tests/PackageWatchdog/src')
-rw-r--r--tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java
index ff4c9702bd80..79f5095010e8 100644
--- a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java
+++ b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java
@@ -765,6 +765,45 @@ public class PackageWatchdogTest {
assertThat(observer.mHealthCheckFailedPackages).containsExactly(APP_B);
}
+ /**
+ * Test default monitoring duration is used when PackageWatchdog#startObservingHealth is offered
+ * an invalid durationMs.
+ */
+ @Test
+ public void testInvalidMonitoringDuration_beforeExpiry() {
+ PackageWatchdog watchdog = createWatchdog();
+ TestObserver observer = new TestObserver(OBSERVER_NAME_1);
+
+ watchdog.startObservingHealth(observer, Arrays.asList(APP_A), -1);
+ // Note: Don't move too close to the expiration time otherwise the handler will be thrashed
+ // by PackageWatchdog#scheduleNextSyncStateLocked which keeps posting runnables with very
+ // small timeouts.
+ moveTimeForwardAndDispatch(PackageWatchdog.DEFAULT_OBSERVING_DURATION_MS - 100);
+ raiseFatalFailureAndDispatch(watchdog,
+ Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)));
+
+ // We should receive APP_A since the observer hasn't expired
+ assertThat(observer.mHealthCheckFailedPackages).containsExactly(APP_A);
+ }
+
+ /**
+ * Test default monitoring duration is used when PackageWatchdog#startObservingHealth is offered
+ * an invalid durationMs.
+ */
+ @Test
+ public void testInvalidMonitoringDuration_afterExpiry() {
+ PackageWatchdog watchdog = createWatchdog();
+ TestObserver observer = new TestObserver(OBSERVER_NAME_1);
+
+ watchdog.startObservingHealth(observer, Arrays.asList(APP_A), -1);
+ moveTimeForwardAndDispatch(PackageWatchdog.DEFAULT_OBSERVING_DURATION_MS + 1);
+ raiseFatalFailureAndDispatch(watchdog,
+ Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)));
+
+ // We should receive nothing since the observer has expired
+ assertThat(observer.mHealthCheckFailedPackages).isEmpty();
+ }
+
/** Test we are notified when enough failures are triggered within any window. */
@Test
public void testFailureTriggerWindow() {