Verify that new apex wins during same grade install
Bug: 149657138
Test: atest StagedInstallTest#testInstallStagedApex_SameGrade_NewOneWins
Change-Id: I9cc6768b4207964c4bafac3b1c2fead28ef75945
diff --git a/hostsidetests/stagedinstall/Android.bp b/hostsidetests/stagedinstall/Android.bp
index 8a73ab9..6cf22d2 100644
--- a/hostsidetests/stagedinstall/Android.bp
+++ b/hostsidetests/stagedinstall/Android.bp
@@ -59,6 +59,7 @@
":StagedInstallTestApexV2_WithPostInstallHook",
":StagedInstallTestApexV2_WithPreInstallHook",
":StagedInstallTestApexV2_WrongSha",
+ ":StagedInstallTestApexV2_WithoutApkInApex",
":StagedInstallTestAppSamePackageNameAsApex",
":StagedInstallTestApexV2_SdkTargetP",
":StagedInstallTestApexV2_ApkInApexSdkTargetP",
@@ -346,6 +347,26 @@
}
prebuilt_apex {
+ name: "StagedInstallTestApexV2_WithoutApkInApex",
+ arch: {
+ arm: {
+ src: "testdata/apex/arm/com.android.apex.cts.shim.v2_without_apk_in_apex.apex",
+ },
+ arm64: {
+ src: "testdata/apex/arm/com.android.apex.cts.shim.v2_without_apk_in_apex.apex",
+ },
+ x86: {
+ src: "testdata/apex/x86/com.android.apex.cts.shim.v2_without_apk_in_apex.apex",
+ },
+ x86_64: {
+ src: "testdata/apex/x86/com.android.apex.cts.shim.v2_without_apk_in_apex.apex",
+ },
+ },
+ filename: "com.android.apex.cts.shim.v2_without_apk_in_apex.apex",
+ installable: false,
+}
+
+prebuilt_apex {
name: "StagedInstallTestApexV1_NotPreInstalled",
arch: {
arm: {
diff --git a/hostsidetests/stagedinstall/app/src/com/android/tests/stagedinstall/StagedInstallTest.java b/hostsidetests/stagedinstall/app/src/com/android/tests/stagedinstall/StagedInstallTest.java
index 9e68c8c..1ce2daf 100644
--- a/hostsidetests/stagedinstall/app/src/com/android/tests/stagedinstall/StagedInstallTest.java
+++ b/hostsidetests/stagedinstall/app/src/com/android/tests/stagedinstall/StagedInstallTest.java
@@ -105,6 +105,7 @@
private static final Duration SLEEP_DURATION = Duration.ofMillis(200);
private static final String SHIM_PACKAGE_NAME = "com.android.apex.cts.shim";
+ private static final String APK_SHIM_PACKAGE_NAME = "com.android.cts.ctsshim";
private static final String NOT_PREINSTALL_APEX_PACKAGE_NAME =
"com.android.apex.cts.shim_not_pre_installed";
private static final String DIFFERENT_APEX_PACKAGE_NAME = "com.android.apex.cts.shim.different";
@@ -133,6 +134,9 @@
private static final TestApp ApexWrongSha2 = new TestApp(
"ApexWrongSha2", SHIM_PACKAGE_NAME, 2, /*isApex*/true,
"com.android.apex.cts.shim.v2_wrong_sha.apex");
+ private static final TestApp Apex2WithoutApkInApex = new TestApp(
+ "Apex2WithoutApkInApex", SHIM_PACKAGE_NAME, 2, /*isApex*/true,
+ "com.android.apex.cts.shim.v2_without_apk_in_apex.apex");
private static final TestApp Apex3SignedBob = new TestApp(
"Apex3SignedBob", SHIM_PACKAGE_NAME, 3, /*isApex*/true,
"com.android.apex.cts.shim.v3_signed_bob.apex");
@@ -558,6 +562,7 @@
int sessionId = retrieveLastSessionId();
assertSessionApplied(sessionId);
assertThat(getInstalledVersion(TestApp.Apex)).isEqualTo(2);
+ assertThat(getInstalledVersion(APK_SHIM_PACKAGE_NAME)).isNotEqualTo(-1);
}
@Test
@@ -1045,6 +1050,23 @@
});
}
+ @Test
+ public void testInstallStagedApex_SameGrade_NewOneWins_Commit() throws Exception {
+ assertThat(getInstalledVersion(TestApp.Apex)).isEqualTo(2);
+ assertThat(getInstalledVersion(APK_SHIM_PACKAGE_NAME)).isNotEqualTo(-1);
+ int sessionId = Install.single(Apex2WithoutApkInApex).setStaged().commit();
+ assertSessionReady(sessionId);
+ storeSessionId(sessionId);
+ }
+
+ @Test
+ public void testInstallStagedApex_SameGrade_NewOneWins_VerifyPostReboot() throws Exception {
+ int sessionId = retrieveLastSessionId();
+ assertSessionApplied(sessionId);
+ assertThat(getInstalledVersion(TestApp.Apex)).isEqualTo(2);
+ assertThat(getInstalledVersion(APK_SHIM_PACKAGE_NAME)).isEqualTo(-1);
+ }
+
/**
* Should fail to verify apex targeting older dev sdk
*/
diff --git a/hostsidetests/stagedinstall/src/com/android/tests/stagedinstall/host/StagedInstallTest.java b/hostsidetests/stagedinstall/src/com/android/tests/stagedinstall/host/StagedInstallTest.java
index 2369a2d..06bbed8 100644
--- a/hostsidetests/stagedinstall/src/com/android/tests/stagedinstall/host/StagedInstallTest.java
+++ b/hostsidetests/stagedinstall/src/com/android/tests/stagedinstall/host/StagedInstallTest.java
@@ -325,9 +325,20 @@
@LargeTest
public void testInstallStagedApex_SameGrade() throws Exception {
assumeTrue("Device does not support updating APEX", isUpdatingApexSupported());
+ installV3Apex();
+ installV3Apex();
+ }
- installV3Apex();
- installV3Apex();
+ @Test
+ @LargeTest
+ public void testInstallStagedApex_SameGrade_NewOneWins() throws Exception {
+ assumeTrue("Device does not support updating APEX", isUpdatingApexSupported());
+
+ installV2Apex();
+
+ runPhase("testInstallStagedApex_SameGrade_NewOneWins_Commit");
+ getDevice().reboot();
+ runPhase("testInstallStagedApex_SameGrade_NewOneWins_VerifyPostReboot");
}
@Test