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

Commit ec28b329 authored by JW Wang's avatar JW Wang Committed by Android (Google) Code Review
Browse files

Merge "Add a rollback test" into sc-dev

parents a603b6bf daed083d
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -526,6 +526,33 @@ public class StagedRollbackTest {
        assertThat(rollback.getCommittedSessionId()).isNotEqualTo(-1);
    }

    @Test
    public void testExpireSession_Phase1_Install() throws Exception {
        assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(-1);
        Install.single(TestApp.A1).commit();
        assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1);
        Install.single(TestApp.A2).setEnableRollback().setStaged().commit();
    }

    @Test
    public void testExpireSession_Phase2_VerifyInstall() throws Exception {
        assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2);
        RollbackManager rm = RollbackUtils.getRollbackManager();
        RollbackInfo rollback = getUniqueRollbackInfoForPackage(
                rm.getAvailableRollbacks(), TestApp.A);
        assertThat(rollback).isNotNull();
        assertThat(rollback).packagesContainsExactly(Rollback.from(TestApp.A2).to(TestApp.A1));
        assertThat(rollback.isStaged()).isTrue();
    }

    @Test
    public void testExpireSession_Phase3_VerifyRollback() throws Exception {
        RollbackManager rm = RollbackUtils.getRollbackManager();
        RollbackInfo rollback = getUniqueRollbackInfoForPackage(
                rm.getAvailableRollbacks(), TestApp.A);
        assertThat(rollback).isNotNull();
    }

    @Test
    public void hasMainlineModule() throws Exception {
        String pkgName = getModuleMetadataPackageName();
+23 −0
Original line number Diff line number Diff line
@@ -40,7 +40,9 @@ import org.junit.Test;
import org.junit.runner.RunWith;

import java.io.File;
import java.time.Instant;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -582,6 +584,27 @@ public class StagedRollbackTest extends BaseHostJUnit4Test {
        runPhase("testWatchdogMonitorsAcrossReboots_Phase3_VerifyRollback");
    }

    /**
     * Tests an available rollback shouldn't be deleted when its session expires.
     */
    @Test
    public void testExpireSession() throws Exception {
        runPhase("testExpireSession_Phase1_Install");
        getDevice().reboot();
        runPhase("testExpireSession_Phase2_VerifyInstall");

        // Advance system clock by 7 days to expire the staged session
        Instant t1 = Instant.ofEpochMilli(getDevice().getDeviceDate());
        Instant t2 = t1.plusMillis(TimeUnit.DAYS.toMillis(7));
        runAsRoot(() -> getDevice().setDate(Date.from(t2)));

        // Somehow we need to wait for a while before reboot. Otherwise the change to the
        // system clock will be reset after reboot.
        Thread.sleep(3000);
        getDevice().reboot();
        runPhase("testExpireSession_Phase3_VerifyRollback");
    }

    private void pushTestApex() throws Exception {
        CompatibilityBuildHelper buildHelper = new CompatibilityBuildHelper(getBuild());
        final String fileName = APK_IN_APEX_TESTAPEX_NAME + "_v1.apex";