From: Shubham Ajmera Date: Tue, 7 Mar 2017 18:45:05 +0000 (-0800) Subject: Allow test runner to build master-art-host targets X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=b9d09ca32ac2cdd257cb992691add2bda3c0d782;p=android-x86%2Fart.git Allow test runner to build master-art-host targets With --build-target , where target-name is a run-test target on master-art-host, testrunner setup environment and runs the tests for the target. Test: manual Change-Id: I17d674319283f2c455742df63e8fddb277d9bb31 --- diff --git a/test/testrunner/target_config.py b/test/testrunner/target_config.py new file mode 100644 index 000000000..2cafc445d --- /dev/null +++ b/test/testrunner/target_config.py @@ -0,0 +1,187 @@ +target_config = { + "art-interpreter" : { + "flags" : ["--interpreter"], + "env" : { + "ART_USE_READ_BARRIER" : "false" + } + }, + "art-interpreter-access-checks" : { + "flags" : ["--interp-ac"], + "env" : { + "ART_USE_READ_BARRIER" : "false" + } + }, + "art-jit" : { + "flags" : ["--jit"], + "env" : { + "ART_USE_READ_BARRIER" : "false" + } + }, + "art-optimizing" : { + "flags" : ["--optimizing"], + "env" : { + "ART_USE_READ_BARRIER" : "false" + } + }, + "art-gcstress-gcverify": { + "flags" : ["--gcstress", + "--gcverify"], + "env" : { + "ART_USE_READ_BARRIER" : "false", + "ART_DEFAULT_GC_TYPE" : "SS" + } + }, + "art-interpreter-gcstress" : { + "flags": ["--interpreter", + "--gcstress"], + "env" : { + "ART_USE_READ_BARRIER" : "false", + "ART_DEFAULT_GC_TYPE" : "SS" + } + }, + "art-optimizing-gcstress" : { + "flags": ["--gcstress", + "--optimizing"], + "env" : { + "ART_USE_READ_BARRIER" : "false", + "ART_DEFAULT_GC_TYPE" : "SS" + } + }, + "art-jit-gcstress" : { + "flags": ["--jit", + "--gcstress"], + "env" : { + "ART_USE_READ_BARRIER" : "false" + } + }, + "art-read-barrier" : { + "flags": ["--interpreter", + "--optimizing"], + "env" : { + "ART_USE_READ_BARRIER" : "true", + "ART_HEAP_POISONING" : "true" + } + }, + "art-read-barrier-gcstress" : { + "flags" : ["--interpreter", + "--optimizing", + "--gcstress"], + "env" : { + "ART_USE_READ_BARRIER" : "true", + "ART_HEAP_POISONING" : "true" + } + }, + "art-read-barrier-table-lookup" : { + "flags" : ["--interpreter", + "--optimizing"], + "env" : { + "ART_USE_READ_BARRIER" : "true", + "ART_READ_BARRIER_TYPE" : "TABLELOOKUP", + "ART_HEAP_POISONING" : "true" + } + }, + "art-debug-gc" : { + "flags" : ["--interpreter", + "--optimizing"], + "env" : { + "ART_TEST_DEBUG_GC" : "true", + "ART_USE_READ_BARRIER" : "false" + } + }, + "art-ss-gc" : { + "flags" : ["--interpreter", + "--optimizing", + "--jit"], + "env" : { + "ART_DEFAULT_GC_TYPE" : "SS", + "ART_USE_READ_BARRIER" : "false" + } + }, + "art-gss-gc" : { + "flags" : ["--interpreter", + "--optimizing", + "--jit"], + "env" : { + "ART_DEFAULT_GC_TYPE" : "GSS", + "ART_USE_READ_BARRIER" : "false" + } + }, + "art-ss-gc-tlab" : { + "flags" : ["--interpreter", + "--optimizing", + "--jit"], + "env" : { + "ART_DEFAULT_GC_TYPE" : "SS", + "ART_USE_TLAB" : "true", + "ART_USE_READ_BARRIER" : "false" + } + }, + "art-gss-gc-tlab" : { + "flags" : ["--interpreter", + "--optimizing", + "--jit"], + "env" : { + "ART_DEFAULT_GC_TYPE" : "GSS", + "ART_USE_TLAB" : "true", + "ART_USE_READ_BARRIER" : "false" + } + }, + "art-tracing" : { + "flags" : ["--trace"], + "env" : { + "ART_USE_READ_BARRIER" : "false" + } + }, + "art-interpreter-tracing" : { + "flags" : ["--interpreter", + "--trace"], + "env" : { + "ART_USE_READ_BARRIER" : "false", + } + }, + "art-forcecopy" : { + "flags" : ["--forcecopy"], + "env" : { + "ART_USE_READ_BARRIER" : "false", + } + }, + "art-no-prebuild" : { + "flags" : ["--no-prebuild"], + "env" : { + "ART_USE_READ_BARRIER" : "false", + } + }, + "art-no-image" : { + "flags" : ["--no-image"], + "env" : { + "ART_USE_READ_BARRIER" : "false", + } + }, + "art-interpreter-no-image" : { + "flags" : ["--interpreter", + "--no-image"], + "env" : { + "ART_USE_READ_BARRIER" : "false", + } + }, + "art-relocate-no-patchoat" : { + "flags" : ["--relocate-npatchoat"], + "env" : { + "ART_USE_READ_BARRIER" : "false", + } + }, + "art-no-dex2oat" : { + "flags" : ["--no-dex2oat"], + "env" : { + "ART_USE_READ_BARRIER" : "false", + } + }, + "art-heap-poisoning" : { + "flags" : ["--interpreter", + "--optimizing"], + "env" : { + "ART_USE_READ_BARRIER" : "false", + "ART_HEAP_POISONING" : "true" + } + } +} diff --git a/test/testrunner/testrunner.py b/test/testrunner/testrunner.py index 9c8d3b870..f77e9adb1 100755 --- a/test/testrunner/testrunner.py +++ b/test/testrunner/testrunner.py @@ -56,6 +56,7 @@ import threading import time import env +from target_config import target_config TARGET_TYPES = set() RUN_TYPES = set() @@ -704,6 +705,25 @@ def parse_test_name(test_name): return {match.group(12)} raise ValueError(test_name + " is not a valid test") + +def setup_env_for_build_target(build_target, parser, options): + """Setup environment for the build target + + The method setup environment for the master-art-host targets. + """ + os.environ.update(build_target['env']) + os.environ['SOONG_ALLOW_MISSING_DEPENDENCIES'] = 'true' + print_text('%s\n' % (str(os.environ))) + + target_options = vars(parser.parse_args(build_target['flags'])) + target_options['host'] = True + target_options['verbose'] = True + target_options['build'] = True + target_options['n_thread'] = options['n_thread'] + target_options['dry_run'] = options['dry_run'] + + return target_options + def parse_option(): global verbose global dry_run @@ -733,90 +753,95 @@ def parse_option(): 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') - options = parser.parse_args() + options = vars(parser.parse_args()) + if options['build_target']: + options = setup_env_for_build_target(target_config[options['build_target']], + parser, options) + test = '' - env.EXTRA_DISABLED_TESTS.update(set(options.skips)) - if options.test: - test = parse_test_name(options.test) - if options.pictest: + env.EXTRA_DISABLED_TESTS.update(set(options['skips'])) + if options['test']: + test = parse_test_name(options['test']) + if options['pictest']: PICTEST_TYPES.add('pictest') - if options.ndebug: + if options['ndebug']: RUN_TYPES.add('ndebug') - if options.interp_ac: + if options['interp_ac']: COMPILER_TYPES.add('interp-ac') - if options.picimage: + if options['picimage']: IMAGE_TYPES.add('picimage') - if options.n64: + if options['n64']: ADDRESS_SIZES.add('64') - if options.interpreter: + if options['interpreter']: COMPILER_TYPES.add('interpreter') - if options.jni: + if options['jni']: JNI_TYPES.add('jni') - if options.relocate_npatchoat: + if options['relocate_npatchoat']: RELOCATE_TYPES.add('relocate-npatchoat') - if options.no_prebuild: + if options['no_prebuild']: PREBUILD_TYPES.add('no-prebuild') - if options.npictest: + if options['npictest']: PICTEST_TYPES.add('npictest') - if options.no_dex2oat: + if options['no_dex2oat']: PREBUILD_TYPES.add('no-dex2oat') - if options.jit: + if options['jit']: COMPILER_TYPES.add('jit') - if options.relocate: + if options['relocate']: RELOCATE_TYPES.add('relocate') - if options.ndebuggable: + if options['ndebuggable']: DEBUGGABLE_TYPES.add('ndebuggable') - if options.no_image: + if options['no_image']: IMAGE_TYPES.add('no-image') - if options.optimizing: + if options['optimizing']: COMPILER_TYPES.add('optimizing') - if options.trace: + if options['trace']: TRACE_TYPES.add('trace') - if options.gcstress: + if options['gcstress']: GC_TYPES.add('gcstress') - if options.no_relocate: + if options['no_relocate']: RELOCATE_TYPES.add('no-relocate') - if options.target: + if options['target']: TARGET_TYPES.add('target') - if options.forcecopy: + if options['forcecopy']: JNI_TYPES.add('forcecopy') - if options.n32: + if options['n32']: ADDRESS_SIZES.add('32') - if options.host: + if options['host']: TARGET_TYPES.add('host') - if options.gcverify: + if options['gcverify']: GC_TYPES.add('gcverify') - if options.debuggable: + if options['debuggable']: DEBUGGABLE_TYPES.add('debuggable') - if options.prebuild: + if options['prebuild']: PREBUILD_TYPES.add('prebuild') - if options.debug: + if options['debug']: RUN_TYPES.add('debug') - if options.checkjni: + if options['checkjni']: JNI_TYPES.add('checkjni') - if options.ntrace: + if options['ntrace']: TRACE_TYPES.add('ntrace') - if options.cms: + if options['cms']: GC_TYPES.add('cms') - if options.multipicimage: + if options['multipicimage']: IMAGE_TYPES.add('multipicimage') - if options.verbose: + if options['verbose']: verbose = True - if options.n_thread: - n_thread = max(1, options.n_thread) - if options.dry_run: + if options['n_thread']: + n_thread = max(1, options['n_thread']) + if options['dry_run']: dry_run = True verbose = True - build = options.build - if options.gdb: + build = options['build'] + if options['gdb']: n_thread = 1 gdb = True - if options.gdb_arg: - gdb_arg = options.gdb_arg + if options['gdb_arg']: + gdb_arg = options['gdb_arg'] return test