Verify S extension versions in end-to-end test am: 3d8cf38005 am: f393f09ff0 am: 0c34cf76a6
Original change: https://android-review.googlesource.com/c/platform/packages/modules/SdkExtensions/+/1608154
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I976df6070598d23ec9011faf37471ce56b34f981
diff --git a/tests/e2e/app-src/com/android/tests/apex/sdkextensions/Receiver.java b/tests/e2e/app-src/com/android/tests/apex/sdkextensions/Receiver.java
index 120d290..d9f74fa 100644
--- a/tests/e2e/app-src/com/android/tests/apex/sdkextensions/Receiver.java
+++ b/tests/e2e/app-src/com/android/tests/apex/sdkextensions/Receiver.java
@@ -33,12 +33,21 @@
private static final String ACTION_MAKE_CALLS_45 =
"com.android.tests.apex.sdkextensions.MAKE_CALLS_45";
+ private static int dessertLetterToInt(char letter) {
+ switch (letter) {
+ case 'r': return Build.VERSION_CODES.R;
+ case 's': return Build.VERSION_CODES.CUR_DEVELOPMENT;
+ }
+ throw new IllegalArgumentException(String.valueOf(letter));
+ }
+
@Override
public void onReceive(Context context, Intent intent) {
try {
switch (intent.getAction()) {
case ACTION_GET_SDK_VERSION:
- int sdkVersion = SdkExtensions.getExtensionVersion(Build.VERSION_CODES.R);
+ int extension = dessertLetterToInt(intent.getStringExtra("extra").charAt(0));
+ int sdkVersion = SdkExtensions.getExtensionVersion(extension);
setResultData(String.valueOf(sdkVersion));
break;
case ACTION_MAKE_CALLS_0:
diff --git a/tests/e2e/apps-with-reqs/AndroidManifest-r12.xml b/tests/e2e/apps-with-reqs/AndroidManifest-r12.xml
index 92aff31..a74f8be 100644
--- a/tests/e2e/apps-with-reqs/AndroidManifest-r12.xml
+++ b/tests/e2e/apps-with-reqs/AndroidManifest-r12.xml
@@ -18,6 +18,7 @@
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="29">
<extension-sdk android:sdkVersion="30" android:minExtensionVersion="12" />
+ <extension-sdk android:sdkVersion="10000" android:minExtensionVersion="12" />
</uses-sdk>
<application android:hasCode="false"></application>
diff --git a/tests/e2e/apps-with-reqs/AndroidManifest-r45.xml b/tests/e2e/apps-with-reqs/AndroidManifest-r45.xml
index ff5eb0e..f3cc3a3 100644
--- a/tests/e2e/apps-with-reqs/AndroidManifest-r45.xml
+++ b/tests/e2e/apps-with-reqs/AndroidManifest-r45.xml
@@ -18,6 +18,7 @@
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="29">
<extension-sdk android:sdkVersion="30" android:minExtensionVersion="45" />
+ <extension-sdk android:sdkVersion="10000" android:minExtensionVersion="45" />
</uses-sdk>
<application android:hasCode="false"></application>
diff --git a/tests/e2e/test-src/com/android/tests/apex/sdkextensions/SdkExtensionsHostTest.java b/tests/e2e/test-src/com/android/tests/apex/sdkextensions/SdkExtensionsHostTest.java
index 324a7a7..c251cac 100644
--- a/tests/e2e/test-src/com/android/tests/apex/sdkextensions/SdkExtensionsHostTest.java
+++ b/tests/e2e/test-src/com/android/tests/apex/sdkextensions/SdkExtensionsHostTest.java
@@ -88,11 +88,18 @@
@Test
public void upgradeOneApexWithBump() throws Exception {
- // Version 12 requires test_com.android.sdkext.
assertVersion0();
mInstallUtils.installApexes(SDKEXTENSIONS_FILENAME);
reboot();
- assertVersion12();
+
+ // R-Version 12 requires sdkext, which is fulfilled
+ // R-Version 45 requires sdkext + media, which isn't fulfilled
+ // S-Version 45 does not have any particular requirements.
+ assertEquals(12, getExtensionVersionR());
+ assertEquals(45, getExtensionVersionS());
+ assertEquals("true", broadcast("MAKE_CALLS_45")); // sdkext 45 APIs are available in 12 too.
+ assertTrue(canInstallApp(APP_R12_FILENAME, APP_R12_PACKAGE));
+ assertFalse(canInstallApp(APP_R45_FILENAME, APP_R45_PACKAGE));
}
@Test
@@ -123,21 +130,33 @@
}
private int getExtensionVersionR() throws Exception {
- int appValue = Integer.parseInt(broadcast("GET_SDK_VERSION"));
- int syspropValue = getExtensionVersionRFromSysprop();
+ int appValue = Integer.parseInt(broadcast("GET_SDK_VERSION", "r"));
+ int syspropValue = getExtensionVersionFromSysprop("r");
assertEquals(appValue, syspropValue);
return appValue;
}
- private int getExtensionVersionRFromSysprop() throws Exception {
- CommandResult res = getDevice().executeShellV2Command("getprop build.version.extensions.r");
+ private int getExtensionVersionS() throws Exception {
+ int appValue = Integer.parseInt(broadcast("GET_SDK_VERSION", "s"));
+ int syspropValue = getExtensionVersionFromSysprop("s");
+ assertEquals(appValue, syspropValue);
+ return appValue;
+ }
+
+ private int getExtensionVersionFromSysprop(String v) throws Exception {
+ String command = "getprop build.version.extensions." + v;
+ CommandResult res = getDevice().executeShellV2Command(command);
assertEquals(0, (int) res.getExitCode());
String syspropString = res.getStdout().replace("\n", "");
return Integer.parseInt(syspropString);
}
private String broadcast(String action) throws Exception {
- String command = getBroadcastCommand(action);
+ return broadcast(action, null);
+ }
+
+ private String broadcast(String action, String extra) throws Exception {
+ String command = getBroadcastCommand(action, extra);
CommandResult res = getDevice().executeShellV2Command(command);
assertEquals(0, (int) res.getExitCode());
Matcher matcher = Pattern.compile("data=\"([^\"]+)\"").matcher(res.getStdout());
@@ -147,30 +166,26 @@
private void assertVersion0() throws Exception {
assertEquals(0, getExtensionVersionR());
+ assertEquals(0, getExtensionVersionS());
assertEquals("true", broadcast("MAKE_CALLS_0"));
- File testAppFile = mInstallUtils.getTestFile(APP_FILENAME);
- String installResult = getDevice().installPackage(testAppFile, true);
assertFalse(canInstallApp(APP_R12_FILENAME, APP_R12_PACKAGE));
assertFalse(canInstallApp(APP_R45_FILENAME, APP_R45_PACKAGE));
}
- private void assertVersion12() throws Exception {
- assertEquals(12, getExtensionVersionR());
- assertEquals("true", broadcast("MAKE_CALLS_45")); // sdkext 45 APIs are available in 12 too.
- assertTrue(canInstallApp(APP_R12_FILENAME, APP_R12_PACKAGE));
- assertFalse(canInstallApp(APP_R45_FILENAME, APP_R45_PACKAGE));
- }
-
private void assertVersion45() throws Exception {
assertEquals(45, getExtensionVersionR());
+ assertEquals(45, getExtensionVersionS());
assertEquals("true", broadcast("MAKE_CALLS_45"));
assertTrue(canInstallApp(APP_R12_FILENAME, APP_R12_PACKAGE));
assertTrue(canInstallApp(APP_R45_FILENAME, APP_R45_PACKAGE));
}
- private static String getBroadcastCommand(String action) {
+ private static String getBroadcastCommand(String action, String extra) {
String cmd = "am broadcast";
cmd += " -a com.android.tests.apex.sdkextensions." + action;
+ if (extra != null) {
+ cmd += " -e extra " + extra;
+ }
cmd += " -n com.android.tests.apex.sdkextensions/.Receiver";
return cmd;
}