aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzhuyuecheng <zhuyuecheng@google.com>2023-11-21 06:34:47 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-11-21 06:34:47 +0000
commite517c4f3446121962f0f735b26f7a4b2b0904c7c (patch)
tree94cdbabe213ffc07c4824918b8ef24948e8c4e37
parent7195d25a374fbd9850748b2fd24e4d591be1ed4b (diff)
parenta320c1fbd64880726a719bdb3148e15f650a7e25 (diff)
downloadcsuite-e517c4f3446121962f0f735b26f7a4b2b0904c7c.tar.gz
Create a new test plan ats-app-crawl to run csuite crawl tests on ATS am: a320c1fbd6
Original change: https://android-review.googlesource.com/c/platform/test/app_compat/csuite/+/2836357 Change-Id: Ia66af5f968881ac3512cb64d532ee09aeb313ca6 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--harness/src/main/java/com/android/csuite/core/PackageModuleInfoProvider.java20
-rw-r--r--harness/src/test/java/com/android/csuite/core/PackageModuleInfoProviderTest.java108
-rw-r--r--test_targets/ats-app-crawl/Android.bp24
-rw-r--r--test_targets/ats-app-crawl/OWNERS1
-rw-r--r--test_targets/ats-app-crawl/plan.xml3
-rw-r--r--test_targets/ats-app-crawl/pre-installed-crawl.xml43
-rw-r--r--test_targets/ats-app-crawl/ui-automator-crawl.xml45
7 files changed, 226 insertions, 18 deletions
diff --git a/harness/src/main/java/com/android/csuite/core/PackageModuleInfoProvider.java b/harness/src/main/java/com/android/csuite/core/PackageModuleInfoProvider.java
index 56e34db..7fa0a2c 100644
--- a/harness/src/main/java/com/android/csuite/core/PackageModuleInfoProvider.java
+++ b/harness/src/main/java/com/android/csuite/core/PackageModuleInfoProvider.java
@@ -30,8 +30,25 @@ import java.util.stream.Stream;
/** A module info provider that accepts package names and files that contains package names. */
public final class PackageModuleInfoProvider implements ModuleInfoProvider {
+
+ @VisibleForTesting static final String ALT_PACKAGE_OPTION = "alt-package";
@VisibleForTesting static final String PACKAGE_OPTION = "package";
@VisibleForTesting static final String PACKAGE_PLACEHOLDER = "{package}";
+ @VisibleForTesting static final String USE_ALT_PACKAGE_OPTION = "use-alt-package";
+
+ @Option(
+ name = USE_ALT_PACKAGE_OPTION,
+ description = "Use --alt-package to specify app package names.",
+ importance = Importance.NEVER)
+ private boolean mUseAltPackage = false;
+
+ @Option(
+ name = ALT_PACKAGE_OPTION,
+ description =
+ "App package names. This is an alternative of '--package' in case of a name"
+ + " conflict of options.",
+ importance = Importance.NEVER)
+ private final Set<String> mAltPackages = new HashSet<>();
@Option(
name = PACKAGE_OPTION,
@@ -43,8 +60,9 @@ public final class PackageModuleInfoProvider implements ModuleInfoProvider {
public Stream<ModuleInfoProvider.ModuleInfo> get(IConfiguration configuration)
throws IOException {
ModuleTemplate moduleTemplate = ModuleTemplate.loadFrom(configuration);
+ Set<String> packages = mUseAltPackage ? mAltPackages : mPackages;
- return mPackages.stream()
+ return packages.stream()
.distinct()
.map(
packageName ->
diff --git a/harness/src/test/java/com/android/csuite/core/PackageModuleInfoProviderTest.java b/harness/src/test/java/com/android/csuite/core/PackageModuleInfoProviderTest.java
index 9c1c360..c750d51 100644
--- a/harness/src/test/java/com/android/csuite/core/PackageModuleInfoProviderTest.java
+++ b/harness/src/test/java/com/android/csuite/core/PackageModuleInfoProviderTest.java
@@ -37,15 +37,16 @@ import java.util.stream.Stream;
@RunWith(JUnit4.class)
public final class PackageModuleInfoProviderTest {
+ private static final String PACKAGE_NAME_1 = "a";
+ private static final String PACKAGE_NAME_2 = "b";
+
@Rule public final TemporaryFolder tempFolder = new TemporaryFolder();
@Test
public void get_templateContainsPlaceholders_replacesPlaceholdersInOutput() throws Exception {
- String content = "hello placeholder%s%s world";
- String packageName1 = "a";
- String packageName2 = "b";
+ final String content = "hello placeholder%s%s world";
PackageModuleInfoProvider provider =
- new ProviderBuilder().addPackage(packageName1).addPackage(packageName2).build();
+ new ProviderBuilder().addPackage(PACKAGE_NAME_1).addPackage(PACKAGE_NAME_2).build();
IConfiguration config =
createIConfigWithTemplate(
String.format(
@@ -57,36 +58,90 @@ public final class PackageModuleInfoProviderTest {
assertThat(collectModuleContentStrings(modulesInfo))
.containsExactly(
- String.format(content, packageName1, packageName1),
- String.format(content, packageName2, packageName2));
+ String.format(content, PACKAGE_NAME_1, PACKAGE_NAME_1),
+ String.format(content, PACKAGE_NAME_2, PACKAGE_NAME_2));
}
@Test
public void get_containsDuplicatedPackageNames_ignoreDuplicates() throws Exception {
- String packageName1 = "a";
- String packageName2 = "b";
PackageModuleInfoProvider provider =
new ProviderBuilder()
- .addPackage(packageName1)
- .addPackage(packageName1)
- .addPackage(packageName2)
+ .addPackage(PACKAGE_NAME_1)
+ .addPackage(PACKAGE_NAME_1)
+ .addPackage(PACKAGE_NAME_2)
+ .build();
+
+ Stream<ModuleInfoProvider.ModuleInfo> modulesInfo = provider.get(createIConfig());
+
+ assertThat(collectModuleNames(modulesInfo)).containsExactly(PACKAGE_NAME_1, PACKAGE_NAME_2);
+ }
+
+ @Test
+ public void get_containsDuplicatedAltPackageNamesAndUseAlt_ignoreDuplicates() throws Exception {
+ PackageModuleInfoProvider provider =
+ new ProviderBuilder()
+ .setUseAltPackage(true)
+ .addAltPackage(PACKAGE_NAME_1)
+ .addAltPackage(PACKAGE_NAME_1)
+ .addAltPackage(PACKAGE_NAME_2)
.build();
Stream<ModuleInfoProvider.ModuleInfo> modulesInfo = provider.get(createIConfig());
- assertThat(collectModuleNames(modulesInfo)).containsExactly(packageName1, packageName2);
+ assertThat(collectModuleNames(modulesInfo)).containsExactly(PACKAGE_NAME_1, PACKAGE_NAME_2);
}
@Test
public void get_packageNamesProvided_returnsPackageNames() throws Exception {
- String packageName1 = "a";
- String packageName2 = "b";
PackageModuleInfoProvider provider =
- new ProviderBuilder().addPackage(packageName1).addPackage(packageName2).build();
+ new ProviderBuilder().addPackage(PACKAGE_NAME_1).addPackage(PACKAGE_NAME_2).build();
+
+ Stream<ModuleInfoProvider.ModuleInfo> modulesInfo = provider.get(createIConfig());
+
+ assertThat(collectModuleNames(modulesInfo)).containsExactly(PACKAGE_NAME_1, PACKAGE_NAME_2);
+ }
+
+ @Test
+ public void get_bothPackageNamesAndAltPackageNamesProvidedAndUseAlt_returnsAltPackageNames()
+ throws Exception {
+ PackageModuleInfoProvider provider =
+ new ProviderBuilder()
+ .setUseAltPackage(true)
+ .addPackage(PACKAGE_NAME_1)
+ .addAltPackage(PACKAGE_NAME_2)
+ .build();
+
+ Stream<ModuleInfoProvider.ModuleInfo> modulesInfo = provider.get(createIConfig());
+
+ assertThat(collectModuleNames(modulesInfo)).containsExactly(PACKAGE_NAME_2);
+ }
+
+ @Test
+ public void get_bothPackageNamesAndAltPackageNamesProvided_returnsPackageNames()
+ throws Exception {
+ PackageModuleInfoProvider provider =
+ new ProviderBuilder()
+ .addPackage(PACKAGE_NAME_1)
+ .addAltPackage(PACKAGE_NAME_2)
+ .build();
Stream<ModuleInfoProvider.ModuleInfo> modulesInfo = provider.get(createIConfig());
- assertThat(collectModuleNames(modulesInfo)).containsExactly(packageName1, packageName2);
+ assertThat(collectModuleNames(modulesInfo)).containsExactly(PACKAGE_NAME_1);
+ }
+
+ @Test
+ public void get_altPackageNamesProvidedAndUseAlt_returnsAltPackageNames() throws Exception {
+ PackageModuleInfoProvider provider =
+ new ProviderBuilder()
+ .setUseAltPackage(true)
+ .addAltPackage(PACKAGE_NAME_1)
+ .addAltPackage(PACKAGE_NAME_2)
+ .build();
+
+ Stream<ModuleInfoProvider.ModuleInfo> modulesInfo = provider.get(createIConfig());
+
+ assertThat(collectModuleNames(modulesInfo)).containsExactly(PACKAGE_NAME_1, PACKAGE_NAME_2);
}
private List<String> collectModuleContentStrings(
@@ -102,16 +157,35 @@ public final class PackageModuleInfoProviderTest {
private static final class ProviderBuilder {
private final Set<String> mPackages = new HashSet<>();
+ private final Set<String> mAltPackages = new HashSet<>();
+ private boolean mUseAltPackage = false;
ProviderBuilder addPackage(String packageName) {
mPackages.add(packageName);
return this;
}
+ ProviderBuilder addAltPackage(String packageName) {
+ mAltPackages.add(packageName);
+ return this;
+ }
+
+ ProviderBuilder setUseAltPackage(boolean useAltPackage) {
+ this.mUseAltPackage = useAltPackage;
+ return this;
+ }
+
PackageModuleInfoProvider build() throws Exception {
+ // Creates a new instance for each build() call.
PackageModuleInfoProvider provider = new PackageModuleInfoProvider();
-
OptionSetter optionSetter = new OptionSetter(provider);
+ if (mUseAltPackage) {
+ optionSetter.setOptionValue(
+ PackageModuleInfoProvider.USE_ALT_PACKAGE_OPTION, "true");
+ }
+ for (String p : mAltPackages) {
+ optionSetter.setOptionValue(PackageModuleInfoProvider.ALT_PACKAGE_OPTION, p);
+ }
for (String p : mPackages) {
optionSetter.setOptionValue(PackageModuleInfoProvider.PACKAGE_OPTION, p);
}
diff --git a/test_targets/ats-app-crawl/Android.bp b/test_targets/ats-app-crawl/Android.bp
new file mode 100644
index 0000000..b0b8e83
--- /dev/null
+++ b/test_targets/ats-app-crawl/Android.bp
@@ -0,0 +1,24 @@
+// 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.
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+csuite_test {
+ name: "ats-app-crawl",
+ test_plan_include: "plan.xml",
+ test_config_template: "ui-automator-crawl.xml",
+ extra_test_config_templates: ["pre-installed-crawl.xml"],
+}
diff --git a/test_targets/ats-app-crawl/OWNERS b/test_targets/ats-app-crawl/OWNERS
new file mode 100644
index 0000000..5834cd5
--- /dev/null
+++ b/test_targets/ats-app-crawl/OWNERS
@@ -0,0 +1 @@
+zhuyuecheng@google.com
diff --git a/test_targets/ats-app-crawl/plan.xml b/test_targets/ats-app-crawl/plan.xml
new file mode 100644
index 0000000..4ffe388
--- /dev/null
+++ b/test_targets/ats-app-crawl/plan.xml
@@ -0,0 +1,3 @@
+<configuration description="ATS C-Suite Crawler Test Plan">
+ <target_preparer class="com.android.csuite.core.AppCrawlTesterHostPreparer"/>
+</configuration>
diff --git a/test_targets/ats-app-crawl/pre-installed-crawl.xml b/test_targets/ats-app-crawl/pre-installed-crawl.xml
new file mode 100644
index 0000000..55808d7
--- /dev/null
+++ b/test_targets/ats-app-crawl/pre-installed-crawl.xml
@@ -0,0 +1,43 @@
+<?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.
+-->
+<configuration description="C-Suite Crawler test configuration">
+ <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
+ <option name="run-command" value="rm -rf /sdcard/device-info-files"/>
+ <option name="run-command" value="rm -rf /sdcard/report-log-files"/>
+ </target_preparer>
+ <target_preparer class="com.android.compatibility.common.tradefed.targetprep.DeviceInfoCollector">
+ <option name="src-dir" value="/sdcard/device-info-files/"/>
+ <option name="dest-dir" value="device-info-files/"/>
+ <option name="temp-dir" value="temp-device-info-files/"/>
+ <option name="apk" value="CtsDeviceInfo.apk"/>
+ <option name="package" value="com.android.compatibility.common.deviceinfo"/>
+ <option name="throw-error" value="false"/>
+ </target_preparer>
+ <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller" />
+ <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
+ <option name="run-command" value="input keyevent KEYCODE_WAKEUP"/>
+ <option name="run-command" value="input keyevent KEYCODE_MENU"/>
+ <option name="run-command" value="input keyevent KEYCODE_HOME"/>
+ <option name="run-command" value="settings put global package_verifier_enable -1"/>
+ <option name="run-command" value="device_config put package_manager_service MinInstallableTargetSdk__min_installable_target_sdk 18" />
+ <option name="teardown-command" value="settings put global package_verifier_enable 1"/>
+ </target_preparer>
+ <test class="com.android.tradefed.testtype.HostTest" >
+ <option name="set-option" value="package-name:{package}"/>
+ <option name="set-option" value="ui-automator-mode:true"/>
+ <option name="class" value="com.android.csuite.tests.AppCrawlTest" />
+ </test>
+</configuration>
diff --git a/test_targets/ats-app-crawl/ui-automator-crawl.xml b/test_targets/ats-app-crawl/ui-automator-crawl.xml
new file mode 100644
index 0000000..de03fb2
--- /dev/null
+++ b/test_targets/ats-app-crawl/ui-automator-crawl.xml
@@ -0,0 +1,45 @@
+<?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.
+-->
+<configuration description="C-Suite Crawler test configuration">
+ <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
+ <option name="run-command" value="rm -rf /sdcard/device-info-files"/>
+ <option name="run-command" value="rm -rf /sdcard/report-log-files"/>
+ </target_preparer>
+ <target_preparer class="com.android.compatibility.common.tradefed.targetprep.DeviceInfoCollector">
+ <option name="src-dir" value="/sdcard/device-info-files/"/>
+ <option name="dest-dir" value="device-info-files/"/>
+ <option name="temp-dir" value="temp-device-info-files/"/>
+ <option name="apk" value="CtsDeviceInfo.apk"/>
+ <option name="package" value="com.android.compatibility.common.deviceinfo"/>
+ <option name="throw-error" value="false"/>
+ </target_preparer>
+ <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller" />
+ <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
+ <option name="run-command" value="input keyevent KEYCODE_WAKEUP"/>
+ <option name="run-command" value="input keyevent KEYCODE_MENU"/>
+ <option name="run-command" value="input keyevent KEYCODE_HOME"/>
+ <option name="run-command" value="settings put global package_verifier_enable -1"/>
+ <option name="run-command" value="device_config put package_manager_service MinInstallableTargetSdk__min_installable_target_sdk 18" />
+ <option name="teardown-command" value="settings put global package_verifier_enable 1"/>
+ </target_preparer>
+ <test class="com.android.tradefed.testtype.HostTest" >
+ <option name="set-option" value="package-name:{package}"/>
+ <option name="set-option" value="install-apk:app\://{package}"/>
+ <option name="set-option" value="install-arg:-g"/>
+ <option name="set-option" value="ui-automator-mode:true"/>
+ <option name="class" value="com.android.csuite.tests.AppCrawlTest" />
+ </test>
+</configuration>