diff options
-rw-r--r-- | build/apex/Android.bp | 110 | ||||
-rwxr-xr-x | build/apex/art_apex_test.py | 332 | ||||
-rw-r--r-- | build/apex/com.android.runtime.testing.pk8 | bin | 0 -> 2375 bytes | |||
-rw-r--r-- | build/apex/com.android.runtime.testing.x509.pem | 34 | ||||
-rwxr-xr-x | build/apex/runtests.sh | 6 | ||||
-rw-r--r-- | build/art.go | 4 | ||||
-rw-r--r-- | libdexfile/Android.bp | 3 | ||||
-rw-r--r-- | test/Android.bp | 12 |
8 files changed, 469 insertions, 32 deletions
diff --git a/build/apex/Android.bp b/build/apex/Android.bp index 529662608e..299456b158 100644 --- a/build/apex/Android.bp +++ b/build/apex/Android.bp @@ -188,13 +188,18 @@ apex_key { } android_app_certificate { + name: "com.android.runtime.release.certificate", + certificate: "com.android.runtime.release", +} + +android_app_certificate { name: "com.android.runtime.debug.certificate", certificate: "com.android.runtime.debug", } android_app_certificate { - name: "com.android.runtime.release.certificate", - certificate: "com.android.runtime.release", + name: "com.android.runtime.testing.certificate", + certificate: "com.android.runtime.testing", } prebuilt_etc { @@ -241,20 +246,9 @@ apex_defaults { required: ["art_apex_boot_integrity"], } -// Release version of the Runtime APEX module (not containing debug -// variants nor tools), included in user builds. Also used for -// storage-constrained devices in userdebug and eng builds. -apex { - name: "com.android.runtime.release", - defaults: ["com.android.runtime-defaults"], - certificate: ":com.android.runtime.release.certificate", -} - -// "Debug" version of the Runtime APEX module (containing both release and -// debug variants, as well as additional tools), included in userdebug and -// eng build. -apex { - name: "com.android.runtime.debug", +// Default values shared by (device) Debug and Testing Runtime APEXes. +apex_defaults { + name: "com.android.runtime-dev-defaults", defaults: ["com.android.runtime-defaults"], native_shared_libs: art_runtime_debug_native_shared_libs + libcore_debug_native_shared_libs, @@ -271,15 +265,67 @@ apex { art_tools_debug_device_only_binaries, }, }, +} + +// Release version of the Runtime APEX module (not containing debug +// variants nor tools), included in user builds. Also used for +// storage-constrained devices in userdebug and eng builds. +apex { + name: "com.android.runtime.release", + defaults: ["com.android.runtime-defaults"], + certificate: ":com.android.runtime.release.certificate", +} + +// "Debug" version of the Runtime APEX module (containing both release and +// debug variants, as well as additional tools), included in userdebug and +// eng build. +apex { + name: "com.android.runtime.debug", + defaults: ["com.android.runtime-dev-defaults"], certificate: ":com.android.runtime.debug.certificate", } -// TODO: Do this better. art_apex will disable host builds when +// ART gtests with dependencies on internal Runtime APEX libraries. +art_gtests = [ + "art_cmdline_tests", + "art_compiler_tests", + "art_dex2oat_tests", + "art_dexanalyze_tests", + "art_dexdiag_tests", + "art_dexdump_tests", + "art_dexlayout_tests", + "art_dexlist_tests", + "art_dexoptanalyzer_tests", + "art_imgdiag_tests", + "art_libartbase_tests", + "art_libartpalette_tests", + "art_libdexfile_tests", + "art_libdexfile_support_tests", + "art_libprofile_tests", + "art_oatdump_tests", + "art_profman_tests", + "art_runtime_compiler_tests", + "art_runtime_tests", + "art_sigchain_tests", +] + +// "Testing" version of the Runtime APEX module (containing both release +// and debug variants, additional tools, and ART gtests), for testing +// purposes only. +apex_test { + name: "com.android.runtime.testing", + defaults: ["com.android.runtime-dev-defaults"], + file_contexts: "com.android.runtime.debug", + certificate: ":com.android.runtime.testing.certificate", + tests: art_gtests, +} + +// TODO: Do this better. art_apex_test_host will disable host builds when // HOST_PREFER_32_BIT is set. We cannot simply use com.android.runtime.debug // because binaries have different multilib classes and 'multilib: {}' isn't // supported by target: { ... }. // See b/120617876 for more information. -art_apex_test { +art_apex_test_host { name: "com.android.runtime.host", compile_multilib: "both", payload_type: "zip", @@ -396,6 +442,34 @@ cc_prebuilt_binary { }, } +genrule { + name: "art-check-testing-apex-gen", + srcs: [":com.android.runtime.testing"], + tools: [ + "art-apex-tester", + "debugfs", + ], + cmd: "$(location art-apex-tester)" + + " --debugfs $(location debugfs)" + + " --tmpdir $(genDir)" + + " --testing" + + " $(in)" + + " && touch $(out)", + out: ["art-check-testing-apex-gen.dummy"], +} + +cc_prebuilt_binary { + name: "art-check-testing-apex-gen-fakebin", + srcs: [":art-check-testing-apex-gen"], + host_supported: true, + device_supported: false, + target: { + darwin: { + enabled: false, // No python3. + }, + }, +} + // Pre-install scripts. sh_binary { diff --git a/build/apex/art_apex_test.py b/build/apex/art_apex_test.py index 3bcf7c68de..86acfa6edd 100755 --- a/build/apex/art_apex_test.py +++ b/build/apex/art_apex_test.py @@ -26,6 +26,14 @@ import zipfile logging.basicConfig(format='%(message)s') +# Architectures supported by APEX packages. +archs = ["arm", "arm64", "x86", "x86_64"] +# Directory containing ART tests within a Runtime APEX (if the package includes +# any). ART test executables are installed in `bin/art/<arch>`. Segregating +# tests by architecture is useful on devices supporting more than one +# architecture, as it permits testing all of them using a single Runtime APEX +# package. +art_test_dir = 'bin/test' class FSObject: def __init__(self, name, is_dir, is_exec, is_symlink, size): @@ -270,6 +278,28 @@ class Checker: self.fail('%s is not a symlink', path) self._expected_file_globs.add(path) + def check_art_test_executable(self, filename): + # This is a simplistic implementation, as we declare victory as soon as the + # test binary is found for one of the supported (not built) architectures. + # Ideally we would propagate the built architectures from the build system + # to this script and require test binaries for all of them to be present. + # Note that this behavior is not specific to this method: there are other + # places in this script where we rely on this simplified strategy. + # + # TODO: Implement the suggestion above (here and in other places in this + # script). + test_found = False + for arch in archs: + test_path = '%s/%s/%s' % (art_test_dir, arch, filename) + test_is_file, _ = self.is_file(test_path) + if test_is_file: + test_found = True + self._expected_file_globs.add(test_path) + if not self._provider.get(test_path).is_exec: + self.fail('%s is not executable', test_path) + if not test_found: + self.fail('ART test binary missing: %s', filename) + def check_single_library(self, filename): lib_path = 'lib/%s' % filename lib64_path = 'lib64/%s' % filename @@ -288,6 +318,10 @@ class Checker: def ignore_path(self, path_glob): self._expected_file_globs.add(path_glob) + def check_optional_art_test_executable(self, filename): + for arch in archs: + self.ignore_path('%s/%s/%s' % (art_test_dir, arch, filename)) + def check_no_superfluous_files(self, dir_path): paths = [] for name in sorted(self._provider.read_dir(dir_path).keys()): @@ -616,6 +650,267 @@ class DebugTargetChecker: self._checker.check_prefer64_library('libprocinfo') +class TestingTargetChecker: + def __init__(self, checker): + self._checker = checker + + def __str__(self): + return 'Testing (Target) Checker' + + def run(self): + # Check cmdline tests. + self._checker.check_optional_art_test_executable('cmdline_parser_test') + + # Check compiler tests. + self._checker.check_art_test_executable('atomic_dex_ref_map_test') + self._checker.check_art_test_executable('bounds_check_elimination_test') + self._checker.check_art_test_executable('codegen_test') + self._checker.check_art_test_executable('compiled_method_storage_test') + self._checker.check_art_test_executable('data_type_test') + self._checker.check_art_test_executable('dedupe_set_test') + self._checker.check_art_test_executable('dominator_test') + self._checker.check_art_test_executable('dwarf_test') + self._checker.check_art_test_executable('exception_test') + self._checker.check_art_test_executable('find_loops_test') + self._checker.check_art_test_executable('graph_checker_test') + self._checker.check_art_test_executable('graph_test') + self._checker.check_art_test_executable('gvn_test') + self._checker.check_art_test_executable('induction_var_analysis_test') + self._checker.check_art_test_executable('induction_var_range_test') + self._checker.check_art_test_executable('jni_cfi_test') + self._checker.check_art_test_executable('jni_compiler_test') + self._checker.check_art_test_executable('licm_test') + self._checker.check_art_test_executable('linker_patch_test') + self._checker.check_art_test_executable('live_interval_test') + self._checker.check_art_test_executable('load_store_analysis_test') + self._checker.check_art_test_executable('loop_optimization_test') + self._checker.check_art_test_executable('nodes_test') + self._checker.check_art_test_executable('nodes_vector_test') + self._checker.check_art_test_executable('optimizing_cfi_test') + self._checker.check_art_test_executable('output_stream_test') + self._checker.check_art_test_executable('parallel_move_test') + self._checker.check_art_test_executable('pretty_printer_test') + self._checker.check_art_test_executable('reference_type_propagation_test') + self._checker.check_art_test_executable('scheduler_test') + self._checker.check_art_test_executable('select_generator_test') + self._checker.check_art_test_executable('side_effects_test') + self._checker.check_art_test_executable('src_map_elem_test') + self._checker.check_art_test_executable('ssa_liveness_analysis_test') + self._checker.check_art_test_executable('ssa_test') + self._checker.check_art_test_executable('stack_map_test') + self._checker.check_art_test_executable('superblock_cloner_test') + self._checker.check_art_test_executable('suspend_check_test') + self._checker.check_art_test_executable('swap_space_test') + # These tests depend on a specific code generator and are conditionally included. + self._checker.check_optional_art_test_executable('constant_folding_test') + self._checker.check_optional_art_test_executable('dead_code_elimination_test') + self._checker.check_optional_art_test_executable('linearize_test') + self._checker.check_optional_art_test_executable('live_ranges_test') + self._checker.check_optional_art_test_executable('liveness_test') + self._checker.check_optional_art_test_executable('managed_register_arm64_test') + self._checker.check_optional_art_test_executable('managed_register_arm_test') + self._checker.check_optional_art_test_executable('managed_register_mips64_test') + self._checker.check_optional_art_test_executable('managed_register_x86_64_test') + self._checker.check_optional_art_test_executable('managed_register_x86_test') + self._checker.check_optional_art_test_executable('register_allocator_test') + + # Check dex2oat tests. + self._checker.check_art_test_executable('compiler_driver_test') + self._checker.check_art_test_executable('dex2oat_image_test') + self._checker.check_art_test_executable('dex2oat_test') + self._checker.check_art_test_executable('dex_to_dex_decompiler_test') + self._checker.check_art_test_executable('elf_writer_test') + self._checker.check_art_test_executable('image_test') + self._checker.check_art_test_executable('image_write_read_test') + self._checker.check_art_test_executable('index_bss_mapping_encoder_test') + self._checker.check_art_test_executable('multi_oat_relative_patcher_test') + self._checker.check_art_test_executable('oat_writer_test') + self._checker.check_art_test_executable('verifier_deps_test') + # These tests depend on a specific code generator and are conditionally included. + self._checker.check_optional_art_test_executable('relative_patcher_arm64_test') + self._checker.check_optional_art_test_executable('relative_patcher_mips32r6_test') + self._checker.check_optional_art_test_executable('relative_patcher_mips64_test') + self._checker.check_optional_art_test_executable('relative_patcher_mips_test') + self._checker.check_optional_art_test_executable('relative_patcher_thumb2_test') + self._checker.check_optional_art_test_executable('relative_patcher_x86_64_test') + self._checker.check_optional_art_test_executable('relative_patcher_x86_test') + + # Check dexanalyze tests. + self._checker.check_optional_art_test_executable('dexanalyze_test') + + # Check dexdiag tests. + self._checker.check_optional_art_test_executable('dexdiag_test') + + # Check dexdump tests. + self._checker.check_art_test_executable('dexdump_test') + + # Check dexlayout tests. + self._checker.check_optional_art_test_executable('dexlayout_test') + + # Check dexlist tests. + self._checker.check_art_test_executable('dexlist_test') + + # Check dexoptanalyzer tests. + self._checker.check_art_test_executable('dexoptanalyzer_test') + + # Check imgdiag tests. + self._checker.check_art_test_executable('imgdiag_test') + + # Check libartbase tests. + self._checker.check_art_test_executable('arena_allocator_test') + self._checker.check_art_test_executable('bit_field_test') + self._checker.check_art_test_executable('bit_memory_region_test') + self._checker.check_art_test_executable('bit_string_test') + self._checker.check_art_test_executable('bit_struct_test') + self._checker.check_art_test_executable('bit_table_test') + self._checker.check_art_test_executable('bit_utils_test') + self._checker.check_art_test_executable('bit_vector_test') + self._checker.check_art_test_executable('fd_file_test') + self._checker.check_art_test_executable('file_utils_test') + self._checker.check_art_test_executable('hash_set_test') + self._checker.check_art_test_executable('hex_dump_test') + self._checker.check_art_test_executable('histogram_test') + self._checker.check_art_test_executable('indenter_test') + self._checker.check_art_test_executable('instruction_set_test') + self._checker.check_art_test_executable('intrusive_forward_list_test') + self._checker.check_art_test_executable('leb128_test') + self._checker.check_art_test_executable('logging_test') + self._checker.check_art_test_executable('mem_map_test') + self._checker.check_art_test_executable('membarrier_test') + self._checker.check_art_test_executable('memfd_test') + self._checker.check_art_test_executable('memory_region_test') + self._checker.check_art_test_executable('memory_type_table_test') + self._checker.check_art_test_executable('safe_copy_test') + self._checker.check_art_test_executable('scoped_flock_test') + self._checker.check_art_test_executable('time_utils_test') + self._checker.check_art_test_executable('transform_array_ref_test') + self._checker.check_art_test_executable('transform_iterator_test') + self._checker.check_art_test_executable('utils_test') + self._checker.check_art_test_executable('variant_map_test') + self._checker.check_art_test_executable('zip_archive_test') + + # Check libartpalette tests. + self._checker.check_art_test_executable('palette_test') + + # Check libdexfile tests. + self._checker.check_art_test_executable('art_dex_file_loader_test') + self._checker.check_art_test_executable('art_libdexfile_support_tests') + self._checker.check_art_test_executable('class_accessor_test') + self._checker.check_art_test_executable('code_item_accessors_test') + self._checker.check_art_test_executable('compact_dex_file_test') + self._checker.check_art_test_executable('compact_offset_table_test') + self._checker.check_art_test_executable('descriptors_names_test') + self._checker.check_art_test_executable('dex_file_loader_test') + self._checker.check_art_test_executable('dex_file_verifier_test') + self._checker.check_art_test_executable('dex_instruction_test') + self._checker.check_art_test_executable('primitive_test') + self._checker.check_art_test_executable('string_reference_test') + self._checker.check_art_test_executable('test_dex_file_builder_test') + self._checker.check_art_test_executable('type_lookup_table_test') + self._checker.check_art_test_executable('utf_test') + + # Check libprofile tests. + self._checker.check_optional_art_test_executable('profile_boot_info_test') + self._checker.check_optional_art_test_executable('profile_compilation_info_test') + + # Check oatdump tests. + self._checker.check_art_test_executable('oatdump_app_test') + self._checker.check_art_test_executable('oatdump_image_test') + self._checker.check_art_test_executable('oatdump_test') + + # Check profman tests. + self._checker.check_art_test_executable('profile_assistant_test') + + # Check runtime compiler tests. + self._checker.check_art_test_executable('module_exclusion_test') + self._checker.check_art_test_executable('reflection_test') + + # Check runtime tests. + self._checker.check_art_test_executable('arch_test') + self._checker.check_art_test_executable('barrier_test') + self._checker.check_art_test_executable('card_table_test') + self._checker.check_art_test_executable('cha_test') + self._checker.check_art_test_executable('class_linker_test') + self._checker.check_art_test_executable('class_loader_context_test') + self._checker.check_art_test_executable('class_table_test') + self._checker.check_art_test_executable('compiler_filter_test') + self._checker.check_art_test_executable('dex_cache_test') + self._checker.check_art_test_executable('dlmalloc_space_random_test') + self._checker.check_art_test_executable('dlmalloc_space_static_test') + self._checker.check_art_test_executable('entrypoints_order_test') + self._checker.check_art_test_executable('exec_utils_test') + self._checker.check_art_test_executable('gtest_test') + self._checker.check_art_test_executable('handle_scope_test') + self._checker.check_art_test_executable('heap_test') + self._checker.check_art_test_executable('heap_verification_test') + self._checker.check_art_test_executable('hidden_api_test') + self._checker.check_art_test_executable('image_space_test') + self._checker.check_art_test_executable('immune_spaces_test') + self._checker.check_art_test_executable('imtable_test') + self._checker.check_art_test_executable('indirect_reference_table_test') + self._checker.check_art_test_executable('instruction_set_features_arm64_test') + self._checker.check_art_test_executable('instruction_set_features_arm_test') + self._checker.check_art_test_executable('instruction_set_features_mips64_test') + self._checker.check_art_test_executable('instruction_set_features_mips_test') + self._checker.check_art_test_executable('instruction_set_features_test') + self._checker.check_art_test_executable('instruction_set_features_x86_64_test') + self._checker.check_art_test_executable('instruction_set_features_x86_test') + self._checker.check_art_test_executable('instrumentation_test') + self._checker.check_art_test_executable('intern_table_test') + self._checker.check_art_test_executable('java_vm_ext_test') + self._checker.check_art_test_executable('jdwp_options_test') + self._checker.check_art_test_executable('jit_memory_region_test') + self._checker.check_art_test_executable('jni_internal_test') + self._checker.check_art_test_executable('large_object_space_test') + self._checker.check_art_test_executable('math_entrypoints_test') + self._checker.check_art_test_executable('memcmp16_test') + self._checker.check_art_test_executable('method_handles_test') + self._checker.check_art_test_executable('method_type_test') + self._checker.check_art_test_executable('method_verifier_test') + self._checker.check_art_test_executable('mod_union_table_test') + self._checker.check_art_test_executable('monitor_pool_test') + self._checker.check_art_test_executable('monitor_test') + self._checker.check_art_test_executable('mutex_test') + self._checker.check_art_test_executable('oat_file_assistant_test') + self._checker.check_art_test_executable('oat_file_test') + self._checker.check_art_test_executable('object_test') + self._checker.check_art_test_executable('parsed_options_test') + self._checker.check_art_test_executable('prebuilt_tools_test') + self._checker.check_art_test_executable('profiling_info_test') + self._checker.check_art_test_executable('proxy_test') + self._checker.check_art_test_executable('quick_trampoline_entrypoints_test') + self._checker.check_art_test_executable('reference_queue_test') + self._checker.check_art_test_executable('reference_table_test') + self._checker.check_art_test_executable('reg_type_test') + self._checker.check_art_test_executable('rosalloc_space_random_test') + self._checker.check_art_test_executable('rosalloc_space_static_test') + self._checker.check_art_test_executable('runtime_callbacks_test') + self._checker.check_art_test_executable('runtime_test') + self._checker.check_art_test_executable('safe_math_test') + self._checker.check_art_test_executable('space_bitmap_test') + self._checker.check_art_test_executable('space_create_test') + self._checker.check_art_test_executable('stub_test') + self._checker.check_art_test_executable('subtype_check_info_test') + self._checker.check_art_test_executable('subtype_check_test') + self._checker.check_art_test_executable('system_weak_test') + self._checker.check_art_test_executable('task_processor_test') + self._checker.check_art_test_executable('thread_pool_test') + self._checker.check_art_test_executable('timing_logger_test') + self._checker.check_art_test_executable('transaction_test') + self._checker.check_art_test_executable('two_runtimes_test') + self._checker.check_art_test_executable('unstarted_runtime_test') + self._checker.check_art_test_executable('var_handle_test') + self._checker.check_art_test_executable('vdex_file_test') + + # Check sigchainlib tests. + self._checker.check_art_test_executable('sigchain_test') + + # Check ART test (internal) libraries. + self._checker.check_native_library('libart-gtest') + self._checker.check_native_library('libartd-disassembler') + self._checker.check_native_library('libartd-simulator-container') + + class NoSuperfluousBinariesChecker: def __init__(self, checker): self._checker = checker @@ -642,6 +937,18 @@ class NoSuperfluousLibrariesChecker: self._checker.check_no_superfluous_files('lib64/bionic') +class NoSuperfluousArtTestsChecker: + def __init__(self, checker): + self._checker = checker + + def __str__(self): + return 'No superfluous ART tests checker' + + def run(self): + for arch in archs: + self._checker.check_no_superfluous_files('%s/%s' % (art_test_dir, arch)) + + class List: def __init__(self, provider, print_size): self._provider = provider @@ -731,15 +1038,24 @@ def art_apex_test_main(test_args): if test_args.tree and test_args.debug: logging.error("Both of --tree and --debug set") return 1 + if test_args.tree and test_args.testing: + logging.error("Both of --tree and --testing set") + return 1 if test_args.list and test_args.debug: logging.error("Both of --list and --debug set") return 1 + if test_args.list and test_args.testing: + logging.error("Both of --list and --testing set") + return 1 if test_args.list and test_args.tree: logging.error("Both of --list and --tree set") return 1 if test_args.size and not (test_args.list or test_args.tree): logging.error("--size set but neither --list nor --tree set") return 1 + if test_args.host and test_args.testing: + logging.error("Both of --host and --testing set") + return 1 if not test_args.tmpdir: logging.error("Need a tmpdir.") return 1 @@ -800,13 +1116,16 @@ def art_apex_test_main(test_args): checkers.append(ReleaseHostChecker(base_checker)) else: checkers.append(ReleaseTargetChecker(base_checker)) - if test_args.debug: + if test_args.debug or test_args.testing: checkers.append(DebugChecker(base_checker)) - if test_args.debug and not test_args.host: - checkers.append(DebugTargetChecker(base_checker)) + if not test_args.host: + checkers.append(DebugTargetChecker(base_checker)) + if test_args.testing: + checkers.append(TestingTargetChecker(base_checker)) # These checkers must be last. checkers.append(NoSuperfluousBinariesChecker(base_checker)) + checkers.append(NoSuperfluousArtTestsChecker(base_checker)) if not test_args.host: # We only care about superfluous libraries on target, where their absence # can be vital to ensure they get picked up from the right package. @@ -851,8 +1170,9 @@ def art_apex_test_default(test_parser): # TODO: Add host support configs = [ - {'name': 'com.android.runtime.release', 'debug': False, 'host': False}, - {'name': 'com.android.runtime.debug', 'debug': True, 'host': False}, + {'name': 'com.android.runtime.release', 'debug': False, 'testing': False, 'host': False}, + {'name': 'com.android.runtime.debug', 'debug': True, 'testing': False, 'host': False}, + {'name': 'com.android.runtime.testing', 'debug': False, 'testing': True, 'host': False}, ] for config in configs: @@ -864,6 +1184,7 @@ def art_apex_test_default(test_parser): logging.error("Cannot find APEX %s. Please build it first.", test_args.apex) continue test_args.debug = config['debug'] + test_args.testing = config['testing'] test_args.host = config['host'] failed = art_apex_test_main(test_args) != 0 @@ -881,6 +1202,7 @@ if __name__ == "__main__": parser.add_argument('--flattened', help='Check as flattened (target) apex', action='store_true') parser.add_argument('--debug', help='Check as debug apex', action='store_true') + parser.add_argument('--testing', help='Check as testing apex', action='store_true') parser.add_argument('--list', help='List all files', action='store_true') parser.add_argument('--tree', help='Print directory tree', action='store_true') diff --git a/build/apex/com.android.runtime.testing.pk8 b/build/apex/com.android.runtime.testing.pk8 Binary files differnew file mode 100644 index 0000000000..c8f4b8def7 --- /dev/null +++ b/build/apex/com.android.runtime.testing.pk8 diff --git a/build/apex/com.android.runtime.testing.x509.pem b/build/apex/com.android.runtime.testing.x509.pem new file mode 100644 index 0000000000..5a3f1ad4cb --- /dev/null +++ b/build/apex/com.android.runtime.testing.x509.pem @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF2zCCA8OgAwIBAgIUG5O+NPtM0znZ8C7SF61kl380/5UwDQYJKoZIhvcNAQEL +BQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM +DU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB0FuZHJvaWQxEDAOBgNVBAsMB0FuZHJv +aWQxHDAaBgNVBAMME2NvbS5hbmRyb2lkLnJ1bnRpbWUwIBcNMTkwNjI0MTQ1ODU4 +WhgPNDc1NzA1MjAxNDU4NThaMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxp +Zm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lk +MRAwDgYDVQQLDAdBbmRyb2lkMRwwGgYDVQQDDBNjb20uYW5kcm9pZC5ydW50aW1l +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmsFd0kQMlAgKlXR/orLj +d4LNFGuMZFd50WLcd9eg4WxYDo3aTDLePFYZha7uYEZ7slpsToorZ7odUfEE9ocs +5QiMqawgo4zsAGDltPM86cQ5lVc8lWHVuLHlL9osJ8f6xV8Frka8HFRSh08Pqyui +wA4bYLWRan6dxuWNb0k+sJh2wZLngBwbuh82MkMfqES7XAHXSU8jNUT87b/cLmss +mrcTOrReT3zWgwtwmYbAHHuzs7pfXnoBV8If6q1ZdSSs70Fyf1bHg/MsCFTTHSke +f6BXcQ9vegcD+hqBzDCil99jlwnOL3ptepsSqKIdvv6G2uRWDd2+4dUkXvDu8QaE +2CnMUl1484vQVvV/jmxZisMcGaXaYIPRUKOS71zxNBU0gylSjaRm3Iq3YkodHeEQ +1iQLRZRH2mSUt6pl9e3NnIO6khAGiXIyTotT0W1ZBxccR76QYi5zcvTtl8/2wQ7q +XZ7IIuzbaoK4x7aEqDSuXBkaZYyxkg0dNru7SA3CZhillntLyKuDnlgh5ORGckfS +LRh62VepRZjTbfuJ0N8KrpawcuxrNXM8SyH7OfMKsCpPMGZpvtzNEV2MrD7RJ5Zq +0/D+kaBb2he9W0vLs7L+LZzsZ854/ZAFRT3GCXRFHPjKRNsI7uvTzIwXoNzXCo1S +EN1ygTlSd1wue4yGfdjT1MkCAwEAAaNTMFEwHQYDVR0OBBYEFNLhVRSFFot/RXr1 +hSRQcN6ZNzn5MB8GA1UdIwQYMBaAFNLhVRSFFot/RXr1hSRQcN6ZNzn5MA8GA1Ud +EwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBAG/iTsWjeCydmYYShTu3e6DY +RBdPTLdLVzfCqavxzsIbJuvsxpsdj1glK1AsvU/49plhofu36IVL3BIoYsUzLw63 +K/6n1lPdHAN1LXz7tCz/cra7ZcOJP87h6Xw7+blYfvxP/EUwhz4m/GYca8+1Ddio +okXO0MdNiOXE+Qmfp1iXTr2l1WtcC1sD7jlU/0FhR9DFAT/vuZcsz8EyUSRY24Er +05/mBNc6ebPVnJ24YsxSLj/CVPf82mhUml10EOhwtqgpZh+mPdL8LIAcT5aHzEbZ +t81p1G0DJSJDobXZ9/GH2wii8cF0nK40L+VGvK48W1KOlW6K+JNwx2AiWw0agtlF +TzDkTdtdwuTea87MfyRyZYqL1bN/I5W2g00EiZ/a+d8FimSZhwa4G3APkMYL65oR +dotNim84Kga6pjpGPoCDUhFgoIQh27wWOn3lmk+xjjesB01hvXQQC30jdxuJalWX +YNjAfYDpa26KuVsuu8t3KznBYAAapIZw1kH789uYfJmBVoonlotctn22+qG+PUgv +q7vu7zu9MPgHcd+Vq/MFsQxfSnHFBEx+i7DI89oIxAfJWUXk9by1JGCDFzkgiQrz +Ec6KfigmU0qClGl05cHZnTKLRV0fKVZRKSamSAFnaGWGy/utz181nLiRjNXiuxS2 +LxyS0Pcs8JHQlScH1ECw +-----END CERTIFICATE----- diff --git a/build/apex/runtests.sh b/build/apex/runtests.sh index abf007be4a..12398dca48 100755 --- a/build/apex/runtests.sh +++ b/build/apex/runtests.sh @@ -125,6 +125,7 @@ function fail_check { apex_modules=( "com.android.runtime.release" "com.android.runtime.debug" + "com.android.runtime.testing" "com.android.runtime.host" ) @@ -163,7 +164,10 @@ for apex_module in ${apex_modules[@]}; do apex_path="$ANDROID_PRODUCT_OUT/system/apex/${apex_module}.apex" fi art_apex_test_args="$art_apex_test_args --debugfs $ANDROID_HOST_OUT/bin/debugfs" - [[ $apex_module = *.debug ]] && test_only_args="--debug" + case $apex_module in + (*.debug) test_only_args="--debug";; + (*.testing) test_only_args="--testing";; + esac fi say "APEX package path: $apex_path" diff --git a/build/art.go b/build/art.go index 14ba7d55a1..e6157b43fb 100644 --- a/build/art.go +++ b/build/art.go @@ -318,10 +318,10 @@ func init() { // changes this to 'prefer32' on all host binaries. Since HOST_PREFER_32_BIT is // only used for testing we can just disable the module. // See b/120617876 for more information. - android.RegisterModuleType("art_apex_test", artTestApexBundleFactory) + android.RegisterModuleType("art_apex_test_host", artHostTestApexBundleFactory) } -func artTestApexBundleFactory() android.Module { +func artHostTestApexBundleFactory() android.Module { module := apex.ApexBundleFactory( /*testApex*/ true) android.AddLoadHook(module, func(ctx android.LoadHookContext) { if envTrue(ctx, "HOST_PREFER_32_BIT") { diff --git a/libdexfile/Android.bp b/libdexfile/Android.bp index 4e4c9ac00d..d8e614ee2a 100644 --- a/libdexfile/Android.bp +++ b/libdexfile/Android.bp @@ -356,6 +356,9 @@ cc_library { // test-art-{host,target}-gtest-art_libdexfile_support_tests. art_cc_test { name: "art_libdexfile_support_tests", + defaults: [ + "art_test_defaults", + ], host_supported: true, srcs: [ "external/dex_file_supp_test.cc", diff --git a/test/Android.bp b/test/Android.bp index 2254477dd1..81c0bc1878 100644 --- a/test/Android.bp +++ b/test/Android.bp @@ -19,22 +19,22 @@ art_cc_defaults { host_supported: true, target: { android_arm: { - relative_install_path: "art/arm", + relative_install_path: "test/arm", }, android_arm64: { - relative_install_path: "art/arm64", + relative_install_path: "test/arm64", }, android_mips: { - relative_install_path: "art/mips", + relative_install_path: "test/mips", }, android_mips64: { - relative_install_path: "art/mips64", + relative_install_path: "test/mips64", }, android_x86: { - relative_install_path: "art/x86", + relative_install_path: "test/x86", }, android_x86_64: { - relative_install_path: "art/x86_64", + relative_install_path: "test/x86_64", }, darwin: { enabled: false, |