Move test apk out of the virt apex
The test apk is removed from the virt APEX, and installed as a
standalone test apk.
Bug: N/A
Test: atest MicrodroidHostTestCases
Change-Id: Ie68b88c413db9606ce081bd276c2e88a81722bb8
diff --git a/tests/hostside/Android.bp b/tests/hostside/Android.bp
index 429b737..0414030 100644
--- a/tests/hostside/Android.bp
+++ b/tests/hostside/Android.bp
@@ -7,4 +7,5 @@
srcs: ["java/**/*.java"],
test_suites: ["device-tests"],
libs: ["tradefed"],
+ data: [":MicrodroidTestApp"],
}
diff --git a/tests/hostside/AndroidTest.xml b/tests/hostside/AndroidTest.xml
index da24b71..247923d 100644
--- a/tests/hostside/AndroidTest.xml
+++ b/tests/hostside/AndroidTest.xml
@@ -18,6 +18,11 @@
<option name="force-root" value="true" />
</target_preparer>
+ <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+ <option name="cleanup-apks" value="true" />
+ <option name="test-file-name" value="MicrodroidTestApp.apk" />
+ </target_preparer>
+
<test class="com.android.compatibility.common.tradefed.testtype.JarHostTest" >
<option name="jar" value="MicrodroidHostTestCases.jar" />
</test>
diff --git a/tests/hostside/java/android/virt/test/MicrodroidTestCase.java b/tests/hostside/java/android/virt/test/MicrodroidTestCase.java
index a1043f7..29d633f 100644
--- a/tests/hostside/java/android/virt/test/MicrodroidTestCase.java
+++ b/tests/hostside/java/android/virt/test/MicrodroidTestCase.java
@@ -20,6 +20,7 @@
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeThat;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
@@ -93,10 +94,24 @@
"cd %s; %sbin/mk_cdisk %setc/microdroid_cdisk_env.json env_composite.img",
TEST_ROOT, VIRT_APEX, VIRT_APEX);
getDevice().executeShellCommand(makeEnvCompositeCmd);
+
+ String payloadJsonOrig = VIRT_APEX + "etc/microdroid_payload.json";
+ String mkPayload = VIRT_APEX + "bin/mk_payload";
+
+ // Get the path to the installed apk. Note that
+ // getDevice().getAppPackageInfo(...).getCodePath() doesn't work due to the incorrect
+ // parsing of the "=" character. (b/190975227)
+ String apkPath = getDevice().executeShellV2Command("pm path com.android.microdroid.test")
+ .getStdout().trim();
+ assertTrue(apkPath.startsWith("package:"));
+ apkPath = apkPath.substring("package:".length());
+ apkPath = apkPath.replace("/", "\\\\/");
+
+ // Replace APK_PATH in the json file with the actual path of the test APK
String makePayloadCompositeCmd =
- String.format(
- "cd %s; %sbin/mk_payload %setc/microdroid_payload.json payload.img",
- TEST_ROOT, VIRT_APEX, VIRT_APEX);
+ "cd " + TEST_ROOT + ";" +
+ String.format("sed s/APK_PATH/%s/ %s > %s;", apkPath, payloadJsonOrig, "payload.json") +
+ mkPayload + " payload.json payload.img";
getDevice().executeShellCommand(makePayloadCompositeCmd);
// Make sure that the composite images are created