Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(313)

Side by Side Diff: tools/run-bisect-manual-test.py

Issue 419653002: Style cleanup in auxiliary bisect-related scripts. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tools/prepare-bisect-perf-regression.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
17 the bisect-perf-regression.py. This means that that it can actually check out
18 and build revisions of Chromium that are not available in cloud storage.
16 """ 19 """
17 20
18 import os 21 import os
19 import subprocess 22 import subprocess
20 import sys 23 import sys
21 24
22 CROS_BOARD_ENV = 'BISECT_CROS_BOARD' 25 CROS_BOARD_ENV = 'BISECT_CROS_BOARD'
23 CROS_IP_ENV = 'BISECT_CROS_IP' 26 CROS_IP_ENV = 'BISECT_CROS_IP'
24 _DIR_TOOLS_ROOT = os.path.abspath(os.path.dirname(__file__)) 27 _DIR_TOOLS_ROOT = os.path.abspath(os.path.dirname(__file__))
25 28
26 sys.path.append(os.path.join(_DIR_TOOLS_ROOT, 'telemetry')) 29 sys.path.append(os.path.join(_DIR_TOOLS_ROOT, 'telemetry'))
27 from telemetry.core import browser_options 30 from telemetry.core import browser_options
28 31
29 32
30 def _RunBisectionScript(options): 33 def _RunBisectionScript(options):
31 """Attempts to execute src/tools/bisect-perf-regression.py with the parameters 34 """Attempts to execute src/tools/bisect-perf-regression.py.
32 passed in.
33 35
34 Args: 36 Args:
35 options: The configuration options to pass to the bisect script. 37 options: The configuration options to pass to the bisect script.
36 38
37 Returns: 39 Returns:
38 0 on success, otherwise 1. 40 The exit code of bisect-perf-regression.py: 0 on success, otherwise 1.
39 """ 41 """
40 test_command = 'python %s --browser=%s --chrome-root=.' %\ 42 test_command = ('python %s --browser=%s --chrome-root=.' %
41 (os.path.join(_DIR_TOOLS_ROOT, 'bisect-manual-test.py'), 43 (os.path.join(_DIR_TOOLS_ROOT, 'bisect-manual-test.py'),
42 options.browser_type) 44 options.browser_type))
43 45
44 cmd = ['python', os.path.join(_DIR_TOOLS_ROOT, 'bisect-perf-regression.py'), 46 cmd = ['python', os.path.join(_DIR_TOOLS_ROOT, 'bisect-perf-regression.py'),
45 '-c', test_command, 47 '-c', test_command,
46 '-g', options.good_revision, 48 '-g', options.good_revision,
47 '-b', options.bad_revision, 49 '-b', options.bad_revision,
48 '-m', 'manual_test/manual_test', 50 '-m', 'manual_test/manual_test',
49 '-r', '1', 51 '-r', '1',
50 '--working_directory', options.working_directory, 52 '--working_directory', options.working_directory,
51 '--build_preference', 'ninja', 53 '--build_preference', 'ninja',
52 '--use_goma', 54 '--use_goma',
53 '--no_custom_deps'] 55 '--no_custom_deps']
54 56
55 if options.extra_src: 57 if options.extra_src:
56 cmd.extend(['--extra_src', options.extra_src]) 58 cmd.extend(['--extra_src', options.extra_src])
57 59
58 if 'cros' in options.browser_type: 60 if 'cros' in options.browser_type:
59 cmd.extend(['--target_platform', 'cros']) 61 cmd.extend(['--target_platform', 'cros'])
60 62
61 if os.environ[CROS_BOARD_ENV] and os.environ[CROS_IP_ENV]: 63 if os.environ[CROS_BOARD_ENV] and os.environ[CROS_IP_ENV]:
62 cmd.extend(['--cros_board', os.environ[CROS_BOARD_ENV]]) 64 cmd.extend(['--cros_board', os.environ[CROS_BOARD_ENV]])
63 cmd.extend(['--cros_remote_ip', os.environ[CROS_IP_ENV]]) 65 cmd.extend(['--cros_remote_ip', os.environ[CROS_IP_ENV]])
64 else: 66 else:
65 print 'Error: Cros build selected, but BISECT_CROS_IP or'\ 67 print ('Error: Cros build selected, but BISECT_CROS_IP or'
66 'BISECT_CROS_BOARD undefined.' 68 'BISECT_CROS_BOARD undefined.\n')
67 print
68 return 1 69 return 1
69 elif 'android-chrome' in options.browser_type: 70 elif 'android-chrome' in options.browser_type:
70 cmd.extend(['--target_platform', 'android-chrome']) 71 cmd.extend(['--target_platform', 'android-chrome'])
71 elif 'android' in options.browser_type: 72 elif 'android' in options.browser_type:
72 cmd.extend(['--target_platform', 'android']) 73 cmd.extend(['--target_platform', 'android'])
73 elif not options.target_build_type: 74 elif not options.target_build_type:
74 cmd.extend(['--target_build_type', options.browser_type.title()]) 75 cmd.extend(['--target_build_type', options.browser_type.title()])
75 76
76 if options.target_build_type: 77 if options.target_build_type:
77 cmd.extend(['--target_build_type', options.target_build_type]) 78 cmd.extend(['--target_build_type', options.target_build_type])
78 79
79
80 cmd = [str(c) for c in cmd] 80 cmd = [str(c) for c in cmd]
81 81
82 return_code = subprocess.call(cmd) 82 return_code = subprocess.call(cmd)
83 83
84 if return_code: 84 if return_code:
85 print 'Error: bisect-perf-regression.py returned with error %d' %\ 85 print ('Error: bisect-perf-regression.py returned with error %d' %
86 return_code 86 return_code)
87 print 87 print
88 88
89 return return_code 89 return return_code
90 90
91 91
92 def main(): 92 def main():
93 """Does a bisect based on the command-line arguments passed in.
94
95 The user will be prompted to classify each revision as good or bad.
96 """
93 usage = ('%prog [options]\n' 97 usage = ('%prog [options]\n'
94 'Used to run the bisection script with a manual test.') 98 'Used to run the bisection script with a manual test.')
95 99
96 options = browser_options.BrowserFinderOptions('release') 100 options = browser_options.BrowserFinderOptions('release')
97 parser = options.CreateParser(usage) 101 parser = options.CreateParser(usage)
98 102
99 parser.add_option('-b', '--bad_revision', 103 parser.add_option('-b', '--bad_revision',
100 type='str', 104 type='str',
101 help='A bad revision to start bisection. ' + 105 help='A bad revision to start bisection. ' +
102 'Must be later than good revision. May be either a git' + 106 'Must be later than good revision. May be either a git' +
(...skipping 11 matching lines...) Expand all
114 'a copy of the chromium depot.') 118 'a copy of the chromium depot.')
115 parser.add_option('--extra_src', 119 parser.add_option('--extra_src',
116 type='str', 120 type='str',
117 help='Path to extra source file. If this is supplied, ' 121 help='Path to extra source file. If this is supplied, '
118 'bisect script will use this to override default behavior.') 122 'bisect script will use this to override default behavior.')
119 parser.add_option('--target_build_type', 123 parser.add_option('--target_build_type',
120 type='choice', 124 type='choice',
121 choices=['Release', 'Debug'], 125 choices=['Release', 'Debug'],
122 help='The target build type. Choices are "Release" ' 126 help='The target build type. Choices are "Release" '
123 'or "Debug".') 127 'or "Debug".')
124 options, args = parser.parse_args() 128 options, _ = parser.parse_args()
125 error_msg = '' 129 error_msg = ''
126 if not options.good_revision: 130 if not options.good_revision:
127 error_msg += 'Error: missing required parameter: --good_revision\n' 131 error_msg += 'Error: missing required parameter: --good_revision\n'
128 if not options.bad_revision: 132 if not options.bad_revision:
129 error_msg += 'Error: missing required parameter: --bad_revision\n' 133 error_msg += 'Error: missing required parameter: --bad_revision\n'
130 134
131 if error_msg: 135 if error_msg:
132 print error_msg 136 print error_msg
133 parser.print_help() 137 parser.print_help()
134 return 1 138 return 1
135 139
136 if 'android' not in options.browser_type and sys.platform.startswith('linux'): 140 if 'android' not in options.browser_type and sys.platform.startswith('linux'):
137 if not os.environ.get('CHROME_DEVEL_SANDBOX'): 141 if not os.environ.get('CHROME_DEVEL_SANDBOX'):
138 print 'SUID sandbox has not been setup.'\ 142 print 'SUID sandbox has not been setup.'\
139 ' See https://code.google.com/p/chromium/wiki/'\ 143 ' See https://code.google.com/p/chromium/wiki/'\
140 'LinuxSUIDSandboxDevelopment for more information.' 144 'LinuxSUIDSandboxDevelopment for more information.'
141 return 1 145 return 1
142 146
143 return _RunBisectionScript(options) 147 return _RunBisectionScript(options)
144 148
145 149
146 if __name__ == '__main__': 150 if __name__ == '__main__':
147 sys.exit(main()) 151 sys.exit(main())
OLDNEW
« no previous file with comments | « tools/prepare-bisect-perf-regression.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698