OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright 2013 The Chromium Authors. All rights reserved. | 2 # Copyright 2013 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """Run Manual Test Bisect Tool | 6 """Run Manual Test Bisect Tool |
7 | 7 |
8 An example usage: | 8 An example usage: |
9 tools/run-bisect-manual-test.py -g 201281 -b 201290 | 9 tools/run-bisect-manual-test.py -g 201281 -b 201290 |
10 | 10 |
11 On Linux platform, follow the instructions in this document | 11 On Linux platform, follow the instructions in this document |
12 https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment | 12 https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment |
13 to setup the sandbox manually before running the script. Otherwise the script | 13 to setup the sandbox manually before running the script. Otherwise the script |
14 fails to launch Chrome and exits with an error. | 14 fails to launch Chrome and exits with an error. |
15 | 15 |
16 This script serves a similar function to bisect-builds.py, except it uses | 16 This script serves a similar function to bisect-builds.py, except it uses |
17 the bisect-perf-regression.py. This means that that it can actually check out | 17 the bisect_perf_regression.py. This means that that it can obtain builds of |
18 and build revisions of Chromium that are not available in cloud storage. | 18 Chromium for revisions where builds aren't available in cloud storage. |
19 """ | 19 """ |
20 | 20 |
21 import os | 21 import os |
22 import subprocess | 22 import subprocess |
23 import sys | 23 import sys |
24 | 24 |
25 CROS_BOARD_ENV = 'BISECT_CROS_BOARD' | 25 CROS_BOARD_ENV = 'BISECT_CROS_BOARD' |
26 CROS_IP_ENV = 'BISECT_CROS_IP' | 26 CROS_IP_ENV = 'BISECT_CROS_IP' |
27 _DIR_TOOLS_ROOT = os.path.abspath(os.path.dirname(__file__)) | 27 _TOOLS_DIR = os.path.abspath(os.path.dirname(__file__)) |
| 28 _BISECT_SCRIPT_PATH = os.path.join( |
| 29 _TOOLS_DIR, 'auto_bisect', 'bisect_perf_regression.py') |
28 | 30 |
29 sys.path.append(os.path.join(_DIR_TOOLS_ROOT, 'telemetry')) | 31 sys.path.append(os.path.join(_TOOLS_DIR, 'telemetry')) |
30 from telemetry.core import browser_options | 32 from telemetry.core import browser_options |
31 | 33 |
32 | 34 |
33 def _RunBisectionScript(options): | 35 def _RunBisectionScript(options): |
34 """Attempts to execute src/tools/bisect-perf-regression.py. | 36 """Attempts to execute the bisect script (bisect_perf_regression.py). |
35 | 37 |
36 Args: | 38 Args: |
37 options: The configuration options to pass to the bisect script. | 39 options: The configuration options to pass to the bisect script. |
38 | 40 |
39 Returns: | 41 Returns: |
40 The exit code of bisect-perf-regression.py: 0 on success, otherwise 1. | 42 An exit code; 0 for success, 1 for failure. |
41 """ | 43 """ |
42 test_command = ('python %s --browser=%s --chrome-root=.' % | 44 test_command = ('python %s --browser=%s --chrome-root=.' % |
43 (os.path.join(_DIR_TOOLS_ROOT, 'bisect-manual-test.py'), | 45 (os.path.join(_TOOLS_DIR, 'bisect-manual-test.py'), |
44 options.browser_type)) | 46 options.browser_type)) |
45 | 47 |
46 cmd = ['python', os.path.join(_DIR_TOOLS_ROOT, 'bisect-perf-regression.py'), | 48 cmd = ['python', _BISECT_SCRIPT_PATH, |
47 '-c', test_command, | 49 '-c', test_command, |
48 '-g', options.good_revision, | 50 '-g', options.good_revision, |
49 '-b', options.bad_revision, | 51 '-b', options.bad_revision, |
50 '-m', 'manual_test/manual_test', | 52 '-m', 'manual_test/manual_test', |
51 '-r', '1', | 53 '-r', '1', |
52 '--working_directory', options.working_directory, | 54 '--working_directory', options.working_directory, |
53 '--build_preference', 'ninja', | 55 '--build_preference', 'ninja', |
54 '--use_goma', | 56 '--use_goma', |
55 '--no_custom_deps'] | 57 '--no_custom_deps'] |
56 | 58 |
(...skipping 18 matching lines...) Expand all Loading... |
75 cmd.extend(['--target_build_type', options.browser_type.title()]) | 77 cmd.extend(['--target_build_type', options.browser_type.title()]) |
76 | 78 |
77 if options.target_build_type: | 79 if options.target_build_type: |
78 cmd.extend(['--target_build_type', options.target_build_type]) | 80 cmd.extend(['--target_build_type', options.target_build_type]) |
79 | 81 |
80 cmd = [str(c) for c in cmd] | 82 cmd = [str(c) for c in cmd] |
81 | 83 |
82 return_code = subprocess.call(cmd) | 84 return_code = subprocess.call(cmd) |
83 | 85 |
84 if return_code: | 86 if return_code: |
85 print ('Error: bisect-perf-regression.py returned with error %d' % | 87 print 'Error: bisect_perf_regression.py had exit code %d.' % return_code |
86 return_code) | |
87 print | 88 print |
88 | 89 |
89 return return_code | 90 return return_code |
90 | 91 |
91 | 92 |
92 def main(): | 93 def main(): |
93 """Does a bisect based on the command-line arguments passed in. | 94 """Does a bisect based on the command-line arguments passed in. |
94 | 95 |
95 The user will be prompted to classify each revision as good or bad. | 96 The user will be prompted to classify each revision as good or bad. |
96 """ | 97 """ |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 print 'SUID sandbox has not been setup.'\ | 143 print 'SUID sandbox has not been setup.'\ |
143 ' See https://code.google.com/p/chromium/wiki/'\ | 144 ' See https://code.google.com/p/chromium/wiki/'\ |
144 'LinuxSUIDSandboxDevelopment for more information.' | 145 'LinuxSUIDSandboxDevelopment for more information.' |
145 return 1 | 146 return 1 |
146 | 147 |
147 return _RunBisectionScript(options) | 148 return _RunBisectionScript(options) |
148 | 149 |
149 | 150 |
150 if __name__ == '__main__': | 151 if __name__ == '__main__': |
151 sys.exit(main()) | 152 sys.exit(main()) |
OLD | NEW |