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

Side by Side Diff: appengine/findit/model/flake/master_flake_analysis.py

Issue 2608853002: [Findit] Adding suspected CL to master flake analysis in preparation for try jobs (Closed)
Patch Set: 2016 -> 2017 Created 3 years, 11 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 unified diff | Download patch
OLDNEW
1 # Copyright 2016 The Chromium Authors. All rights reserved. 1 # Copyright 2016 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 import base64 5 import base64
6 import logging
6 7
7 from google.appengine.ext import ndb 8 from google.appengine.ext import ndb
8 9
10 from gae_libs.gitiles.cached_gitiles_repository import CachedGitilesRepository
9 from gae_libs.model.versioned_model import VersionedModel 11 from gae_libs.model.versioned_model import VersionedModel
10 from model import result_status 12 from model import result_status
11 from model import triage_status 13 from model import triage_status
12 from model.base_analysis import BaseAnalysis 14 from model.base_analysis import BaseAnalysis
13 from model.base_build_model import BaseBuildModel 15 from model.base_build_model import BaseBuildModel
14 from model.base_triaged_model import TriagedModel 16 from model.base_triaged_model import TriagedModel
17 from model.flake.flake_culprit import FlakeCulprit
15 from model.flake.flake_swarming_task import FlakeSwarmingTaskData 18 from model.flake.flake_swarming_task import FlakeSwarmingTaskData
16 19
17 20
18 class DataPoint(ndb.Model): 21 class DataPoint(ndb.Model):
19 build_number = ndb.IntegerProperty(indexed=False) 22 build_number = ndb.IntegerProperty(indexed=False)
20 pass_rate = ndb.FloatProperty(indexed=False) 23 pass_rate = ndb.FloatProperty(indexed=False)
21 task_id = ndb.StringProperty(indexed=False) 24 task_id = ndb.StringProperty(indexed=False)
22 commit_position = ndb.IntegerProperty(indexed=False) 25 commit_position = ndb.IntegerProperty(indexed=False)
23 git_hash = ndb.StringProperty(indexed=False) 26 git_hash = ndb.StringProperty(indexed=False)
24 previous_build_commit_position = ndb.IntegerProperty(indexed=False) 27 previous_build_commit_position = ndb.IntegerProperty(indexed=False)
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 def UpdateTriageResult(self, triage_result, suspect_info, user_name, 91 def UpdateTriageResult(self, triage_result, suspect_info, user_name,
89 version_number=None): 92 version_number=None):
90 super(MasterFlakeAnalysis, self).UpdateTriageResult( 93 super(MasterFlakeAnalysis, self).UpdateTriageResult(
91 triage_result, suspect_info, user_name, version_number=version_number) 94 triage_result, suspect_info, user_name, version_number=version_number)
92 95
93 if triage_result == triage_status.TRIAGED_CORRECT: 96 if triage_result == triage_status.TRIAGED_CORRECT:
94 self.result_status = result_status.FOUND_CORRECT 97 self.result_status = result_status.FOUND_CORRECT
95 else: 98 else:
96 self.result_status = result_status.FOUND_INCORRECT 99 self.result_status = result_status.FOUND_INCORRECT
97 100
101 def GetSuspectedFlakeDataPoint(self):
chanli 2017/01/07 02:56:28 This function needs to be updated after our discus
lijeffrey 2017/01/09 20:53:31 Yes, per discussion we will have 1 group of data p
102 """Gets the corresponding data point to the suspected flake build."""
103 if self.suspected_flake_build_number is not None:
104 for data_point in self.data_points:
105 if data_point.build_number == self.suspected_flake_build_number:
106 return data_point
107
108 return None
109
98 def Reset(self): 110 def Reset(self):
99 super(MasterFlakeAnalysis, self).Reset() 111 super(MasterFlakeAnalysis, self).Reset()
100 self.original_master_name = None 112 self.original_master_name = None
101 self.original_builder_name = None 113 self.original_builder_name = None
102 self.original_build_number = None 114 self.original_build_number = None
103 self.original_step_name = None 115 self.original_step_name = None
104 self.original_test_name = None 116 self.original_test_name = None
105 self.bug_id = None 117 self.bug_id = None
106 self.swarming_rerun_results = [] 118 self.swarming_rerun_results = []
107 self.error = None 119 self.error = None
108 self.correct_regression_range = None 120 self.correct_regression_range = None
109 self.correct_culprit = None 121 self.correct_culprit = None
110 self.algorithm_parameters = None 122 self.algorithm_parameters = None
111 self.suspected_flake_build_number = None 123 self.suspected_flake_build_number = None
124 self.culprit = None
125 self.try_job_status = None
112 self.data_points = [] 126 self.data_points = []
113 self.result_status = None 127 self.result_status = None
114 128
115 # The original build/step/test in which a flake actually occurred. 129 # The original build/step/test in which a flake actually occurred.
116 # A CQ trybot step has to be mapped to a Waterfall buildbot step. 130 # A CQ trybot step has to be mapped to a Waterfall buildbot step.
117 # A gtest suite.PRE_PRE_test has to be normalized to suite.test. 131 # A gtest suite.PRE_PRE_test has to be normalized to suite.test.
118 original_master_name = ndb.StringProperty(indexed=True) 132 original_master_name = ndb.StringProperty(indexed=True)
119 original_builder_name = ndb.StringProperty(indexed=True) 133 original_builder_name = ndb.StringProperty(indexed=True)
120 original_build_number = ndb.IntegerProperty(indexed=True) 134 original_build_number = ndb.IntegerProperty(indexed=True)
121 original_step_name = ndb.StringProperty(indexed=True) 135 original_step_name = ndb.StringProperty(indexed=True)
(...skipping 29 matching lines...) Expand all
151 # 'max_build_numbers_to_look_back': 500, 165 # 'max_build_numbers_to_look_back': 500,
152 # 'max_flake_in_a_row': 4, 166 # 'max_flake_in_a_row': 4,
153 # 'max_stable_in_a_row': 4, 167 # 'max_stable_in_a_row': 4,
154 # 'upper_flake_threshold': 0.98 168 # 'upper_flake_threshold': 0.98
155 # } 169 # }
156 algorithm_parameters = ndb.JsonProperty(indexed=False) 170 algorithm_parameters = ndb.JsonProperty(indexed=False)
157 171
158 # The suspected build number to have introduced the flakiness. 172 # The suspected build number to have introduced the flakiness.
159 suspected_flake_build_number = ndb.IntegerProperty() 173 suspected_flake_build_number = ndb.IntegerProperty()
160 174
175 # The culprit CL associated with the try job results, if any.
176 culprit = ndb.LocalStructuredProperty(FlakeCulprit)
177
178 # The status of the try job, if any. None if no suspected flake build number
chanli 2017/01/07 02:56:28 Flake revision instead of flake build number?
lijeffrey 2017/01/09 20:53:31 Renamed "None if try jobs have not been triggered"
179 # yet.
180 try_job_status = ndb.IntegerProperty(indexed=False)
181
161 # The data points used to plot the flakiness graph build over build. 182 # The data points used to plot the flakiness graph build over build.
162 data_points = ndb.LocalStructuredProperty( 183 data_points = ndb.LocalStructuredProperty(
163 DataPoint, repeated=True, compressed=True) 184 DataPoint, repeated=True, compressed=True)
164 185
165 # Whether the analysis was triggered by a manual request through check flake, 186 # Whether the analysis was triggered by a manual request through check flake,
166 # Findit's automatic analysis upon detection, or Findit API. 187 # Findit's automatic analysis upon detection, or Findit API.
167 triggering_source = ndb.IntegerProperty(default=None, indexed=True) 188 triggering_source = ndb.IntegerProperty(default=None, indexed=True)
168 189
169 # Who triggered the analysis. Used for differentiating between manual and 190 # Who triggered the analysis. Used for differentiating between manual and
170 # automatic runs, and determining the most active users to gather feedback. 191 # automatic runs, and determining the most active users to gather feedback.
171 triggering_user_email = ndb.StringProperty(default=None, indexed=False) 192 triggering_user_email = ndb.StringProperty(default=None, indexed=False)
172 193
173 # Overall conclusion of analysis result for the flake. Found untriaged, Found 194 # Overall conclusion of analysis result for the flake. Found untriaged, Found
174 # Correct, etc. used to filter what is displayed on the check flake dashboard. 195 # Correct, etc. used to filter what is displayed on the check flake dashboard.
175 result_status = ndb.IntegerProperty(indexed=True) 196 result_status = ndb.IntegerProperty(indexed=True)
OLDNEW
« no previous file with comments | « appengine/findit/model/flake/flake_culprit.py ('k') | appengine/findit/model/flake/test/flake_culprit_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698