diff options
author | Anton Hansson <hansson@google.com> | 2020-06-02 13:03:15 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-06-02 13:03:15 +0000 |
commit | 3ca1acf14b2b902775b2980ecc61cdc96e00b91a (patch) | |
tree | c1626fe44897d63a380614327442ac68b6c57240 | |
parent | 7d34ca25a62375e0b7c7638687d651477f78b930 (diff) | |
parent | 8ebfc34fb8982eb66f6460fe68eb419a2ff24b24 (diff) |
Cleanup Apex E2E-test base class am: 8ebfc34fb8
Original change: undetermined
Change-Id: Ie559fce73fd54bf7dd0053634521d7162c2e8b68
-rw-r--r-- | tests/src/com/android/tests/apex/ApexE2EBaseHostTest.java | 111 |
1 files changed, 50 insertions, 61 deletions
diff --git a/tests/src/com/android/tests/apex/ApexE2EBaseHostTest.java b/tests/src/com/android/tests/apex/ApexE2EBaseHostTest.java index 7101528..04b5134 100644 --- a/tests/src/com/android/tests/apex/ApexE2EBaseHostTest.java +++ b/tests/src/com/android/tests/apex/ApexE2EBaseHostTest.java @@ -26,7 +26,6 @@ import android.platform.test.annotations.RequiresDevice; import com.android.tests.util.ModuleTestUtils; import com.android.tradefed.config.Option; import com.android.tradefed.config.Option.Importance; -import com.android.tradefed.device.DeviceNotAvailableException; import com.android.tradefed.device.ITestDevice.ApexInfo; import com.android.tradefed.log.LogUtil.CLog; import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test; @@ -37,8 +36,8 @@ import org.junit.Before; import org.junit.Test; import java.io.File; -import java.io.IOException; import java.time.Duration; +import java.util.List; import java.util.Set; /** @@ -48,7 +47,7 @@ public abstract class ApexE2EBaseHostTest extends BaseHostJUnit4Test { private static final String OPTION_APEX_FILE_NAME = "apex_file_name"; - private static final Duration WAIT_FOR_BOOT_COMPLETE_TIMEOUT = Duration.ofMinutes(2); + private static final Duration BOOT_COMPLETE_TIMEOUT = Duration.ofMinutes(2); private static final String USERSPACE_REBOOT_SUPPORTED_PROP = "init.userspace_reboot.is_supported"; @@ -67,65 +66,79 @@ public abstract class ApexE2EBaseHostTest extends BaseHostJUnit4Test { public void setUp() throws Exception { assumeTrue("Updating APEX is not supported", mUtils.isApexUpdateSupported()); mUtils.abandonActiveStagedSession(); - uninstallApex(); + uninstallAllApexes(); + } + + @After + public void tearDown() throws Exception { + assumeTrue("Updating APEX is not supported", mUtils.isApexUpdateSupported()); + mUtils.abandonActiveStagedSession(); + uninstallAllApexes(); + } + + protected List<String> getAllApexFilenames() { + return List.of(mApexFileName); } - /** - * Check if Apex package can be staged, activated and uninstalled successfully. - */ @Test public final void testStageActivateUninstallApexPackage() throws Exception { stageActivateUninstallApexPackage(false/*userspaceReboot*/); - additionalCheck(); } - /** - * Check if Apex package can be staged, activated and uninstalled successfully with - * userspace reboot. - */ @Test @RequiresDevice // TODO(b/147726967): Remove when Userspace reboot works on cuttlefish public final void testStageActivateUninstallApexPackageWithUserspaceReboot() throws Exception { assumeTrue("Userspace reboot not supported on the device", getDevice().getBooleanProperty(USERSPACE_REBOOT_SUPPORTED_PROP, false)); stageActivateUninstallApexPackage(true/*userspaceReboot*/); + } + + private void stageActivateUninstallApexPackage(boolean userspaceReboot) throws Exception { + ApexInfo apex = installApex(mApexFileName); + + reboot(userspaceReboot); // for install to take affect + Set<ApexInfo> activatedApexes = getDevice().getActiveApexes(); + assertWithMessage("Failed to activate %s", apex).that(activatedApexes).contains(apex); + additionalCheck(); } + private void uninstallAllApexes() throws Exception { + for (String filename : getAllApexFilenames()) { + ApexInfo apex = mUtils.getApexInfo(mUtils.getTestFile(filename)); + uninstallApex(apex.name); + } + } - private void stageActivateUninstallApexPackage(boolean userspaceReboot) throws Exception { - File testAppFile = mUtils.getTestFile(mApexFileName); - CLog.i("Found test apex file: " + testAppFile.getAbsoluteFile()); + protected final ApexInfo installApex(String filename) throws Exception { + File testAppFile = mUtils.getTestFile(filename); - // Install apex package String installResult = getDevice().installPackage(testAppFile, false, "--wait"); - Assert.assertNull( - String.format("failed to install test app %s. Reason: %s", - mApexFileName, installResult), - installResult); + assertWithMessage("failed to install test app %s. Reason: %s", filename, installResult) + .that(installResult).isNull(); ApexInfo testApexInfo = mUtils.getApexInfo(testAppFile); Assert.assertNotNull(testApexInfo); + return testApexInfo; + } - // for install to take affect + protected final void reboot(boolean userspaceReboot) throws Exception { if (userspaceReboot) { - rebootUserspace(); + assertThat(getDevice().setProperty("test.userspace_reboot.requested", "1")).isTrue(); + getDevice().rebootUserspace(); } else { getDevice().reboot(); } - assertWithMessage("Device didn't boot in %s", WAIT_FOR_BOOT_COMPLETE_TIMEOUT).that( - getDevice().waitForBootComplete( - WAIT_FOR_BOOT_COMPLETE_TIMEOUT.toMillis())).isTrue(); + boolean success = getDevice().waitForBootComplete(BOOT_COMPLETE_TIMEOUT.toMillis()); + assertWithMessage("Device didn't boot in %s", BOOT_COMPLETE_TIMEOUT).that(success).isTrue(); if (userspaceReboot) { - assertUserspaceRebootSucceed(); + // If userspace reboot fails and fallback to hard reboot is triggered then + // test.userspace_reboot.requested won't be set. + boolean res = getDevice().getBooleanProperty("test.userspace_reboot.requested", false); + String message = "Userspace reboot failed, fallback to full reboot was triggered. "; + message += "Boot reason: " + getDevice().getProperty("sys.boot.reason.last"); + assertWithMessage(message).that(res).isTrue(); } - Set<ApexInfo> activatedApexes = getDevice().getActiveApexes(); - Assert.assertTrue( - String.format("Failed to activate %s %s", - testApexInfo.name, testApexInfo.versionCode), - activatedApexes.contains(testApexInfo)); - - additionalCheck(); } /** @@ -133,39 +146,15 @@ public abstract class ApexE2EBaseHostTest extends BaseHostJUnit4Test { */ public void additionalCheck() throws Exception {}; - @After - public void tearDown() throws Exception { - assumeTrue("Updating APEX is not supported", mUtils.isApexUpdateSupported()); - mUtils.abandonActiveStagedSession(); - uninstallApex(); - } - - private void uninstallApex() throws DeviceNotAvailableException, IOException { - ApexInfo apex = mUtils.getApexInfo(mUtils.getTestFile(mApexFileName)); - String uninstallResult = getDevice().uninstallPackage(apex.name); - if (uninstallResult != null) { + protected final void uninstallApex(String apexName) throws Exception { + String res = getDevice().uninstallPackage(apexName); + if (res != null) { // Uninstall failed. Most likely this means that there were no apex installed. No need // to reboot. - CLog.w("Failed to uninstall apex " + apex.name + " : " + uninstallResult); + CLog.i("Uninstall of %s failed: %s, likely already on factory version", apexName, res); } else { // Uninstall succeeded. Need to reboot. getDevice().reboot(); // for the uninstall to take affect } } - - private void rebootUserspace() throws Exception { - assertThat(getDevice().setProperty("test.userspace_reboot.requested", "1")).isTrue(); - getDevice().rebootUserspace(); - } - - private void assertUserspaceRebootSucceed() throws Exception { - // If userspace reboot fails and fallback to hard reboot is triggered then - // test.userspace_reboot.requested won't be set. - final String bootReason = getDevice().getProperty("sys.boot.reason.last"); - final boolean result = getDevice().getBooleanProperty("test.userspace_reboot.requested", - false); - assertWithMessage( - "Userspace reboot failed and fallback to full reboot was triggered. Boot reason: " - + "%s", bootReason).that(result).isTrue(); - } } |