Format python files using yapf
Change-Id: I8b7b97efb6bfdcceef9efc533cdaa0675ab7db40
diff --git a/tools/run_benchmark.py b/tools/run_benchmark.py
index 0d1e4fd..f98c8b7 100755
--- a/tools/run_benchmark.py
+++ b/tools/run_benchmark.py
@@ -19,117 +19,134 @@
]
GOLEM_BUILD_TARGETS = [utils.GRADLE_TASK_R8LIB] + GOLEM_BUILD_TARGETS_TESTS
+
def get_golem_resource_path(benchmark):
- return os.path.join('benchmarks', benchmark)
+ return os.path.join('benchmarks', benchmark)
+
def get_jdk_home(options, benchmark):
- if options.golem:
- return os.path.join(get_golem_resource_path(benchmark), 'linux')
- return None
+ if options.golem:
+ return os.path.join(get_golem_resource_path(benchmark), 'linux')
+ return None
+
def parse_options(argv):
- result = argparse.ArgumentParser(description = 'Run test-based benchmarks.')
- result.add_argument('--golem',
- help='Indicate this as a run on golem',
- default=False,
- action='store_true')
- result.add_argument('--benchmark',
- help='The test benchmark to run',
- required=True)
- result.add_argument('--target',
- help='The test target to run',
- required=True,
- # These should 1:1 with benchmarks/BenchmarkTarget.java
- choices=['d8', 'r8-full', 'r8-force', 'r8-compat'])
- result.add_argument('--nolib', '--no-lib', '--no-r8lib',
- help='Run the non-lib R8 build (default false)',
- default=False,
- action='store_true')
- result.add_argument('--no-build', '--no_build',
- help='Run without building first (default false)',
- default=False,
- action='store_true')
- result.add_argument('--enable-assertions', '--enable_assertions', '-ea',
- help='Enable assertions when running',
- default=False,
- action='store_true')
- result.add_argument('--print-times',
- help='Print timing information from r8',
- default=False,
- action='store_true')
- result.add_argument('--version', '-v',
- help='Use R8 version/hash for the run (default local build)',
- default=None)
- result.add_argument('--temp',
- help='A directory to use for temporaries and outputs.',
- default=None)
- return result.parse_known_args(argv)
+ result = argparse.ArgumentParser(description='Run test-based benchmarks.')
+ result.add_argument('--golem',
+ help='Indicate this as a run on golem',
+ default=False,
+ action='store_true')
+ result.add_argument('--benchmark',
+ help='The test benchmark to run',
+ required=True)
+ result.add_argument(
+ '--target',
+ help='The test target to run',
+ required=True,
+ # These should 1:1 with benchmarks/BenchmarkTarget.java
+ choices=['d8', 'r8-full', 'r8-force', 'r8-compat'])
+ result.add_argument('--nolib',
+ '--no-lib',
+ '--no-r8lib',
+ help='Run the non-lib R8 build (default false)',
+ default=False,
+ action='store_true')
+ result.add_argument('--no-build',
+ '--no_build',
+ help='Run without building first (default false)',
+ default=False,
+ action='store_true')
+ result.add_argument('--enable-assertions',
+ '--enable_assertions',
+ '-ea',
+ help='Enable assertions when running',
+ default=False,
+ action='store_true')
+ result.add_argument('--print-times',
+ help='Print timing information from r8',
+ default=False,
+ action='store_true')
+ result.add_argument(
+ '--version',
+ '-v',
+ help='Use R8 version/hash for the run (default local build)',
+ default=None)
+ result.add_argument('--temp',
+ help='A directory to use for temporaries and outputs.',
+ default=None)
+ return result.parse_known_args(argv)
+
def main(argv, temp):
- (options, args) = parse_options(argv)
+ (options, args) = parse_options(argv)
- if options.temp:
- temp = options.temp
+ if options.temp:
+ temp = options.temp
- if options.golem:
- options.no_build = True
+ if options.golem:
+ options.no_build = True
+ if options.nolib:
+ print("Error: golem should always run r8lib")
+ return 1
+
if options.nolib:
- print("Error: golem should always run r8lib")
- return 1
+ testBuildTargets = [
+ utils.GRADLE_TASK_TEST_JAR, utils.GRADLE_TASK_TEST_DEPS_JAR
+ ]
+ buildTargets = [utils.GRADLE_TASK_R8] + testBuildTargets
+ r8jar = utils.R8_JAR
+ testjars = [utils.R8_TESTS_JAR, utils.R8_TESTS_DEPS_JAR]
+ else:
+ testBuildTargets = GOLEM_BUILD_TARGETS_TESTS
+ buildTargets = GOLEM_BUILD_TARGETS
+ r8jar = utils.R8LIB_JAR
+ testjars = [
+ os.path.join(utils.R8LIB_TESTS_JAR),
+ os.path.join(utils.R8LIB_TESTS_DEPS_JAR)
+ ]
- if options.nolib:
- testBuildTargets = [utils.GRADLE_TASK_TEST_JAR, utils.GRADLE_TASK_TEST_DEPS_JAR]
- buildTargets = [utils.GRADLE_TASK_R8] + testBuildTargets
- r8jar = utils.R8_JAR
- testjars = [utils.R8_TESTS_JAR, utils.R8_TESTS_DEPS_JAR]
- else:
- testBuildTargets = GOLEM_BUILD_TARGETS_TESTS
- buildTargets = GOLEM_BUILD_TARGETS
- r8jar = utils.R8LIB_JAR
- testjars = [
- os.path.join(utils.R8LIB_TESTS_JAR),
- os.path.join(utils.R8LIB_TESTS_DEPS_JAR)
- ]
+ if options.version:
+ # r8 is downloaded so only test jar needs to be built.
+ buildTargets = testBuildTargets
+ r8jar = compiledump.download_distribution(options.version,
+ options.nolib, temp)
- if options.version:
- # r8 is downloaded so only test jar needs to be built.
- buildTargets = testBuildTargets
- r8jar = compiledump.download_distribution(options.version, options.nolib, temp)
+ if not options.no_build:
+ gradle.RunGradle(buildTargets + ['-Pno_internal'])
- if not options.no_build:
- gradle.RunGradle(buildTargets + ['-Pno_internal'])
+ if not options.golem:
+ # When running locally, change the working directory to be in 'temp'.
+ # This is hard to do properly within the JVM so we do it here.
+ with utils.ChangedWorkingDirectory(temp):
+ return run(options, r8jar, testjars)
+ else:
+ return run(options, r8jar, testjars)
- if not options.golem:
- # When running locally, change the working directory to be in 'temp'.
- # This is hard to do properly within the JVM so we do it here.
- with utils.ChangedWorkingDirectory(temp):
- return run(options, r8jar, testjars)
- else:
- return run(options, r8jar, testjars)
def run(options, r8jar, testjars):
- jdkhome = get_jdk_home(options, options.benchmark)
- cmd = [jdk.GetJavaExecutable(jdkhome)]
- if options.enable_assertions:
- cmd.append('-ea')
- if options.print_times:
- cmd.append('-Dcom.android.tools.r8.printtimes=1')
- if not options.golem:
+ jdkhome = get_jdk_home(options, options.benchmark)
+ cmd = [jdk.GetJavaExecutable(jdkhome)]
+ if options.enable_assertions:
+ cmd.append('-ea')
+ if options.print_times:
+ cmd.append('-Dcom.android.tools.r8.printtimes=1')
+ if not options.golem:
+ cmd.extend([
+ '-DUSE_NEW_GRADLE_SETUP=true',
+ f'-DTEST_DATA_LOCATION={utils.REPO_ROOT}/d8_r8/test_modules/tests_java_8/build/classes/java/test'
+ ])
+ cmd.extend(['-cp', ':'.join([r8jar] + testjars)])
cmd.extend([
- '-DUSE_NEW_GRADLE_SETUP=true',
- f'-DTEST_DATA_LOCATION={utils.REPO_ROOT}/d8_r8/test_modules/tests_java_8/build/classes/java/test'
- ])
- cmd.extend(['-cp', ':'.join([r8jar] + testjars)])
- cmd.extend([
- 'com.android.tools.r8.benchmarks.BenchmarkMainEntryRunner',
- options.benchmark,
- options.target,
- # When running locally the working directory is moved and we pass the
- # repository root as an argument. The runner can then setup dependencies.
- 'golem' if options.golem else utils.REPO_ROOT,
+ 'com.android.tools.r8.benchmarks.BenchmarkMainEntryRunner',
+ options.benchmark,
+ options.target,
+ # When running locally the working directory is moved and we pass the
+ # repository root as an argument. The runner can then setup dependencies.
+ 'golem' if options.golem else utils.REPO_ROOT,
])
- return subprocess.check_call(cmd)
+ return subprocess.check_call(cmd)
+
if __name__ == '__main__':
- with utils.TempDir() as temp:
- sys.exit(main(sys.argv[1:], temp))
+ with utils.TempDir() as temp:
+ sys.exit(main(sys.argv[1:], temp))