diff options
Diffstat (limited to 'test/testrunner/testrunner.py')
| -rwxr-xr-x | test/testrunner/testrunner.py | 152 |
1 files changed, 74 insertions, 78 deletions
diff --git a/test/testrunner/testrunner.py b/test/testrunner/testrunner.py index 3974ccb4f91..88b509d3b70 100755 --- a/test/testrunner/testrunner.py +++ b/test/testrunner/testrunner.py @@ -114,6 +114,7 @@ ignore_skips = False build = False gdb = False gdb_arg = '' +runtime_option = '' stop_testrunner = False dex2oat_jobs = -1 # -1 corresponds to default threads for dex2oat run_all_configs = False @@ -173,56 +174,37 @@ def setup_test_env(): global _user_input_variants global run_all_configs + # These are the default variant-options we will use if nothing in the group is specified. + default_variants = { + 'target': {'host', 'target'}, + 'pictest': {'npictest'}, + 'prebuild': {'prebuild'}, + 'cdex_level': {'cdex-fast'}, + 'jvmti': { 'no-jvmti'}, + 'compiler': {'optimizing', + 'jit', + 'interpreter', + 'interp-ac', + 'speed-profile'}, + 'relocate': {'no-relocate'}, + 'trace': {'ntrace'}, + 'gc': {'cms'}, + 'jni': {'checkjni'}, + 'image': {'picimage'}, + 'pictest': {'pictest'}, + 'debuggable': {'ndebuggable'}, + 'run': {'debug'}, + # address_sizes_target depends on the target so it is dealt with below. + } + # We want to pull these early since the full VARIANT_TYPE_DICT has a few additional ones we don't + # want to pick up if we pass --all. + default_variants_keys = default_variants.keys() if run_all_configs: - target_types = _user_input_variants['target'] - _user_input_variants = VARIANT_TYPE_DICT - _user_input_variants['target'] = target_types - - if not _user_input_variants['target']: - _user_input_variants['target'].add('host') - _user_input_variants['target'].add('target') - - if not _user_input_variants['prebuild']: # Default - _user_input_variants['prebuild'].add('prebuild') - - if not _user_input_variants['cdex_level']: # Default - _user_input_variants['cdex_level'].add('cdex-fast') - - # By default only run without jvmti - if not _user_input_variants['jvmti']: - _user_input_variants['jvmti'].add('no-jvmti') - - # By default we run all 'compiler' variants. - if not _user_input_variants['compiler'] and _user_input_variants['target'] != 'jvm': - _user_input_variants['compiler'].add('optimizing') - _user_input_variants['compiler'].add('jit') - _user_input_variants['compiler'].add('interpreter') - _user_input_variants['compiler'].add('interp-ac') - _user_input_variants['compiler'].add('speed-profile') - - if not _user_input_variants['relocate']: # Default - _user_input_variants['relocate'].add('no-relocate') - - if not _user_input_variants['trace']: # Default - _user_input_variants['trace'].add('ntrace') + default_variants = VARIANT_TYPE_DICT - if not _user_input_variants['gc']: # Default - _user_input_variants['gc'].add('cms') - - if not _user_input_variants['jni']: # Default - _user_input_variants['jni'].add('checkjni') - - if not _user_input_variants['image']: # Default - _user_input_variants['image'].add('picimage') - - if not _user_input_variants['pictest']: # Default - _user_input_variants['pictest'].add('npictest') - - if not _user_input_variants['debuggable']: # Default - _user_input_variants['debuggable'].add('ndebuggable') - - if not _user_input_variants['run']: # Default - _user_input_variants['run'].add('debug') + for key in default_variants_keys: + if not _user_input_variants[key]: + _user_input_variants[key] = default_variants[key] _user_input_variants['address_sizes_target'] = collections.defaultdict(set) if not _user_input_variants['address_sizes']: @@ -346,6 +328,10 @@ def run_tests(tests): if gdb_arg: options_all += ' --gdb-arg ' + gdb_arg + if runtime_option: + for opt in runtime_option: + options_all += ' --runtime-option ' + opt + if dex2oat_jobs != -1: options_all += ' --dex2oat-jobs ' + str(dex2oat_jobs) @@ -499,9 +485,6 @@ def run_tests(tests): elif env.ANDROID_COMPILE_WITH_JACK == False: options_test += ' --build-with-javac-dx' - if env.USE_D8_BY_DEFAULT == True: - options_test += ' --build-with-d8' - # TODO(http://36039166): This is a temporary solution to # fix build breakages. options_test = (' --output-path %s') % ( @@ -921,39 +904,51 @@ def parse_option(): global build global gdb global gdb_arg + global runtime_option global timeout global dex2oat_jobs global run_all_configs parser = argparse.ArgumentParser(description="Runs all or a subset of the ART test suite.") parser.add_argument('-t', '--test', action='append', dest='tests', help='name(s) of the test(s)') - parser.add_argument('-j', type=int, dest='n_thread') - parser.add_argument('--timeout', default=timeout, type=int, dest='timeout') - for variant in TOTAL_VARIANTS_SET: - flag = '--' + variant - parser.add_argument(flag, action='store_true', dest=variant) - parser.add_argument('--verbose', '-v', action='store_true', dest='verbose') - parser.add_argument('--dry-run', action='store_true', dest='dry_run') - parser.add_argument("--skip", action="append", dest="skips", default=[], - help="Skip the given test in all circumstances.") - parser.add_argument("--no-skips", dest="ignore_skips", action="store_true", default=False, - help="Don't skip any run-test configurations listed in knownfailures.json.") - parser.add_argument('--no-build-dependencies', - action='store_false', dest='build', - help="Don't build dependencies under any circumstances. This is the " + - "behavior if ART_TEST_RUN_TEST_ALWAYS_BUILD is not set to 'true'.") - parser.add_argument('-b', '--build-dependencies', - action='store_true', dest='build', - help="Build dependencies under all circumstances. By default we will " + - "not build dependencies unless ART_TEST_RUN_TEST_BUILD=true.") - parser.add_argument('--build-target', dest='build_target', help='master-art-host targets') - parser.set_defaults(build = env.ART_TEST_RUN_TEST_BUILD) - parser.add_argument('--gdb', action='store_true', dest='gdb') - parser.add_argument('--gdb-arg', dest='gdb_arg') - parser.add_argument('--dex2oat-jobs', type=int, dest='dex2oat_jobs', - help='Number of dex2oat jobs') - parser.add_argument('-a', '--all', action='store_true', dest='run_all', - help="Run all the possible configurations for the input test set") + global_group = parser.add_argument_group('Global options', + 'Options that affect all tests being run') + global_group.add_argument('-j', type=int, dest='n_thread') + global_group.add_argument('--timeout', default=timeout, type=int, dest='timeout') + global_group.add_argument('--verbose', '-v', action='store_true', dest='verbose') + global_group.add_argument('--dry-run', action='store_true', dest='dry_run') + global_group.add_argument("--skip", action='append', dest="skips", default=[], + help="Skip the given test in all circumstances.") + global_group.add_argument("--no-skips", dest="ignore_skips", action='store_true', default=False, + help="""Don't skip any run-test configurations listed in + knownfailures.json.""") + global_group.add_argument('--no-build-dependencies', + action='store_false', dest='build', + help="""Don't build dependencies under any circumstances. This is the + behavior if ART_TEST_RUN_TEST_ALWAYS_BUILD is not set to 'true'.""") + global_group.add_argument('-b', '--build-dependencies', + action='store_true', dest='build', + help="""Build dependencies under all circumstances. By default we will + not build dependencies unless ART_TEST_RUN_TEST_BUILD=true.""") + global_group.add_argument('--build-target', dest='build_target', help='master-art-host targets') + global_group.set_defaults(build = env.ART_TEST_RUN_TEST_BUILD) + global_group.add_argument('--gdb', action='store_true', dest='gdb') + global_group.add_argument('--gdb-arg', dest='gdb_arg') + global_group.add_argument('--runtime-option', action='append', dest='runtime_option', + help="""Pass an option to the runtime. Runtime options + starting with a '-' must be separated by a '=', for + 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('-a', '--all', action='store_true', dest='run_all', + help="Run all the possible configurations for the input test set") + for variant_type, variant_set in VARIANT_TYPE_DICT.items(): + var_group = parser.add_argument_group( + '{}-type Options'.format(variant_type), + "Options that control the '{}' variants.".format(variant_type)) + for variant in variant_set: + flag = '--' + variant + var_group.add_argument(flag, action='store_true', dest=variant) options = vars(parser.parse_args()) if options['build_target']: @@ -986,6 +981,7 @@ def parse_option(): gdb = True if options['gdb_arg']: gdb_arg = options['gdb_arg'] + runtime_option = options['runtime_option']; timeout = options['timeout'] if options['dex2oat_jobs']: dex2oat_jobs = options['dex2oat_jobs'] |
