| OLD | NEW |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 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 collections import defaultdict | 5 from collections import defaultdict |
| 6 import copy | 6 import copy |
| 7 from datetime import datetime | 7 from datetime import datetime |
| 8 import logging | 8 import logging |
| 9 import os | 9 import os |
| 10 | 10 |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 'analysis_request_time': _FormatDatetime(analysis.request_time), | 287 'analysis_request_time': _FormatDatetime(analysis.request_time), |
| 288 'analysis_start_time': _FormatDatetime(analysis.start_time), | 288 'analysis_start_time': _FormatDatetime(analysis.start_time), |
| 289 'analysis_end_time': _FormatDatetime(analysis.end_time), | 289 'analysis_end_time': _FormatDatetime(analysis.end_time), |
| 290 'analysis_duration': analysis.duration, | 290 'analysis_duration': analysis.duration, |
| 291 'analysis_update_time': _FormatDatetime(analysis.updated_time), | 291 'analysis_update_time': _FormatDatetime(analysis.updated_time), |
| 292 'analysis_completed': analysis.completed, | 292 'analysis_completed': analysis.completed, |
| 293 'analysis_failed': analysis.failed, | 293 'analysis_failed': analysis.failed, |
| 294 'analysis_correct': analysis.correct, | 294 'analysis_correct': analysis.correct, |
| 295 'triage_history': _GetTriageHistory(analysis), | 295 'triage_history': _GetTriageHistory(analysis), |
| 296 'show_triage_help_button': self._ShowTriageHelpButton(), | 296 'show_triage_help_button': self._ShowTriageHelpButton(), |
| 297 'status_message_map': result_status.STATUS_MESSAGE_MAP | |
| 298 } | 297 } |
| 299 | 298 |
| 300 @staticmethod | 299 @staticmethod |
| 301 def _PrepareTryJobDataForCompileFailure(analysis): | 300 def _PrepareTryJobDataForCompileFailure(analysis): |
| 302 try_job_data = {} | 301 try_job_data = {} |
| 303 if not (analysis.failure_result_map and # pragma: no branch. | 302 if not (analysis.failure_result_map and # pragma: no branch. |
| 304 constants.COMPILE_STEP_NAME in analysis.failure_result_map): | 303 constants.COMPILE_STEP_NAME in analysis.failure_result_map): |
| 305 return try_job_data # pragma: no cover. | 304 return try_job_data # pragma: no cover. |
| 306 | 305 |
| 307 referred_build_keys = analysis.failure_result_map[ | 306 referred_build_keys = analysis.failure_result_map[ |
| (...skipping 30 matching lines...) Expand all Loading... |
| 338 | 337 |
| 339 # Check result from heuristic analysis. | 338 # Check result from heuristic analysis. |
| 340 self._PopulateHeuristicDataForCompileFailure(analysis, data) | 339 self._PopulateHeuristicDataForCompileFailure(analysis, data) |
| 341 # Check result from try job. | 340 # Check result from try job. |
| 342 data['try_job'] = self._PrepareTryJobDataForCompileFailure(analysis) | 341 data['try_job'] = self._PrepareTryJobDataForCompileFailure(analysis) |
| 343 | 342 |
| 344 return data | 343 return data |
| 345 | 344 |
| 346 def _PrepareDataForTestFailures(self, analysis, build_info): | 345 def _PrepareDataForTestFailures(self, analysis, build_info): |
| 347 data = self._PrepareCommonDataForFailure(analysis) | 346 data = self._PrepareCommonDataForFailure(analysis) |
| 347 data['status_message_map'] = result_status.STATUS_MESSAGE_MAP |
| 348 | 348 |
| 349 organized_results = _GetOrganizedAnalysisResultBySuspectedCL( | 349 organized_results = _GetOrganizedAnalysisResultBySuspectedCL( |
| 350 analysis.result) | 350 analysis.result) |
| 351 analysis_result = _GetAnalysisResultWithTryJobInfo( | 351 analysis_result = _GetAnalysisResultWithTryJobInfo( |
| 352 organized_results, *build_info) | 352 organized_results, *build_info) |
| 353 data['analysis_result'] = analysis_result | 353 data['analysis_result'] = analysis_result |
| 354 | 354 |
| 355 return data | 355 return data |
| 356 | 356 |
| 357 def HandleGet(self): | 357 def HandleGet(self): |
| (...skipping 25 matching lines...) Expand all Loading... |
| 383 # Only allow admin to force a re-run and set the build_completed. | 383 # Only allow admin to force a re-run and set the build_completed. |
| 384 force = (users.is_current_user_admin() and | 384 force = (users.is_current_user_admin() and |
| 385 self.request.get('force') == '1') | 385 self.request.get('force') == '1') |
| 386 build_completed = (users.is_current_user_admin() and | 386 build_completed = (users.is_current_user_admin() and |
| 387 self.request.get('build_completed') == '1') | 387 self.request.get('build_completed') == '1') |
| 388 analysis = build_failure_analysis_pipelines.ScheduleAnalysisIfNeeded( | 388 analysis = build_failure_analysis_pipelines.ScheduleAnalysisIfNeeded( |
| 389 master_name, builder_name, build_number, | 389 master_name, builder_name, build_number, |
| 390 build_completed=build_completed, force=force, | 390 build_completed=build_completed, force=force, |
| 391 queue_name=constants.WATERFALL_ANALYSIS_QUEUE) | 391 queue_name=constants.WATERFALL_ANALYSIS_QUEUE) |
| 392 | 392 |
| 393 if analysis.failure_type == failure_type.COMPILE: # pragma: no branch | 393 if analysis.failure_type == failure_type.COMPILE: |
| 394 return { | 394 return { |
| 395 'template': 'waterfall/compile_failure.html', | 395 'template': 'waterfall/compile_failure.html', |
| 396 'data': self._PrepareDataForCompileFailure(analysis), | 396 'data': self._PrepareDataForCompileFailure(analysis), |
| 397 } | 397 } |
| 398 else: | 398 else: |
| 399 return { | 399 return { |
| 400 'template': 'build_failure.html', | 400 'template': 'build_failure.html', |
| 401 'data': self._PrepareDataForTestFailures(analysis, build_info), | 401 'data': self._PrepareDataForTestFailures(analysis, build_info), |
| 402 } | 402 } |
| 403 | 403 |
| 404 def HandlePost(self): # pragma: no cover | 404 def HandlePost(self): # pragma: no cover |
| 405 return self.HandleGet() | 405 return self.HandleGet() |
| OLD | NEW |