Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1893)

Unified Diff: appengine/findit/waterfall/identify_culprit_pipeline.py

Issue 2230103002: [Findit] Pipeline change to save suspected cls to data store. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@0808-resubmit-suspected_cl_model
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698