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

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: update Created 4 years, 11 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 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 'retcodes':[0], 135 'retcodes':[0],
136 } 136 }
137 }, 137 },
138 ] 138 ]
139 139
140 basic_test_data = test_data() 140 basic_test_data = test_data()
141 for revision_data in basic_test_data: 141 for revision_data in basic_test_data:
142 for step_data in _get_step_data_for_revision(api, revision_data): 142 for step_data in _get_step_data_for_revision(api, revision_data):
143 basic_test += step_data 143 basic_test += step_data
144 basic_test += _get_revision_range_step_data(api, basic_test_data) 144 basic_test += _get_revision_range_step_data(api, basic_test_data)
145 basic_test += _get_post_bisect_step_data(api)
145 yield basic_test 146 yield basic_test
146 147
147 broken_test_data = test_data() 148 broken_test_data = test_data()
148 broken_test_data[0].pop('cl_info') 149 broken_test_data[0].pop('cl_info')
149 yield broken_hash_test 150 yield broken_hash_test
150 yield broken_cp_test 151 yield broken_cp_test
151 152
152 doctored_data = test_data() 153 doctored_data = test_data()
153 doctored_data[0]['test_results']['results']['errors'] = ['Dummy error.'] 154 doctored_data[0]['test_results']['results']['errors'] = ['Dummy error.']
154 for revision_data in doctored_data: 155 for revision_data in doctored_data:
155 revision_data.pop('cl_info', None) 156 revision_data.pop('cl_info', None)
156 skip_results = revision_data in doctored_data[1:-1] 157 skip_results = revision_data in doctored_data[1:-1]
157 for step_data in _get_step_data_for_revision(api, revision_data, 158 for step_data in _get_step_data_for_revision(api, revision_data,
158 skip_results=skip_results): 159 skip_results=skip_results):
159 broken_bad_rev_test += step_data 160 broken_bad_rev_test += step_data
160 broken_bad_rev_test += _get_revision_range_step_data(api, doctored_data) 161 broken_bad_rev_test += _get_revision_range_step_data(api, doctored_data)
162 broken_bad_rev_test += _get_post_bisect_step_data(api)
161 yield broken_bad_rev_test 163 yield broken_bad_rev_test
162 164
163 doctored_data = test_data() 165 doctored_data = test_data()
164 doctored_data[-1]['test_results']['results']['errors'] = ['Dummy error.'] 166 doctored_data[-1]['test_results']['results']['errors'] = ['Dummy error.']
165 for revision_data in doctored_data: 167 for revision_data in doctored_data:
166 revision_data.pop('cl_info', None) 168 revision_data.pop('cl_info', None)
167 skip_results = revision_data in doctored_data[1:-1] 169 skip_results = revision_data in doctored_data[1:-1]
168 for step_data in _get_step_data_for_revision(api, revision_data, 170 for step_data in _get_step_data_for_revision(api, revision_data,
169 skip_results=skip_results): 171 skip_results=skip_results):
170 broken_good_rev_test += step_data 172 broken_good_rev_test += step_data
171 broken_good_rev_test += _get_revision_range_step_data(api, doctored_data) 173 broken_good_rev_test += _get_revision_range_step_data(api, doctored_data)
174 broken_good_rev_test += _get_post_bisect_step_data(api)
172 yield broken_good_rev_test 175 yield broken_good_rev_test
173 176
174 def return_code_test_data(): 177 def return_code_test_data():
175 return [ 178 return [
176 { 179 {
177 'refrange': True, 180 'refrange': True,
178 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', 181 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222',
179 'commit_pos': '306478', 182 'commit_pos': '306478',
180 'test_results': { 183 'test_results': {
181 'results': { 184 'results': {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 ] 237 ]
235 238
236 bisect_config_ret_code = bisect_config.copy() 239 bisect_config_ret_code = bisect_config.copy()
237 bisect_config_ret_code['test_type'] = 'return_code' 240 bisect_config_ret_code['test_type'] = 'return_code'
238 return_code_test += api.properties(bisect_config=bisect_config_ret_code) 241 return_code_test += api.properties(bisect_config=bisect_config_ret_code)
239 return_code_test_data = return_code_test_data() 242 return_code_test_data = return_code_test_data()
240 for revision_data in return_code_test_data: 243 for revision_data in return_code_test_data:
241 for step_data in _get_step_data_for_revision(api, revision_data): 244 for step_data in _get_step_data_for_revision(api, revision_data):
242 return_code_test += step_data 245 return_code_test += step_data
243 return_code_test += _get_revision_range_step_data(api, return_code_test_data) 246 return_code_test += _get_revision_range_step_data(api, return_code_test_data)
247 return_code_test += _get_post_bisect_step_data(api)
244 yield return_code_test 248 yield return_code_test
245 249
246 250
247 def _get_revision_range_step_data(api, range_data): 251 def _get_revision_range_step_data(api, range_data):
248 """Gives canned output for fetch_intervening_revisions.py.""" 252 """Gives canned output for fetch_intervening_revisions.py."""
249 range_data.sort(key=lambda r: r['commit_pos']) 253 range_data.sort(key=lambda r: r['commit_pos'])
250 min_rev = range_data[0]['hash'] 254 min_rev = range_data[0]['hash']
251 max_rev = range_data[-1]['hash'] 255 max_rev = range_data[-1]['hash']
252 output = [[r['hash'], r['commit_pos']] for r in range_data[1:-1]] 256 output = [[r['hash'], r['commit_pos']] for r in range_data[1:-1]]
253 step_name = ('Expanding revision range.for revisions %s:%s' % 257 step_name = ('Expanding revision range.for revisions %s:%s' %
(...skipping 16 matching lines...) Expand all
270 commit_hash)) 274 commit_hash))
271 275
272 step_name = parent_step + 'resolving hash ' + commit_hash 276 step_name = parent_step + 'resolving hash ' + commit_hash
273 if broken_hash is None: 277 if broken_hash is None:
274 commit_pos_str = 'refs/heads/master@{#%s}' % commit_pos 278 commit_pos_str = 'refs/heads/master@{#%s}' % commit_pos
275 yield api.step_data(step_name, stdout=api.raw_io.output(commit_pos_str)) 279 yield api.step_data(step_name, stdout=api.raw_io.output(commit_pos_str))
276 280
277 if not skip_results: 281 if not skip_results:
278 step_name = 'gsutil Get test results for build ' + commit_hash 282 step_name = 'gsutil Get test results for build ' + commit_hash
279 if 'refrange' in revision_data: 283 if 'refrange' in revision_data:
280 step_name = 'Gathering reference values.' + step_name 284 parent_step = 'Gathering reference values.'
281 else: 285 else:
282 step_name = 'Working on revision %s.' % commit_hash + step_name 286 parent_step = 'Working on revision %s.' % commit_hash
283 yield api.step_data(step_name, stdout=api.raw_io.output(json.dumps( 287 yield _get_post_bisect_step_data(api, parent_step)
284 test_results))) 288 yield api.step_data(parent_step + step_name,
289 stdout=api.raw_io.output(json.dumps(test_results)))
285 290
286 if 'cl_info' in revision_data: 291 if 'cl_info' in revision_data:
287 step_name = 'Reading culprit cl information.' 292 step_name = 'Reading culprit cl information.'
288 stdout = api.json.output(revision_data['cl_info']) 293 stdout = api.json.output(revision_data['cl_info'])
289 yield api.step_data(step_name, stdout=stdout) 294 yield api.step_data(step_name, stdout=stdout)
295
296
297 def _get_post_bisect_step_data(api, parent_step=''):
298 """Gets step data for perf_dashboard/resource/post_json.py."""
299 response = {'status_code': 200}
300 return api.step_data(parent_step + 'Post bisect results',
301 stdout=api.json.output(response))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698