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

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

Issue 1866883002: [Findit] A huge refactoring and some bug fixing. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Fix nit. Created 4 years, 8 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.git_repository import GitRepository 7 from common.git_repository import GitRepository
8 from model import wf_analysis_status 8 from model import analysis_status
9 from model.wf_try_job import WfTryJob 9 from model.wf_try_job import WfTryJob
10 from model.wf_try_job_data import WfTryJobData 10 from model.wf_try_job_data import WfTryJobData
11 from waterfall.identify_try_job_culprit_pipeline import( 11 from waterfall.identify_try_job_culprit_pipeline import(
12 IdentifyTryJobCulpritPipeline) 12 IdentifyTryJobCulpritPipeline)
13 from waterfall.try_job_type import TryJobType 13 from waterfall.try_job_type import TryJobType
14 14
15 15
16 class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase): 16 class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
17 17
18 def _MockGetChangeLog(self, revision): 18 def _MockGetChangeLog(self, revision):
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 try_job.put() 86 try_job.put()
87 try_job_data = WfTryJobData.Create(try_job_id) 87 try_job_data = WfTryJobData.Create(try_job_id)
88 try_job_data.put() 88 try_job_data.put()
89 89
90 pipeline = IdentifyTryJobCulpritPipeline() 90 pipeline = IdentifyTryJobCulpritPipeline()
91 culprit = pipeline.run( 91 culprit = pipeline.run(
92 master_name, builder_name, build_number, ['rev1'], 92 master_name, builder_name, build_number, ['rev1'],
93 TryJobType.COMPILE, '1', None) 93 TryJobType.COMPILE, '1', None)
94 try_job = WfTryJob.Get(master_name, builder_name, build_number) 94 try_job = WfTryJob.Get(master_name, builder_name, build_number)
95 95
96 self.assertEqual(wf_analysis_status.ANALYZED, try_job.status) 96 self.assertEqual(analysis_status.COMPLETED, try_job.status)
97 self.assertEqual([], try_job.compile_results) 97 self.assertEqual([], try_job.compile_results)
98 self.assertIsNone(culprit) 98 self.assertIsNone(culprit)
99 self.assertIsNone(try_job_data.culprits) 99 self.assertIsNone(try_job_data.culprits)
100 100
101 def testIdentifyCulpritForCompileTryJobSuccess(self): 101 def testIdentifyCulpritForCompileTryJobSuccess(self):
102 master_name = 'm' 102 master_name = 'm'
103 builder_name = 'b' 103 builder_name = 'b'
104 build_number = 1 104 build_number = 1
105 try_job_id = '1' 105 try_job_id = '1'
106 106
107 compile_result = { 107 compile_result = {
108 'report': { 108 'report': {
109 'result': { 109 'result': {
110 'rev1': 'passed', 110 'rev1': 'passed',
111 'rev2': 'failed' 111 'rev2': 'failed'
112 }, 112 },
113 }, 113 },
114 } 114 }
115 115
116 try_job_data = WfTryJobData.Create(try_job_id) 116 try_job_data = WfTryJobData.Create(try_job_id)
117 try_job_data.put() 117 try_job_data.put()
118 118
119 try_job = WfTryJob.Create(master_name, builder_name, build_number) 119 try_job = WfTryJob.Create(master_name, builder_name, build_number)
120 try_job.status = wf_analysis_status.ANALYZING 120 try_job.status = analysis_status.RUNNING
121 try_job.compile_results = [{ 121 try_job.compile_results = [{
122 'report': { 122 'report': {
123 'result': { 123 'result': {
124 'rev1': 'passed', 124 'rev1': 'passed',
125 'rev2': 'failed' 125 'rev2': 'failed'
126 }, 126 },
127 }, 127 },
128 'try_job_id': try_job_id, 128 'try_job_id': try_job_id,
129 }] 129 }]
130 try_job.put() 130 try_job.put()
(...skipping 18 matching lines...) Expand all
149 'commit_position': '2', 149 'commit_position': '2',
150 'review_url': 'url_2' 150 'review_url': 'url_2'
151 } 151 }
152 } 152 }
153 } 153 }
154 154
155 self.assertEqual(expected_compile_result['culprit'], culprit) 155 self.assertEqual(expected_compile_result['culprit'], culprit)
156 156
157 try_job = WfTryJob.Get(master_name, builder_name, build_number) 157 try_job = WfTryJob.Get(master_name, builder_name, build_number)
158 self.assertEqual(expected_compile_result, try_job.compile_results[-1]) 158 self.assertEqual(expected_compile_result, try_job.compile_results[-1])
159 self.assertEqual(wf_analysis_status.ANALYZED, try_job.status) 159 self.assertEqual(analysis_status.COMPLETED, try_job.status)
160 160
161 try_job_data = WfTryJobData.Get(try_job_id) 161 try_job_data = WfTryJobData.Get(try_job_id)
162 self.assertEqual({'compile': expected_culprit}, try_job_data.culprits) 162 self.assertEqual({'compile': expected_culprit}, try_job_data.culprits)
163 163
164 def testIdentifyCulpritForCompileReturnNoneIfAllPassed(self): 164 def testIdentifyCulpritForCompileReturnNoneIfAllPassed(self):
165 master_name = 'm' 165 master_name = 'm'
166 builder_name = 'b' 166 builder_name = 'b'
167 build_number = 1 167 build_number = 1
168 try_job_id = '1' 168 try_job_id = '1'
169 169
(...skipping 11 matching lines...) Expand all
181 WfTryJobData.Create(try_job_id).put() 181 WfTryJobData.Create(try_job_id).put()
182 WfTryJob.Create(master_name, builder_name, build_number).put() 182 WfTryJob.Create(master_name, builder_name, build_number).put()
183 183
184 pipeline = IdentifyTryJobCulpritPipeline() 184 pipeline = IdentifyTryJobCulpritPipeline()
185 culprit = pipeline.run( 185 culprit = pipeline.run(
186 master_name, builder_name, build_number, ['rev1'], 186 master_name, builder_name, build_number, ['rev1'],
187 TryJobType.COMPILE, '1', compile_result) 187 TryJobType.COMPILE, '1', compile_result)
188 try_job = WfTryJob.Get(master_name, builder_name, build_number) 188 try_job = WfTryJob.Get(master_name, builder_name, build_number)
189 189
190 self.assertIsNone(culprit) 190 self.assertIsNone(culprit)
191 self.assertEqual(wf_analysis_status.ANALYZED, try_job.status) 191 self.assertEqual(analysis_status.COMPLETED, try_job.status)
192 192
193 try_job_data = WfTryJobData.Get(try_job_id) 193 try_job_data = WfTryJobData.Get(try_job_id)
194 self.assertIsNone(try_job_data.culprits) 194 self.assertIsNone(try_job_data.culprits)
195 195
196 def testIdentifyCulpritForTestTryJobReturnNoneIfNoTryJobResult(self): 196 def testIdentifyCulpritForTestTryJobReturnNoneIfNoTryJobResult(self):
197 master_name = 'm' 197 master_name = 'm'
198 builder_name = 'b' 198 builder_name = 'b'
199 build_number = 1 199 build_number = 1
200 try_job_id = '1' 200 try_job_id = '1'
201 201
202 WfTryJobData.Create(try_job_id).put() 202 WfTryJobData.Create(try_job_id).put()
203 try_job = WfTryJob.Create(master_name, builder_name, build_number) 203 try_job = WfTryJob.Create(master_name, builder_name, build_number)
204 try_job.status = wf_analysis_status.ANALYZING 204 try_job.status = analysis_status.RUNNING
205 try_job.put() 205 try_job.put()
206 206
207 pipeline = IdentifyTryJobCulpritPipeline() 207 pipeline = IdentifyTryJobCulpritPipeline()
208 culprit = pipeline.run( 208 culprit = pipeline.run(
209 master_name, builder_name, build_number, ['rev1', 'rev2'], 209 master_name, builder_name, build_number, ['rev1', 'rev2'],
210 TryJobType.TEST, '1', None) 210 TryJobType.TEST, '1', None)
211 211
212 self.assertIsNone(culprit) 212 self.assertIsNone(culprit)
213 213
214 try_job_data = WfTryJobData.Get(try_job_id) 214 try_job_data = WfTryJobData.Get(try_job_id)
(...skipping 16 matching lines...) Expand all
231 } 231 }
232 } 232 }
233 } 233 }
234 }, 234 },
235 'url': 'url', 235 'url': 'url',
236 'try_job_id': try_job_id 236 'try_job_id': try_job_id
237 } 237 }
238 238
239 WfTryJobData.Create(try_job_id).put() 239 WfTryJobData.Create(try_job_id).put()
240 try_job = WfTryJob.Create(master_name, builder_name, build_number) 240 try_job = WfTryJob.Create(master_name, builder_name, build_number)
241 try_job.status = wf_analysis_status.ANALYZING 241 try_job.status = analysis_status.RUNNING
242 try_job.put() 242 try_job.put()
243 243
244 pipeline = IdentifyTryJobCulpritPipeline() 244 pipeline = IdentifyTryJobCulpritPipeline()
245 culprit = pipeline.run( 245 culprit = pipeline.run(
246 master_name, builder_name, build_number, [], TryJobType.TEST, '1', 246 master_name, builder_name, build_number, [], TryJobType.TEST, '1',
247 test_result) 247 test_result)
248 248
249 self.assertIsNone(culprit) 249 self.assertIsNone(culprit)
250 250
251 try_job_data = WfTryJobData.Get(try_job_id) 251 try_job_data = WfTryJobData.Get(try_job_id)
(...skipping 16 matching lines...) Expand all
268 } 268 }
269 } 269 }
270 } 270 }
271 }, 271 },
272 'url': 'url', 272 'url': 'url',
273 'try_job_id': try_job_id 273 'try_job_id': try_job_id
274 } 274 }
275 275
276 WfTryJobData.Create(try_job_id).put() 276 WfTryJobData.Create(try_job_id).put()
277 try_job = WfTryJob.Create(master_name, builder_name, build_number) 277 try_job = WfTryJob.Create(master_name, builder_name, build_number)
278 try_job.status = wf_analysis_status.ANALYZING 278 try_job.status = analysis_status.RUNNING
279 try_job.put() 279 try_job.put()
280 280
281 pipeline = IdentifyTryJobCulpritPipeline() 281 pipeline = IdentifyTryJobCulpritPipeline()
282 culprit = pipeline.run( 282 culprit = pipeline.run(
283 master_name, builder_name, build_number, ['rev3'], TryJobType.TEST, 283 master_name, builder_name, build_number, ['rev3'], TryJobType.TEST,
284 '1', test_result) 284 '1', test_result)
285 285
286 expected_culprit = { 286 expected_culprit = {
287 'a_test': { 287 'a_test': {
288 'tests': { 288 'tests': {
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 } 344 }
345 } 345 }
346 } 346 }
347 }, 347 },
348 'url': 'url', 348 'url': 'url',
349 'try_job_id': try_job_id 349 'try_job_id': try_job_id
350 } 350 }
351 351
352 WfTryJobData.Create(try_job_id).put() 352 WfTryJobData.Create(try_job_id).put()
353 try_job = WfTryJob.Create(master_name, builder_name, build_number) 353 try_job = WfTryJob.Create(master_name, builder_name, build_number)
354 try_job.status = wf_analysis_status.ANALYZING 354 try_job.status = analysis_status.RUNNING
355 try_job.test_results = [test_result] 355 try_job.test_results = [test_result]
356 try_job.put() 356 try_job.put()
357 357
358 pipeline = IdentifyTryJobCulpritPipeline() 358 pipeline = IdentifyTryJobCulpritPipeline()
359 culprit = pipeline.run( 359 culprit = pipeline.run(
360 master_name, builder_name, build_number, ['rev1', 'rev2'], 360 master_name, builder_name, build_number, ['rev1', 'rev2'],
361 TryJobType.TEST, '1', test_result) 361 TryJobType.TEST, '1', test_result)
362 362
363 expected_test_result = { 363 expected_test_result = {
364 'report': { 364 'report': {
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 'review_url': 'url_2', 429 'review_url': 'url_2',
430 'tests': {} 430 'tests': {}
431 } 431 }
432 } 432 }
433 } 433 }
434 434
435 self.assertEqual(expected_test_result['culprit'], culprit) 435 self.assertEqual(expected_test_result['culprit'], culprit)
436 436
437 try_job = WfTryJob.Get(master_name, builder_name, build_number) 437 try_job = WfTryJob.Get(master_name, builder_name, build_number)
438 self.assertEqual(expected_test_result, try_job.test_results[-1]) 438 self.assertEqual(expected_test_result, try_job.test_results[-1])
439 self.assertEqual(wf_analysis_status.ANALYZED, try_job.status) 439 self.assertEqual(analysis_status.COMPLETED, try_job.status)
440 440
441 try_job_data = WfTryJobData.Get(try_job_id) 441 try_job_data = WfTryJobData.Get(try_job_id)
442 expected_culprit_data = { 442 expected_culprit_data = {
443 'a_test': { 443 'a_test': {
444 'a_test1': 'rev1', 444 'a_test1': 'rev1',
445 'a_test2': 'rev2', 445 'a_test2': 'rev2',
446 }, 446 },
447 'b_test': { 447 'b_test': {
448 'b_test1': 'rev1', 448 'b_test1': 'rev1',
449 }, 449 },
450 'c_test': 'rev2' 450 'c_test': 'rev2'
451 } 451 }
452 self.assertEqual(expected_culprit_data, try_job_data.culprits) 452 self.assertEqual(expected_culprit_data, try_job_data.culprits)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698