OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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)) |
OLD | NEW |