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

Side by Side Diff: appengine/findit/waterfall/test/trigger_swarming_tasks_pipeline_test.py

Issue 2139093002: [Findit] Trigger swarming tasks after detech_first_faliure_pipeline (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: . 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 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 from common.pipeline_wrapper import BasePipeline
6 from common.pipeline_wrapper import pipeline_handlers
7 from common.waterfall import failure_type
8 from model.wf_analysis import WfAnalysis
9 from waterfall import trigger_swarming_task_pipeline
10 from waterfall import trigger_swarming_tasks_pipeline
11 from waterfall.test import wf_testcase
12 from waterfall.trigger_swarming_tasks_pipeline import (
13 TriggerSwarmingTasksPipeline)
14 from waterfall.trigger_swarming_task_pipeline import TriggerSwarmingTaskPipeline
15
16
17 class _MockedTriggerSwarmingTaskPipeline(BasePipeline):
18 count = 0
19 def run(self, *_):
20 _MockedTriggerSwarmingTaskPipeline.count += 1
21
22
23 class TriggerSwarmingTasksPipelineTest(wf_testcase.WaterfallTestCase):
24 app_module = pipeline_handlers._APP
25
26 def testGetsStepsNeedToTriggerSwarmingTasksNoAnalysis(self):
27 result = (
28 trigger_swarming_tasks_pipeline._GetsStepsNeedToTriggerSwarmingTasks(
29 'm', 'b', 1, {}))
30 self.assertEqual(result, {})
31
32 def testGetsStepsNeedToTriggerSwarmingTasksNoFailureResultMap(self):
33 master_name = 'm'
34 builder_name = 'b'
35 build_number = 2
36 WfAnalysis.Create(master_name, builder_name, build_number).put()
37
38 failure_info = {
39 'failed': True,
40 'master_name': 'm',
41 'builder_name': 'b',
42 'build_number': 2,
43 'chromium_revision': None,
44 'builds': {
45 2: {
46 'blame_list': [],
47 'chromium_revision': None
48 }
49 },
50 'failed_steps': {
51 'abc_test': {
52 'current_failure': 2,
53 'first_failure': 1,
54 'last_pass': 0,
55 'tests': {
56 'Unittest2.Subtest1': {
57 'current_failure': 2,
58 'first_failure': 2,
59 'last_pass': 1,
60 'base_test_name': 'Unittest2.Subtest1'
61 },
62 'Unittest3.Subtest2': {
63 'current_failure': 2,
64 'first_failure': 1,
65 'last_pass': 0,
66 'base_test_name': 'Unittest3.Subtest2'
67 }
68 }
69 },
70 'a_test': {
71 'current_failure': 2,
72 'first_failure': 1,
73 'last_pass': 0,
74 }
75 },
76 'failure_type': failure_type.TEST
77 }
78
79 expected_result = {
80 'abc_test': ['Unittest2.Subtest1']
81 }
82 result = (
83 trigger_swarming_tasks_pipeline._GetsStepsNeedToTriggerSwarmingTasks(
84 master_name, builder_name, build_number, failure_info))
85 self.assertEqual(result, expected_result)
86
87 def testGetsStepsNeedToTriggerSwarmingTasks(self):
88 master_name = 'm'
89 builder_name = 'b'
90 build_number = 2
91 analysis = WfAnalysis.Create(master_name, builder_name, build_number)
92 analysis.failure_result_map = {
93 'a_tests': {
94 'Unittest1.Subtest1': 'm/b/1'
95 }
96 }
97 analysis.put()
98
99 failure_info = {
100 'failed': True,
101 'master_name': 'm',
102 'builder_name': 'b',
103 'build_number': 2,
104 'chromium_revision': None,
105 'builds': {
106 2: {
107 'blame_list': [],
108 'chromium_revision': None
109 }
110 },
111 'failed_steps': {
112 'abc_test': {
113 'current_failure': 2,
114 'first_failure': 1,
115 'last_pass': 0,
116 'tests': {
117 'Unittest2.Subtest1': {
118 'current_failure': 2,
119 'first_failure': 2,
120 'last_pass': 1,
121 'base_test_name': 'Unittest2.Subtest1'
122 },
123 'Unittest3.Subtest2': {
124 'current_failure': 2,
125 'first_failure': 1,
126 'last_pass': 0,
127 'base_test_name': 'Unittest3.Subtest2'
128 }
129 }
130 },
131 'a_tests': {
132 'current_failure': 2,
133 'first_failure': 1,
134 'last_pass': 0,
135 'tests': {
136 'Unittest1.Subtest1': {
137 'current_failure': 2,
138 'first_failure': 1,
139 'last_pass': 0,
140 'base_test_name': 'Unittest3.Subtest2'
141 }
142 }
143 }
144 },
145 'failure_type': failure_type.TEST
146 }
147
148 expected_result = {
149 'abc_test': ['Unittest2.Subtest1']
150 }
151 result = (
152 trigger_swarming_tasks_pipeline._GetsStepsNeedToTriggerSwarmingTasks(
153 master_name, builder_name, build_number, failure_info))
154 self.assertEqual(result, expected_result)
155
156 def testTriggerSwarmingTasksPipelineNoFailureInfo(self):
157 self.mock(trigger_swarming_task_pipeline, 'TriggerSwarmingTaskPipeline',
158 _MockedTriggerSwarmingTaskPipeline)
159 pipeline = TriggerSwarmingTasksPipeline('m', 'b', 1, {})
160 pipeline.start()
161 self.execute_queued_tasks()
162 self.assertEqual(_MockedTriggerSwarmingTaskPipeline.count, 0)
163
164 def testTriggerSwarmingTasksPipeline(self):
165 master_name = 'm'
166 builder_name = 'b'
167 build_number = 2
168 analysis = WfAnalysis.Create(master_name, builder_name, build_number)
169 analysis.failure_result_map = {
170 'a_tests': {
171 'Unittest1.Subtest1': 'm/b/1'
172 }
173 }
174 analysis.put()
175
176 failure_info = {
177 'failed': True,
178 'master_name': 'm',
179 'builder_name': 'b',
180 'build_number': 2,
181 'chromium_revision': None,
182 'builds': {
183 2: {
184 'blame_list': [],
185 'chromium_revision': None
186 }
187 },
188 'failed_steps': {
189 'abc_test': {
190 'current_failure': 2,
191 'first_failure': 1,
192 'last_pass': 0,
193 'tests': {
194 'Unittest2.Subtest1': {
195 'current_failure': 2,
196 'first_failure': 2,
197 'last_pass': 1,
198 'base_test_name': 'Unittest2.Subtest1'
199 },
200 'Unittest3.Subtest2': {
201 'current_failure': 2,
202 'first_failure': 1,
203 'last_pass': 0,
204 'base_test_name': 'Unittest3.Subtest2'
205 }
206 }
207 },
208 'a_tests': {
209 'current_failure': 2,
210 'first_failure': 1,
211 'last_pass': 0,
212 'tests': {
213 'Unittest1.Subtest1': {
214 'current_failure': 2,
215 'first_failure': 1,
216 'last_pass': 0,
217 'base_test_name': 'Unittest3.Subtest2'
218 }
219 }
220 }
221 },
222 'failure_type': failure_type.TEST
223 }
224
225 self.mock(trigger_swarming_task_pipeline, 'TriggerSwarmingTaskPipeline',
226 _MockedTriggerSwarmingTaskPipeline)
227 pipeline = TriggerSwarmingTasksPipeline(
228 master_name, builder_name, build_number, failure_info)
229 pipeline.start()
230 self.execute_queued_tasks()
231 self.assertEqual(_MockedTriggerSwarmingTaskPipeline.count, 1)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698