diff options
-rwxr-xr-x | build/apex/runtests.sh | 46 | ||||
-rwxr-xr-x | test/default_run.py | 39 | ||||
-rwxr-xr-x | test/run-test | 26 | ||||
-rw-r--r-- | test/testrunner/target_config.py | 15 | ||||
-rwxr-xr-x | test/testrunner/testrunner.py | 91 |
5 files changed, 47 insertions, 170 deletions
diff --git a/build/apex/runtests.sh b/build/apex/runtests.sh index 11ca28bdc7..f848bd9bea 100755 --- a/build/apex/runtests.sh +++ b/build/apex/runtests.sh @@ -99,7 +99,7 @@ applicable APEXes if none is given on the command line. -l, --list-files list the contents of the ext4 image (\`find\`-like style) -t, --print-tree list the contents of the ext4 image (\`tree\`-like style) -s, --print-sizes print the size in bytes of each file when listing contents - --bitness=32|64|multilib|auto passed on to art_apex_test.py for non-host APEXes + --bitness=32|64|multilib|auto passed on to art_apex_test.py -h, --help display this help and exit EOF @@ -191,36 +191,28 @@ for apex_module in ${apex_modules[@]}; do art_apex_test_args="--tmpdir $work_dir" test_only_args="" - if [[ $apex_module = *.host ]]; then - apex_path="$HOST_OUT/apex/${apex_module}.zipapex" - art_apex_test_args="$art_apex_test_args --host" - test_only_args="--flavor debug" - # The host APEX is always built multilib. - art_apex_test_args="$art_apex_test_args --bitness=multilib" + art_apex_test_args="$art_apex_test_args $device_bitness_arg" + if [[ "$TARGET_FLATTEN_APEX" = true ]]; then + apex_path="$PRODUCT_OUT/system/apex/${apex_module}" + art_apex_test_args="$art_apex_test_args --flattened" else - art_apex_test_args="$art_apex_test_args $device_bitness_arg" - if [[ "$TARGET_FLATTEN_APEX" = true ]]; then - apex_path="$PRODUCT_OUT/system/apex/${apex_module}" - art_apex_test_args="$art_apex_test_args --flattened" + # Note: The Testing ART APEX is never built as a Compressed APEX. + if [[ "$PRODUCT_COMPRESSED_APEX" = true && $apex_module != *.testing ]]; then + apex_path="$PRODUCT_OUT/system/apex/${apex_module}.capex" else - # Note: The Testing ART APEX is never built as a Compressed APEX. - if [[ "$PRODUCT_COMPRESSED_APEX" = true && $apex_module != *.testing ]]; then - apex_path="$PRODUCT_OUT/system/apex/${apex_module}.capex" - else - apex_path="$PRODUCT_OUT/system/apex/${apex_module}.apex" - fi + apex_path="$PRODUCT_OUT/system/apex/${apex_module}.apex" fi - if $have_deapex_binaries; then - art_apex_test_args="$art_apex_test_args --deapexer $HOST_OUT/bin/deapexer" - art_apex_test_args="$art_apex_test_args --debugfs $HOST_OUT/bin/debugfs_static" - art_apex_test_args="$art_apex_test_args --fsckerofs $HOST_OUT/bin/fsck.erofs" - fi - case $apex_module in - (*.debug) test_only_args="--flavor debug";; - (*.testing) test_only_args="--flavor testing";; - (*) test_only_args="--flavor release";; - esac fi + if $have_deapex_binaries; then + art_apex_test_args="$art_apex_test_args --deapexer $HOST_OUT/bin/deapexer" + art_apex_test_args="$art_apex_test_args --debugfs $HOST_OUT/bin/debugfs_static" + art_apex_test_args="$art_apex_test_args --fsckerofs $HOST_OUT/bin/fsck.erofs" + fi + case $apex_module in + (*.debug) test_only_args="--flavor debug";; + (*.testing) test_only_args="--flavor testing";; + (*) test_only_args="--flavor release";; + esac say "APEX package path: $apex_path" # List the contents of the APEX image (optional). diff --git a/test/default_run.py b/test/default_run.py index 7a482dfba2..5ae04304ad 100755 --- a/test/default_run.py +++ b/test/default_run.py @@ -89,9 +89,7 @@ def parse_args(argv): argp.add_argument("--random-profile", action="store_true") argp.add_argument("--relocate", default=False, action=opt_bool) argp.add_argument("--runtime-dm", action="store_true") - argp.add_argument("--runtime-extracted-zipapex", default="") argp.add_argument("--runtime-option", default=[], action="append") - argp.add_argument("--runtime-zipapex", default="") argp.add_argument("--secondary", action="store_true") argp.add_argument("--secondary-app-image", default=True, action=opt_bool) argp.add_argument("--secondary-class-loader-context", default="") @@ -238,7 +236,6 @@ def default_run(ctx, args, **kwargs): PATH = os.environ.get("PATH", "") SANITIZE_HOST = os.environ.get("SANITIZE_HOST", "") TEST_NAME = os.environ["TEST_NAME"] - USE_EXRACTED_ZIPAPEX = os.environ.get("USE_EXRACTED_ZIPAPEX", "") assert ANDROID_BUILD_TOP, "Did you forget to run `lunch`?" @@ -273,10 +270,6 @@ def default_run(ctx, args, **kwargs): HOST = args.host BIONIC = args.bionic CREATE_ANDROID_ROOT = False - USE_ZIPAPEX = (args.runtime_zipapex != "") - ZIPAPEX_LOC = args.runtime_zipapex - USE_EXTRACTED_ZIPAPEX = (args.runtime_extracted_zipapex != "") - EXTRACTED_ZIPAPEX_LOC = args.runtime_extracted_zipapex INTERPRETER = args.interpreter SWITCH_INTERPRETER = args.switch_interpreter JIT = args.jit @@ -404,12 +397,6 @@ def default_run(ctx, args, **kwargs): # the frameworks/libcore with linux_bionic so we need to use the normal # host ones which are in a different location. CREATE_ANDROID_ROOT = True - if USE_ZIPAPEX: - # TODO (b/119942078): Currently apex does not support - # symlink_preferred_arch so we will not have a dex2oatd to execute and - # need to manually provide - # dex2oatd64. - DEX2OAT_DEBUG_BINARY = "dex2oatd64" if WITH_AGENT: USE_JVMTI = True if DEBUGGER_AGENT: @@ -738,9 +725,6 @@ def default_run(ctx, args, **kwargs): sync_cmdline = "true" linkroot_cmdline = "true" linkroot_overlay_cmdline = "true" - setupapex_cmdline = "true" - installapex_cmdline = "true" - installapex_test_cmdline = "true" def linkdirs(host_out: str, root: str): dirs = list(filter(os.path.isdir, glob.glob(os.path.join(host_out, "*")))) @@ -758,20 +742,6 @@ def default_run(ctx, args, **kwargs): # Replace the boot image to a location expected by the runtime. DALVIKVM_BOOT_OPT = f"-Ximage:{ANDROID_ROOT}/art_boot_images/javalib/boot.art" - if USE_ZIPAPEX: - # TODO Currently this only works for linux_bionic zipapexes because those are - # stripped and so small enough that the ulimit doesn't kill us. - mkdir_locations += f" {DEX_LOCATION}/zipapex" - setupapex_cmdline = f"unzip -o -u {ZIPAPEX_LOC} apex_payload.zip -d {DEX_LOCATION}" - installapex_cmdline = f"unzip -o -u {DEX_LOCATION}/apex_payload.zip -d {DEX_LOCATION}/zipapex" - ANDROID_ART_BIN_DIR = f"{DEX_LOCATION}/zipapex/bin" - elif USE_EXTRACTED_ZIPAPEX: - # Just symlink the zipapex binaries - ANDROID_ART_BIN_DIR = f"{DEX_LOCATION}/zipapex/bin" - # Force since some tests manually run this file twice. - # If the {RUN} is executed multiple times we don't need to recreate the link - installapex_cmdline = f"ln -sfTv {EXTRACTED_ZIPAPEX_LOC} {DEX_LOCATION}/zipapex" - # PROFILE takes precedence over RANDOM_PROFILE, since PROFILE tests require a # specific profile to run properly. if PROFILE or RANDOM_PROFILE: @@ -1094,11 +1064,7 @@ def default_run(ctx, args, **kwargs): else: # Host run. - if USE_ZIPAPEX or USE_EXRACTED_ZIPAPEX: - # Put the zipapex files in front of the ld-library-path - LD_LIBRARY_PATH = f"{ANDROID_DATA}/zipapex/{LIBRARY_DIRECTORY}:{ANDROID_ROOT}/{TEST_DIRECTORY}" - else: - LD_LIBRARY_PATH = f"{ANDROID_ROOT}/{LIBRARY_DIRECTORY}:{ANDROID_ROOT}/{TEST_DIRECTORY}" + LD_LIBRARY_PATH = f"{ANDROID_ROOT}/{LIBRARY_DIRECTORY}:{ANDROID_ROOT}/{TEST_DIRECTORY}" ctx.export( ANDROID_PRINTF_LOG = "brief", @@ -1152,9 +1118,6 @@ def default_run(ctx, args, **kwargs): ctx.run(f"rm -rf {DEX_LOCATION}/{{oat,dalvik-cache}}/") ctx.run(f"mkdir -p {mkdir_locations}") - ctx.run(setupapex_cmdline) - if USE_EXTRACTED_ZIPAPEX: - ctx.run(installapex_cmdline) ctx.run(linkroot_cmdline) ctx.run(linkroot_overlay_cmdline) ctx.run(profman_cmdline) diff --git a/test/run-test b/test/run-test index e650e028ae..de676a0eaa 100755 --- a/test/run-test +++ b/test/run-test @@ -520,27 +520,6 @@ if True: DEX_LOCATION = tmp_dir host_lib_root = f"{OUT_DIR}/soong/host/linux_bionic-x86" shift() - elif arg == "--runtime-extracted-zipapex": - shift() - # TODO Should we allow the java.library.path to search the zipapex too? - # Not needed at the moment and adding it will be complicated so for now - # we'll ignore this. - run_args += [f'--host --runtime-extracted-zipapex "{arg}"'] - target_mode = "no" - DEX_LOCATION = tmp_dir - shift() - elif arg == "--runtime-zipapex": - shift() - # TODO Should we allow the java.library.path to search the zipapex too? - # Not needed at the moment and adding it will be complicated so for now - # we'll ignore this. - run_args += [f'--host --runtime-zipapex "{arg}"'] - target_mode = "no" - DEX_LOCATION = tmp_dir - # apex_payload.zip is quite large we need a high enough ulimit to - # extract it. 512mb should be good enough. - file_ulimit = 512000 - shift() elif arg == "--timeout": shift() if not arg: @@ -846,11 +825,6 @@ if True: " (if applicable) to run the test with.\n" " --64 Run the test in 64-bit mode\n" " --bionic Use the (host, 64-bit only) linux_bionic libc runtime\n" - " --runtime-zipapex [file]\n" - " Use the given zipapex file to provide runtime binaries\n" - " --runtime-extracted-zipapex [dir]\n" - " Use the given extracted zipapex directory to provide\n" - " runtime binaries\n" " --timeout n Test timeout in seconds\n" " --trace Run with method tracing\n" " --strace Run with syscall tracing from strace.\n" diff --git a/test/testrunner/target_config.py b/test/testrunner/target_config.py index 0c170f213d..38c170df97 100644 --- a/test/testrunner/target_config.py +++ b/test/testrunner/target_config.py @@ -306,19 +306,4 @@ target_config = { 'art-golem-linux-x64': { 'golem' : 'linux-x64' }, - 'art-linux-bionic-x64': { - 'build': '{ANDROID_BUILD_TOP}/art/tools/build_linux_bionic_tests.sh {MAKE_OPTIONS}', - 'run-test': ['--run-test-option=--bionic', - '--host', - '--64', - '--no-build-dependencies'], - }, - # TODO(b/279835185) Remove this when the internal reference is removed. - 'art-linux-bionic-x64-zipapex': { - 'build': '{ANDROID_BUILD_TOP}/art/tools/build_linux_bionic_tests.sh {MAKE_OPTIONS}', - 'run-test': ['--run-test-option=--bionic', - '--host', - '--64', - '--no-build-dependencies'], - }, } diff --git a/test/testrunner/testrunner.py b/test/testrunner/testrunner.py index 6a348dcb53..00f34d3636 100755 --- a/test/testrunner/testrunner.py +++ b/test/testrunner/testrunner.py @@ -60,7 +60,6 @@ except Exception: sys.stdout.flush() raise -import contextlib import csv import datetime import fnmatch @@ -145,7 +144,6 @@ csv_result = None csv_writer = None runtime_option = '' with_agent: List[str] = [] -zipapex_loc = None run_test_option: List[str] = [] dex2oat_jobs = -1 # -1 corresponds to default threads for dex2oat run_all_configs = False @@ -595,53 +593,33 @@ def run_tests(tests): args_test = [python3_bin, run_test_sh] + args_test + extra_arguments[target] + [test] return executor.submit(run_test, args_test, test, variant_set, test_name) - # Use a context-manager to handle cleaning up the extracted zipapex if needed. - with handle_zipapex(zipapex_loc) as zipapex_opt: - args_all += zipapex_opt - global n_thread - with concurrent.futures.ThreadPoolExecutor(max_workers=n_thread) as executor: - test_futures = [] - for config_tuple in config: - target = config_tuple[1] - for address_size in _user_input_variants['address_sizes_target'][target]: - test_futures.append(start_combination(executor, config_tuple, args_all, address_size)) - - for config_tuple in uncombinated_config: - test_futures.append( - start_combination(executor, config_tuple, args_all, "")) # no address size - - try: - tests_done = 0 - for test_future in concurrent.futures.as_completed(f for f in test_futures if f): - (test, status, failure_info, test_time) = test_future.result() - tests_done += 1 - print_test_info(tests_done, test, status, failure_info, test_time) - if failure_info and not env.ART_TEST_KEEP_GOING: - for f in test_futures: - f.cancel() - break - except KeyboardInterrupt: - for f in test_futures: - f.cancel() - child_process_tracker.kill_all() - executor.shutdown(True) - -@contextlib.contextmanager -def handle_zipapex(ziploc): - """Extracts the zipapex (if present) and handles cleanup. - - If we are running out of a zipapex we want to unzip it once and have all the tests use the same - extracted contents. This extracts the files and handles cleanup if needed. It returns the - required extra arguments to pass to the run-test. - """ - if ziploc is not None: - with tempfile.TemporaryDirectory() as tmpdir: - subprocess.check_call(["unzip", "-qq", ziploc, "apex_payload.zip", "-d", tmpdir]) - subprocess.check_call( - ["unzip", "-qq", os.path.join(tmpdir, "apex_payload.zip"), "-d", tmpdir]) - yield ['--runtime-extracted-zipapex', tmpdir] - else: - yield [] + global n_thread + with concurrent.futures.ThreadPoolExecutor(max_workers=n_thread) as executor: + test_futures = [] + for config_tuple in config: + target = config_tuple[1] + for address_size in _user_input_variants['address_sizes_target'][target]: + test_futures.append(start_combination(executor, config_tuple, args_all, address_size)) + + for config_tuple in uncombinated_config: + test_futures.append( + start_combination(executor, config_tuple, args_all, "")) # no address size + + try: + tests_done = 0 + for test_future in concurrent.futures.as_completed(f for f in test_futures if f): + (test, status, failure_info, test_time) = test_future.result() + tests_done += 1 + print_test_info(tests_done, test, status, failure_info, test_time) + if failure_info and not env.ART_TEST_KEEP_GOING: + for f in test_futures: + f.cancel() + break + except KeyboardInterrupt: + for f in test_futures: + f.cancel() + child_process_tracker.kill_all() + executor.shutdown(True) def _popen(**kwargs): if sys.version_info.major == 3 and sys.version_info.minor >= 6: @@ -832,7 +810,6 @@ def verify_knownfailure_entry(entry): 'variant' : (str,), 'devices': (list, str), 'env_vars' : (dict,), - 'zipapex' : (bool,), } for field in entry: field_type = type(entry[field]) @@ -893,16 +870,6 @@ def get_disabled_test_info(device_name): else: disabled_test_info[test] = variants - zipapex_disable = failure.get("zipapex", False) - if zipapex_disable and zipapex_loc is not None: - for test in tests: - if test not in RUN_TEST_SET: - raise ValueError('%s is not a valid run-test' % (test)) - if test in disabled_test_info: - disabled_test_info[test] = disabled_test_info[test].union(variants) - else: - disabled_test_info[test] = variants - return disabled_test_info def gather_disabled_test_info(): @@ -1119,7 +1086,6 @@ def parse_option(): global dex2oat_jobs global run_all_configs global with_agent - global zipapex_loc global csv_result parser = argparse.ArgumentParser(description="Runs all or a subset of the ART test suite.") @@ -1173,8 +1139,6 @@ def parse_option(): example '--runtime-option=-Xjitthreshold:0'.""") global_group.add_argument('--dex2oat-jobs', type=int, dest='dex2oat_jobs', help='Number of dex2oat jobs') - global_group.add_argument('--runtime-zipapex', dest='runtime_zipapex', default=None, - help='Location for runtime zipapex.') global_group.add_argument('-a', '--all', action='store_true', dest='run_all', help="Run all the possible configurations for the input test set") global_group.add_argument('--csv-results', action='store', dest='csv_result', default=None, @@ -1238,7 +1202,6 @@ def parse_option(): runtime_option = options['runtime_option']; with_agent = options['with_agent']; run_test_option = sum(map(shlex.split, options['run_test_option']), []) - zipapex_loc = options['runtime_zipapex'] timeout = options['timeout'] if options['dex2oat_jobs']: |