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

Commit 5b51c8c1 authored by JW Wang's avatar JW Wang Committed by Mohammad Samiul Islam
Browse files

Rewrite how we abandon sessions

The original code is flawed in that `pm install-abandon` only abandons
the 1st session returned by `pm get-stagedsessions ...`.

1. move AbandonSessionsRule to be shared by multiple host tests
2. use AbandonSessionsRule to do the job

Bug: 160754072
Test: StagedInstallInternalTest
Change-Id: Ib7b32fbd7b1133ac6a8e6782234a4fe2c5a782bd
Merged-In: Ib7b32fbd7b1133ac6a8e6782234a4fe2c5a782bd
(cherry picked from commit 3ac333f2)
parent 08e7cbb0
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -29,7 +29,12 @@ java_test_host {
    name: "StagedRollbackTest",
    srcs: ["StagedRollbackTest/src/**/*.java"],
    libs: ["tradefed"],
    static_libs: ["testng", "compatibility-tradefed", "RollbackTestLib"],
    static_libs: [
        "compatibility-tradefed",
        "frameworks-base-hostutils",
        "RollbackTestLib",
        "testng",
    ],
    test_suites: ["general-tests"],
    test_config: "StagedRollbackTest.xml",
    data: [":com.android.apex.apkrollback.test_v1"],
@@ -39,7 +44,7 @@ java_test_host {
    name: "NetworkStagedRollbackTest",
    srcs: ["NetworkStagedRollbackTest/src/**/*.java"],
    libs: ["tradefed"],
    static_libs: ["RollbackTestLib"],
    static_libs: ["RollbackTestLib", "frameworks-base-hostutils"],
    test_suites: ["general-tests"],
    test_config: "NetworkStagedRollbackTest.xml",
}
+1 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ java_test_host {
        "testng",
        "compatibility-tradefed",
        "module_test_util",
        "frameworks-base-hostutils",
    ],
    data: [
        ":com.android.apex.cts.shim.v2_prebuilt",
+9 −12
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue;

import com.android.ddmlib.Log;
import com.android.tests.rollback.host.AbandonSessionsRule;
import com.android.tests.util.ModuleTestUtils;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
@@ -29,6 +30,7 @@ import com.android.tradefed.util.ProcessInfo;

import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

@@ -39,7 +41,9 @@ public class StagedInstallInternalTest extends BaseHostJUnit4Test {

    private static final String TAG = StagedInstallInternalTest.class.getSimpleName();
    private static final long SYSTEM_SERVER_TIMEOUT_MS = 60 * 1000;
    private boolean mWasRoot = false;

    @Rule
    public AbandonSessionsRule mHostTestRule = new AbandonSessionsRule(this);

    private static final String SHIM_V2 = "com.android.apex.cts.shim.v2.apex";
    private static final String APK_A = "TestAppAv1.apk";
@@ -71,21 +75,11 @@ public class StagedInstallInternalTest extends BaseHostJUnit4Test {

    @Before
    public void setUp() throws Exception {
        mWasRoot = getDevice().isAdbRoot();
        if (!mWasRoot) {
            getDevice().enableAdbRoot();
        }
        cleanUp();
        // Abandon all staged sessions
        getDevice().executeShellCommand("pm install-abandon $(pm get-stagedsessions --only-ready "
                + "--only-parent --only-sessionid)");
    }

    @After
    public void tearDown() throws Exception {
        if (!mWasRoot) {
            getDevice().disableAdbRoot();
        }
        cleanUp();
    }

@@ -150,8 +144,11 @@ public class StagedInstallInternalTest extends BaseHostJUnit4Test {

    private void restartSystemServer() throws Exception {
        // Restart the system server
        long oldStartTime = getDevice().getProcessByName("system_server").getStartTime();
        final long oldStartTime = getDevice().getProcessByName("system_server").getStartTime();

        getDevice().enableAdbRoot(); // Need root to restart system server
        assertThat(getDevice().executeShellCommand("am restart")).contains("Restart the system");
        getDevice().disableAdbRoot();

        // Wait for new system server process to start
        long start = System.currentTimeMillis();