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

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: rebase Created 4 years, 2 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 ffdc5ec0b9be7916d1e13d5b692ff78061923ddb..e6b32f5db0836ad7234f72ca1121acb92b257815 100644
--- a/appengine/findit/waterfall/identify_culprit_pipeline.py
+++ b/appengine/findit/waterfall/identify_culprit_pipeline.py
@@ -5,10 +5,12 @@
from common import time_util
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 waterfall import build_failure_analysis
+from waterfall import suspected_cl_util
def _GetResultAnalysisStatus(analysis_result):
@@ -31,23 +33,32 @@ def _GetResultAnalysisStatus(analysis_result):
return result_status.NOT_FOUND_UNTRIAGED
-def _GetSuspectedCLs(analysis_result):
- """Returns the suspected CLs we found in analysis."""
- suspected_cls = []
- if not analysis_result or not analysis_result['failures']:
- return suspected_cls
+def _SaveSuspectedCLs(
+ suspected_cls, master_name, builder_name, build_number, failure_type):
+ """Saves suspected CLs to dataStore."""
+ for suspected_cl in suspected_cls:
+ suspected_cl_util.UpdateSuspectedCL(
+ suspected_cl['repo_name'], suspected_cl['revision'],
+ suspected_cl['commit_position'], analysis_approach_type.HEURISTIC,
+ master_name, builder_name, build_number, failure_type,
+ suspected_cl['failures'], suspected_cl['top_score'])
- for failure in analysis_result['failures']:
- for suspected_cl in failure['suspected_cls']:
- cl_info = {
- 'repo_name': suspected_cl['repo_name'],
- 'revision': suspected_cl['revision'],
- 'commit_position': suspected_cl['commit_position'],
- 'url': suspected_cl['url']
- }
- if cl_info not in suspected_cls:
- suspected_cls.append(cl_info)
- return suspected_cls
+
+def _GetSuspectedCLsWithOnlyCLInfo(suspected_cls):
+ """Removes failures and top_score from suspected_cls.
+
+ Makes sure suspected_cls from heuristic or try_job have the same format.
+ """
+ simplified_suspected_cls = []
+ for cl in suspected_cls:
+ simplified_cl = {
+ 'repo_name': cl['repo_name'],
+ 'revision': cl['revision'],
+ 'commit_position': cl['commit_position'],
+ 'url': cl['url']
+ }
+ simplified_suspected_cls.append(simplified_cl)
+ return simplified_suspected_cls
class IdentifyCulpritPipeline(BasePipeline):
@@ -63,22 +74,26 @@ class IdentifyCulpritPipeline(BasePipeline):
signals (dict): Output of pipeline ExtractSignalPipeline.
Returns:
- The same dict as the returned value of function
- build_failure_analysis.AnalyzeBuildFailure.
+ analysis_result returned by build_failure_analysis.AnalyzeBuildFailure.
"""
master_name = failure_info['master_name']
builder_name = failure_info['builder_name']
build_number = failure_info['build_number']
- analysis_result = build_failure_analysis.AnalyzeBuildFailure(
+ analysis_result, suspected_cls = build_failure_analysis.AnalyzeBuildFailure(
failure_info, change_logs, deps_info, signals)
analysis = WfAnalysis.Get(master_name, builder_name, build_number)
analysis.build_completed = build_completed
analysis.result = analysis_result
analysis.status = analysis_status.COMPLETED
analysis.result_status = _GetResultAnalysisStatus(analysis_result)
- analysis.suspected_cls = _GetSuspectedCLs(analysis_result)
+ analysis.suspected_cls = _GetSuspectedCLsWithOnlyCLInfo(suspected_cls)
analysis.end_time = time_util.GetUTCNow()
analysis.put()
+ # Save suspected_cls to data_store.
+ _SaveSuspectedCLs(
+ suspected_cls, failure_info['master_name'],
+ failure_info['builder_name'], failure_info['build_number'],
+ failure_info['failure_type'])
return analysis_result
« no previous file with comments | « appengine/findit/waterfall/build_util.py ('k') | appengine/findit/waterfall/identify_try_job_culprit_pipeline.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698