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

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

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

Powered by Google App Engine
This is Rietveld 408576698