Revert^2 "Remove test_per_src from ART tests."
Second attempt at this, which fixes the asan failures.
Remove test_per_src since it is not supported by atest.
Replace it with gtest_isolate which is transparent to atest,
and which still allows us to run tests in parallel.
The size of test binaries halves (from 1GB to 0.5GB).
Test run-time on host is unchanged.
Test run-time on target is 4x faster (tested on walleye).
Added a gtest_main.cc with the gtest isolated main function,
and ART-specific initialization.
Bug: 147819342
Test: m test-art-host-gtest
Test: art/tools/run-gtests.sh
Test: art/test/testrunner/run_build_test_target.py art-gtest-asan
Change-Id: I515c911bb7d44285495802fc66cd732fc8e6d8df
diff --git a/build/apex/art_apex_test.py b/build/apex/art_apex_test.py
index f6c81db..b97ac23 100755
--- a/build/apex/art_apex_test.py
+++ b/build/apex/art_apex_test.py
@@ -728,251 +728,27 @@
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('constant_folding_test')
- self._checker.check_art_test_executable('data_type_test')
- self._checker.check_art_test_executable('dead_code_elimination_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('linearize_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('live_ranges_test')
- self._checker.check_art_test_executable('liveness_test')
- self._checker.check_art_test_executable('load_store_analysis_test')
- self._checker.check_art_test_executable('load_store_elimination_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_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_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('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')
+ # Check ART test binaries.
+ self._checker.check_art_test_executable('art_cmdline_tests')
+ self._checker.check_art_test_executable('art_compiler_tests')
+ self._checker.check_art_test_executable('art_dex2oat_tests')
+ self._checker.check_art_test_executable('art_dexanalyze_tests')
+ self._checker.check_art_test_executable('art_dexdiag_tests')
+ self._checker.check_art_test_executable('art_dexdump_tests')
+ self._checker.check_art_test_executable('art_dexlayout_tests')
+ self._checker.check_art_test_executable('art_dexlist_tests')
+ self._checker.check_art_test_executable('art_dexoptanalyzer_tests')
+ self._checker.check_art_test_executable('art_imgdiag_tests')
+ self._checker.check_art_test_executable('art_libartbase_tests')
+ self._checker.check_art_test_executable('art_libartpalette_tests')
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_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('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('profile_saver_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')
+ self._checker.check_art_test_executable('art_libdexfile_tests')
+ self._checker.check_art_test_executable('art_libprofile_tests')
+ self._checker.check_art_test_executable('art_oatdump_tests')
+ self._checker.check_art_test_executable('art_profman_tests')
+ self._checker.check_art_test_executable('art_runtime_compiler_tests')
+ self._checker.check_art_test_executable('art_runtime_tests')
+ self._checker.check_art_test_executable('art_sigchain_tests')
# Check ART test (internal) libraries.
self._checker.check_native_library('libart-gtest')