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

Side by Side Diff: scripts/slave/recipes/bisect.py

Issue 1573293002: Change auto_bisect to post results to perf dashboard. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: . Created 4 years, 10 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
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import base64 5 import base64
6 import collections 6 import collections
7 import json 7 import json
8 8
9 DEPS = [ 9 DEPS = [
10 'auto_bisect', 10 'auto_bisect',
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 'retcodes':[0], 143 'retcodes':[0],
144 } 144 }
145 }, 145 },
146 ] 146 ]
147 147
148 basic_test_data = test_data() 148 basic_test_data = test_data()
149 for revision_data in basic_test_data: 149 for revision_data in basic_test_data:
150 for step_data in _get_step_data_for_revision(api, revision_data): 150 for step_data in _get_step_data_for_revision(api, revision_data):
151 basic_test += step_data 151 basic_test += step_data
152 basic_test += _get_revision_range_step_data(api, basic_test_data) 152 basic_test += _get_revision_range_step_data(api, basic_test_data)
153 basic_test += _get_post_bisect_step_data(api)
153 yield basic_test 154 yield basic_test
154 155
155 broken_test_data = test_data() 156 broken_test_data = test_data()
156 broken_test_data[0].pop('cl_info') 157 broken_test_data[0].pop('cl_info')
157 yield broken_hash_test 158 yield broken_hash_test
158 yield broken_cp_test 159 yield broken_cp_test
159 160
160 doctored_data = test_data() 161 doctored_data = test_data()
161 doctored_data[0]['test_results']['results']['errors'] = ['Dummy error.'] 162 doctored_data[0]['test_results']['results']['errors'] = ['Dummy error.']
162 for revision_data in doctored_data: 163 for revision_data in doctored_data:
163 revision_data.pop('cl_info', None) 164 revision_data.pop('cl_info', None)
164 skip_results = revision_data in doctored_data[1:-1] 165 skip_results = revision_data in doctored_data[1:-1]
165 for step_data in _get_step_data_for_revision(api, revision_data, 166 for step_data in _get_step_data_for_revision(api, revision_data,
166 skip_results=skip_results): 167 skip_results=skip_results):
167 broken_bad_rev_test += step_data 168 broken_bad_rev_test += step_data
168 broken_bad_rev_test += _get_revision_range_step_data(api, doctored_data) 169 broken_bad_rev_test += _get_revision_range_step_data(api, doctored_data)
170 broken_bad_rev_test += _get_post_bisect_step_data(api)
169 yield broken_bad_rev_test 171 yield broken_bad_rev_test
170 172
171 doctored_data = test_data() 173 doctored_data = test_data()
172 doctored_data[-1]['test_results']['results']['errors'] = ['Dummy error.'] 174 doctored_data[-1]['test_results']['results']['errors'] = ['Dummy error.']
173 for revision_data in doctored_data: 175 for revision_data in doctored_data:
174 revision_data.pop('cl_info', None) 176 revision_data.pop('cl_info', None)
175 skip_results = revision_data in doctored_data[1:-1] 177 skip_results = revision_data in doctored_data[1:-1]
176 for step_data in _get_step_data_for_revision(api, revision_data, 178 for step_data in _get_step_data_for_revision(api, revision_data,
177 skip_results=skip_results): 179 skip_results=skip_results):
178 broken_good_rev_test += step_data 180 broken_good_rev_test += step_data
179 broken_good_rev_test += _get_revision_range_step_data(api, doctored_data) 181 broken_good_rev_test += _get_revision_range_step_data(api, doctored_data)
182 broken_good_rev_test += _get_post_bisect_step_data(api)
180 yield broken_good_rev_test 183 yield broken_good_rev_test
181 184
182 def return_code_test_data(): 185 def return_code_test_data():
183 return [ 186 return [
184 { 187 {
185 'refrange': True, 188 'refrange': True,
186 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', 189 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222',
187 'commit_pos': '306478', 190 'commit_pos': '306478',
188 'test_results': { 191 'test_results': {
189 'results': { 192 'results': {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 ] 245 ]
243 246
244 bisect_config_ret_code = bisect_config.copy() 247 bisect_config_ret_code = bisect_config.copy()
245 bisect_config_ret_code['test_type'] = 'return_code' 248 bisect_config_ret_code['test_type'] = 'return_code'
246 return_code_test += api.properties(bisect_config=bisect_config_ret_code) 249 return_code_test += api.properties(bisect_config=bisect_config_ret_code)
247 return_code_test_data = return_code_test_data() 250 return_code_test_data = return_code_test_data()
248 for revision_data in return_code_test_data: 251 for revision_data in return_code_test_data:
249 for step_data in _get_step_data_for_revision(api, revision_data): 252 for step_data in _get_step_data_for_revision(api, revision_data):
250 return_code_test += step_data 253 return_code_test += step_data
251 return_code_test += _get_revision_range_step_data(api, return_code_test_data) 254 return_code_test += _get_revision_range_step_data(api, return_code_test_data)
255 return_code_test += _get_post_bisect_step_data(api)
252 yield return_code_test 256 yield return_code_test
253 257
254 258
255 def _get_revision_range_step_data(api, range_data): 259 def _get_revision_range_step_data(api, range_data):
256 """Gives canned output for fetch_intervening_revisions.py.""" 260 """Gives canned output for fetch_intervening_revisions.py."""
257 range_data.sort(key=lambda r: r['commit_pos']) 261 range_data.sort(key=lambda r: r['commit_pos'])
258 min_rev = range_data[0]['hash'] 262 min_rev = range_data[0]['hash']
259 max_rev = range_data[-1]['hash'] 263 max_rev = range_data[-1]['hash']
260 output = [[r['hash'], r['commit_pos']] for r in range_data[1:-1]] 264 output = [[r['hash'], r['commit_pos']] for r in range_data[1:-1]]
261 step_name = ('Expanding revision range.for revisions %s:%s' % 265 step_name = ('Expanding revision range.for revisions %s:%s' %
(...skipping 16 matching lines...) Expand all
278 commit_hash)) 282 commit_hash))
279 283
280 step_name = parent_step + 'resolving hash ' + commit_hash 284 step_name = parent_step + 'resolving hash ' + commit_hash
281 if broken_hash is None: 285 if broken_hash is None:
282 commit_pos_str = 'refs/heads/master@{#%s}' % commit_pos 286 commit_pos_str = 'refs/heads/master@{#%s}' % commit_pos
283 yield api.step_data(step_name, stdout=api.raw_io.output(commit_pos_str)) 287 yield api.step_data(step_name, stdout=api.raw_io.output(commit_pos_str))
284 288
285 if not skip_results: 289 if not skip_results:
286 step_name = 'gsutil Get test results for build ' + commit_hash 290 step_name = 'gsutil Get test results for build ' + commit_hash
287 if 'refrange' in revision_data: 291 if 'refrange' in revision_data:
288 step_name = 'Gathering reference values.' + step_name 292 parent_step = 'Gathering reference values.'
289 else: 293 else:
290 step_name = 'Working on revision %s.' % commit_hash + step_name 294 parent_step = 'Working on revision %s.' % commit_hash
291 yield api.step_data(step_name, stdout=api.raw_io.output(json.dumps( 295 yield _get_post_bisect_step_data(api, parent_step)
292 test_results))) 296 yield api.step_data(parent_step + step_name,
297 stdout=api.raw_io.output(json.dumps(test_results)))
293 298
294 if 'cl_info' in revision_data: 299 if 'cl_info' in revision_data:
295 step_name = 'Reading culprit cl information.' 300 step_name = 'Reading culprit cl information.'
296 stdout = api.json.output(revision_data['cl_info']) 301 stdout = api.json.output(revision_data['cl_info'])
297 yield api.step_data(step_name, stdout=stdout) 302 yield api.step_data(step_name, stdout=stdout)
303
304
305 def _get_post_bisect_step_data(api, parent_step=''):
306 """Gets step data for perf_dashboard/resource/post_json.py."""
307 response = {'status_code': 200}
308 return api.step_data(parent_step + 'Post bisect results',
309 stdout=api.json.output(response))
OLDNEW
« no previous file with comments | « scripts/slave/recipe_modules/perf_try/api.py ('k') | scripts/slave/recipes/bisect.expected/basic.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698