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

Side by Side Diff: appengine/findit/handlers/test/try_job_result_test.py

Issue 1797093002: [Findit] Fix bug when display try job result for non-swarming step. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: . Created 4 years, 9 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 import webapp2 5 import webapp2
6 6
7 from testing_utils import testing 7 from testing_utils import testing
8 8
9 from handlers import try_job_result 9 from handlers import try_job_result
10 from model.wf_analysis import WfAnalysis
11 from model import wf_analysis_status
12 from model.wf_swarming_task import WfSwarmingTask
13 from model.wf_try_job import WfTryJob
14 from waterfall import buildbot 10 from waterfall import buildbot
15 11
16 12
17 class TryJobResultTest(testing.AppengineTestCase): 13 class TryJobResultTest(testing.AppengineTestCase):
18 app_module = webapp2.WSGIApplication([ 14 app_module = webapp2.WSGIApplication([
19 ('/try-job-result', try_job_result.TryJobResult),], debug=True) 15 ('/try-job-result', try_job_result.TryJobResult),], debug=True)
20 16
21 def setUp(self): 17 def setUp(self):
22 super(TryJobResultTest, self).setUp() 18 super(TryJobResultTest, self).setUp()
23 self.master_name = 'm' 19 self.master_name = 'm'
24 self.builder_name = 'b' 20 self.builder_name = 'b'
25 self.build_number = 121 21 self.build_number = 121
26 self.mock_current_user(user_email='test@chromium.org', is_admin=True) 22 self.mock_current_user(user_email='test@chromium.org', is_admin=True)
27 23
28 def testGetTryJobResultReturnNoneIfNoFailureResultMap(self):
29 analysis = WfAnalysis.Create(
30 self.master_name, self.builder_name, self.build_number)
31 analysis.put()
32
33 result = try_job_result._GetAllTryJobResults(
34 self.master_name, self.builder_name, self.build_number)
35
36 self.assertEqual({}, result)
37
38 def testGetTryJobResultReturnNoneIfNoTryJob(self):
39 analysis = WfAnalysis.Create(
40 self.master_name, self.builder_name, self.build_number)
41 analysis.failure_result_map = {
42 'compile': 'm/b/121'
43 }
44 analysis.put()
45
46 result = try_job_result._GetAllTryJobResults(
47 self.master_name, self.builder_name, self.build_number)
48
49 expected_result = {
50 'compile': {
51 'step': 'compile',
52 'test': 'N/A',
53 'try_job_key': 'm/b/121'
54 }
55 }
56
57 self.assertEqual(expected_result, result)
58
59 def testGetTryJobResultOnlyReturnStatusIfPending(self):
60 analysis = WfAnalysis.Create(
61 self.master_name, self.builder_name, self.build_number)
62 analysis.failure_result_map = {
63 'compile': 'm/b/121'
64 }
65 analysis.put()
66
67 try_job = WfTryJob.Create(
68 self.master_name, self.builder_name, self.build_number)
69 try_job.put()
70
71 result = try_job_result._GetAllTryJobResults(
72 self.master_name, self.builder_name, self.build_number)
73
74 expected_result = {
75 'compile': {
76 'step': 'compile',
77 'test': 'N/A',
78 'try_job_key': 'm/b/121',
79 'status': 'Pending'
80 }
81 }
82
83 self.assertEqual(expected_result, result)
84
85 def testGetTryJobResultOnlyReturnUrlIfStarts(self):
86 analysis = WfAnalysis.Create(
87 self.master_name, self.builder_name, self.build_number)
88 analysis.failure_result_map = {
89 'compile': 'm/b/121'
90 }
91 analysis.put()
92
93 try_job = WfTryJob.Create(
94 self.master_name, self.builder_name, self.build_number)
95 try_job.status = wf_analysis_status.ANALYZING
96 try_job.compile_results = [
97 {
98 'result': None,
99 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/'
100 'builders/linux_chromium_variable/builds/121')
101 }
102 ]
103 try_job.put()
104
105 result = try_job_result._GetAllTryJobResults(
106 self.master_name, self.builder_name, self.build_number)
107
108 expected_result = {
109 'compile': {
110 'step': 'compile',
111 'test': 'N/A',
112 'try_job_key': 'm/b/121',
113 'status': 'Running',
114 'try_job_build_number': 121,
115 'try_job_url': ('http://build.chromium.org/p/tryserver.chromium.'
116 'linux/builders/linux_chromium_variable/builds/121')
117 }
118 }
119 self.assertEqual(expected_result, result)
120
121 def testGetTryJobResultOnlyReturnStatusIfError(self):
122 analysis = WfAnalysis.Create(
123 self.master_name, self.builder_name, self.build_number)
124 analysis.failure_result_map = {
125 'compile': 'm/b/121'
126 }
127 analysis.put()
128
129 try_job = WfTryJob.Create(
130 self.master_name, self.builder_name, self.build_number)
131 try_job.status = wf_analysis_status.ERROR
132 try_job.compile_results = [
133 {
134 'try_job_id': '1'
135 }
136 ]
137 try_job.put()
138
139 result = try_job_result._GetAllTryJobResults(
140 self.master_name, self.builder_name, self.build_number)
141
142 expected_result = {
143 'compile': {
144 'step': 'compile',
145 'test': 'N/A',
146 'try_job_key': 'm/b/121',
147 'status': 'Error'
148 }
149 }
150
151 self.assertEqual(expected_result, result)
152
153 def testGetTryJobResultWhenTryJobCompleted(self):
154 analysis = WfAnalysis.Create(
155 self.master_name, self.builder_name, self.build_number)
156 analysis.failure_result_map = {
157 'compile': 'm/b/121'
158 }
159 analysis.put()
160
161 try_job = WfTryJob.Create(
162 self.master_name, self.builder_name, self.build_number)
163 try_job.status = wf_analysis_status.ANALYZED
164 try_job.compile_results = [
165 {
166 'result': [
167 ['rev1', 'passed'],
168 ['rev2', 'failed']
169 ],
170 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/'
171 'builders/linux_chromium_variable/builds/121'),
172 'try_job_id': '1',
173 'culprit': {
174 'compile': {
175 'revision': 'rev2',
176 'commit_position': '2',
177 'review_url': 'url_2'
178 }
179 }
180 }
181 ]
182 try_job.put()
183
184 result = try_job_result._GetAllTryJobResults(
185 self.master_name, self.builder_name, self.build_number)
186
187 expected_result = {
188 'compile': {
189 'step': 'compile',
190 'test': 'N/A',
191 'try_job_key': 'm/b/121',
192 'try_job_build_number': 121,
193 'status': 'Completed',
194 'try_job_url': (
195 'http://build.chromium.org/p/tryserver.chromium.linux/'
196 'builders/linux_chromium_variable/builds/121'),
197 'revision': 'rev2',
198 'commit_position': '2',
199 'review_url': 'url_2'
200 }
201 }
202
203 self.assertEqual(expected_result, result)
204
205 def testGetTryJobResultWhenTryJobCompletedAllPassed(self):
206 analysis = WfAnalysis.Create(
207 self.master_name, self.builder_name, self.build_number)
208 analysis.failure_result_map = {
209 'compile': 'm/b/121'
210 }
211 analysis.put()
212
213 try_job = WfTryJob.Create(
214 self.master_name, self.builder_name, self.build_number)
215 try_job.status = wf_analysis_status.ANALYZED
216 try_job.compile_results = [
217 {
218 'result': [
219 ['rev1', 'passed'],
220 ['rev2', 'passed']
221 ],
222 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/'
223 'builders/linux_chromium_variable/builds/121')
224 }
225 ]
226 try_job.put()
227
228 result = try_job_result._GetAllTryJobResults(
229 self.master_name, self.builder_name, self.build_number)
230
231 expected_result = {
232 'compile': {
233 'step': 'compile',
234 'test': 'N/A',
235 'try_job_key': 'm/b/121',
236 'try_job_build_number': 121,
237 'status': 'Completed',
238 'try_job_url': (
239 'http://build.chromium.org/p/tryserver.chromium.linux/'
240 'builders/linux_chromium_variable/builds/121')
241 }
242 }
243
244 self.assertEqual(expected_result, result)
245 24
246 def testTryJobResultHandler(self): 25 def testTryJobResultHandler(self):
247 build_url = buildbot.CreateBuildUrl( 26 build_url = buildbot.CreateBuildUrl(
248 self.master_name, self.builder_name, self.build_number) 27 self.master_name, self.builder_name, self.build_number)
249 response = self.test_app.get('/try-job-result', params={'url': build_url}) 28 response = self.test_app.get('/try-job-result', params={'url': build_url})
250 expected_results = {} 29 expected_results = {}
251 30
252 self.assertEqual(200, response.status_int) 31 self.assertEqual(200, response.status_int)
253 self.assertEqual(expected_results, response.json_body) 32 self.assertEqual(expected_results, response.json_body)
254
255 def testGetTryJobResultWhenTryJobForTestCompleted(self):
256 analysis = WfAnalysis.Create(
257 self.master_name, self.builder_name, self.build_number)
258 analysis.failure_result_map = {
259 'a_test': {
260 'a_test1': 'm/b/121',
261 'a_test2': 'm/b/121',
262 'a_test3': 'm/b/120',
263 'a_test4': 'm/b/121'
264 },
265 'b_test': {
266 'b_test1': 'm/b/121'
267 },
268 'c_test': 'm/b/121',
269 'd_test': 'm/b/122'
270 }
271 analysis.put()
272
273 task_120_a = WfSwarmingTask.Create(
274 self.master_name, self.builder_name, 120, 'a_test')
275 task_120_a.tests_statuses = {
276 'a_test3': {
277 'total_run': 1,
278 'FAILURE': 1
279 }
280 }
281 task_120_a.put()
282
283 task_121_a = WfSwarmingTask.Create(
284 self.master_name, self.builder_name, self.build_number, 'a_test')
285 task_121_a.tests_statuses = {
286 'a_test1': {
287 'total_run': 1,
288 'FAILURE': 1
289 },
290 'a_test2': {
291 'total_run': 1,
292 'FAILURE': 1
293 },
294 'a_test4': {
295 'total_run': 1,
296 'SUCCESS': 1
297 }
298 }
299 task_121_a.put()
300
301 task_121_b = WfSwarmingTask.Create(
302 self.master_name, self.builder_name, self.build_number, 'b_test')
303 task_121_b.tests_statuses = {
304 'b_test1': {
305 'total_run': 1,
306 'SUCCESS': 1
307 }
308 }
309 task_121_b.put()
310
311 try_job_120 = WfTryJob.Create(
312 self.master_name, self.builder_name, 120)
313 try_job_120.status = wf_analysis_status.ANALYZED
314 try_job_120.test_results = [
315 {
316 'result': {
317 'rev0': {
318 'a_test': {
319 'status': 'failed',
320 'valid': True,
321 'failures': ['a_test3']
322 }
323 }
324 },
325 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/'
326 'builders/linux_chromium_variable/builds/120'),
327 'try_job_id': '0',
328 'culprit': {
329 'a_test': {
330 'tests': {
331 'a_test3': {
332 'revision': 'rev0',
333 'commit_position': '0',
334 'review_url': 'url_0'
335 }
336 }
337 }
338 }
339 }
340 ]
341 try_job_120.put()
342
343 try_job_121 = WfTryJob.Create(
344 self.master_name, self.builder_name, self.build_number)
345 try_job_121.status = wf_analysis_status.ANALYZED
346 try_job_121.test_results = [
347 {
348 'result': {
349 'rev1': {
350 'a_test': {
351 'status': 'failed',
352 'valid': True,
353 'failures': ['a_test1']
354 },
355 'c_test': {
356 'status': 'passed',
357 'valid': True
358 }
359 },
360 'rev2': {
361 'a_test': {
362 'status': 'failed',
363 'valid': True,
364 'failures': ['a_test1']
365 },
366 'c_test': {
367 'status': 'failed',
368 'valid': True,
369 'failures': []
370 }
371 }
372 },
373 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/'
374 'builders/linux_chromium_variable/builds/121'),
375 'try_job_id': '1',
376 'culprit': {
377 'a_test': {
378 'tests': {
379 'a_test1': {
380 'revision': 'rev1',
381 'commit_position': '1',
382 'review_url': 'url_1'
383 }
384 }
385 },
386 'c_test': {
387 'revision': 'rev2',
388 'commit_position': '2',
389 'review_url': 'url_2',
390 'tests': {}
391 }
392 }
393 }
394 ]
395 try_job_121.put()
396
397 try_job_122 = WfTryJob.Create(
398 self.master_name, self.builder_name, 122)
399 try_job_122.status = wf_analysis_status.ANALYZED
400 try_job_122.test_results = [
401 {
402 'result': {
403 'rev3': {
404 'd_test': {
405 'status': 'passed',
406 'valid': True,
407 'failures': []
408 }
409 }
410 },
411 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/'
412 'builders/linux_chromium_variable/builds/122'),
413 'try_job_id': '2'
414 }
415 ]
416 try_job_122.put()
417
418 result = try_job_result._GetAllTryJobResults(
419 self.master_name, self.builder_name, self.build_number)
420
421 expected_result = {
422 'a_test-a_test1': {
423 'step': 'a_test',
424 'test': 'a_test1',
425 'try_job_key': 'm/b/121',
426 'try_job_build_number': 121,
427 'status': 'Completed',
428 'try_job_url': (
429 'http://build.chromium.org/p/tryserver.chromium.linux/'
430 'builders/linux_chromium_variable/builds/121'),
431 'revision': 'rev1',
432 'commit_position': '1',
433 'review_url': 'url_1'
434 },
435 'a_test-a_test2': {
436 'step': 'a_test',
437 'test': 'a_test2',
438 'try_job_key': 'm/b/121',
439 'status': 'Completed',
440 'try_job_build_number': 121,
441 'try_job_url': (
442 'http://build.chromium.org/p/tryserver.chromium.linux/'
443 'builders/linux_chromium_variable/builds/121')
444 },
445 'a_test-a_test3': {
446 'step': 'a_test',
447 'test': 'a_test3',
448 'try_job_key': 'm/b/120',
449 'try_job_build_number': 120,
450 'status': 'Completed',
451 'try_job_url': (
452 'http://build.chromium.org/p/tryserver.chromium.linux/'
453 'builders/linux_chromium_variable/builds/120'),
454 'revision': 'rev0',
455 'commit_position': '0',
456 'review_url': 'url_0'
457 },
458 'a_test-a_test4': {
459 'step': 'a_test',
460 'test': 'a_test4',
461 'try_job_key': 'm/b/121',
462 'status': 'Flaky'
463 },
464 'b_test-b_test1': {
465 'step': 'b_test',
466 'test': 'b_test1',
467 'try_job_key': 'm/b/121',
468 'status': 'Flaky'
469 },
470 'c_test': {
471 'step': 'c_test',
472 'test': 'N/A',
473 'try_job_key': 'm/b/121',
474 'try_job_build_number': 121,
475 'status': 'Completed',
476 'try_job_url': (
477 'http://build.chromium.org/p/tryserver.chromium.linux/'
478 'builders/linux_chromium_variable/builds/121'),
479 'revision': 'rev2',
480 'commit_position': '2',
481 'review_url': 'url_2'
482 },
483 'd_test': {
484 'step': 'd_test',
485 'test': 'N/A',
486 'try_job_key': 'm/b/122',
487 'try_job_build_number': 122,
488 'status': 'Completed',
489 'try_job_url': (
490 'http://build.chromium.org/p/tryserver.chromium.linux/'
491 'builders/linux_chromium_variable/builds/122')
492 }
493 }
494 self.assertEqual(expected_result, result)
OLDNEW
« no previous file with comments | « appengine/findit/handlers/test/swarming_task_test.py ('k') | appengine/findit/handlers/try_job_result.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698