Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b13131f1 authored by JW Wang's avatar JW Wang
Browse files

Clean up the rollback when test is done

When multiple staged sessions are installed on a device which doesn't
support checkpoint, only the 1st will prevail. The test failed when
TestApp.A is not the 1st rollback to commit.

We need to clean up the rollback left by testRollbackWhitelistedApp so
TestApp.A is always the only and first one to commit.

Bug: 146991129
Test: atest StagedRollbackTest
Change-Id: I4afdace934b7b7e3b198169dc2eb0da66c65eb94
parent 548d6dcf
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -185,6 +185,12 @@ public class StagedRollbackTest {
     */
    @Test
    public void testNativeWatchdogTriggersRollback_Phase1() throws Exception {
        // When multiple staged sessions are installed on a device which doesn't support checkpoint,
        // only the 1st one will prevail. We have to check no other rollbacks available to ensure
        // TestApp.A is always the 1st and the only one to commit so rollback can work as intended.
        // If there are leftover rollbacks from previous tests, this assertion will fail.
        assertThat(RollbackUtils.getRollbackManager().getAvailableRollbacks()).isEmpty();

        Uninstall.packages(TestApp.A);
        Install.single(TestApp.A1).commit();
        assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1);
@@ -373,6 +379,11 @@ public class StagedRollbackTest {
        assertThat(RollbackUtils.getAvailableRollback(getModuleMetadataPackageName())).isNotNull();
    }

    @Test
    public void testRollbackWhitelistedApp_cleanUp() throws Exception {
        RollbackUtils.getRollbackManager().expireRollbackForPackage(getModuleMetadataPackageName());
    }

    private static void runShellCommand(String cmd) {
        ParcelFileDescriptor pfd = InstrumentationRegistry.getInstrumentation().getUiAutomation()
                .executeShellCommand(cmd);
+10 −3
Original line number Diff line number Diff line
@@ -180,9 +180,16 @@ public class StagedRollbackTest extends BaseHostJUnit4Test {
     */
    @Test
    public void testRollbackWhitelistedApp() throws Exception {
        try {
            runPhase("testRollbackWhitelistedApp_Phase1");
            getDevice().reboot();
            runPhase("testRollbackWhitelistedApp_Phase2");
        } finally {
            // testNativeWatchdogTriggersRollback will fail if multiple staged sessions are
            // committed on a device which doesn't support checkpoint. Let's clean up the rollback
            // so there is only one rollback to commit when testing native crashes.
            runPhase("testRollbackWhitelistedApp_cleanUp");
        }
    }

    private void crashProcess(String processName, int numberOfCrashes) throws Exception {