Merge "Adds app enumeration varations to perf tests"
diff --git a/apct-tests/perftests/core/src/android/os/PackageManagerPerfTest.java b/apct-tests/perftests/core/src/android/os/PackageManagerPerfTest.java
deleted file mode 100644
index 236f548..0000000
--- a/apct-tests/perftests/core/src/android/os/PackageManagerPerfTest.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2017 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 android.os;
-
-import android.content.ComponentName;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.perftests.utils.BenchmarkState;
-import android.perftests.utils.PerfStatusReporter;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.LargeTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-@LargeTest
-public class PackageManagerPerfTest {
- private static final String PERMISSION_NAME_EXISTS =
- "com.android.perftests.core.TestPermission";
- private static final String PERMISSION_NAME_DOESNT_EXIST =
- "com.android.perftests.core.TestBadPermission";
- private static final ComponentName TEST_ACTIVITY =
- new ComponentName("com.android.perftests.core",
- "android.perftests.utils.PerfTestActivity");
-
- @Rule
- public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();
-
- @Test
- public void testCheckPermissionExists() {
- final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
- final PackageManager pm = InstrumentationRegistry.getTargetContext().getPackageManager();
- final String packageName = TEST_ACTIVITY.getPackageName();
-
- while (state.keepRunning()) {
- int ret = pm.checkPermission(PERMISSION_NAME_EXISTS, packageName);
- }
- }
-
- @Test
- public void testCheckPermissionDoesntExist() {
- final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
- final PackageManager pm = InstrumentationRegistry.getTargetContext().getPackageManager();
- final String packageName = TEST_ACTIVITY.getPackageName();
-
- while (state.keepRunning()) {
- int ret = pm.checkPermission(PERMISSION_NAME_DOESNT_EXIST, packageName);
- }
- }
-
- @Test
- public void testQueryIntentActivities() {
- final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
- final PackageManager pm = InstrumentationRegistry.getTargetContext().getPackageManager();
- final Intent intent = new Intent("com.android.perftests.core.PERFTEST");
-
- while (state.keepRunning()) {
- pm.queryIntentActivities(intent, 0);
- }
- }
-
- @Test
- public void testGetPackageInfo() throws Exception {
- final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
- final PackageManager pm = InstrumentationRegistry.getTargetContext().getPackageManager();
- final String packageName = TEST_ACTIVITY.getPackageName();
-
- while (state.keepRunning()) {
- pm.getPackageInfo(packageName, 0);
- }
- }
-
- @Test
- public void testGetApplicationInfo() throws Exception {
- final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
- final PackageManager pm = InstrumentationRegistry.getTargetContext().getPackageManager();
- final String packageName = TEST_ACTIVITY.getPackageName();
-
- while (state.keepRunning()) {
- pm.getApplicationInfo(packageName, 0);
- }
- }
-
- @Test
- public void testGetActivityInfo() throws Exception {
- final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
- final PackageManager pm = InstrumentationRegistry.getTargetContext().getPackageManager();
-
- while (state.keepRunning()) {
- pm.getActivityInfo(TEST_ACTIVITY, 0);
- }
- }
-}
diff --git a/apct-tests/perftests/packagemanager/Android.bp b/apct-tests/perftests/packagemanager/Android.bp
new file mode 100644
index 0000000..17033e0
--- /dev/null
+++ b/apct-tests/perftests/packagemanager/Android.bp
@@ -0,0 +1,21 @@
+android_test {
+ name: "PackageManagerPerfTests",
+
+ srcs: ["src/**/*.java"],
+
+ static_libs: [
+ "platform-compat-test-rules",
+ "androidx.appcompat_appcompat",
+ "androidx.test.rules",
+ "androidx.test.ext.junit",
+ "androidx.annotation_annotation",
+ "apct-perftests-utils",
+ ],
+
+ libs: ["android.test.base"],
+
+ platform_apis: true,
+
+ test_suites: ["device-tests"],
+
+}
diff --git a/apct-tests/perftests/packagemanager/AndroidManifest.xml b/apct-tests/perftests/packagemanager/AndroidManifest.xml
new file mode 100644
index 0000000..520f4b5
--- /dev/null
+++ b/apct-tests/perftests/packagemanager/AndroidManifest.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.perftests.packagemanager">
+
+ <permission android:name="com.android.perftests.packagemanager.TestPermission" />
+ <uses-permission android:name="com.android.perftests.packagemanager.TestPermission" />
+
+ <queries>
+ <package android:name="com.android.perftests.appenumeration0" />
+ <package android:name="com.android.perftests.appenumeration1" />
+ <package android:name="com.android.perftests.appenumeration2" />
+ <package android:name="com.android.perftests.appenumeration3" />
+ <package android:name="com.android.perftests.appenumeration4" />
+ <package android:name="com.android.perftests.appenumeration5" />
+ <package android:name="com.android.perftests.appenumeration6" />
+ <package android:name="com.android.perftests.appenumeration7" />
+ <package android:name="com.android.perftests.appenumeration8" />
+ <package android:name="com.android.perftests.appenumeration9" />
+ <package android:name="com.android.perftests.appenumeration10" />
+ <package android:name="com.android.perftests.appenumeration11" />
+ <package android:name="com.android.perftests.appenumeration12" />
+ <package android:name="com.android.perftests.appenumeration13" />
+ <package android:name="com.android.perftests.appenumeration14" />
+ <package android:name="com.android.perftests.appenumeration15" />
+ <package android:name="com.android.perftests.appenumeration16" />
+ <package android:name="com.android.perftests.appenumeration17" />
+ <package android:name="com.android.perftests.appenumeration18" />
+ <package android:name="com.android.perftests.appenumeration19" />
+ <package android:name="com.android.perftests.appenumeration20" />
+ <package android:name="com.android.perftests.appenumeration21" />
+ <package android:name="com.android.perftests.appenumeration22" />
+ <package android:name="com.android.perftests.appenumeration23" />
+ <package android:name="com.android.perftests.appenumeration24" />
+ <package android:name="com.android.perftests.appenumeration25" />
+ <package android:name="com.android.perftests.appenumeration26" />
+ <package android:name="com.android.perftests.appenumeration27" />
+ <package android:name="com.android.perftests.appenumeration28" />
+ <package android:name="com.android.perftests.appenumeration29" />
+ <package android:name="com.android.perftests.appenumeration30" />
+ <package android:name="com.android.perftests.appenumeration31" />
+ <package android:name="com.android.perftests.appenumeration32" />
+ <package android:name="com.android.perftests.appenumeration33" />
+ <package android:name="com.android.perftests.appenumeration34" />
+ <package android:name="com.android.perftests.appenumeration35" />
+ <package android:name="com.android.perftests.appenumeration36" />
+ <package android:name="com.android.perftests.appenumeration37" />
+ <package android:name="com.android.perftests.appenumeration38" />
+ <package android:name="com.android.perftests.appenumeration39" />
+ <package android:name="com.android.perftests.appenumeration40" />
+ <package android:name="com.android.perftests.appenumeration41" />
+ <package android:name="com.android.perftests.appenumeration42" />
+ <package android:name="com.android.perftests.appenumeration43" />
+ <package android:name="com.android.perftests.appenumeration44" />
+ <package android:name="com.android.perftests.appenumeration45" />
+ <package android:name="com.android.perftests.appenumeration46" />
+ <package android:name="com.android.perftests.appenumeration47" />
+ <package android:name="com.android.perftests.appenumeration48" />
+ <package android:name="com.android.perftests.appenumeration49" />
+ </queries>
+
+ <application>
+ <uses-library android:name="android.test.runner" />
+ <activity android:name="android.perftests.utils.PerfTestActivity">
+ <intent-filter>
+ <action android:name="com.android.perftests.packagemanager.PERFTEST" />
+ </intent-filter>
+ </activity>
+ </application>
+
+ <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+ android:targetPackage="com.android.perftests.packagemanager"/>
+
+</manifest>
diff --git a/apct-tests/perftests/packagemanager/AndroidTest.xml b/apct-tests/perftests/packagemanager/AndroidTest.xml
new file mode 100644
index 0000000..c112d87
--- /dev/null
+++ b/apct-tests/perftests/packagemanager/AndroidTest.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 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="Runs PackageManagerPerfTests metric instrumentation.">
+ <option name="test-suite-tag" value="apct" />
+ <option name="test-suite-tag" value="apct-metric-instrumentation" />
+ <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+ <option name="cleanup-apks" value="true" />
+ <option name="test-file-name" value="PackageManagerPerfTests.apk" />
+ </target_preparer>
+ <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+ <option name="cleanup-apks" value="true" />
+ <option name="force-queryable" value="false" />
+ <option name="test-file-name" value="QueriesAll0.apk" />
+ <option name="test-file-name" value="QueriesAll1.apk" />
+ <option name="test-file-name" value="QueriesAll2.apk" />
+ <option name="test-file-name" value="QueriesAll3.apk" />
+ <option name="test-file-name" value="QueriesAll4.apk" />
+ <option name="test-file-name" value="QueriesAll5.apk" />
+ <option name="test-file-name" value="QueriesAll6.apk" />
+ <option name="test-file-name" value="QueriesAll7.apk" />
+ <option name="test-file-name" value="QueriesAll8.apk" />
+ <option name="test-file-name" value="QueriesAll9.apk" />
+ <option name="test-file-name" value="QueriesAll10.apk" />
+ <option name="test-file-name" value="QueriesAll11.apk" />
+ <option name="test-file-name" value="QueriesAll12.apk" />
+ <option name="test-file-name" value="QueriesAll13.apk" />
+ <option name="test-file-name" value="QueriesAll14.apk" />
+ <option name="test-file-name" value="QueriesAll15.apk" />
+ <option name="test-file-name" value="QueriesAll16.apk" />
+ <option name="test-file-name" value="QueriesAll17.apk" />
+ <option name="test-file-name" value="QueriesAll18.apk" />
+ <option name="test-file-name" value="QueriesAll19.apk" />
+ <option name="test-file-name" value="QueriesAll20.apk" />
+ <option name="test-file-name" value="QueriesAll21.apk" />
+ <option name="test-file-name" value="QueriesAll22.apk" />
+ <option name="test-file-name" value="QueriesAll23.apk" />
+ <option name="test-file-name" value="QueriesAll24.apk" />
+ <option name="test-file-name" value="QueriesAll25.apk" />
+ <option name="test-file-name" value="QueriesAll26.apk" />
+ <option name="test-file-name" value="QueriesAll27.apk" />
+ <option name="test-file-name" value="QueriesAll28.apk" />
+ <option name="test-file-name" value="QueriesAll29.apk" />
+ <option name="test-file-name" value="QueriesAll30.apk" />
+ <option name="test-file-name" value="QueriesAll31.apk" />
+ <option name="test-file-name" value="QueriesAll32.apk" />
+ <option name="test-file-name" value="QueriesAll33.apk" />
+ <option name="test-file-name" value="QueriesAll34.apk" />
+ <option name="test-file-name" value="QueriesAll35.apk" />
+ <option name="test-file-name" value="QueriesAll36.apk" />
+ <option name="test-file-name" value="QueriesAll37.apk" />
+ <option name="test-file-name" value="QueriesAll38.apk" />
+ <option name="test-file-name" value="QueriesAll39.apk" />
+ <option name="test-file-name" value="QueriesAll40.apk" />
+ <option name="test-file-name" value="QueriesAll41.apk" />
+ <option name="test-file-name" value="QueriesAll42.apk" />
+ <option name="test-file-name" value="QueriesAll43.apk" />
+ <option name="test-file-name" value="QueriesAll44.apk" />
+ <option name="test-file-name" value="QueriesAll45.apk" />
+ <option name="test-file-name" value="QueriesAll46.apk" />
+ <option name="test-file-name" value="QueriesAll47.apk" />
+ <option name="test-file-name" value="QueriesAll48.apk" />
+ <option name="test-file-name" value="QueriesAll49.apk" />
+ </target_preparer>
+
+ <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+ <option name="package" value="com.android.perftests.packagemanager" />
+ <option name="hidden-api-checks" value="false"/>
+ </test>
+
+ <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
+ <option name="directory-keys" value="/data/local/PackageManagerPerfTests" />
+ <option name="collect-on-run-ended-only" value="true" />
+ </metrics_collector>
+</configuration>
diff --git a/apct-tests/perftests/packagemanager/apps/query-all/Android.bp b/apct-tests/perftests/packagemanager/apps/query-all/Android.bp
new file mode 100644
index 0000000..3cb1589
--- /dev/null
+++ b/apct-tests/perftests/packagemanager/apps/query-all/Android.bp
@@ -0,0 +1,314 @@
+// Copyright (C) 2020 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.
+
+android_test_helper_app {
+ name: "QueriesAll0",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration0",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll1",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration1",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll2",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration2",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll3",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration3",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll4",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration4",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll5",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration5",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll6",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration6",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll7",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration7",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll8",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration8",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll9",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration9",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll10",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration10",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll11",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration11",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll12",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration12",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll13",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration13",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll14",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration14",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll15",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration15",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll16",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration16",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll17",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration17",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll18",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration18",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll19",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration19",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll20",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration20",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll21",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration21",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll22",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration22",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll23",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration23",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll24",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration24",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll25",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration25",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll26",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration26",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll27",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration27",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll28",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration28",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll29",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration29",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll30",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration30",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll31",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration31",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll32",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration32",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll33",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration33",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll34",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration34",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll35",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration35",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll36",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration36",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll37",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration37",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll38",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration38",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll39",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration39",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll40",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration40",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll41",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration41",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll42",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration42",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll43",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration43",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll44",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration44",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll45",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration45",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll46",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration46",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll47",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration47",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll48",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration48",
+ ]
+}
+android_test_helper_app {
+ name: "QueriesAll49",
+ aaptflags: [
+ "--rename-manifest-package com.android.perftests.appenumeration49",
+ ]
+}
diff --git a/apct-tests/perftests/packagemanager/apps/query-all/AndroidManifest.xml b/apct-tests/perftests/packagemanager/apps/query-all/AndroidManifest.xml
new file mode 100644
index 0000000..e2cfa04
--- /dev/null
+++ b/apct-tests/perftests/packagemanager/apps/query-all/AndroidManifest.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 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.
+ -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.perftests.appenumeration">
+
+ <application android:hasCode="false" >
+ <activity android:name="android.perftests.utils.PerfTestActivity">
+ <intent-filter>
+ <action android:name="com.android.perftests.packagemanager.PERFTEST" />
+ </intent-filter>
+ </activity>
+ </application>
+
+ <queries>
+ <package android:name="com.android.perftests.appenumeration0" />
+ <package android:name="com.android.perftests.appenumeration1" />
+ <package android:name="com.android.perftests.appenumeration2" />
+ <package android:name="com.android.perftests.appenumeration3" />
+ <package android:name="com.android.perftests.appenumeration4" />
+ <package android:name="com.android.perftests.appenumeration5" />
+ <package android:name="com.android.perftests.appenumeration6" />
+ <package android:name="com.android.perftests.appenumeration7" />
+ <package android:name="com.android.perftests.appenumeration8" />
+ <package android:name="com.android.perftests.appenumeration9" />
+ <package android:name="com.android.perftests.appenumeration10" />
+ <package android:name="com.android.perftests.appenumeration11" />
+ <package android:name="com.android.perftests.appenumeration12" />
+ <package android:name="com.android.perftests.appenumeration13" />
+ <package android:name="com.android.perftests.appenumeration14" />
+ <package android:name="com.android.perftests.appenumeration15" />
+ <package android:name="com.android.perftests.appenumeration16" />
+ <package android:name="com.android.perftests.appenumeration17" />
+ <package android:name="com.android.perftests.appenumeration18" />
+ <package android:name="com.android.perftests.appenumeration19" />
+ <package android:name="com.android.perftests.appenumeration20" />
+ <package android:name="com.android.perftests.appenumeration21" />
+ <package android:name="com.android.perftests.appenumeration22" />
+ <package android:name="com.android.perftests.appenumeration23" />
+ <package android:name="com.android.perftests.appenumeration24" />
+ <package android:name="com.android.perftests.appenumeration25" />
+ <package android:name="com.android.perftests.appenumeration26" />
+ <package android:name="com.android.perftests.appenumeration27" />
+ <package android:name="com.android.perftests.appenumeration28" />
+ <package android:name="com.android.perftests.appenumeration29" />
+ <package android:name="com.android.perftests.appenumeration30" />
+ <package android:name="com.android.perftests.appenumeration31" />
+ <package android:name="com.android.perftests.appenumeration32" />
+ <package android:name="com.android.perftests.appenumeration33" />
+ <package android:name="com.android.perftests.appenumeration34" />
+ <package android:name="com.android.perftests.appenumeration35" />
+ <package android:name="com.android.perftests.appenumeration36" />
+ <package android:name="com.android.perftests.appenumeration37" />
+ <package android:name="com.android.perftests.appenumeration38" />
+ <package android:name="com.android.perftests.appenumeration39" />
+ <package android:name="com.android.perftests.appenumeration40" />
+ <package android:name="com.android.perftests.appenumeration41" />
+ <package android:name="com.android.perftests.appenumeration42" />
+ <package android:name="com.android.perftests.appenumeration43" />
+ <package android:name="com.android.perftests.appenumeration44" />
+ <package android:name="com.android.perftests.appenumeration45" />
+ <package android:name="com.android.perftests.appenumeration46" />
+ <package android:name="com.android.perftests.appenumeration47" />
+ <package android:name="com.android.perftests.appenumeration48" />
+ <package android:name="com.android.perftests.appenumeration49" />
+ </queries>
+
+</manifest>
\ No newline at end of file
diff --git a/apct-tests/perftests/packagemanager/src/android/os/PackageManagerPerfTest.java b/apct-tests/perftests/packagemanager/src/android/os/PackageManagerPerfTest.java
new file mode 100644
index 0000000..d7428cf
--- /dev/null
+++ b/apct-tests/perftests/packagemanager/src/android/os/PackageManagerPerfTest.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2020 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 android.os;
+
+import static libcore.junit.util.compat.CoreCompatChangeRule.DisableCompatChanges;
+import static libcore.junit.util.compat.CoreCompatChangeRule.EnableCompatChanges;
+
+import android.compat.testing.PlatformCompatChangeRule;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.perftests.utils.BenchmarkState;
+import android.perftests.utils.PerfStatusReporter;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.LargeTest;
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+@LargeTest
+public class PackageManagerPerfTest {
+ private static final String PERMISSION_NAME_EXISTS =
+ "com.android.perftests.packagemanager.TestPermission";
+ private static final String PERMISSION_NAME_DOESNT_EXIST =
+ "com.android.perftests.packagemanager.TestBadPermission";
+ private static final String OTHER_PACKAGE_NAME = "com.android.perftests.appenumeration0";
+ private static final ComponentName TEST_ACTIVITY =
+ new ComponentName(OTHER_PACKAGE_NAME,
+ "android.perftests.utils.PerfTestActivity");
+
+ @Rule
+ public final PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();
+
+ @Rule
+ public final PlatformCompatChangeRule mPlatformCompatChangeRule =
+ new PlatformCompatChangeRule();
+
+ public PackageManagerPerfTest() throws PackageManager.NameNotFoundException {
+ final Context context = InstrumentationRegistry.getInstrumentation().getContext();
+ }
+
+ @Test
+ @DisableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+ public void testCheckPermissionExists() {
+ final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ final PackageManager pm =
+ InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageManager();
+ final String packageName = TEST_ACTIVITY.getPackageName();
+
+ while (state.keepRunning()) {
+ int ret = pm.checkPermission(PERMISSION_NAME_EXISTS, packageName);
+ }
+ }
+
+ @Test
+ @EnableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+ public void testCheckPermissionExistsWithFiltering() {
+ testCheckPermissionExists();
+ }
+
+ @Test
+ @DisableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+ public void testCheckPermissionDoesntExist() {
+ final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ final PackageManager pm =
+ InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageManager();
+ final String packageName = TEST_ACTIVITY.getPackageName();
+
+ while (state.keepRunning()) {
+ int ret = pm.checkPermission(PERMISSION_NAME_DOESNT_EXIST, packageName);
+ }
+ }
+
+ @Test
+ @EnableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+ public void testCheckPermissionDoesntExistWithFiltering() {
+ testCheckPermissionDoesntExist();
+ }
+
+ @Test
+ @DisableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+ public void testQueryIntentActivities() {
+ final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ final PackageManager pm =
+ InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageManager();
+ final Intent intent = new Intent("com.android.perftests.core.PERFTEST");
+
+ while (state.keepRunning()) {
+ pm.queryIntentActivities(intent, 0);
+ }
+ }
+
+ @Test
+ @EnableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+ public void testQueryIntentActivitiesWithFiltering() {
+ testQueryIntentActivities();
+ }
+
+ @Test
+ @DisableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+ public void testGetPackageInfo() throws Exception {
+ final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ final PackageManager pm =
+ InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageManager();
+
+ while (state.keepRunning()) {
+ pm.getPackageInfo(OTHER_PACKAGE_NAME, 0);
+ }
+ }
+
+ @Test
+ @EnableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+ public void testGetPackageInfoWithFiltering() throws Exception {
+ testGetPackageInfo();
+ }
+
+ @Test
+ @DisableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+ public void testGetApplicationInfo() throws Exception {
+ final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ final PackageManager pm =
+ InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageManager();
+
+ while (state.keepRunning()) {
+ pm.getApplicationInfo(OTHER_PACKAGE_NAME, 0);
+ }
+ }
+
+ @Test
+ @EnableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+ public void testGetApplicationInfoWithFiltering() throws Exception {
+ testGetApplicationInfo();
+ }
+
+ @Test
+ @DisableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+ public void testGetActivityInfo() throws Exception {
+ final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ final PackageManager pm =
+ InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageManager();
+
+ while (state.keepRunning()) {
+ pm.getActivityInfo(TEST_ACTIVITY, 0);
+ }
+ }
+
+ @Test
+ @EnableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+ public void testGetActivityInfoWithFiltering() throws Exception {
+ testGetActivityInfo();
+ }
+
+ @Test
+ @DisableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+ public void testGetInstalledPackages() throws Exception {
+ final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ final PackageManager pm =
+ InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageManager();
+
+ while (state.keepRunning()) {
+ pm.getInstalledPackages(0);
+ }
+ }
+
+ @Test
+ @EnableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+ public void testGetInstalledPackagesWithFiltering() throws Exception {
+ testGetInstalledPackages();
+ }
+}