| // Copyright (C) 2025 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 { |
| // See: http://go/android-license-faq |
| // A large-scale-change added 'default_applicable_licenses' to import |
| // all of the 'license_kinds' from "frameworks_base_license" |
| // to get the below license kinds: |
| // SPDX-license-identifier-Apache-2.0 |
| default_applicable_licenses: ["frameworks_base_license"], |
| } |
| |
| android_test { |
| name: "AppMemoryTestCases", |
| team: "trendy_team_system_performance", |
| srcs: ["src/**/*.java"], |
| static_libs: [ |
| "androidx.test.rules", |
| "androidx.test.core", |
| "platform-test-annotations", |
| "flag-junit", |
| "androidx.test.uiautomator_uiautomator", |
| "collector-device-lib", |
| ], |
| device_common_data: [ |
| ":AppMemoryTest_Helper", |
| ], |
| data: [ |
| "perfetto.textproto", |
| ], |
| platform_apis: true, |
| test_suites: [ |
| "device-tests", |
| "performance-tests", |
| ], |
| test_config: "AppMemoryTest.xml", |
| certificate: "platform", |
| } |
| |
| // Generate code to artificially bloat the test helper app. |
| // This is to add enough code to the app so that its size is representative of |
| // a real large app. |
| genrule { |
| name: "AppMemoryTest_Helper_gen_sources", |
| tool_files: ["generate_java_sources.sh"], |
| cmd: "bash $(location generate_java_sources.sh) 5000 100 $(genDir) $(out)", |
| out: ["generated_sources.srcjar"], |
| } |
| |
| // Generate resources to artificially bloat the test helper app. |
| genrule { |
| name: "AppMemoryTest_Helper_gen_resources", |
| tool_files: ["generate_resources.sh"], |
| cmd: "bash $(location generate_resources.sh) 100 1000 $(genDir) $(out)", |
| out: ["generated_resources.zip"], |
| } |
| |
| android_test_helper_app { |
| name: "AppMemoryTest_Helper", |
| manifest: "app/AndroidManifest.xml", |
| srcs: [ |
| "app/src/**/*.java", |
| ":AppMemoryTest_Helper_gen_sources", |
| ], |
| resource_zips: [":AppMemoryTest_Helper_gen_resources"], |
| test_suites: ["general-tests"], |
| certificate: "platform", |
| dex_preopt: { |
| enabled: false, |
| }, |
| |
| // Intentionally disable optimizations. |
| // Otherwise the generated bloat will be stripped. |
| optimize: { |
| enabled: false, |
| }, |
| |
| // This prevents the use of dex version 041, which was introduced in API 35. |
| // Until dex version 041, large programs would span multiple physical dex |
| // files. This increased their static load in memory, for instance by |
| // requiring the runtime to have multiple PathClassLoader instances and |
| // multiple runtime dex caches. |
| // This is the common behavior in apps in the market today, so we would like |
| // to simulate it in our test load. |
| min_sdk_version: "34", |
| } |
| |
| filegroup { |
| name: "appmemorytest_perfetto_config", |
| srcs: ["perfetto.textproto"], |
| } |
| |
| filegroup { |
| name: "appmemorytest_metrics_artifacts", |
| srcs: [ |
| "metrics/appmemorytest_binder_transactions.textproto", |
| "metrics/appmemorytest_native_allocations.textproto", |
| ], |
| } |
| |
| prebuilt_etc { |
| name: "appmemorytest_binder_transactions.textproto", |
| src: "metrics/appmemorytest_binder_transactions.textproto", |
| } |
| |
| prebuilt_etc { |
| name: "appmemorytest_native_allocations.textproto", |
| src: "metrics/appmemorytest_native_allocations.textproto", |
| } |