Chromium Code Reviews| Index: appengine/findit/handlers/build_failure.py |
| diff --git a/appengine/findit/handlers/build_failure.py b/appengine/findit/handlers/build_failure.py |
| index 9b75d58baa75fc41ca96a38be1535ed9ee64d537..c67a12c3ad81dc78397791d883f58ebb8a8d21a7 100644 |
| --- a/appengine/findit/handlers/build_failure.py |
| +++ b/appengine/findit/handlers/build_failure.py |
| @@ -147,8 +147,8 @@ def _GetOrganizedAnalysisResultBySuspectedCL(analysis_result): |
| return organized_results |
| -def _GetAnalysisResultWithTryJobInfo( |
| - organized_results, master_name, builder_name, build_number): |
| +def _GetAnalysisResultWithTryJobInfo(show_debug_info, organized_results, |
| + master_name, builder_name, build_number): |
| """Reorganizes analysis result and try job result by step_name and culprit. |
| Returns: |
| @@ -205,7 +205,8 @@ def _GetAnalysisResultWithTryJobInfo( |
| return updated_results |
| try_job_info = handlers_util.GetAllTryJobResults( |
| - master_name, builder_name, build_number) |
| + master_name, builder_name, build_number, show_debug_info) |
| + |
| if not try_job_info: |
| return updated_results |
| @@ -253,8 +254,9 @@ def _GetAnalysisResultWithTryJobInfo( |
| 'supported': heuristic_result['supported'] |
| } |
| - if ('status' not in try_job_result or |
| - try_job_result['status'] in NO_TRY_JOB_REASON_MAP.values()): |
| + if (('status' not in try_job_result or |
| + try_job_result['status'] in NO_TRY_JOB_REASON_MAP.values()) or |
| + (tests == [NON_SWARMING] and show_debug_info)): |
| # There is no try job info but only heuristic result. |
| try_job_result['status'] = try_job_result.get( |
| 'status', result_status.UNKNOWN) |
| @@ -274,8 +276,7 @@ class BuildFailure(BaseHandler): |
| # Show debug info only if the app is run locally during development, if the |
| # currently logged-in user is an admin, or if it is explicitly requested |
| # with parameter 'debug=1'. |
| - return ( |
| - users.is_current_user_admin() or self.request.get('debug') == '1') |
| + return users.is_current_user_admin() or self.request.get('debug') == '1' |
| def _ShowTriageHelpButton(self): |
| return users.is_current_user_admin() |
| @@ -314,7 +315,7 @@ class BuildFailure(BaseHandler): |
| result = try_job.compile_results[-1] |
| try_job_data['status'] = analysis_status.STATUS_TO_DESCRIPTION.get( |
| - try_job.status, 'unknown').lower() |
| + try_job.status, 'unknown').lower() |
| try_job_data['url'] = result.get('url') |
| try_job_data['completed'] = try_job.completed |
| try_job_data['failed'] = try_job.failed |
| @@ -345,14 +346,15 @@ class BuildFailure(BaseHandler): |
| return data |
| - def _PrepareDataForTestFailures(self, analysis, build_info): |
| + def _PrepareDataForTestFailures(self, analysis, build_info, |
| + show_debug_info=False): |
| data = self._PrepareCommonDataForFailure(analysis) |
| data['status_message_map'] = result_status.STATUS_MESSAGE_MAP |
| organized_results = _GetOrganizedAnalysisResultBySuspectedCL( |
| analysis.result) |
| analysis_result = _GetAnalysisResultWithTryJobInfo( |
| - organized_results, *build_info) |
| + show_debug_info, organized_results, *build_info) |
| data['analysis_result'] = analysis_result |
| return data |
| @@ -388,20 +390,24 @@ class BuildFailure(BaseHandler): |
| self.request.get('force') == '1') |
| build_completed = (users.is_current_user_admin() and |
| self.request.get('build_completed') == '1') |
| + force_try_job_rerun = (users.is_current_user_admin() and |
| + self.request.get('force_try_job_rerun') == '1') |
|
stgao
2016/06/02 01:25:13
nit: just "force_try_job"?
lijeffrey
2016/06/02 05:36:06
Done.
|
| analysis = build_failure_analysis_pipelines.ScheduleAnalysisIfNeeded( |
| master_name, builder_name, build_number, |
| build_completed=build_completed, force=force, |
| + force_try_job_rerun=force_try_job_rerun, |
| queue_name=constants.WATERFALL_ANALYSIS_QUEUE) |
| if analysis.failure_type == failure_type.COMPILE: |
| return { |
| - 'template': 'waterfall/compile_failure.html', |
| - 'data': self._PrepareDataForCompileFailure(analysis), |
| + 'template': 'waterfall/compile_failure.html', |
| + 'data': self._PrepareDataForCompileFailure(analysis), |
| } |
| else: |
| return { |
| - 'template': 'build_failure.html', |
| - 'data': self._PrepareDataForTestFailures(analysis, build_info), |
| + 'template': 'build_failure.html', |
| + 'data': self._PrepareDataForTestFailures(analysis, build_info, |
| + self._ShowDebugInfo()), |
| } |
| def HandlePost(self): # pragma: no cover |