Chromium Code Reviews| Index: appengine/findit/waterfall/identify_culprit_pipeline.py |
| diff --git a/appengine/findit/waterfall/identify_culprit_pipeline.py b/appengine/findit/waterfall/identify_culprit_pipeline.py |
| index caafe549d78dd026f236ec44569e92fa44d387d4..491c6f56f6aa65f01fd60986f3f912485450e471 100644 |
| --- a/appengine/findit/waterfall/identify_culprit_pipeline.py |
| +++ b/appengine/findit/waterfall/identify_culprit_pipeline.py |
| @@ -4,10 +4,14 @@ |
| from datetime import datetime |
| +from google.appengine.ext import ndb |
| + |
| from common.pipeline_wrapper import BasePipeline |
| -from model import result_status |
| +from model import analysis_approach_type |
| from model import analysis_status |
| +from model import result_status |
| from model.wf_analysis import WfAnalysis |
| +from model.wf_suspected_cl import WfSuspectedCL |
| from waterfall import build_failure_analysis |
| @@ -31,6 +35,27 @@ def _GetResultAnalysisStatus(analysis_result): |
| return result_status.NOT_FOUND_UNTRIAGED |
| +@ndb.transactional |
| +def _SaveSuspectedCL( |
| + build_info, failure_type, repo_name, revision, commit_position): |
| + |
| + suspected_cl = WfSuspectedCL.Get(repo_name, revision) |
|
lijeffrey
2016/08/10 08:12:38
how about suspected_cl = WfSuspectedCL.Get(...) or
chanli
2016/08/11 23:39:35
Done.
|
| + |
| + if not suspected_cl: |
| + suspected_cl = WfSuspectedCL.Create(repo_name, revision, commit_position) |
| + |
| + if suspected_cl.approach is None: |
| + suspected_cl.approach = analysis_approach_type.HEURISTIC |
| + elif suspected_cl.approach == analysis_approach_type.TRY_JOB: |
| + suspected_cl.approach = analysis_approach_type.BOTH |
|
lijeffrey
2016/08/10 08:12:38
this seems not right, can you guarantee both heuri
chanli
2016/08/11 23:39:36
This update is for a heuristic result and if suspe
|
| + |
| + suspected_cl.failure_type = suspected_cl.failure_type or failure_type |
| + |
| + if build_info not in suspected_cl.builds: |
| + suspected_cl.builds.append(build_info) |
| + |
| + suspected_cl.put() |
| + |
| def _GetSuspectedCLs(analysis_result): |
| """Returns the suspected CLs we found in analysis.""" |
| suspected_cls = [] |
| @@ -81,4 +106,10 @@ class IdentifyCulpritPipeline(BasePipeline): |
| analysis.end_time = datetime.utcnow() |
| analysis.put() |
| + # Creates and/or updates WfSuspectedCL entities for suspected cls. |
| + for suspected_cl in analysis.suspected_cls: |
| + _SaveSuspectedCL( |
| + [master_name, builder_name, build_number], |
| + failure_info['failure_type'], suspected_cl['repo_name'], |
| + suspected_cl['revision'], suspected_cl['commit_position']) |
| return analysis_result |