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

Side by Side Diff: tools/run-bisect-perf-regression.py

Issue 697713003: Aborting bisect early when the bug specified in the bisect config is closed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removing type=str since it's the default and rebasing Created 6 years, 1 month 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
« no previous file with comments | « tools/auto_bisect/test_data/open.json ('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 (c) 2013 The Chromium Authors. All rights reserved. 2 # Copyright (c) 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 Performance Test Bisect Tool 6 """Run Performance Test Bisect Tool
7 7
8 This script is used by a try bot to run the bisect script with the parameters 8 This script is used by a try bot to run the bisect script with the parameters
9 specified in the bisect config file. It checks out a copy of the depot in 9 specified in the bisect config file. It checks out a copy of the depot in
10 a subdirectory 'bisect' of the working directory provided, annd runs the 10 a subdirectory 'bisect' of the working directory provided, annd runs the
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 local_vars = {} 104 local_vars = {}
105 execfile(config_file_path, local_vars) 105 execfile(config_file_path, local_vars)
106 return local_vars['config'] 106 return local_vars['config']
107 except Exception: 107 except Exception:
108 print 108 print
109 traceback.print_exc() 109 traceback.print_exc()
110 print 110 print
111 return {} 111 return {}
112 112
113 113
114 def _ValidateConfigFile(config_contents, valid_parameters): 114 def _ValidateConfigFile(config_contents, required_parameters):
115 """Validates the config file contents, checking whether all values are 115 """Validates the config file contents, checking whether all values are
116 non-empty. 116 non-empty.
117 117
118 Args: 118 Args:
119 config_contents: A config dictionary. 119 config_contents: A config dictionary.
120 valid_parameters: A list of parameters to check for. 120 required_parameters: A list of parameters to check for.
121 121
122 Returns: 122 Returns:
123 True if valid. 123 True if valid.
124 """ 124 """
125 for parameter in valid_parameters: 125 for parameter in required_parameters:
126 if parameter not in config_contents: 126 if parameter not in config_contents:
127 return False 127 return False
128 value = config_contents[parameter] 128 value = config_contents[parameter]
129 if not value or type(value) is not str: 129 if not value or type(value) is not str:
130 return False 130 return False
131 return True 131 return True
132 132
133 133
134 def _ValidatePerfConfigFile(config_contents): 134 def _ValidatePerfConfigFile(config_contents):
135 """Validates the perf config file contents. 135 """Validates the perf config file contents.
136 136
137 This is used when we're doing a perf try job, rather than a bisect. 137 This is used when we're doing a perf try job, rather than a bisect.
138 The config file is called run-perf-test.cfg by default. 138 The config file is called run-perf-test.cfg by default.
139 139
140 The parameters checked are the required parameters; any additional optional 140 The parameters checked are the required parameters; any additional optional
141 parameters won't be checked and validation will still pass. 141 parameters won't be checked and validation will still pass.
142 142
143 Args: 143 Args:
144 config_contents: A config dictionary. 144 config_contents: A config dictionary.
145 145
146 Returns: 146 Returns:
147 True if valid. 147 True if valid.
148 """ 148 """
149 valid_parameters = [ 149 required_parameters = [
150 'command', 150 'command',
151 'repeat_count', 151 'repeat_count',
152 'truncate_percent', 152 'truncate_percent',
153 'max_time_minutes', 153 'max_time_minutes',
154 ] 154 ]
155 return _ValidateConfigFile(config_contents, valid_parameters) 155 return _ValidateConfigFile(config_contents, required_parameters)
156 156
157 157
158 def _ValidateBisectConfigFile(config_contents): 158 def _ValidateBisectConfigFile(config_contents):
159 """Validates the bisect config file contents. 159 """Validates the bisect config file contents.
160 160
161 The parameters checked are the required parameters; any additional optional 161 The parameters checked are the required parameters; any additional optional
162 parameters won't be checked and validation will still pass. 162 parameters won't be checked and validation will still pass.
163 163
164 Args: 164 Args:
165 config_contents: A config dictionary. 165 config_contents: A config dictionary.
166 166
167 Returns: 167 Returns:
168 True if valid. 168 True if valid.
169 """ 169 """
170 valid_params = [ 170 required_params = [
171 'command', 171 'command',
172 'good_revision', 172 'good_revision',
173 'bad_revision', 173 'bad_revision',
174 'metric', 174 'metric',
175 'repeat_count', 175 'repeat_count',
176 'truncate_percent', 176 'truncate_percent',
177 'max_time_minutes', 177 'max_time_minutes',
178 ] 178 ]
179 return _ValidateConfigFile(config_contents, valid_params) 179 return _ValidateConfigFile(config_contents, required_params)
180 180
181 181
182 def _OutputFailedResults(text_to_print): 182 def _OutputFailedResults(text_to_print):
183 bisect_utils.OutputAnnotationStepStart('Results - Failed') 183 bisect_utils.OutputAnnotationStepStart('Results - Failed')
184 print 184 print
185 print text_to_print 185 print text_to_print
186 print 186 print
187 bisect_utils.OutputAnnotationStepClosed() 187 bisect_utils.OutputAnnotationStepClosed()
188 188
189 189
(...skipping 13 matching lines...) Expand all
203 opts_dict['max_time_minutes'] = int(config['max_time_minutes']) 203 opts_dict['max_time_minutes'] = int(config['max_time_minutes'])
204 204
205 if config.has_key('use_goma'): 205 if config.has_key('use_goma'):
206 opts_dict['use_goma'] = config['use_goma'] 206 opts_dict['use_goma'] = config['use_goma']
207 if config.has_key('goma_dir'): 207 if config.has_key('goma_dir'):
208 opts_dict['goma_dir'] = config['goma_dir'] 208 opts_dict['goma_dir'] = config['goma_dir']
209 209
210 if config.has_key('improvement_direction'): 210 if config.has_key('improvement_direction'):
211 opts_dict['improvement_direction'] = int(config['improvement_direction']) 211 opts_dict['improvement_direction'] = int(config['improvement_direction'])
212 212
213 if config.has_key('bug_id') and str(config['bug_id']).isdigit():
214 opts_dict['bug_id'] = config['bug_id']
215
213 opts_dict['build_preference'] = 'ninja' 216 opts_dict['build_preference'] = 'ninja'
214 opts_dict['output_buildbot_annotations'] = True 217 opts_dict['output_buildbot_annotations'] = True
215 218
216 if '--browser=cros' in config['command']: 219 if '--browser=cros' in config['command']:
217 opts_dict['target_platform'] = 'cros' 220 opts_dict['target_platform'] = 'cros'
218 221
219 if os.environ[CROS_BOARD_ENV] and os.environ[CROS_IP_ENV]: 222 if os.environ[CROS_BOARD_ENV] and os.environ[CROS_IP_ENV]:
220 opts_dict['cros_board'] = os.environ[CROS_BOARD_ENV] 223 opts_dict['cros_board'] = os.environ[CROS_BOARD_ENV]
221 opts_dict['cros_remote_ip'] = os.environ[CROS_IP_ENV] 224 opts_dict['cros_remote_ip'] = os.environ[CROS_IP_ENV]
222 else: 225 else:
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 405
403 if config['max_time_minutes']: 406 if config['max_time_minutes']:
404 cmd.extend(['--max_time_minutes', config['max_time_minutes']]) 407 cmd.extend(['--max_time_minutes', config['max_time_minutes']])
405 408
406 if config.has_key('bisect_mode'): 409 if config.has_key('bisect_mode'):
407 cmd.extend(['--bisect_mode', config['bisect_mode']]) 410 cmd.extend(['--bisect_mode', config['bisect_mode']])
408 411
409 if config.has_key('improvement_direction'): 412 if config.has_key('improvement_direction'):
410 cmd.extend(['-d', config['improvement_direction']]) 413 cmd.extend(['-d', config['improvement_direction']])
411 414
415 if config.has_key('bug_id'):
416 cmd.extend(['--bug_id', config['bug_id']])
417
412 cmd.extend(['--build_preference', 'ninja']) 418 cmd.extend(['--build_preference', 'ninja'])
413 419
414 if '--browser=cros' in config['command']: 420 if '--browser=cros' in config['command']:
415 cmd.extend(['--target_platform', 'cros']) 421 cmd.extend(['--target_platform', 'cros'])
416 422
417 if os.environ[CROS_BOARD_ENV] and os.environ[CROS_IP_ENV]: 423 if os.environ[CROS_BOARD_ENV] and os.environ[CROS_IP_ENV]:
418 cmd.extend(['--cros_board', os.environ[CROS_BOARD_ENV]]) 424 cmd.extend(['--cros_board', os.environ[CROS_BOARD_ENV]])
419 cmd.extend(['--cros_remote_ip', os.environ[CROS_IP_ENV]]) 425 cmd.extend(['--cros_remote_ip', os.environ[CROS_IP_ENV]])
420 else: 426 else:
421 print ('Error: Cros build selected, but BISECT_CROS_IP or' 427 print ('Error: Cros build selected, but BISECT_CROS_IP or'
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 if config and config_is_valid: 569 if config and config_is_valid:
564 return _SetupAndRunPerformanceTest(config, opts.path_to_goma) 570 return _SetupAndRunPerformanceTest(config, opts.path_to_goma)
565 571
566 print ('Error: Could not load config file. Double check your changes to ' 572 print ('Error: Could not load config file. Double check your changes to '
567 'auto_bisect/bisect.cfg or run-perf-test.cfg for syntax errors.\n') 573 'auto_bisect/bisect.cfg or run-perf-test.cfg for syntax errors.\n')
568 return 1 574 return 1
569 575
570 576
571 if __name__ == '__main__': 577 if __name__ == '__main__':
572 sys.exit(main()) 578 sys.exit(main())
OLDNEW
« no previous file with comments | « tools/auto_bisect/test_data/open.json ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698