[cts] use splits for loading progress tests
This mitigates on-device digesters that read all base apk and trigger
full loading.
background.jpg copied from cts/tests/tests/content/HelloWorldApp/
BUG: 181820354
Fixes: 181820354
Test: atest com.android.tests.loadingprogress.host.IncrementalLoadingProgressTest
Change-Id: Ia903fd6708f4e2f46cf6466ad4e3fdbf2c24bd9c
diff --git a/hostsidetests/packagemanager/installedloadingprogess/deviceside/src/com/android/tests/loadingprogress/device/LoadingProgressTest.java b/hostsidetests/packagemanager/installedloadingprogess/deviceside/src/com/android/tests/loadingprogress/device/LoadingProgressTest.java
index aa8c3a0..4344b89 100644
--- a/hostsidetests/packagemanager/installedloadingprogess/deviceside/src/com/android/tests/loadingprogress/device/LoadingProgressTest.java
+++ b/hostsidetests/packagemanager/installedloadingprogess/deviceside/src/com/android/tests/loadingprogress/device/LoadingProgressTest.java
@@ -40,6 +40,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
@@ -89,11 +90,15 @@
public void testReadAllBytes() throws Exception {
ApplicationInfo appInfo = mLauncherApps.getApplicationInfo(
TEST_PACKAGE_NAME, /* flags= */ 0, mUser);
- String codePath = appInfo.sourceDir;
- assertTrue(codePath.toLowerCase().endsWith(".apk"));
- byte[] apkContentBytes = Files.readAllBytes(Paths.get(codePath));
- assertNotNull(apkContentBytes);
- assertTrue(apkContentBytes.length > 0);
+ final String codePath = appInfo.sourceDir;
+ final String apkDir = codePath.substring(0, codePath.lastIndexOf('/'));
+ for (String apkName : new File(apkDir).list()) {
+ final String apkPath = apkDir + "/" + apkName;
+ assertTrue(new File(apkPath).exists());
+ byte[] apkContentBytes = Files.readAllBytes(Paths.get(apkPath));
+ assertNotNull(apkContentBytes);
+ assertTrue(apkContentBytes.length > 0);
+ }
}
@Test
@@ -110,7 +115,9 @@
if (activity.getComponentName().getPackageName().equals(
TEST_PACKAGE_NAME)) {
foundTestApp = true;
- assertTrue(progressCondition.test(activity.getLoadingProgress()));
+ final float progress = activity.getLoadingProgress();
+ assertTrue("progress <" + progress + "> does not meet requirement",
+ progressCondition.test(progress));
}
assertTrue(activity.getUser().equals(mUser));
}
diff --git a/hostsidetests/packagemanager/installedloadingprogess/hostside/src/com/android/tests/loadingprogress/host/IncrementalLoadingProgressTest.java b/hostsidetests/packagemanager/installedloadingprogess/hostside/src/com/android/tests/loadingprogress/host/IncrementalLoadingProgressTest.java
index a8d9255..7211dd1 100644
--- a/hostsidetests/packagemanager/installedloadingprogess/hostside/src/com/android/tests/loadingprogress/host/IncrementalLoadingProgressTest.java
+++ b/hostsidetests/packagemanager/installedloadingprogess/hostside/src/com/android/tests/loadingprogress/host/IncrementalLoadingProgressTest.java
@@ -34,7 +34,6 @@
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -54,6 +53,8 @@
private static final String DEVICE_TEST_PACKAGE_NAME =
"com.android.tests.loadingprogress.device";
private static final String TEST_APK = "CtsInstalledLoadingProgressTestsApp.apk";
+ private static final String TEST_SPLIT_APK =
+ "CtsInstalledLoadingProgressTestsApp_hdpi-v4.apk";
private static final String TEST_APP_PACKAGE_NAME = "com.android.tests.loadingprogress.app";
private static final String TEST_CLASS_NAME = DEVICE_TEST_PACKAGE_NAME + ".LoadingProgressTest";
private static final String IDSIG_SUFFIX = ".idsig";
@@ -67,13 +68,21 @@
"pm has-feature android.software.incremental_delivery")));
getDevice().uninstallPackage(TEST_APP_PACKAGE_NAME);
CompatibilityBuildHelper buildHelper = new CompatibilityBuildHelper(getBuild());
- final File apk = buildHelper.getTestFile(TEST_APK);
- assertNotNull(apk);
- final File v4Signature = buildHelper.getTestFile(TEST_APK + IDSIG_SUFFIX);
- assertNotNull(v4Signature);
+ final File base_apk = buildHelper.getTestFile(TEST_APK);
+ assertNotNull(base_apk);
+ final File base_v4Signature = buildHelper.getTestFile(
+ TEST_APK + IDSIG_SUFFIX);
+ assertNotNull(base_v4Signature);
+ final File split_apk = buildHelper.getTestFile(TEST_SPLIT_APK);
+ assertNotNull(split_apk);
+ final File split_v4Signature = buildHelper.getTestFile(
+ TEST_SPLIT_APK + IDSIG_SUFFIX);
+ assertNotNull(split_v4Signature);
mSession = new IncrementalInstallSession.Builder()
- .addApk(Paths.get(apk.getAbsolutePath()),
- Paths.get(v4Signature.getAbsolutePath()))
+ .addApk(Paths.get(base_apk.getAbsolutePath()),
+ Paths.get(base_v4Signature.getAbsolutePath()))
+ .addApk(Paths.get(split_apk.getAbsolutePath()),
+ Paths.get(split_v4Signature.getAbsolutePath()))
.addExtraArgs("-t")
.build();
@@ -110,7 +119,6 @@
@LargeTest
@Test
- @Ignore("b/181820354")
public void testOnPackageLoadingProgressChangedCalledWithPartialLoaded() throws Exception {
assertTrue(runDeviceTests(DEVICE_TEST_PACKAGE_NAME, TEST_CLASS_NAME,
"testOnPackageLoadingProgressChangedCalledWithPartialLoaded"));
@@ -125,7 +133,6 @@
@LargeTest
@Test
- @Ignore("b/181820354")
public void testLoadingProgressPersistsAfterReboot() throws Exception {
// Wait for loading progress to update
RunUtil.getDefault().sleep(WAIT_FOR_LOADING_PROGRESS_UPDATE_MS);
diff --git a/hostsidetests/packagemanager/installedloadingprogess/testdata/Android.bp b/hostsidetests/packagemanager/installedloadingprogess/testdata/Android.bp
index 3c53888..b208d74 100644
--- a/hostsidetests/packagemanager/installedloadingprogess/testdata/Android.bp
+++ b/hostsidetests/packagemanager/installedloadingprogess/testdata/Android.bp
@@ -41,4 +41,7 @@
"general-tests",
],
v4_signature: true,
+ package_splits: [
+ "hdpi-v4",
+ ],
}
diff --git a/hostsidetests/packagemanager/installedloadingprogess/testdata/res/drawable-hdpi/background.jpg b/hostsidetests/packagemanager/installedloadingprogess/testdata/res/drawable-hdpi/background.jpg
new file mode 100644
index 0000000..1c466ae
--- /dev/null
+++ b/hostsidetests/packagemanager/installedloadingprogess/testdata/res/drawable-hdpi/background.jpg
Binary files differ
diff --git a/hostsidetests/packagemanager/installedloadingprogess/testdata/res/layout/activity_main.xml b/hostsidetests/packagemanager/installedloadingprogess/testdata/res/layout/activity_main.xml
new file mode 100644
index 0000000..34c7a12
--- /dev/null
+++ b/hostsidetests/packagemanager/installedloadingprogess/testdata/res/layout/activity_main.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@drawable/background">
+</LinearLayout>
+
diff --git a/hostsidetests/packagemanager/installedloadingprogess/testdata/src/com/android/tests/loadingprogress/app/MainActivity.java b/hostsidetests/packagemanager/installedloadingprogess/testdata/src/com/android/tests/loadingprogress/app/MainActivity.java
index 0f0974c..7d16dea 100644
--- a/hostsidetests/packagemanager/installedloadingprogess/testdata/src/com/android/tests/loadingprogress/app/MainActivity.java
+++ b/hostsidetests/packagemanager/installedloadingprogess/testdata/src/com/android/tests/loadingprogress/app/MainActivity.java
@@ -23,6 +23,7 @@
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
finish();
}
}
\ No newline at end of file