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

Side by Side Diff: appengine/findit/waterfall/test/identify_culprit_pipeline_test.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 unified diff | Download patch
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 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 from testing_utils import testing 5 from testing_utils import testing
6 6
7 from common.pipeline_wrapper import pipeline_handlers 7 from common.pipeline_wrapper import pipeline_handlers
8 from common.waterfall import failure_type
9 from model import analysis_approach_type
8 from model import analysis_status 10 from model import analysis_status
9 from model import result_status 11 from model import result_status
10 from model.wf_analysis import WfAnalysis 12 from model.wf_analysis import WfAnalysis
13 from model.wf_suspected_cl import WfSuspectedCL
11 from waterfall import build_failure_analysis 14 from waterfall import build_failure_analysis
12 from waterfall import identify_culprit_pipeline 15 from waterfall import identify_culprit_pipeline
13 16
14 17
15 class IdentifyCulpritPipelineTest(testing.AppengineTestCase): 18 class IdentifyCulpritPipelineTest(testing.AppengineTestCase):
16 app_module = pipeline_handlers._APP 19 app_module = pipeline_handlers._APP
17 20
18 def testGetSuspectedCLs(self): 21 def testGetSuspectedCLs(self):
19 dummy_result = { 22 dummy_result = {
20 'failures': [ 23 'failures': [
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 } 197 }
195 198
196 self.assertEqual(result_status.NOT_FOUND_UNTRIAGED, 199 self.assertEqual(result_status.NOT_FOUND_UNTRIAGED,
197 identify_culprit_pipeline._GetResultAnalysisStatus( 200 identify_culprit_pipeline._GetResultAnalysisStatus(
198 dummy_result)) 201 dummy_result))
199 202
200 def testIdentifyCulpritPipeline(self): 203 def testIdentifyCulpritPipeline(self):
201 master_name = 'm' 204 master_name = 'm'
202 builder_name = 'b' 205 builder_name = 'b'
203 build_number = 123 206 build_number = 123
207 repo_name = 'chromium'
208 revision = 'r99_1'
204 209
205 analysis = WfAnalysis.Create(master_name, builder_name, build_number) 210 analysis = WfAnalysis.Create(master_name, builder_name, build_number)
206 analysis.result = None 211 analysis.result = None
207 analysis.status = analysis_status.RUNNING 212 analysis.status = analysis_status.RUNNING
208 analysis.put() 213 analysis.put()
209 214
210 failure_info = { 215 failure_info = {
211 'master_name': master_name, 216 'master_name': master_name,
212 'builder_name': builder_name, 217 'builder_name': builder_name,
213 'build_number': build_number, 218 'build_number': build_number,
219 'failure_type': failure_type.TEST
214 } 220 }
215 change_logs = {} 221 change_logs = {}
216 deps_info = {} 222 deps_info = {}
217 signals = {} 223 signals = {}
218 224
219 dummy_result = {'failures': []} 225 dummy_result = {
226 'failures': [
227 {
228 'step_name': 'a',
229 'first_failure': 98,
230 'last_pass': None,
231 'suspected_cls': [
232 {
233 'build_number': 99,
234 'repo_name': repo_name,
235 'revision': revision,
236 'commit_position': None,
237 'url': None,
238 'score': 1,
239 'hints': {
240 'modified f99_2.cc (and it was in log)': 1,
241 },
242 }
243 ],
244 }
245 ]
246 }
220 247
221 def MockAnalyzeBuildFailure(*_): 248 def MockAnalyzeBuildFailure(*_):
222 return dummy_result 249 return dummy_result
223 250
224 self.mock(build_failure_analysis, 251 self.mock(build_failure_analysis,
225 'AnalyzeBuildFailure', MockAnalyzeBuildFailure) 252 'AnalyzeBuildFailure', MockAnalyzeBuildFailure)
226 253
227 pipeline = identify_culprit_pipeline.IdentifyCulpritPipeline( 254 pipeline = identify_culprit_pipeline.IdentifyCulpritPipeline(
228 failure_info, change_logs, deps_info, signals, True) 255 failure_info, change_logs, deps_info, signals, True)
229 pipeline.start() 256 pipeline.start()
230 self.execute_queued_tasks() 257 self.execute_queued_tasks()
231 258
232 expected_suspected_cls = [] 259 expected_suspected_cls = [
260 {
261 'repo_name': repo_name,
262 'revision': revision,
263 'commit_position': None,
264 'url': None
265 }
266 ]
233 267
234 analysis = WfAnalysis.Get(master_name, builder_name, build_number) 268 analysis = WfAnalysis.Get(master_name, builder_name, build_number)
235 self.assertTrue(analysis.build_completed) 269 self.assertTrue(analysis.build_completed)
236 self.assertIsNotNone(analysis) 270 self.assertIsNotNone(analysis)
237 self.assertEqual(dummy_result, analysis.result) 271 self.assertEqual(dummy_result, analysis.result)
238 self.assertEqual(analysis_status.COMPLETED, analysis.status) 272 self.assertEqual(analysis_status.COMPLETED, analysis.status)
239 self.assertIsNone(analysis.result_status) 273 self.assertIsNotNone(analysis.result_status)
240 self.assertEqual(expected_suspected_cls, analysis.suspected_cls) 274 self.assertEqual(expected_suspected_cls, analysis.suspected_cls)
275
276 suspected_cl = WfSuspectedCL.Get(repo_name, revision)
277 self.assertIsNotNone(suspected_cl)
278 self.assertEqual(
279 [[master_name, builder_name, build_number]], suspected_cl.builds)
280
281 def testGetResultAnalysisStatusNone(self):
282 self.assertIsNone(identify_culprit_pipeline._GetResultAnalysisStatus([]))
283
284 def testGetSuspectedCLsEmpty(self):
285 self.assertEqual([], identify_culprit_pipeline._GetSuspectedCLs([]))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698