diff options
author | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-15 21:46:11 +0200 |
---|---|---|
committer | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-15 21:46:11 +0200 |
commit | 679147eead574d186ebf3069647b4c23e8ccace6 (patch) | |
tree | fc247a0ac8ff119f7c8550879ebb6d3dd8d1ff69 /chromium/tools/run-bisect-manual-test.py | |
download | qtwebengine-chromium-679147eead574d186ebf3069647b4c23e8ccace6.tar.gz |
Initial import.
Diffstat (limited to 'chromium/tools/run-bisect-manual-test.py')
-rwxr-xr-x | chromium/tools/run-bisect-manual-test.py | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/chromium/tools/run-bisect-manual-test.py b/chromium/tools/run-bisect-manual-test.py new file mode 100755 index 00000000000..7b038db2bb2 --- /dev/null +++ b/chromium/tools/run-bisect-manual-test.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python +# Copyright 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Run Manual Test Bisect Tool""" + +import os +import subprocess +import sys + +CROS_BOARD_ENV = 'BISECT_CROS_BOARD' +CROS_IP_ENV = 'BISECT_CROS_IP' +_DIR_TOOLS_ROOT = os.path.abspath(os.path.dirname(__file__)) + +sys.path.append(os.path.join(_DIR_TOOLS_ROOT, 'telemetry')) +from telemetry.core import browser_options + + +def _RunBisectionScript(options): + """Attempts to execute src/tools/bisect-perf-regression.py with the parameters + passed in. + + Args: + options: The configuration options to pass to the bisect script. + + Returns: + 0 on success, otherwise 1. + """ + test_command = 'python %s --browser=%s' %\ + (os.path.join(_DIR_TOOLS_ROOT, 'bisect-manual-test.py'), + options.browser_type) + + cmd = ['python', os.path.join(_DIR_TOOLS_ROOT, 'bisect-perf-regression.py'), + '-c', test_command, + '-g', options.good_revision, + '-b', options.bad_revision, + '-m', 'manual_test/manual_test', + '-r', '1', + '--working_directory', options.working_directory, + '--build_preference', 'ninja', + '--use_goma'] + + if 'cros' in options.browser_type: + cmd.extend(['--target_platform', 'cros']) + + if os.environ[CROS_BOARD_ENV] and os.environ[CROS_IP_ENV]: + cmd.extend(['--cros_board', os.environ[CROS_BOARD_ENV]]) + cmd.extend(['--cros_remote_ip', os.environ[CROS_IP_ENV]]) + else: + print 'Error: Cros build selected, but BISECT_CROS_IP or'\ + 'BISECT_CROS_BOARD undefined.' + print + return 1 + elif 'android' in options.browser_type: + cmd.extend(['--target_platform', 'android']) + + cmd = [str(c) for c in cmd] + + return_code = subprocess.call(cmd) + + if return_code: + print 'Error: bisect-perf-regression.py returned with error %d' %\ + return_code + print + + return return_code + + +def main(): + usage = ('%prog [options]\n' + 'Used to run the bisection script with a manual test.') + + options = browser_options.BrowserOptions() + parser = options.CreateParser(usage) + + parser.add_option('-b', '--bad_revision', + type='str', + help='A bad revision to start bisection. ' + + 'Must be later than good revision. May be either a git' + + ' or svn revision.') + parser.add_option('-g', '--good_revision', + type='str', + help='A revision to start bisection where performance' + + ' test is known to pass. Must be earlier than the ' + + 'bad revision. May be either a git or svn revision.') + parser.add_option('-w', '--working_directory', + type='str', + help='A working directory to supply to the bisection ' + 'script, which will use it as the location to checkout ' + 'a copy of the chromium depot.') + options, args = parser.parse_args() + + error_msg = '' + if not options.browser_type: + error_msg += 'Error: missing required parameter: --browser\n' + if not options.working_directory: + error_msg += 'Error: missing required parameter: --working_directory\n' + if not options.good_revision: + error_msg += 'Error: missing required parameter: --good_revision\n' + if not options.bad_revision: + error_msg += 'Error: missing required parameter: --bad_revision\n' + + if error_msg: + print error_msg + parser.print_help() + return 1 + + return _RunBisectionScript(options) + + +if __name__ == '__main__': + sys.exit(main()) |