Loading tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/StagedRollbackTest.java +28 −26 Original line number Diff line number Diff line Loading @@ -92,7 +92,7 @@ public class StagedRollbackTest { * Enable rollback phase. */ @Test public void testBadApkOnlyEnableRollback() throws Exception { public void testBadApkOnly_Phase1() throws Exception { Uninstall.packages(TestApp.A); assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(-1); Loading @@ -101,9 +101,6 @@ public class StagedRollbackTest { InstallUtils.processUserData(TestApp.A); Install.single(TestApp.ACrashing2).setEnableRollback().setStaged().commit(); // At this point, the host test driver will reboot the device and run // testBadApkOnlyConfirmEnableRollback(). } /** Loading @@ -111,7 +108,7 @@ public class StagedRollbackTest { * Confirm that rollback was successfully enabled. */ @Test public void testBadApkOnlyConfirmEnableRollback() throws Exception { public void testBadApkOnly_Phase2() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2); InstallUtils.processUserData(TestApp.A); Loading @@ -122,9 +119,6 @@ public class StagedRollbackTest { assertThat(rollback).packagesContainsExactly( Rollback.from(TestApp.A2).to(TestApp.A1)); assertThat(rollback.isStaged()).isTrue(); // At this point, the host test driver will run // testBadApkOnlyTriggerRollback(). } /** Loading @@ -133,15 +127,14 @@ public class StagedRollbackTest { * rebooting the test out from under it. */ @Test public void testBadApkOnlyTriggerRollback() throws Exception { public void testBadApkOnly_Phase3() throws Exception { // Crash TestApp.A PackageWatchdog#TRIGGER_FAILURE_COUNT times to trigger rollback RollbackUtils.sendCrashBroadcast(TestApp.A, 5); // We expect the device to be rebooted automatically. Wait for that to // happen. At that point, the host test driver will wait for the // device to come back up and run testApkOnlyConfirmRollback(). // We expect the device to be rebooted automatically. Wait for that to happen. Thread.sleep(30 * 1000); // Raise an error anyway if reboot didn't happen. fail("watchdog did not trigger reboot"); } Loading @@ -150,7 +143,7 @@ public class StagedRollbackTest { * Confirm rollback phase. */ @Test public void testBadApkOnlyConfirmRollback() throws Exception { public void testBadApkOnly_Phase4() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); InstallUtils.processUserData(TestApp.A); Loading @@ -177,8 +170,11 @@ public class StagedRollbackTest { networkStack)).isNull(); } /** * Stage install ModuleMetadata package to simulate a Mainline module update. */ @Test public void installModuleMetadataPackage() throws Exception { public void testNativeWatchdogTriggersRollback_Phase1() throws Exception { resetModuleMetadataPackage(); Context context = InstrumentationRegistry.getContext(); PackageInfo metadataPackageInfo = context.getPackageManager().getPackageInfo( Loading @@ -192,39 +188,45 @@ public class StagedRollbackTest { + metadataApkPath); } /** * Verify the rollback is available. */ @Test public void assertNetworkStackRollbackAvailable() throws Exception { public void testNativeWatchdogTriggersRollback_Phase2() throws Exception { RollbackManager rm = RollbackUtils.getRollbackManager(); assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(), getNetworkStackPackageName())).isNotNull(); MODULE_META_DATA_PACKAGE)).isNotNull(); } /** * Verify the rollback is committed after crashing. */ @Test public void assertNetworkStackRollbackCommitted() throws Exception { public void testNativeWatchdogTriggersRollback_Phase3() throws Exception { RollbackManager rm = RollbackUtils.getRollbackManager(); assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(), getNetworkStackPackageName())).isNotNull(); MODULE_META_DATA_PACKAGE)).isNotNull(); } @Test public void assertNoNetworkStackRollbackCommitted() throws Exception { public void assertNetworkStackRollbackAvailable() throws Exception { RollbackManager rm = RollbackUtils.getRollbackManager(); assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(), getNetworkStackPackageName())).isNull(); assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(), getNetworkStackPackageName())).isNotNull(); } @Test public void assertModuleMetadataRollbackAvailable() throws Exception { public void assertNetworkStackRollbackCommitted() throws Exception { RollbackManager rm = RollbackUtils.getRollbackManager(); assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(), MODULE_META_DATA_PACKAGE)).isNotNull(); assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(), getNetworkStackPackageName())).isNotNull(); } @Test public void assertModuleMetadataRollbackCommitted() throws Exception { public void assertNoNetworkStackRollbackCommitted() throws Exception { RollbackManager rm = RollbackUtils.getRollbackManager(); assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(), MODULE_META_DATA_PACKAGE)).isNotNull(); getNetworkStackPackageName())).isNull(); } private String getNetworkStackPackageName() { Loading tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java +7 −7 Original line number Diff line number Diff line Loading @@ -68,35 +68,35 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { */ @Test public void testBadApkOnly() throws Exception { runPhase("testBadApkOnlyEnableRollback"); runPhase("testBadApkOnly_Phase1"); getDevice().reboot(); runPhase("testBadApkOnlyConfirmEnableRollback"); runPhase("testBadApkOnly_Phase2"); try { // This is expected to fail due to the device being rebooted out // from underneath the test. If this fails for reasons other than // the device reboot, those failures should result in failure of // the testApkOnlyConfirmRollback phase. CLog.logAndDisplay(LogLevel.INFO, "testBadApkOnlyTriggerRollback is expected to fail"); runPhase("testBadApkOnlyTriggerRollback"); runPhase("testBadApkOnly_Phase3"); } catch (AssertionError e) { // AssertionError is expected. } getDevice().waitForDeviceAvailable(); runPhase("testBadApkOnlyConfirmRollback"); runPhase("testBadApkOnly_Phase4"); } @Test public void testNativeWatchdogTriggersRollback() throws Exception { //Stage install ModuleMetadata package - this simulates a Mainline module update runPhase("installModuleMetadataPackage"); runPhase("testNativeWatchdogTriggersRollback_Phase1"); // Reboot device to activate staged package getDevice().reboot(); getDevice().waitForDeviceAvailable(); runPhase("assertModuleMetadataRollbackAvailable"); runPhase("testNativeWatchdogTriggersRollback_Phase2"); // crash system_server enough times to trigger a rollback crashProcess("system_server", NATIVE_CRASHES_THRESHOLD); Loading @@ -113,7 +113,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { getDevice().waitForDeviceAvailable(); // verify rollback committed runPhase("assertModuleMetadataRollbackCommitted"); runPhase("testNativeWatchdogTriggersRollback_Phase3"); } /** Loading Loading
tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/StagedRollbackTest.java +28 −26 Original line number Diff line number Diff line Loading @@ -92,7 +92,7 @@ public class StagedRollbackTest { * Enable rollback phase. */ @Test public void testBadApkOnlyEnableRollback() throws Exception { public void testBadApkOnly_Phase1() throws Exception { Uninstall.packages(TestApp.A); assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(-1); Loading @@ -101,9 +101,6 @@ public class StagedRollbackTest { InstallUtils.processUserData(TestApp.A); Install.single(TestApp.ACrashing2).setEnableRollback().setStaged().commit(); // At this point, the host test driver will reboot the device and run // testBadApkOnlyConfirmEnableRollback(). } /** Loading @@ -111,7 +108,7 @@ public class StagedRollbackTest { * Confirm that rollback was successfully enabled. */ @Test public void testBadApkOnlyConfirmEnableRollback() throws Exception { public void testBadApkOnly_Phase2() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2); InstallUtils.processUserData(TestApp.A); Loading @@ -122,9 +119,6 @@ public class StagedRollbackTest { assertThat(rollback).packagesContainsExactly( Rollback.from(TestApp.A2).to(TestApp.A1)); assertThat(rollback.isStaged()).isTrue(); // At this point, the host test driver will run // testBadApkOnlyTriggerRollback(). } /** Loading @@ -133,15 +127,14 @@ public class StagedRollbackTest { * rebooting the test out from under it. */ @Test public void testBadApkOnlyTriggerRollback() throws Exception { public void testBadApkOnly_Phase3() throws Exception { // Crash TestApp.A PackageWatchdog#TRIGGER_FAILURE_COUNT times to trigger rollback RollbackUtils.sendCrashBroadcast(TestApp.A, 5); // We expect the device to be rebooted automatically. Wait for that to // happen. At that point, the host test driver will wait for the // device to come back up and run testApkOnlyConfirmRollback(). // We expect the device to be rebooted automatically. Wait for that to happen. Thread.sleep(30 * 1000); // Raise an error anyway if reboot didn't happen. fail("watchdog did not trigger reboot"); } Loading @@ -150,7 +143,7 @@ public class StagedRollbackTest { * Confirm rollback phase. */ @Test public void testBadApkOnlyConfirmRollback() throws Exception { public void testBadApkOnly_Phase4() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); InstallUtils.processUserData(TestApp.A); Loading @@ -177,8 +170,11 @@ public class StagedRollbackTest { networkStack)).isNull(); } /** * Stage install ModuleMetadata package to simulate a Mainline module update. */ @Test public void installModuleMetadataPackage() throws Exception { public void testNativeWatchdogTriggersRollback_Phase1() throws Exception { resetModuleMetadataPackage(); Context context = InstrumentationRegistry.getContext(); PackageInfo metadataPackageInfo = context.getPackageManager().getPackageInfo( Loading @@ -192,39 +188,45 @@ public class StagedRollbackTest { + metadataApkPath); } /** * Verify the rollback is available. */ @Test public void assertNetworkStackRollbackAvailable() throws Exception { public void testNativeWatchdogTriggersRollback_Phase2() throws Exception { RollbackManager rm = RollbackUtils.getRollbackManager(); assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(), getNetworkStackPackageName())).isNotNull(); MODULE_META_DATA_PACKAGE)).isNotNull(); } /** * Verify the rollback is committed after crashing. */ @Test public void assertNetworkStackRollbackCommitted() throws Exception { public void testNativeWatchdogTriggersRollback_Phase3() throws Exception { RollbackManager rm = RollbackUtils.getRollbackManager(); assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(), getNetworkStackPackageName())).isNotNull(); MODULE_META_DATA_PACKAGE)).isNotNull(); } @Test public void assertNoNetworkStackRollbackCommitted() throws Exception { public void assertNetworkStackRollbackAvailable() throws Exception { RollbackManager rm = RollbackUtils.getRollbackManager(); assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(), getNetworkStackPackageName())).isNull(); assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(), getNetworkStackPackageName())).isNotNull(); } @Test public void assertModuleMetadataRollbackAvailable() throws Exception { public void assertNetworkStackRollbackCommitted() throws Exception { RollbackManager rm = RollbackUtils.getRollbackManager(); assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(), MODULE_META_DATA_PACKAGE)).isNotNull(); assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(), getNetworkStackPackageName())).isNotNull(); } @Test public void assertModuleMetadataRollbackCommitted() throws Exception { public void assertNoNetworkStackRollbackCommitted() throws Exception { RollbackManager rm = RollbackUtils.getRollbackManager(); assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(), MODULE_META_DATA_PACKAGE)).isNotNull(); getNetworkStackPackageName())).isNull(); } private String getNetworkStackPackageName() { Loading
tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java +7 −7 Original line number Diff line number Diff line Loading @@ -68,35 +68,35 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { */ @Test public void testBadApkOnly() throws Exception { runPhase("testBadApkOnlyEnableRollback"); runPhase("testBadApkOnly_Phase1"); getDevice().reboot(); runPhase("testBadApkOnlyConfirmEnableRollback"); runPhase("testBadApkOnly_Phase2"); try { // This is expected to fail due to the device being rebooted out // from underneath the test. If this fails for reasons other than // the device reboot, those failures should result in failure of // the testApkOnlyConfirmRollback phase. CLog.logAndDisplay(LogLevel.INFO, "testBadApkOnlyTriggerRollback is expected to fail"); runPhase("testBadApkOnlyTriggerRollback"); runPhase("testBadApkOnly_Phase3"); } catch (AssertionError e) { // AssertionError is expected. } getDevice().waitForDeviceAvailable(); runPhase("testBadApkOnlyConfirmRollback"); runPhase("testBadApkOnly_Phase4"); } @Test public void testNativeWatchdogTriggersRollback() throws Exception { //Stage install ModuleMetadata package - this simulates a Mainline module update runPhase("installModuleMetadataPackage"); runPhase("testNativeWatchdogTriggersRollback_Phase1"); // Reboot device to activate staged package getDevice().reboot(); getDevice().waitForDeviceAvailable(); runPhase("assertModuleMetadataRollbackAvailable"); runPhase("testNativeWatchdogTriggersRollback_Phase2"); // crash system_server enough times to trigger a rollback crashProcess("system_server", NATIVE_CRASHES_THRESHOLD); Loading @@ -113,7 +113,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { getDevice().waitForDeviceAvailable(); // verify rollback committed runPhase("assertModuleMetadataRollbackCommitted"); runPhase("testNativeWatchdogTriggersRollback_Phase3"); } /** Loading