diff options
Diffstat (limited to 'test')
| -rwxr-xr-x | test/testrunner/run_build_test_target.py | 56 | ||||
| -rw-r--r-- | test/testrunner/target_config.py | 191 |
2 files changed, 154 insertions, 93 deletions
diff --git a/test/testrunner/run_build_test_target.py b/test/testrunner/run_build_test_target.py index 282ac484b6..0ab50afa40 100755 --- a/test/testrunner/run_build_test_target.py +++ b/test/testrunner/run_build_test_target.py @@ -16,14 +16,14 @@ """Build and run go/ab/git_master-art-host target +This script is executed by the android build server and must not be moved, +or changed in an otherwise backwards-incompatible manner. + Provided with a target name, the script setup the environment for building the test target by taking config information from from target_config.py. -If the target field is defined in the configuration for the target, it -invokes `make` to build the target, otherwise, it assumes -that the its is a run-test target, and invokes testrunner.py -script for building and running the run-tests. +See target_config.py for the configuration syntax. """ import argparse @@ -35,10 +35,26 @@ from target_config import target_config import env parser = argparse.ArgumentParser() -parser.add_argument('build_target') parser.add_argument('-j', default='1', dest='n_threads') +# either -l/--list OR build-target is required (but not both). +group = parser.add_mutually_exclusive_group(required=True) +group.add_argument('build_target', nargs='?') +group.add_argument('-l', '--list', action='store_true', help='List all possible run-build targets.') options = parser.parse_args() +########## + +if options.list: + print "List of all known build_target: " + for k in sorted(target_config.iterkeys()): + print " * " + k + # TODO: would be nice if this was the same order as the target config file. + sys.exit(1) + +if not target_config.get(options.build_target): + sys.stderr.write("error: invalid build_target, see -l/--list.\n") + sys.exit(1) + target = target_config[options.build_target] n_threads = options.n_threads custom_env = target.get('env', {}) @@ -46,28 +62,46 @@ custom_env['SOONG_ALLOW_MISSING_DEPENDENCIES'] = 'true' print custom_env os.environ.update(custom_env) -if target.get('target'): +if target.get('make'): build_command = 'make' build_command += ' -j' + str(n_threads) build_command += ' -C ' + env.ANDROID_BUILD_TOP - build_command += ' ' + target.get('target') + build_command += ' ' + target.get('make') # Add 'dist' to avoid Jack issues b/36169180. build_command += ' dist' - sys.stdout.write(str(build_command)) + sys.stdout.write(str(build_command) + '\n') sys.stdout.flush() if subprocess.call(build_command.split()): sys.exit(1) -if target.get('run-tests'): +if target.get('golem'): + machine_type = target.get('golem') + # use art-opt-cc by default since it mimics the default preopt config. + default_golem_config = 'art-opt-cc' + + os.chdir(env.ANDROID_BUILD_TOP) + cmd = ['art/tools/golem/build-target.sh'] + cmd += ['-j' + str(n_threads)] + cmd += ['--showcommands'] + cmd += ['--machine-type=%s' %(machine_type)] + cmd += ['--golem=%s' %(default_golem_config)] + cmd += ['--tarball'] + sys.stdout.write(str(cmd) + '\n') + sys.stdout.flush() + + if subprocess.call(cmd): + sys.exit(1) + +if target.get('run-test'): run_test_command = [os.path.join(env.ANDROID_BUILD_TOP, 'art/test/testrunner/testrunner.py')] - run_test_command += target.get('flags', []) + run_test_command += target.get('run-test', []) run_test_command += ['-j', str(n_threads)] run_test_command += ['-b'] run_test_command += ['--host'] run_test_command += ['--verbose'] - sys.stdout.write(str(run_test_command)) + sys.stdout.write(str(run_test_command) + '\n') sys.stdout.flush() if subprocess.call(run_test_command): sys.exit(1) diff --git a/test/testrunner/target_config.py b/test/testrunner/target_config.py index 5a6ecffd44..82f7832e72 100644 --- a/test/testrunner/target_config.py +++ b/test/testrunner/target_config.py @@ -1,72 +1,86 @@ target_config = { + +# Configuration syntax: +# +# Required keys: (Use one or more of these) +# * golem - specify a golem machine-type to build, e.g. android-armv8 +# (uses art/tools/golem/build-target.sh) +# * make - specify a make target to build, e.g. build-art-host +# * run-test - runs the tests in art/test/ directory with testrunner.py, +# specify a list of arguments to pass to testrunner.py +# +# Optional keys: (Use any of these) +# * env - Add additional environment variable to the current environment. +# +# *** IMPORTANT ***: +# This configuration is used by the android build server. Targets must not be renamed +# or removed. +# + +########################################## + + # ART run-test configurations + # (calls testrunner which builds and then runs the test targets) + 'art-test' : { - 'target' : 'test-art-host-gtest', - 'run-tests' : True, - 'flags' : [], + 'make' : 'test-art-host-gtest', + 'run-test' : [], 'env' : { 'ART_USE_READ_BARRIER' : 'false' } }, 'art-interpreter' : { - 'run-tests' : True, - 'flags' : ['--interpreter'], + 'run-test' : ['--interpreter'], 'env' : { 'ART_USE_READ_BARRIER' : 'false' } }, 'art-interpreter-access-checks' : { - 'run-tests' : True, - 'flags' : ['--interp-ac'], + 'run-test' : ['--interp-ac'], 'env' : { 'ART_USE_READ_BARRIER' : 'false' } }, 'art-jit' : { - 'run-tests' : True, - 'flags' : ['--jit'], + 'run-test' : ['--jit'], 'env' : { 'ART_USE_READ_BARRIER' : 'false' } }, 'art-gcstress-gcverify': { - 'run-tests' : True, - 'flags' : ['--gcstress', - '--gcverify'], + 'run-test': ['--gcstress', + '--gcverify'], 'env' : { 'ART_USE_READ_BARRIER' : 'false', 'ART_DEFAULT_GC_TYPE' : 'SS' } }, 'art-interpreter-gcstress' : { - 'run-tests' : True, - 'flags': ['--interpreter', - '--gcstress'], + 'run-test' : ['--interpreter', + '--gcstress'], 'env' : { 'ART_USE_READ_BARRIER' : 'false', 'ART_DEFAULT_GC_TYPE' : 'SS' } }, 'art-optimizing-gcstress' : { - 'run-tests' : True, - 'flags': ['--gcstress', - '--optimizing'], + 'run-test' : ['--gcstress', + '--optimizing'], 'env' : { 'ART_USE_READ_BARRIER' : 'false', 'ART_DEFAULT_GC_TYPE' : 'SS' } }, 'art-jit-gcstress' : { - 'run-tests' : True, - 'flags': ['--jit', - '--gcstress'], + 'run-test' : ['--jit', + '--gcstress'], 'env' : { 'ART_USE_READ_BARRIER' : 'false', 'ART_DEFAULT_GC_TYPE' : 'SS' } }, 'art-read-barrier' : { - 'run-tests' : True, - 'flags': ['--interpreter', + 'run-test': ['--interpreter', '--optimizing'], 'env' : { 'ART_USE_READ_BARRIER' : 'true', @@ -74,19 +88,17 @@ target_config = { } }, 'art-read-barrier-gcstress' : { - 'run-tests' : True, - 'flags' : ['--interpreter', - '--optimizing', - '--gcstress'], + 'run-test' : ['--interpreter', + '--optimizing', + '--gcstress'], 'env' : { 'ART_USE_READ_BARRIER' : 'true', 'ART_HEAP_POISONING' : 'true' } }, 'art-read-barrier-table-lookup' : { - 'run-tests' : True, - 'flags' : ['--interpreter', - '--optimizing'], + 'run-test' : ['--interpreter', + '--optimizing'], 'env' : { 'ART_USE_READ_BARRIER' : 'true', 'ART_READ_BARRIER_TYPE' : 'TABLELOOKUP', @@ -94,39 +106,35 @@ target_config = { } }, 'art-debug-gc' : { - 'run-tests' : True, - 'flags' : ['--interpreter', - '--optimizing'], + 'run-test' : ['--interpreter', + '--optimizing'], 'env' : { 'ART_TEST_DEBUG_GC' : 'true', 'ART_USE_READ_BARRIER' : 'false' } }, 'art-ss-gc' : { - 'run-tests' : True, - 'flags' : ['--interpreter', - '--optimizing', - '--jit'], + 'run-test' : ['--interpreter', + '--optimizing', + '--jit'], 'env' : { 'ART_DEFAULT_GC_TYPE' : 'SS', 'ART_USE_READ_BARRIER' : 'false' } }, 'art-gss-gc' : { - 'run-tests' : True, - 'flags' : ['--interpreter', - '--optimizing', - '--jit'], + 'run-test' : ['--interpreter', + '--optimizing', + '--jit'], 'env' : { 'ART_DEFAULT_GC_TYPE' : 'GSS', 'ART_USE_READ_BARRIER' : 'false' } }, 'art-ss-gc-tlab' : { - 'run-tests' : True, - 'flags' : ['--interpreter', - '--optimizing', - '--jit'], + 'run-test' : ['--interpreter', + '--optimizing', + '--jit'], 'env' : { 'ART_DEFAULT_GC_TYPE' : 'SS', 'ART_USE_TLAB' : 'true', @@ -134,10 +142,9 @@ target_config = { } }, 'art-gss-gc-tlab' : { - 'run-tests' : True, - 'flags' : ['--interpreter', - '--optimizing', - '--jit'], + 'run-test' : ['--interpreter', + '--optimizing', + '--jit'], 'env' : { 'ART_DEFAULT_GC_TYPE' : 'GSS', 'ART_USE_TLAB' : 'true', @@ -145,87 +152,82 @@ target_config = { } }, 'art-tracing' : { - 'run-tests' : True, - 'flags' : ['--trace'], + 'run-test' : ['--trace'], 'env' : { 'ART_USE_READ_BARRIER' : 'false' } }, 'art-interpreter-tracing' : { - 'run-tests' : True, - 'flags' : ['--interpreter', - '--trace'], + 'run-test' : ['--interpreter', + '--trace'], 'env' : { 'ART_USE_READ_BARRIER' : 'false', } }, 'art-forcecopy' : { - 'run-tests' : True, - 'flags' : ['--forcecopy'], + 'run-test' : ['--forcecopy'], 'env' : { 'ART_USE_READ_BARRIER' : 'false', } }, 'art-no-prebuild' : { - 'run-tests' : True, - 'flags' : ['--no-prebuild'], + 'run-test' : ['--no-prebuild'], 'env' : { 'ART_USE_READ_BARRIER' : 'false', } }, 'art-no-image' : { - 'run-tests' : True, - 'flags' : ['--no-image'], + 'run-test' : ['--no-image'], 'env' : { 'ART_USE_READ_BARRIER' : 'false', } }, 'art-interpreter-no-image' : { - 'run-tests' : True, - 'flags' : ['--interpreter', - '--no-image'], + 'run-test' : ['--interpreter', + '--no-image'], 'env' : { 'ART_USE_READ_BARRIER' : 'false', } }, 'art-relocate-no-patchoat' : { - 'run-tests' : True, - 'flags' : ['--relocate-npatchoat'], + 'run-test' : ['--relocate-npatchoat'], 'env' : { 'ART_USE_READ_BARRIER' : 'false', } }, 'art-no-dex2oat' : { - 'run-tests' : True, - 'flags' : ['--no-dex2oat'], + 'run-test' : ['--no-dex2oat'], 'env' : { 'ART_USE_READ_BARRIER' : 'false', } }, 'art-heap-poisoning' : { - 'run-tests' : True, - 'flags' : ['--interpreter', - '--optimizing'], + 'run-test' : ['--interpreter', + '--optimizing'], 'env' : { 'ART_USE_READ_BARRIER' : 'false', 'ART_HEAP_POISONING' : 'true' } }, + + # ART gtest configurations + # (calls make 'target' which builds and then runs the gtests). + 'art-gtest' : { - 'target' : 'test-art-host-gtest', + 'make' : 'test-art-host-gtest', 'env' : { 'ART_USE_READ_BARRIER' : 'true' } }, 'art-gtest-read-barrier': { - 'target' : 'test-art-host-gtest', + 'make' : 'test-art-host-gtest', 'env' : { 'ART_USE_READ_BARRIER' : 'true', 'ART_HEAP_POISONING' : 'true' } }, 'art-gtest-read-barrier-table-lookup': { - 'target' : 'test-art-host-gtest', + 'make' : 'test-art-host-gtest', 'env': { 'ART_USE_READ_BARRIER' : 'true', 'ART_READ_BARRIER_TYPE' : 'TABLELOOKUP', @@ -233,21 +235,21 @@ target_config = { } }, 'art-gtest-ss-gc': { - 'target' : 'test-art-host-gtest', + 'make' : 'test-art-host-gtest', 'env': { 'ART_DEFAULT_GC_TYPE' : 'SS', 'ART_USE_READ_BARRIER' : 'false' } }, 'art-gtest-gss-gc': { - 'target' : 'test-art-host-gtest', + 'make' : 'test-art-host-gtest', 'env' : { 'ART_DEFAULT_GC_TYPE' : 'GSS', 'ART_USE_READ_BARRIER' : 'false' } }, 'art-gtest-ss-gc-tlab': { - 'target' : 'test-art-host-gtest', + 'make' : 'test-art-host-gtest', 'env': { 'ART_DEFAULT_GC_TYPE' : 'SS', 'ART_USE_TLAB' : 'true', @@ -255,7 +257,7 @@ target_config = { } }, 'art-gtest-gss-gc-tlab': { - 'target' : 'test-art-host-gtest', + 'make' : 'test-art-host-gtest', 'env': { 'ART_DEFAULT_GC_TYPE' : 'GSS', 'ART_USE_TLAB' : 'true', @@ -263,29 +265,54 @@ target_config = { } }, 'art-gtest-debug-gc' : { - 'target' : 'test-art-host-gtest', + 'make' : 'test-art-host-gtest', 'env' : { 'ART_TEST_DEBUG_GC' : 'true', 'ART_USE_READ_BARRIER' : 'false' } }, 'art-gtest-valgrind32': { - 'target' : 'valgrind-test-art-host32', + 'make' : 'valgrind-test-art-host32', 'env': { 'ART_USE_READ_BARRIER' : 'false' } }, 'art-gtest-valgrind64': { - 'target' : 'valgrind-test-art-host64', + 'make' : 'valgrind-test-art-host64', 'env': { 'ART_USE_READ_BARRIER' : 'false' } }, 'art-gtest-heap-poisoning': { - 'target' : 'valgrind-test-art-host64', + 'make' : 'valgrind-test-art-host64', 'env' : { 'ART_HEAP_POISONING' : 'true', 'ART_USE_READ_BARRIER' : 'false' } - } + }, + + # ART Golem build targets used by go/lem (continuous ART benchmarking), + # (art-opt-cc is used by default since it mimics the default preopt config), + # + # calls golem/build-target.sh which builds a golem tarball of the target name, + # e.g. 'golem: android-armv7' produces an 'android-armv7.tar.gz' upon success. + + 'art-golem-android-armv7': { + 'golem' : 'android-armv7' + }, + 'art-golem-android-armv8': { + 'golem' : 'android-armv8' + }, + 'art-golem-linux-armv7': { + 'golem' : 'linux-armv7' + }, + 'art-golem-linux-armv8': { + 'golem' : 'linux-armv8' + }, + 'art-golem-linux-ia32': { + 'golem' : 'linux-ia32' + }, + 'art-golem-linux-x64': { + 'golem' : 'linux-x64' + }, } |