| 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 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 Loading... |
| 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)) |
| OLD | NEW |