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

Side by Side Diff: appengine/findit/waterfall/flake/test/initialize_flake_pipeline_test.py

Issue 2130543004: Waterfall components of regression range finder. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: linted, tests Created 4 years, 5 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
(Empty)
1 # Copyright 2015 The Chromium Authors. All rights reserved.
chanli 2016/07/26 17:41:05 Nit: 2015 -> 2016
caiw 2016/07/26 20:19:44 Done.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4 from common import constants
5 from common.pipeline_wrapper import pipeline_handlers
6 import mock
chanli 2016/07/26 17:41:05 This import should be the first one and in a separ
caiw 2016/07/26 20:19:44 Got it - does that mean I shouldn't trust gpylint
7 from model import analysis_status
8 from model.flake.master_flake_analysis import MasterFlakeAnalysis
9 from waterfall.flake.initialize_flake_pipeline import NeedANewAnalysis
10 from waterfall.flake.initialize_flake_pipeline import ScheduleAnalysisIfNeeded
11 from waterfall.test import wf_testcase
12
13
14 class InitializeFlakePipelineTest(wf_testcase.WaterfallTestCase):
15 app_module = pipeline_handlers._APP
16
17 def _CreateAndSaveMasterFlakeAnalysis(
18 self, master_name, builder_name, build_number,
19 step_name, test_name, status):
20 analysis = MasterFlakeAnalysis.Create(
21 master_name, builder_name, build_number, step_name, test_name)
22 analysis.status = status
23 analysis.put()
24
25 def testAnalysisIsNeededWhenNoneExists(self):
26 master_name = 'm'
27 builder_name = 'b 1'
28 build_number = 123
29 step_name = 's'
30 test_name = 't'
31
32 need_analysis = NeedANewAnalysis(
33 master_name, builder_name, build_number, step_name, test_name)
34
35 self.assertTrue(need_analysis)
36
37 def testAnalysisIsNeededAfterCrashedAnalysis(self):
38 master_name = 'm'
39 builder_name = 'b 1'
40 build_number = 123
41 step_name = 's'
42 test_name = 't'
43 status = analysis_status.ERROR
44 self._CreateAndSaveMasterFlakeAnalysis(
45 master_name, builder_name, build_number, step_name,
46 test_name, status=status)
47
48 need_analysis = NeedANewAnalysis(
49 master_name, builder_name, build_number, step_name, test_name)
50
51 self.assertTrue(need_analysis)
52
53 def testAnalysisIsNotNeededAfterCompletedAnalysis(self):
54 master_name = 'm'
55 builder_name = 'b 1'
56 build_number = 123
57 step_name = 's'
58 test_name = 't'
59 for status in [analysis_status.RUNNING,
60 analysis_status.PENDING,
61 analysis_status.COMPLETED]:
chanli 2016/07/26 17:41:05 Maybe use different build_number or test_name to c
caiw 2016/07/26 20:19:44 Done.
62 self._CreateAndSaveMasterFlakeAnalysis(
63 master_name, builder_name, build_number,
64 step_name, test_name, status=status)
65
66 need_analysis = NeedANewAnalysis(
67 master_name, builder_name, build_number, step_name, test_name)
68
69 self.assertFalse(need_analysis)
70
71 @mock.patch(
72 'waterfall.flake.initialize_flake_pipeline.RecursiveFlakePipeline')
73 def testStartPipelineForNewAnalysis(self, mocked_pipeline):
74 master_name = 'm'
75 builder_name = 'b'
76 build_number = 124
77 step_name = 's'
78 test_name = 't'
79
80 ScheduleAnalysisIfNeeded(
81 master_name, builder_name, build_number,
82 step_name, test_name,
83 queue_name=constants.DEFAULT_QUEUE)
84
85 analysis = MasterFlakeAnalysis.Get(master_name, builder_name,
86 build_number, step_name, test_name)
87 self.assertIsNotNone(analysis)
88 mocked_pipeline.assert_has_calls(
89 [mock.call().start(queue_name=constants.DEFAULT_QUEUE)])
90
91 @mock.patch(
92 'waterfall.flake.recursive_flake_pipeline.RecursiveFlakePipeline')
93 def testNotStartPipelineForNewAnalysis(self, mocked_pipeline):
94 master_name = 'm'
95 builder_name = 'b'
96 build_number = 124
97 step_name = 's'
98 test_name = 't'
99
100 self._CreateAndSaveMasterFlakeAnalysis(
101 master_name, builder_name, build_number, step_name, test_name,
102 status=analysis_status.COMPLETED)
103
104 ScheduleAnalysisIfNeeded(
105 master_name, builder_name, build_number,
106 step_name, test_name,
107 queue_name=constants.DEFAULT_QUEUE)
108
109 self.assertFalse(mocked_pipeline.called)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698