| 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 from common.git_repository import GitRepository | 5 from common.git_repository import GitRepository |
| 6 from common.http_client_appengine import HttpClientAppengine as HttpClient | 6 from common.http_client_appengine import HttpClientAppengine as HttpClient |
| 7 from model import wf_analysis_status | 7 from model import wf_analysis_status |
| 8 from model.wf_try_job import WfTryJob | 8 from model.wf_try_job import WfTryJob |
| 9 from model.wf_try_job_data import WfTryJobData | 9 from model.wf_try_job_data import WfTryJobData |
| 10 from pipeline_wrapper import BasePipeline | 10 from pipeline_wrapper import BasePipeline |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 190 if result and result.get('report'): | 190 if result and result.get('report'): |
| 191 try_job_data = WfTryJobData.Get(try_job_id) | 191 try_job_data = WfTryJobData.Get(try_job_id) |
| 192 if try_job_type == TryJobType.COMPILE: | 192 if try_job_type == TryJobType.COMPILE: |
| 193 # For compile failures, the try job will stop if one revision fails, so | 193 # For compile failures, the try job will stop if one revision fails, so |
| 194 # the culprit will be the last revision in the result. | 194 # the culprit will be the last revision in the result. |
| 195 failed_revision = self._GetFailedRevisionFromCompileResult( | 195 failed_revision = self._GetFailedRevisionFromCompileResult( |
| 196 result) | 196 result) |
| 197 failed_revisions = [failed_revision] if failed_revision else [] | 197 failed_revisions = [failed_revision] if failed_revision else [] |
| 198 culprits = self._GetCulpritInfo(failed_revisions) | 198 culprits = self._GetCulpritInfo(failed_revisions) |
| 199 if culprits: | 199 if culprits: |
| 200 result['culprit'] = culprits[failed_revision] | 200 result['culprit'] = { |
| 201 'compile': culprits[failed_revision] |
| 202 } |
| 201 try_job_data.culprits = {'compile': failed_revision} | 203 try_job_data.culprits = {'compile': failed_revision} |
| 202 else: # try_job_type is 'test'. | 204 else: # try_job_type is 'test'. |
| 203 culprit_map, failed_revisions = self._FindCulpritForEachTestFailure( | 205 culprit_map, failed_revisions = self._FindCulpritForEachTestFailure( |
| 204 blame_list, result) | 206 blame_list, result) |
| 205 culprits = self._GetCulpritInfo(failed_revisions) | 207 culprits = self._GetCulpritInfo(failed_revisions) |
| 206 if culprits: | 208 if culprits: |
| 207 self._UpdateCulpritMapWithCulpritInfo(culprit_map, culprits) | 209 self._UpdateCulpritMapWithCulpritInfo(culprit_map, culprits) |
| 208 result['culprit'] = culprit_map | 210 result['culprit'] = culprit_map |
| 209 try_job_data.culprits = self._GetCulpritDataForTest(culprit_map) | 211 try_job_data.culprits = self._GetCulpritDataForTest(culprit_map) |
| 210 try_job_data.put() | 212 try_job_data.put() |
| 211 | 213 |
| 212 # Store try job results. | 214 # Store try job results. |
| 213 try_job_result = WfTryJob.Get(master_name, builder_name, build_number) | 215 try_job_result = WfTryJob.Get(master_name, builder_name, build_number) |
| 214 if culprits: | 216 if culprits: |
| 215 result_to_update = ( | 217 result_to_update = ( |
| 216 try_job_result.compile_results if | 218 try_job_result.compile_results if |
| 217 try_job_type == TryJobType.COMPILE else | 219 try_job_type == TryJobType.COMPILE else |
| 218 try_job_result.test_results) | 220 try_job_result.test_results) |
| 219 if (result_to_update and | 221 if (result_to_update and |
| 220 result_to_update[-1]['try_job_id'] == try_job_id): | 222 result_to_update[-1]['try_job_id'] == try_job_id): |
| 221 result_to_update[-1].update(result) | 223 result_to_update[-1].update(result) |
| 222 else: # pragma: no cover | 224 else: # pragma: no cover |
| 223 result_to_update.append(result) | 225 result_to_update.append(result) |
| 224 | 226 |
| 225 try_job_result.status = wf_analysis_status.ANALYZED | 227 try_job_result.status = wf_analysis_status.ANALYZED |
| 226 try_job_result.put() | 228 try_job_result.put() |
| 227 | 229 |
| 228 return result.get('culprit') if result else None | 230 return result.get('culprit') if result else None |
| OLD | NEW |