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

Commit 99c5b20b authored by JW Wang's avatar JW Wang
Browse files

Speed up tests

Don't reboot the device when there is no file to delete. This saves us a
significant amount of time since each reboot takes 1 min and there are
dozens of reboot during the whole test case.

Bug: 149528114
Test: atest StagedRollbackTest

Change-Id: If3b06a304d9c87680c7cc5b7498d3b2ecf11cdfa
parent 80288de9
Loading
Loading
Loading
Loading
+32 −19
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@ import static org.testng.Assert.assertThrows;
import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import com.android.tradefed.util.CommandResult;
import com.android.tradefed.util.CommandStatus;

import org.junit.After;
import org.junit.Before;
@@ -83,14 +85,8 @@ public class StagedRollbackTest extends BaseHostJUnit4Test {

    @Before
    public void setUp() throws Exception {
        if (!getDevice().isAdbRoot()) {
            getDevice().enableAdbRoot();
        }
        getDevice().remountSystemWritable();
        getDevice().executeShellCommand(
                "rm -f /system/apex/" + APK_IN_APEX_TESTAPEX_NAME + "*.apex "
                        + "/data/apex/active/" + APK_IN_APEX_TESTAPEX_NAME + "*.apex");
        getDevice().reboot();
        deleteFiles("/system/apex/" + APK_IN_APEX_TESTAPEX_NAME + "*.apex",
                "/data/apex/active/" + APK_IN_APEX_TESTAPEX_NAME + "*.apex");
        runPhase("testCleanUp");
        mLogger.start(getDevice());
    }
@@ -99,20 +95,37 @@ public class StagedRollbackTest extends BaseHostJUnit4Test {
    public void tearDown() throws Exception {
        mLogger.stop();
        runPhase("testCleanUp");
        deleteFiles("/system/apex/" + APK_IN_APEX_TESTAPEX_NAME + "*.apex",
                "/data/apex/active/" + APK_IN_APEX_TESTAPEX_NAME + "*.apex",
                apexDataDirDeSys(APK_IN_APEX_TESTAPEX_NAME) + "*",
                apexDataDirCe(APK_IN_APEX_TESTAPEX_NAME, 0) + "*");
    }

    /**
     * Deletes files and reboots the device if necessary.
     * @param files the paths of files which might contain wildcards
     */
    private void deleteFiles(String... files) throws Exception {
        boolean found = false;
        for (String file : files) {
            CommandResult result = getDevice().executeShellV2Command("ls " + file);
            if (result.getStatus() == CommandStatus.SUCCESS) {
                found = true;
                break;
            }
        }

        if (found) {
            if (!getDevice().isAdbRoot()) {
                getDevice().enableAdbRoot();
            }
            getDevice().remountSystemWritable();
        getDevice().executeShellCommand(
                "rm -f /system/apex/" + APK_IN_APEX_TESTAPEX_NAME + "*.apex "
                        + "/data/apex/active/" + APK_IN_APEX_TESTAPEX_NAME + "*.apex");
        getDevice().executeShellCommand(
                "rm -rf " + apexDataDirDeSys(APK_IN_APEX_TESTAPEX_NAME) + "*");
        getDevice().executeShellCommand(
                "rm -rf " + apexDataDirCe(APK_IN_APEX_TESTAPEX_NAME, 0) + "*");
            for (String file : files) {
                getDevice().executeShellCommand("rm -rf " + file);
            }
            getDevice().reboot();
        }
    }

    /**
     * Tests watchdog triggered staged rollbacks involving only apks.