From 4584e3c0a501d88b59824adef0d252fa54a99def Mon Sep 17 00:00:00 2001 From: JW Wang Date: Tue, 19 Jan 2021 14:49:00 +0800 Subject: [PATCH 1/2] More descriptive test phase names (3/n) Bug: 177861067 Test: atest StagedRollbackTest Change-Id: Ica510099d850a139a6df361c661f27b4f74a05ce --- .../tests/rollback/StagedRollbackTest.java | 64 +++++++-------- .../rollback/host/StagedRollbackTest.java | 80 +++++++++---------- 2 files changed, 72 insertions(+), 72 deletions(-) diff --git a/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/StagedRollbackTest.java b/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/StagedRollbackTest.java index 3d8deb5cfc8d4..401d87af5a336 100644 --- a/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/StagedRollbackTest.java +++ b/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/StagedRollbackTest.java @@ -88,7 +88,7 @@ public class StagedRollbackTest { * Enable rollback phase. */ @Test - public void testBadApkOnly_Phase1() throws Exception { + public void testBadApkOnly_Phase1_Install() throws Exception { Uninstall.packages(TestApp.A); assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(-1); @@ -104,7 +104,7 @@ public class StagedRollbackTest { * Confirm that rollback was successfully enabled. */ @Test - public void testBadApkOnly_Phase2() throws Exception { + public void testBadApkOnly_Phase2_VerifyInstall() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2); InstallUtils.processUserData(TestApp.A); @@ -129,7 +129,7 @@ public class StagedRollbackTest { * Trigger rollback phase. */ @Test - public void testBadApkOnly_Phase3() throws Exception { + public void testBadApkOnly_Phase3_Crash() throws Exception { // One more crash to trigger rollback RollbackUtils.sendCrashBroadcast(TestApp.A, 1); } @@ -139,7 +139,7 @@ public class StagedRollbackTest { * Confirm rollback phase. */ @Test - public void testBadApkOnly_Phase4() throws Exception { + public void testBadApkOnly_Phase4_VerifyRollback() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); InstallUtils.processUserData(TestApp.A); @@ -158,7 +158,7 @@ public class StagedRollbackTest { * Stage install an apk with rollback that will be later triggered by unattributable crash. */ @Test - public void testNativeWatchdogTriggersRollback_Phase1() throws Exception { + public void testNativeWatchdogTriggersRollback_Phase1_Install() throws Exception { Uninstall.packages(TestApp.A); Install.single(TestApp.A1).commit(); assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); @@ -170,7 +170,7 @@ public class StagedRollbackTest { * Verify the rollback is available. */ @Test - public void testNativeWatchdogTriggersRollback_Phase2() throws Exception { + public void testNativeWatchdogTriggersRollback_Phase2_VerifyInstall() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2); RollbackManager rm = RollbackUtils.getRollbackManager(); assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(), @@ -181,7 +181,7 @@ public class StagedRollbackTest { * Verify the rollback is committed after crashing. */ @Test - public void testNativeWatchdogTriggersRollback_Phase3() throws Exception { + public void testNativeWatchdogTriggersRollback_Phase3_VerifyRollback() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); RollbackManager rm = RollbackUtils.getRollbackManager(); assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(), @@ -192,7 +192,7 @@ public class StagedRollbackTest { * Stage install an apk with rollback that will be later triggered by unattributable crash. */ @Test - public void testNativeWatchdogTriggersRollbackForAll_Phase1() throws Exception { + public void testNativeWatchdogTriggersRollbackForAll_Phase1_InstallA() throws Exception { Uninstall.packages(TestApp.A); Install.single(TestApp.A1).commit(); assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); @@ -204,7 +204,7 @@ public class StagedRollbackTest { * Verify the rollback is available and then install another package with rollback. */ @Test - public void testNativeWatchdogTriggersRollbackForAll_Phase2() throws Exception { + public void testNativeWatchdogTriggersRollbackForAll_Phase2_InstallB() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2); RollbackManager rm = RollbackUtils.getRollbackManager(); assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(), @@ -222,7 +222,7 @@ public class StagedRollbackTest { * Verify the rollbacks are available. */ @Test - public void testNativeWatchdogTriggersRollbackForAll_Phase3() throws Exception { + public void testNativeWatchdogTriggersRollbackForAll_Phase3_VerifyInstall() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2); assertThat(InstallUtils.getInstalledVersion(TestApp.B)).isEqualTo(2); RollbackManager rm = RollbackUtils.getRollbackManager(); @@ -236,7 +236,7 @@ public class StagedRollbackTest { * Verify the rollbacks are committed after crashing. */ @Test - public void testNativeWatchdogTriggersRollbackForAll_Phase4() throws Exception { + public void testNativeWatchdogTriggersRollbackForAll_Phase4_VerifyRollback() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); assertThat(InstallUtils.getInstalledVersion(TestApp.B)).isEqualTo(1); RollbackManager rm = RollbackUtils.getRollbackManager(); @@ -247,7 +247,7 @@ public class StagedRollbackTest { } @Test - public void testPreviouslyAbandonedRollbacks_Phase1() throws Exception { + public void testPreviouslyAbandonedRollbacks_Phase1_InstallAndAbandon() throws Exception { Uninstall.packages(TestApp.A); Install.single(TestApp.A1).commit(); assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); @@ -261,7 +261,7 @@ public class StagedRollbackTest { } @Test - public void testPreviouslyAbandonedRollbacks_Phase2() throws Exception { + public void testPreviouslyAbandonedRollbacks_Phase2_Rollback() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2); InstallUtils.processUserData(TestApp.A); @@ -272,7 +272,7 @@ public class StagedRollbackTest { } @Test - public void testPreviouslyAbandonedRollbacks_Phase3() throws Exception { + public void testPreviouslyAbandonedRollbacks_Phase3_VerifyRollback() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); InstallUtils.processUserData(TestApp.A); Uninstall.packages(TestApp.A); @@ -284,7 +284,7 @@ public class StagedRollbackTest { } @Test - public void testRollbackWhitelistedApp_Phase1() throws Exception { + public void testRollbackAllowlistedApp_Phase1_Install() throws Exception { // Remove available rollbacks String pkgName = getModuleMetadataPackageName(); RollbackUtils.getRollbackManager().expireRollbackForPackage(pkgName); @@ -296,7 +296,7 @@ public class StagedRollbackTest { Manifest.permission.INSTALL_PACKAGES, Manifest.permission.MANAGE_ROLLBACKS); - // Re-install a whitelisted app with rollbacks enabled + // Re-install a allowlisted app with rollbacks enabled String filePath = InstrumentationRegistry.getInstrumentation().getContext() .getPackageManager().getPackageInfo(pkgName, 0).applicationInfo.sourceDir; TestApp app = new TestApp("ModuleMetadata", pkgName, -1, false, new File(filePath)); @@ -305,12 +305,12 @@ public class StagedRollbackTest { } @Test - public void testRollbackWhitelistedApp_Phase2() throws Exception { + public void testRollbackAllowlistedApp_Phase2_VerifyInstall() throws Exception { assertThat(RollbackUtils.getAvailableRollback(getModuleMetadataPackageName())).isNotNull(); } @Test - public void testRollbackDataPolicy_Phase1() throws Exception { + public void testRollbackDataPolicy_Phase1_Install() throws Exception { Uninstall.packages(TestApp.A, TestApp.B, TestApp.C); Install.multi(TestApp.A1, TestApp.B1, TestApp.C1).commit(); // Write user data version = 1 @@ -328,7 +328,7 @@ public class StagedRollbackTest { } @Test - public void testRollbackDataPolicy_Phase2() throws Exception { + public void testRollbackDataPolicy_Phase2_Rollback() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2); assertThat(InstallUtils.getInstalledVersion(TestApp.B)).isEqualTo(2); // Write user data version = 2 @@ -341,7 +341,7 @@ public class StagedRollbackTest { } @Test - public void testRollbackDataPolicy_Phase3() throws Exception { + public void testRollbackDataPolicy_Phase3_VerifyRollback() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); assertThat(InstallUtils.getInstalledVersion(TestApp.B)).isEqualTo(1); assertThat(InstallUtils.getInstalledVersion(TestApp.C)).isEqualTo(1); @@ -355,7 +355,7 @@ public class StagedRollbackTest { } @Test - public void testCleanUp() throws Exception { + public void expireRollbacks() throws Exception { // testNativeWatchdogTriggersRollback will fail if multiple staged sessions are // committed on a device which doesn't support checkpoint. Let's clean up all rollbacks // so there is only one rollback to commit when testing native crashes. @@ -378,7 +378,7 @@ public class StagedRollbackTest { APK_IN_APEX_TESTAPEX_NAME + "_v2Crashing.apex"); @Test - public void testRollbackApexWithApk_Phase1() throws Exception { + public void testRollbackApexWithApk_Phase1_Install() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); InstallUtils.processUserData(TestApp.A); @@ -388,7 +388,7 @@ public class StagedRollbackTest { } @Test - public void testRollbackApexWithApk_Phase2() throws Exception { + public void testRollbackApexWithApk_Phase2_Rollback() throws Exception { assertThat(InstallUtils.getInstalledVersion(APK_IN_APEX_TESTAPEX_NAME)).isEqualTo(2); assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2); InstallUtils.processUserData(TestApp.A); @@ -416,7 +416,7 @@ public class StagedRollbackTest { } @Test - public void testRollbackApexWithApk_Phase3() throws Exception { + public void testRollbackApexWithApk_Phase3_VerifyRollback() throws Exception { assertThat(InstallUtils.getInstalledVersion(APK_IN_APEX_TESTAPEX_NAME)).isEqualTo(1); assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); InstallUtils.processUserData(TestApp.A); @@ -426,7 +426,7 @@ public class StagedRollbackTest { * Installs an apex with an apk that can crash. */ @Test - public void testRollbackApexWithApkCrashing_Phase1() throws Exception { + public void testRollbackApexWithApkCrashing_Phase1_Install() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); int sessionId = Install.single(TEST_APEX_WITH_APK_V2_CRASHING).setStaged() .setEnableRollback().commit(); @@ -437,7 +437,7 @@ public class StagedRollbackTest { * Verifies rollback has been enabled successfully. Then makes TestApp.A crash. */ @Test - public void testRollbackApexWithApkCrashing_Phase2() throws Exception { + public void testRollbackApexWithApkCrashing_Phase2_Crash() throws Exception { assertThat(InstallUtils.getInstalledVersion(APK_IN_APEX_TESTAPEX_NAME)).isEqualTo(2); assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2); @@ -452,20 +452,20 @@ public class StagedRollbackTest { } @Test - public void testRollbackApexWithApkCrashing_Phase3() throws Exception { + public void testRollbackApexWithApkCrashing_Phase3_VerifyRollback() throws Exception { assertThat(InstallUtils.getInstalledVersion(APK_IN_APEX_TESTAPEX_NAME)).isEqualTo(1); assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); } @Test - public void testRollbackApexDataDirectories_Phase1() throws Exception { + public void testRollbackApexDataDirectories_Phase1_Install() throws Exception { int sessionId = Install.single(TEST_APEX_WITH_APK_V2).setStaged().setEnableRollback() .commit(); InstallUtils.waitForSessionReady(sessionId); } @Test - public void testRollbackApexDataDirectories_Phase2() throws Exception { + public void testRollbackApexDataDirectories_Phase2_Rollback() throws Exception { RollbackInfo available = RollbackUtils.getAvailableRollback(APK_IN_APEX_TESTAPEX_NAME); RollbackUtils.rollback(available.getRollbackId(), TEST_APEX_WITH_APK_V2); @@ -477,19 +477,19 @@ public class StagedRollbackTest { } @Test - public void testRollbackApkDataDirectories_Phase1() throws Exception { + public void testRollbackApkDataDirectories_Phase1_InstallV1() throws Exception { assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(-1); Install.single(TestApp.A1).commit(); assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); } @Test - public void testRollbackApkDataDirectories_Phase2() throws Exception { + public void testRollbackApkDataDirectories_Phase2_InstallV2() throws Exception { Install.single(TestApp.A2).setStaged().setEnableRollback().commit(); } @Test - public void testRollbackApkDataDirectories_Phase3() throws Exception { + public void testRollbackApkDataDirectories_Phase3_Rollback() throws Exception { RollbackInfo available = RollbackUtils.getAvailableRollback(TestApp.A); RollbackUtils.rollback(available.getRollbackId(), TestApp.A2); RollbackInfo committed = RollbackUtils.getCommittedRollbackById(available.getRollbackId()); diff --git a/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java b/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java index 94950dc456cad..ce3cd64783a01 100644 --- a/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java +++ b/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java @@ -97,14 +97,14 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { public void setUp() throws Exception { deleteFiles("/system/apex/" + APK_IN_APEX_TESTAPEX_NAME + "*.apex", "/data/apex/active/" + APK_IN_APEX_TESTAPEX_NAME + "*.apex"); - runPhase("testCleanUp"); + runPhase("expireRollbacks"); mLogger.start(getDevice()); } @After public void tearDown() throws Exception { mLogger.stop(); - runPhase("testCleanUp"); + runPhase("expireRollbacks"); deleteFiles("/system/apex/" + APK_IN_APEX_TESTAPEX_NAME + "*.apex", "/data/apex/active/" + APK_IN_APEX_TESTAPEX_NAME + "*.apex", apexDataDirDeSys(APK_IN_APEX_TESTAPEX_NAME) + "*", @@ -144,17 +144,17 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { */ @Test public void testBadApkOnly() throws Exception { - runPhase("testBadApkOnly_Phase1"); + runPhase("testBadApkOnly_Phase1_Install"); getDevice().reboot(); - runPhase("testBadApkOnly_Phase2"); + runPhase("testBadApkOnly_Phase2_VerifyInstall"); // Trigger rollback and wait for reboot to happen - runPhase("testBadApkOnly_Phase3"); + runPhase("testBadApkOnly_Phase3_Crash"); assertThat(getDevice().waitForDeviceNotAvailable(TimeUnit.MINUTES.toMillis(2))).isTrue(); getDevice().waitForDeviceAvailable(); - runPhase("testBadApkOnly_Phase4"); + runPhase("testBadApkOnly_Phase4_VerifyRollback"); assertThat(mLogger).eventOccurred(ROLLBACK_INITIATE, null, REASON_APP_CRASH, TESTAPP_A); assertThat(mLogger).eventOccurred(ROLLBACK_BOOT_TRIGGERED, null, null, null); @@ -163,12 +163,12 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { @Test public void testNativeWatchdogTriggersRollback() throws Exception { - runPhase("testNativeWatchdogTriggersRollback_Phase1"); + runPhase("testNativeWatchdogTriggersRollback_Phase1_Install"); // Reboot device to activate staged package getDevice().reboot(); - runPhase("testNativeWatchdogTriggersRollback_Phase2"); + runPhase("testNativeWatchdogTriggersRollback_Phase2_VerifyInstall"); // crash system_server enough times to trigger a rollback crashProcess("system_server", NATIVE_CRASHES_THRESHOLD); @@ -185,7 +185,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { getDevice().waitForDeviceAvailable(); // verify rollback committed - runPhase("testNativeWatchdogTriggersRollback_Phase3"); + runPhase("testNativeWatchdogTriggersRollback_Phase3_VerifyRollback"); assertThat(mLogger).eventOccurred(ROLLBACK_INITIATE, null, REASON_NATIVE_CRASH, null); assertThat(mLogger).eventOccurred(ROLLBACK_BOOT_TRIGGERED, null, null, null); @@ -198,15 +198,15 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { assumeTrue(isCheckpointSupported()); // Install a package with rollback enabled. - runPhase("testNativeWatchdogTriggersRollbackForAll_Phase1"); + runPhase("testNativeWatchdogTriggersRollbackForAll_Phase1_InstallA"); getDevice().reboot(); // Once previous staged install is applied, install another package - runPhase("testNativeWatchdogTriggersRollbackForAll_Phase2"); + runPhase("testNativeWatchdogTriggersRollbackForAll_Phase2_InstallB"); getDevice().reboot(); // Verify the new staged install has also been applied successfully. - runPhase("testNativeWatchdogTriggersRollbackForAll_Phase3"); + runPhase("testNativeWatchdogTriggersRollbackForAll_Phase3_VerifyInstall"); // crash system_server enough times to trigger a rollback crashProcess("system_server", NATIVE_CRASHES_THRESHOLD); @@ -223,7 +223,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { getDevice().waitForDeviceAvailable(); // verify all available rollbacks have been committed - runPhase("testNativeWatchdogTriggersRollbackForAll_Phase4"); + runPhase("testNativeWatchdogTriggersRollbackForAll_Phase4_VerifyRollback"); assertThat(mLogger).eventOccurred(ROLLBACK_INITIATE, null, REASON_NATIVE_CRASH, null); assertThat(mLogger).eventOccurred(ROLLBACK_BOOT_TRIGGERED, null, null, null); @@ -235,33 +235,33 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { */ @Test public void testPreviouslyAbandonedRollbacks() throws Exception { - runPhase("testPreviouslyAbandonedRollbacks_Phase1"); + runPhase("testPreviouslyAbandonedRollbacks_Phase1_InstallAndAbandon"); getDevice().reboot(); - runPhase("testPreviouslyAbandonedRollbacks_Phase2"); + runPhase("testPreviouslyAbandonedRollbacks_Phase2_Rollback"); getDevice().reboot(); - runPhase("testPreviouslyAbandonedRollbacks_Phase3"); + runPhase("testPreviouslyAbandonedRollbacks_Phase3_VerifyRollback"); } /** - * Tests we can enable rollback for a whitelisted app. + * Tests we can enable rollback for a allowlisted app. */ @Test - public void testRollbackWhitelistedApp() throws Exception { + public void testRollbackAllowlistedApp() throws Exception { assumeTrue(hasMainlineModule()); - runPhase("testRollbackWhitelistedApp_Phase1"); + runPhase("testRollbackAllowlistedApp_Phase1_Install"); getDevice().reboot(); - runPhase("testRollbackWhitelistedApp_Phase2"); + runPhase("testRollbackAllowlistedApp_Phase2_VerifyInstall"); } @Test public void testRollbackDataPolicy() throws Exception { List before = getSnapshotDirectories("/data/misc_ce/0/rollback"); - runPhase("testRollbackDataPolicy_Phase1"); + runPhase("testRollbackDataPolicy_Phase1_Install"); getDevice().reboot(); - runPhase("testRollbackDataPolicy_Phase2"); + runPhase("testRollbackDataPolicy_Phase2_Rollback"); getDevice().reboot(); - runPhase("testRollbackDataPolicy_Phase3"); + runPhase("testRollbackDataPolicy_Phase3_VerifyRollback"); // Verify snapshots are deleted after restoration List after = getSnapshotDirectories("/data/misc_ce/0/rollback"); @@ -279,11 +279,11 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { public void testRollbackApexWithApk() throws Exception { getDevice().uninstallPackage("com.android.cts.install.lib.testapp.A"); pushTestApex(); - runPhase("testRollbackApexWithApk_Phase1"); + runPhase("testRollbackApexWithApk_Phase1_Install"); getDevice().reboot(); - runPhase("testRollbackApexWithApk_Phase2"); + runPhase("testRollbackApexWithApk_Phase2_Rollback"); getDevice().reboot(); - runPhase("testRollbackApexWithApk_Phase3"); + runPhase("testRollbackApexWithApk_Phase3_VerifyRollback"); } /** @@ -295,15 +295,15 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { pushTestApex(); // Install an apex with apk that crashes - runPhase("testRollbackApexWithApkCrashing_Phase1"); + runPhase("testRollbackApexWithApkCrashing_Phase1_Install"); getDevice().reboot(); // Verify apex was installed and then crash the apk - runPhase("testRollbackApexWithApkCrashing_Phase2"); + runPhase("testRollbackApexWithApkCrashing_Phase2_Crash"); // Wait for crash to trigger rollback assertThat(getDevice().waitForDeviceNotAvailable(TimeUnit.MINUTES.toMillis(5))).isTrue(); getDevice().waitForDeviceAvailable(); // Verify rollback occurred due to crash of apk-in-apex - runPhase("testRollbackApexWithApkCrashing_Phase3"); + runPhase("testRollbackApexWithApkCrashing_Phase3_VerifyRollback"); assertThat(mLogger).eventOccurred(ROLLBACK_INITIATE, null, REASON_APP_CRASH, TESTAPP_A); assertThat(mLogger).eventOccurred(ROLLBACK_BOOT_TRIGGERED, null, null, null); @@ -328,7 +328,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { }); // Install new version of the APEX with rollback enabled - runPhase("testRollbackApexDataDirectories_Phase1"); + runPhase("testRollbackApexDataDirectories_Phase1_Install"); getDevice().reboot(); // Replace files in data directory @@ -343,7 +343,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { }); // Roll back the APEX - runPhase("testRollbackApexDataDirectories_Phase2"); + runPhase("testRollbackApexDataDirectories_Phase2_Rollback"); getDevice().reboot(); // Verify that old files have been restored and new files are gone @@ -382,7 +382,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { }); // Install new version of the APEX with rollback enabled - runPhase("testRollbackApexDataDirectories_Phase1"); + runPhase("testRollbackApexDataDirectories_Phase1_Install"); getDevice().reboot(); // Replace files in data directory @@ -398,7 +398,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { }); // Roll back the APEX - runPhase("testRollbackApexDataDirectories_Phase2"); + runPhase("testRollbackApexDataDirectories_Phase2_Rollback"); getDevice().reboot(); // Verify that old files have been restored and new files are gone @@ -436,7 +436,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { }); // Install new version of the APEX with rollback enabled - runPhase("testRollbackApexDataDirectories_Phase1"); + runPhase("testRollbackApexDataDirectories_Phase1_Install"); getDevice().reboot(); // Replace files in data directory @@ -451,7 +451,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { }); // Roll back the APEX - runPhase("testRollbackApexDataDirectories_Phase2"); + runPhase("testRollbackApexDataDirectories_Phase2_Rollback"); getDevice().reboot(); // Verify that old files have been restored and new files are gone @@ -477,7 +477,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { @Test public void testRollbackApkDataDirectories_De() throws Exception { // Install version 1 of TESTAPP_A - runPhase("testRollbackApkDataDirectories_Phase1"); + runPhase("testRollbackApkDataDirectories_Phase1_InstallV1"); // Push files to apk data directory String oldFilePath1 = apkDataDirDe(TESTAPP_A, 0) + "/" + TEST_FILENAME_1; @@ -488,7 +488,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { }); // Install version 2 of TESTAPP_A with rollback enabled - runPhase("testRollbackApkDataDirectories_Phase2"); + runPhase("testRollbackApkDataDirectories_Phase2_InstallV2"); getDevice().reboot(); // Replace files in data directory @@ -502,7 +502,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { }); // Roll back the APK - runPhase("testRollbackApkDataDirectories_Phase3"); + runPhase("testRollbackApkDataDirectories_Phase3_Rollback"); getDevice().reboot(); // Verify that old files have been restored and new files are gone @@ -529,7 +529,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { }); // Install new version of the APEX with rollback enabled - runPhase("testRollbackApexDataDirectories_Phase1"); + runPhase("testRollbackApexDataDirectories_Phase1_Install"); getDevice().reboot(); List after = getSnapshotDirectories("/data/misc_ce/0/apexrollback"); @@ -538,7 +538,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { // There should be only one /data/misc_ce/0/apexrollback/ created during test assertThat(after).hasSize(1); // Expire all rollbacks and check CE snapshot directories are deleted - runPhase("testCleanUp"); + runPhase("expireRollbacks"); runAsRoot(() -> { for (String dir : after) { assertThat(getDevice().getFileEntry(dir)).isNull(); From 94e9dced6ad4b3410efe16ad4f0e1fd790a369dd Mon Sep 17 00:00:00 2001 From: JW Wang Date: Wed, 20 Jan 2021 11:19:01 +0800 Subject: [PATCH 2/2] More error messages for device operations (4/n) This gives us more debug information when a device operation fails. Bug: 177861067 Test: atest StagedRollbackTest Change-Id: I19dc0adf5973850390aae0e793cbf50e009a0137 --- .../rollback/host/StagedRollbackTest.java | 100 +++++++++++------- 1 file changed, 61 insertions(+), 39 deletions(-) diff --git a/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java b/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java index ce3cd64783a01..1d5730fb4427f 100644 --- a/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java +++ b/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java @@ -139,6 +139,11 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { } } + private void waitForDeviceNotAvailable(long timeout, TimeUnit unit) { + assertWithMessage("waitForDeviceNotAvailable() timed out in %s %s", timeout, unit) + .that(getDevice().waitForDeviceNotAvailable(unit.toMillis(timeout))).isTrue(); + } + /** * Tests watchdog triggered staged rollbacks involving only apks. */ @@ -150,7 +155,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { // Trigger rollback and wait for reboot to happen runPhase("testBadApkOnly_Phase3_Crash"); - assertThat(getDevice().waitForDeviceNotAvailable(TimeUnit.MINUTES.toMillis(2))).isTrue(); + waitForDeviceNotAvailable(2, TimeUnit.MINUTES); getDevice().waitForDeviceAvailable(); @@ -181,7 +186,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { // 3. Staged rollback session becomes ready. // 4. Device actually reboots. // So we give a generous timeout here. - assertThat(getDevice().waitForDeviceNotAvailable(TimeUnit.MINUTES.toMillis(5))).isTrue(); + waitForDeviceNotAvailable(5, TimeUnit.MINUTES); getDevice().waitForDeviceAvailable(); // verify rollback committed @@ -219,7 +224,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { // 3. Staged rollback session becomes ready. // 4. Device actually reboots. // So we give a generous timeout here. - assertThat(getDevice().waitForDeviceNotAvailable(TimeUnit.MINUTES.toMillis(5))).isTrue(); + waitForDeviceNotAvailable(5, TimeUnit.MINUTES); getDevice().waitForDeviceAvailable(); // verify all available rollbacks have been committed @@ -300,7 +305,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { // Verify apex was installed and then crash the apk runPhase("testRollbackApexWithApkCrashing_Phase2_Crash"); // Wait for crash to trigger rollback - assertThat(getDevice().waitForDeviceNotAvailable(TimeUnit.MINUTES.toMillis(5))).isTrue(); + waitForDeviceNotAvailable(5, TimeUnit.MINUTES); getDevice().waitForDeviceAvailable(); // Verify rollback occurred due to crash of apk-in-apex runPhase("testRollbackApexWithApkCrashing_Phase3_VerifyRollback"); @@ -323,8 +328,8 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { String oldFilePath2 = apexDataDirDeSys(APK_IN_APEX_TESTAPEX_NAME) + TEST_SUBDIR + TEST_FILENAME_2; runAsRoot(() -> { - assertThat(getDevice().pushString(TEST_STRING_1, oldFilePath1)).isTrue(); - assertThat(getDevice().pushString(TEST_STRING_2, oldFilePath2)).isTrue(); + pushString(TEST_STRING_1, oldFilePath1); + pushString(TEST_STRING_2, oldFilePath2); }); // Install new version of the APEX with rollback enabled @@ -338,8 +343,8 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { runAsRoot(() -> { getDevice().deleteFile(oldFilePath1); getDevice().deleteFile(oldFilePath2); - assertThat(getDevice().pushString(TEST_STRING_3, newFilePath3)).isTrue(); - assertThat(getDevice().pushString(TEST_STRING_4, newFilePath4)).isTrue(); + pushString(TEST_STRING_3, newFilePath3); + pushString(TEST_STRING_4, newFilePath4); }); // Roll back the APEX @@ -348,10 +353,10 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { // Verify that old files have been restored and new files are gone runAsRoot(() -> { - assertThat(getDevice().pullFileContents(oldFilePath1)).isEqualTo(TEST_STRING_1); - assertThat(getDevice().pullFileContents(oldFilePath2)).isEqualTo(TEST_STRING_2); - assertThat(getDevice().pullFile(newFilePath3)).isNull(); - assertThat(getDevice().pullFile(newFilePath4)).isNull(); + assertFileContents(TEST_STRING_1, oldFilePath1); + assertFileContents(TEST_STRING_2, oldFilePath2); + assertFileNotExists(newFilePath3); + assertFileNotExists(newFilePath4); }); // Verify snapshots are deleted after restoration @@ -377,8 +382,8 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { String oldFilePath2 = apexDataDirDeUser(APK_IN_APEX_TESTAPEX_NAME, 0) + TEST_SUBDIR + TEST_FILENAME_2; runAsRoot(() -> { - assertThat(getDevice().pushString(TEST_STRING_1, oldFilePath1)).isTrue(); - assertThat(getDevice().pushString(TEST_STRING_2, oldFilePath2)).isTrue(); + pushString(TEST_STRING_1, oldFilePath1); + pushString(TEST_STRING_2, oldFilePath2); }); // Install new version of the APEX with rollback enabled @@ -393,8 +398,8 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { runAsRoot(() -> { getDevice().deleteFile(oldFilePath1); getDevice().deleteFile(oldFilePath2); - assertThat(getDevice().pushString(TEST_STRING_3, newFilePath3)).isTrue(); - assertThat(getDevice().pushString(TEST_STRING_4, newFilePath4)).isTrue(); + pushString(TEST_STRING_3, newFilePath3); + pushString(TEST_STRING_4, newFilePath4); }); // Roll back the APEX @@ -403,10 +408,10 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { // Verify that old files have been restored and new files are gone runAsRoot(() -> { - assertThat(getDevice().pullFileContents(oldFilePath1)).isEqualTo(TEST_STRING_1); - assertThat(getDevice().pullFileContents(oldFilePath2)).isEqualTo(TEST_STRING_2); - assertThat(getDevice().pullFile(newFilePath3)).isNull(); - assertThat(getDevice().pullFile(newFilePath4)).isNull(); + assertFileContents(TEST_STRING_1, oldFilePath1); + assertFileContents(TEST_STRING_2, oldFilePath2); + assertFileNotExists(newFilePath3); + assertFileNotExists(newFilePath4); }); // Verify snapshots are deleted after restoration @@ -431,8 +436,8 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { String oldFilePath2 = apexDataDirCe(APK_IN_APEX_TESTAPEX_NAME, 0) + TEST_SUBDIR + TEST_FILENAME_2; runAsRoot(() -> { - assertThat(getDevice().pushString(TEST_STRING_1, oldFilePath1)).isTrue(); - assertThat(getDevice().pushString(TEST_STRING_2, oldFilePath2)).isTrue(); + pushString(TEST_STRING_1, oldFilePath1); + pushString(TEST_STRING_2, oldFilePath2); }); // Install new version of the APEX with rollback enabled @@ -446,8 +451,8 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { runAsRoot(() -> { getDevice().deleteFile(oldFilePath1); getDevice().deleteFile(oldFilePath2); - assertThat(getDevice().pushString(TEST_STRING_3, newFilePath3)).isTrue(); - assertThat(getDevice().pushString(TEST_STRING_4, newFilePath4)).isTrue(); + pushString(TEST_STRING_3, newFilePath3); + pushString(TEST_STRING_4, newFilePath4); }); // Roll back the APEX @@ -456,10 +461,10 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { // Verify that old files have been restored and new files are gone runAsRoot(() -> { - assertThat(getDevice().pullFileContents(oldFilePath1)).isEqualTo(TEST_STRING_1); - assertThat(getDevice().pullFileContents(oldFilePath2)).isEqualTo(TEST_STRING_2); - assertThat(getDevice().pullFile(newFilePath3)).isNull(); - assertThat(getDevice().pullFile(newFilePath4)).isNull(); + assertFileContents(TEST_STRING_1, oldFilePath1); + assertFileContents(TEST_STRING_2, oldFilePath2); + assertFileNotExists(newFilePath3); + assertFileNotExists(newFilePath4); }); // Verify snapshots are deleted after restoration @@ -483,8 +488,8 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { String oldFilePath1 = apkDataDirDe(TESTAPP_A, 0) + "/" + TEST_FILENAME_1; String oldFilePath2 = apkDataDirDe(TESTAPP_A, 0) + TEST_SUBDIR + TEST_FILENAME_2; runAsRoot(() -> { - assertThat(getDevice().pushString(TEST_STRING_1, oldFilePath1)).isTrue(); - assertThat(getDevice().pushString(TEST_STRING_2, oldFilePath2)).isTrue(); + pushString(TEST_STRING_1, oldFilePath1); + pushString(TEST_STRING_2, oldFilePath2); }); // Install version 2 of TESTAPP_A with rollback enabled @@ -497,8 +502,8 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { runAsRoot(() -> { getDevice().deleteFile(oldFilePath1); getDevice().deleteFile(oldFilePath2); - assertThat(getDevice().pushString(TEST_STRING_3, newFilePath3)).isTrue(); - assertThat(getDevice().pushString(TEST_STRING_4, newFilePath4)).isTrue(); + pushString(TEST_STRING_3, newFilePath3); + pushString(TEST_STRING_4, newFilePath4); }); // Roll back the APK @@ -507,10 +512,10 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { // Verify that old files have been restored and new files are gone runAsRoot(() -> { - assertThat(getDevice().pullFileContents(oldFilePath1)).isEqualTo(TEST_STRING_1); - assertThat(getDevice().pullFileContents(oldFilePath2)).isEqualTo(TEST_STRING_2); - assertThat(getDevice().pullFile(newFilePath3)).isNull(); - assertThat(getDevice().pullFile(newFilePath4)).isNull(); + assertFileContents(TEST_STRING_1, oldFilePath1); + assertFileContents(TEST_STRING_2, oldFilePath2); + assertFileNotExists(newFilePath3); + assertFileNotExists(newFilePath4); }); } @@ -524,8 +529,8 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { String oldFilePath2 = apexDataDirCe(APK_IN_APEX_TESTAPEX_NAME, 0) + TEST_SUBDIR + TEST_FILENAME_2; runAsRoot(() -> { - assertThat(getDevice().pushString(TEST_STRING_1, oldFilePath1)).isTrue(); - assertThat(getDevice().pushString(TEST_STRING_2, oldFilePath2)).isTrue(); + pushString(TEST_STRING_1, oldFilePath1); + pushString(TEST_STRING_2, oldFilePath2); }); // Install new version of the APEX with rollback enabled @@ -541,7 +546,7 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { runPhase("expireRollbacks"); runAsRoot(() -> { for (String dir : after) { - assertThat(getDevice().getFileEntry(dir)).isNull(); + assertFileNotExists(dir); } }); } @@ -560,6 +565,23 @@ public class StagedRollbackTest extends BaseHostJUnit4Test { getDevice().reboot(); } + private void pushString(String contents, String path) throws Exception { + assertWithMessage("Failed to push file to device, content=%s path=%s", contents, path) + .that(getDevice().pushString(contents, path)).isTrue(); + } + + private void assertFileContents(String expectedContents, String path) throws Exception { + String actualContents = getDevice().pullFileContents(path); + assertWithMessage("Failed to retrieve file=%s", path).that(actualContents).isNotNull(); + assertWithMessage("Mismatched file contents, path=%s", path) + .that(actualContents).isEqualTo(expectedContents); + } + + private void assertFileNotExists(String path) throws Exception { + assertWithMessage("File shouldn't exist, path=%s", path) + .that(getDevice().getFileEntry(path)).isNull(); + } + private static String apexDataDirDeSys(String apexName) { return String.format("/data/misc/apexdata/%s", apexName); }