Rewrite PackageWatchdogTest#testRegistration (3/n)

Following go/unit-test-practices, we split testRegistration into smaller
ones so each test focuses on one behavior at a time.

Note we will remove testRegistration in a later CL.

Bug: 140472424
Test: atest PackageWatchdogTest
Change-Id: I88e00a8fc43b953d575ee047979b7fe1d5fbd3ba
This commit is contained in:
JW Wang
2019-09-05 13:42:32 +08:00
parent a5dc6d54b6
commit dcd029cda3

View File

@@ -115,6 +115,106 @@ public class PackageWatchdogTest {
dropShellPermissions();
}
@Test
public void testRegistration_singleObserver() {
PackageWatchdog watchdog = createWatchdog();
TestObserver observer = new TestObserver(OBSERVER_NAME_1);
watchdog.startObservingHealth(observer, Arrays.asList(APP_A), SHORT_DURATION);
raiseFatalFailure(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)));
mTestLooper.dispatchAll();
// The failed packages should be the same as the registered ones to ensure registration is
// done successfully
assertEquals(1, observer.mHealthCheckFailedPackages.size());
assertTrue(observer.mHealthCheckFailedPackages.contains(APP_A));
}
@Test
public void testRegistration_multiObservers() {
PackageWatchdog watchdog = createWatchdog();
TestObserver observer1 = new TestObserver(OBSERVER_NAME_1);
TestObserver observer2 = new TestObserver(OBSERVER_NAME_2);
watchdog.startObservingHealth(observer1, Arrays.asList(APP_A), SHORT_DURATION);
watchdog.startObservingHealth(observer2, Arrays.asList(APP_A, APP_B), SHORT_DURATION);
raiseFatalFailure(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE),
new VersionedPackage(APP_B, VERSION_CODE)));
mTestLooper.dispatchAll();
// The failed packages should be the same as the registered ones to ensure registration is
// done successfully
assertEquals(1, observer1.mHealthCheckFailedPackages.size());
assertEquals(2, observer2.mHealthCheckFailedPackages.size());
assertTrue(observer1.mHealthCheckFailedPackages.contains(APP_A));
assertTrue(observer2.mHealthCheckFailedPackages.contains(APP_A));
assertTrue(observer2.mHealthCheckFailedPackages.contains(APP_B));
}
@Test
public void testUnregistration_singleObserver() {
PackageWatchdog watchdog = createWatchdog();
TestObserver observer = new TestObserver(OBSERVER_NAME_1);
watchdog.startObservingHealth(observer, Arrays.asList(APP_A), SHORT_DURATION);
watchdog.unregisterHealthObserver(observer);
raiseFatalFailure(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)));
mTestLooper.dispatchAll();
// We should have no failed packages to ensure unregistration is done successfully
assertEquals(0, observer.mHealthCheckFailedPackages.size());
}
@Test
public void testUnregistration_multiObservers() {
PackageWatchdog watchdog = createWatchdog();
TestObserver observer1 = new TestObserver(OBSERVER_NAME_1);
TestObserver observer2 = new TestObserver(OBSERVER_NAME_2);
watchdog.startObservingHealth(observer1, Arrays.asList(APP_A), SHORT_DURATION);
watchdog.startObservingHealth(observer2, Arrays.asList(APP_A), SHORT_DURATION);
watchdog.unregisterHealthObserver(observer2);
raiseFatalFailure(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)));
mTestLooper.dispatchAll();
// observer1 should receive failed packages as intended.
assertEquals(1, observer1.mHealthCheckFailedPackages.size());
// observer2 should have no failed packages to ensure unregistration is done successfully
assertEquals(0, observer2.mHealthCheckFailedPackages.size());
}
@Test
public void testExpiration_singleObserver() {
PackageWatchdog watchdog = createWatchdog();
TestObserver observer = new TestObserver(OBSERVER_NAME_1);
watchdog.startObservingHealth(observer, Arrays.asList(APP_A), SHORT_DURATION);
moveTimeForwardAndDispatch(SHORT_DURATION);
raiseFatalFailure(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)));
mTestLooper.dispatchAll();
// We should have no failed packages for the fatal failure is raised after expiration
assertEquals(0, observer.mHealthCheckFailedPackages.size());
}
@Test
public void testExpiration_multiObservers() {
PackageWatchdog watchdog = createWatchdog();
TestObserver observer1 = new TestObserver(OBSERVER_NAME_1);
TestObserver observer2 = new TestObserver(OBSERVER_NAME_2);
watchdog.startObservingHealth(observer1, Arrays.asList(APP_A), SHORT_DURATION);
watchdog.startObservingHealth(observer2, Arrays.asList(APP_A), LONG_DURATION);
moveTimeForwardAndDispatch(SHORT_DURATION);
raiseFatalFailure(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)));
mTestLooper.dispatchAll();
// We should have no failed packages for the fatal failure is raised after expiration
assertEquals(0, observer1.mHealthCheckFailedPackages.size());
// We should have failed packages since observer2 hasn't expired
assertEquals(1, observer2.mHealthCheckFailedPackages.size());
}
/**
* Test registration, unregistration, package expiry and duration reduction
*/