OLD | NEW |
| (Empty) |
1 #!/usr/bin/env python | |
2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | |
3 # Use of this source code is governed by a BSD-style license that can be | |
4 # found in the LICENSE file. | |
5 | |
6 """Unit tests for verification/try_job_steps.py.""" | |
7 | |
8 import os | |
9 import sys | |
10 import unittest | |
11 | |
12 ROOT_DIR = os.path.dirname(os.path.abspath(__file__)) | |
13 sys.path.insert(0, os.path.join(ROOT_DIR, '..')) | |
14 | |
15 from verification import try_job_steps | |
16 from verification import try_job_on_rietveld | |
17 | |
18 | |
19 def CreateRietveldTryJob(builder, requested_steps, steps_passed, steps_failed): | |
20 return try_job_on_rietveld.RietveldTryJob( | |
21 init_time=1., | |
22 builder=builder, | |
23 build=1, | |
24 revision=1, | |
25 requested_steps=requested_steps, | |
26 started=1, | |
27 steps_passed=steps_passed, | |
28 steps_failed=steps_failed, | |
29 clobber=False, | |
30 completed=False, | |
31 tries=1, | |
32 parent_key=None) | |
33 | |
34 | |
35 class NeedToRunTest(unittest.TestCase): | |
36 def test_no_tries(self): | |
37 self.assertEqual( | |
38 set(['test1', 'test2']), | |
39 try_job_steps.need_to_trigger('bot', set(['test1', 'test2']), {})) | |
40 | |
41 def test_non_matching_try(self): | |
42 tries = [ | |
43 CreateRietveldTryJob( | |
44 builder='different', | |
45 requested_steps=[], | |
46 steps_passed=[], | |
47 steps_failed=[]), | |
48 ] | |
49 | |
50 self.assertEqual( | |
51 set(['test1', 'test2']), | |
52 try_job_steps.need_to_trigger('bot', set(['test1', 'test2']), tries)) | |
53 | |
54 def test_partial_match_need_trigger(self): | |
55 tries = [ | |
56 CreateRietveldTryJob( | |
57 builder='bot', | |
58 requested_steps=['test1'], | |
59 steps_passed=['test1'], | |
60 steps_failed=[]), | |
61 ] | |
62 | |
63 self.assertEqual( | |
64 set(['test2']), | |
65 try_job_steps.need_to_trigger('bot', set(['test1', 'test2']), tries)) | |
66 | |
67 def test_partial_match_no_trigger(self): | |
68 tries = [ | |
69 CreateRietveldTryJob( | |
70 builder='bot', | |
71 requested_steps=['test1', 'test2'], | |
72 steps_passed=['test1'], | |
73 steps_failed=[]), | |
74 ] | |
75 | |
76 self.assertEqual( | |
77 set(), | |
78 try_job_steps.need_to_trigger('bot', set(['test1', 'test2']), tries)) | |
79 | |
80 def test_full_match(self): | |
81 tries = [ | |
82 CreateRietveldTryJob( | |
83 builder='bot', | |
84 requested_steps=['test1', 'test2'], | |
85 steps_passed=['test1', 'test2'], | |
86 steps_failed=[]), | |
87 ] | |
88 | |
89 self.assertEqual( | |
90 set(), | |
91 try_job_steps.need_to_trigger('bot', set(['test1', 'test2']), tries)) | |
92 | |
93 | |
94 class WaitingForTest(unittest.TestCase): | |
95 def test_no_tries(self): | |
96 self.assertEqual( | |
97 set(['test1', 'test2']), | |
98 try_job_steps.waiting_for('bot', ['test1', 'test2'], {})) | |
99 | |
100 def test_failed_try(self): | |
101 tries = [ | |
102 CreateRietveldTryJob( | |
103 builder='bot', | |
104 requested_steps=['test1', 'test2'], | |
105 steps_passed=[], | |
106 steps_failed=['test1', 'test2']), | |
107 ] | |
108 | |
109 self.assertEqual( | |
110 set(['test1', 'test2']), | |
111 try_job_steps.waiting_for('bot', ['test1', 'test2'], tries)) | |
112 | |
113 def test_partial_successful_try(self): | |
114 tries = [ | |
115 CreateRietveldTryJob( | |
116 builder='bot', | |
117 requested_steps=['test1', 'test2'], | |
118 steps_passed=['test1'], | |
119 steps_failed=[]), | |
120 ] | |
121 | |
122 self.assertEqual( | |
123 set(['test2']), | |
124 try_job_steps.waiting_for('bot', ['test1', 'test2'], tries)) | |
125 | |
126 def test_successful_try(self): | |
127 tries = [ | |
128 CreateRietveldTryJob( | |
129 builder='bot', | |
130 requested_steps=['test1', 'test2'], | |
131 steps_passed=['test1', 'test2'], | |
132 steps_failed=[]), | |
133 ] | |
134 | |
135 self.assertEqual( | |
136 set(), | |
137 try_job_steps.waiting_for('bot', ['test1', 'test2'], tries)) | |
138 | |
139 | |
140 class TryJobTriggeredStepsTest(unittest.TestCase): | |
141 def test_waiting_for(self): | |
142 triggered_verifier = try_job_steps.TryJobTriggeredSteps( | |
143 builder_name='triggered_bot', | |
144 trigger_name='parent_bot', | |
145 steps={ | |
146 'test1': 'trigger1', | |
147 'test2': 'trigger1', | |
148 'test3': 'trigger2', | |
149 }) | |
150 | |
151 self.assertEqual( | |
152 ('triggered_bot', set(['test1', 'test2', 'test3'])), | |
153 triggered_verifier.waiting_for({})) | |
154 | |
155 def test_need_to_trigger(self): | |
156 triggered_verifier = try_job_steps.TryJobTriggeredSteps( | |
157 builder_name='triggered_bot', | |
158 trigger_name='parent_bot', | |
159 steps={ | |
160 'test1': 'trigger1', | |
161 'test2': 'trigger1', | |
162 'test3': 'trigger2', | |
163 }) | |
164 | |
165 self.assertEqual( | |
166 ('parent_bot', set(['trigger1', 'trigger2'])), | |
167 triggered_verifier.need_to_trigger({}, 1.)) | |
168 | |
169 # With a Try Job running that will run test3, we shouldn't care | |
170 # about trigger2. | |
171 try_jobs = { | |
172 'key1': try_job_on_rietveld.RietveldTryJob( | |
173 init_time=1., | |
174 builder='parent_bot', | |
175 build=12, | |
176 revision=13, | |
177 requested_steps=['triggered1', 'triggered2'], | |
178 started=1, | |
179 steps_passed=['triggered1', 'triggered2'], | |
180 steps_failed=[], | |
181 clobber=False, | |
182 completed=True, | |
183 tries=1, | |
184 parent_key=None), | |
185 'key2': try_job_on_rietveld.RietveldTryJob( | |
186 init_time=1., | |
187 builder='triggered_bot', | |
188 build=12, | |
189 revision=13, | |
190 requested_steps=['test1', 'test2', 'test3'], | |
191 started=1, | |
192 steps_passed=[], | |
193 steps_failed=['test1', 'test2'], | |
194 clobber=False, | |
195 completed=False, | |
196 tries=1, | |
197 parent_key='key1')} | |
198 self.assertEqual( | |
199 ('parent_bot', set(['trigger1'])), | |
200 triggered_verifier.need_to_trigger(try_jobs, 1.)) | |
201 | |
202 # A parent bot is running with steps that won't trigger the needed | |
203 # tests, so nothing changes. | |
204 try_jobs['key2'] = CreateRietveldTryJob( | |
205 builder='parent_bot', | |
206 requested_steps=['trigger2'], | |
207 steps_passed=[], | |
208 steps_failed=[]) | |
209 self.assertEqual( | |
210 ('parent_bot', set(['trigger1'])), | |
211 triggered_verifier.need_to_trigger(try_jobs, 1.)) | |
212 | |
213 # A parent bot is running steps that will triggered the required tests, | |
214 # so nothing needs to be triggered. | |
215 try_jobs['key3'] = CreateRietveldTryJob( | |
216 builder='parent_bot', | |
217 requested_steps=['trigger1'], | |
218 steps_passed=[], | |
219 steps_failed=[]) | |
220 self.assertEqual( | |
221 ('parent_bot', set([])), | |
222 triggered_verifier.need_to_trigger(try_jobs, 1.)) | |
223 | |
224 def test_triggered_bot_found(self): | |
225 """Test that we don't wait on an non-stewed parent if the child is found.""" | |
226 triggered_verifier = try_job_steps.TryJobTriggeredSteps( | |
227 builder_name='tester1', | |
228 trigger_name='builder1', | |
229 steps={'test3': 'trigger'}) | |
230 try_jobs = { | |
231 'key1': try_job_on_rietveld.RietveldTryJob( | |
232 init_time=1., | |
233 builder='builder1', | |
234 build=12, | |
235 revision=13, | |
236 requested_steps=['trigger'], | |
237 started=1, | |
238 steps_passed=['trigger'], | |
239 steps_failed=[], | |
240 clobber=False, | |
241 completed=True, | |
242 tries=1, | |
243 parent_key=None), | |
244 'key2': try_job_on_rietveld.RietveldTryJob( | |
245 init_time=1., | |
246 builder='tester1', | |
247 build=12, | |
248 revision=13, | |
249 requested_steps=['test3'], | |
250 started=1, | |
251 steps_passed=[], | |
252 steps_failed=['test3'], | |
253 clobber=False, | |
254 completed=True, | |
255 tries=1, | |
256 parent_key='key1')} | |
257 self.assertEqual( | |
258 ('builder1', set(['trigger'])), | |
259 triggered_verifier.need_to_trigger(try_jobs, 1.)) | |
260 self.assertEqual( | |
261 ('tester1', set(['test3'])), | |
262 triggered_verifier.waiting_for(try_jobs)) | |
263 | |
264 def test_triggered_wait_for_builder(self): | |
265 """Test that we wait for trigger if builder has recently completed.""" | |
266 triggered_verifier = try_job_steps.TryJobTriggeredSteps( | |
267 builder_name='tester1', | |
268 trigger_name='builder1', | |
269 steps={'test3': 'trigger'}) | |
270 try_jobs = { | |
271 'key1': try_job_on_rietveld.RietveldTryJob( | |
272 init_time=1., | |
273 builder='builder1', | |
274 build=12, | |
275 revision=13, | |
276 requested_steps=['test10', 'trigger'], | |
277 started=1, | |
278 steps_passed=['test10', 'trigger'], | |
279 steps_failed=[], | |
280 clobber=False, | |
281 completed=True, | |
282 tries=1, | |
283 parent_key=None), | |
284 } | |
285 self.assertEqual( | |
286 ('builder1', set()), | |
287 triggered_verifier.need_to_trigger(try_jobs, 1.)) | |
288 self.assertEqual( | |
289 ('tester1', set(['test3'])), | |
290 triggered_verifier.waiting_for(try_jobs)) | |
291 | |
292 def test_not_all_triggered(self): | |
293 """Test that waiting for one triggered job doesn't prevent other triggers | |
294 from getting hit.""" | |
295 triggered_verifier = try_job_steps.TryJobTriggeredSteps( | |
296 builder_name='tester1', | |
297 trigger_name='builder1', | |
298 steps={ | |
299 'test1': 'trigger1', | |
300 'test2': 'trigger2'}) | |
301 | |
302 try_jobs = { | |
303 'key1': try_job_on_rietveld.RietveldTryJob( | |
304 init_time=1., | |
305 builder='builder1', | |
306 build=12, | |
307 revision=13, | |
308 requested_steps=['trigger1'], | |
309 started=1, | |
310 steps_passed=['trigger1'], | |
311 steps_failed=[], | |
312 clobber=False, | |
313 completed=True, | |
314 tries=1, | |
315 parent_key=None), | |
316 } | |
317 | |
318 self.assertEqual( | |
319 ('builder1', set(['trigger2'])), | |
320 triggered_verifier.need_to_trigger(try_jobs, 1.)) | |
321 self.assertEqual( | |
322 ('tester1', set(['test1', 'test2'])), | |
323 triggered_verifier.waiting_for(try_jobs)) | |
324 | |
325 def test_triggered_builder_second_pending(self): | |
326 """Test failed trigger jobs do not send trigger if another is pending.""" | |
327 now = 1. | |
328 triggered_verifier = try_job_steps.TryJobTriggeredSteps( | |
329 builder_name='tester1', | |
330 trigger_name='builder1', | |
331 steps={'test3': 'trigger'}) | |
332 | |
333 try_jobs = { | |
334 'key1': try_job_on_rietveld.RietveldTryJob( | |
335 init_time=now, | |
336 builder='builder1', | |
337 build=12, | |
338 revision=13, | |
339 requested_steps=['test10', 'trigger'], | |
340 started=int(now), | |
341 steps_passed=['test10', 'trigger'], | |
342 steps_failed=[], | |
343 clobber=False, | |
344 completed=True, | |
345 tries=1, | |
346 parent_key=None), | |
347 'key2': try_job_on_rietveld.RietveldTryJob( | |
348 init_time=now, | |
349 builder='builder1', | |
350 build=13, | |
351 revision=13, | |
352 requested_steps=['test10', 'trigger'], | |
353 started=int(now), | |
354 steps_passed=['test10', 'trigger'], | |
355 steps_failed=[], | |
356 clobber=False, | |
357 completed=True, | |
358 tries=1, | |
359 parent_key=None), | |
360 'key3': try_job_on_rietveld.RietveldTryJob( | |
361 init_time=now, | |
362 builder='tester1', | |
363 build=12, | |
364 revision=13, | |
365 requested_steps=['test3'], | |
366 started=int(now), | |
367 steps_passed=[], | |
368 steps_failed=['test3'], | |
369 clobber=False, | |
370 completed=True, | |
371 tries=1, | |
372 parent_key='key1'), | |
373 } | |
374 | |
375 self.assertEqual( | |
376 ('builder1', set()), | |
377 triggered_verifier.need_to_trigger(try_jobs, 1.)) | |
378 self.assertEqual( | |
379 ('tester1', set(['test3'])), | |
380 triggered_verifier.waiting_for(try_jobs)) | |
381 | |
382 def testGetTriggeredSteps(self): | |
383 triggered_verifier = try_job_steps.TryJobTriggeredSteps( | |
384 builder_name='tester1', | |
385 trigger_name='builder1', | |
386 steps={'test1': 'trigger', 'test2': 'trigger2'}) | |
387 | |
388 self.assertEqual( | |
389 ('tester1', []), | |
390 triggered_verifier.get_triggered_steps('builder_invalid', ['build'])) | |
391 | |
392 self.assertEqual( | |
393 ('tester1', []), | |
394 triggered_verifier.get_triggered_steps('builder1', ['wrong_step'])) | |
395 | |
396 self.assertEqual( | |
397 ('tester1', ['test1']), | |
398 triggered_verifier.get_triggered_steps('builder1', ['trigger'])) | |
399 | |
400 self.assertEqual( | |
401 ('tester1', ['test1', 'test2']), | |
402 triggered_verifier.get_triggered_steps('builder1', ['trigger', | |
403 'trigger2'])) | |
404 | |
405 | |
406 class TryJobTriggeredOrNormalStepsTest(unittest.TestCase): | |
407 def test_need_to_trigger(self): | |
408 now = 1. | |
409 triggered_or_normal_verifier = try_job_steps.TryJobTriggeredOrNormalSteps( | |
410 builder_name='test_triggered', | |
411 trigger_name='builder1', | |
412 steps={ | |
413 'test2': 'test2_trigger', | |
414 'test3': 'test3_trigger', | |
415 'test4': 'test4_trigger', | |
416 }, | |
417 trigger_bot_steps=[ | |
418 'test1', | |
419 ], | |
420 use_triggered_bot=False, | |
421 ) | |
422 verifier_use_triggered = try_job_steps.TryJobTriggeredOrNormalSteps( | |
423 builder_name='test_triggered', | |
424 trigger_name='builder1', | |
425 steps={ | |
426 'test2': 'test2_trigger', | |
427 'test3': 'test3_trigger', | |
428 'test4': 'test4_trigger', | |
429 }, | |
430 trigger_bot_steps=[ | |
431 'test1', | |
432 ], | |
433 use_triggered_bot=True, | |
434 ) | |
435 | |
436 self.assertEqual( | |
437 ('builder1', set(['test1', 'test2', 'test3', 'test4'])), | |
438 triggered_or_normal_verifier.need_to_trigger({}, 1.)) | |
439 self.assertEqual( | |
440 ('builder1', set(['test1', 'test2_trigger', 'test3_trigger', | |
441 'test4_trigger'])), | |
442 verifier_use_triggered.need_to_trigger({}, 1.)) | |
443 | |
444 try_jobs = { | |
445 'key1': try_job_on_rietveld.RietveldTryJob( | |
446 init_time=now, | |
447 builder='builder1', | |
448 build=1, | |
449 revision=1, | |
450 requested_steps=['test1', 'test2', 'test3_trigger', | |
451 'test4_trigger'], | |
452 started=int(now), | |
453 steps_passed=[], | |
454 steps_failed=[], | |
455 clobber=False, | |
456 completed=False, | |
457 tries=1, | |
458 parent_key=None)} | |
459 self.assertEqual( | |
460 ('builder1', set()), | |
461 triggered_or_normal_verifier.need_to_trigger(try_jobs, 1.)) | |
462 self.assertEqual( | |
463 ('builder1', set()), | |
464 verifier_use_triggered.need_to_trigger(try_jobs, 1.)) | |
465 | |
466 try_jobs['key1'] = try_job_on_rietveld.RietveldTryJob( | |
467 init_time=now, | |
468 builder='builder1', | |
469 build=1, | |
470 revision=1, | |
471 requested_steps=['test1', 'test2', 'test3_trigger', 'test4_trigger'], | |
472 started=int(now), | |
473 steps_passed=['test1'], | |
474 steps_failed=['test2'], | |
475 clobber=False, | |
476 completed=True, | |
477 tries=1, | |
478 parent_key=None) | |
479 self.assertEqual( | |
480 ('builder1', set(['test2'])), | |
481 triggered_or_normal_verifier.need_to_trigger(try_jobs, 1.)) | |
482 self.assertEqual( | |
483 ('builder1', set(['test2_trigger'])), | |
484 verifier_use_triggered.need_to_trigger(try_jobs, 1.)) | |
485 | |
486 try_jobs['key2'] = try_job_on_rietveld.RietveldTryJob( | |
487 init_time=now, | |
488 builder='test_triggered', | |
489 build=1, | |
490 revision=1, | |
491 requested_steps=['test3', 'test4'], | |
492 started=int(now), | |
493 steps_passed=['test3'], | |
494 steps_failed=['test4'], | |
495 clobber=False, | |
496 completed=True, | |
497 tries=1, | |
498 parent_key='key1') | |
499 self.assertEqual( | |
500 ('builder1', set(['test2', 'test4'])), | |
501 triggered_or_normal_verifier.need_to_trigger(try_jobs, 1.)) | |
502 self.assertEqual( | |
503 ('builder1', set(['test2', 'test4'])), | |
504 verifier_use_triggered.need_to_trigger(try_jobs, 1.)) | |
505 | |
506 # Add a test bot that wasn't triggered by builder 1 to ensure we don't | |
507 # use its steps. | |
508 try_jobs['key4'] = try_job_on_rietveld.RietveldTryJob( | |
509 init_time=now, | |
510 builder='test_triggered', | |
511 build=2, | |
512 revision=1, | |
513 requested_steps=['test4'], | |
514 started=int(now), | |
515 steps_passed=['test4'], | |
516 steps_failed=[], | |
517 clobber=False, | |
518 completed=True, | |
519 tries=1, | |
520 parent_key='key3') | |
521 self.assertEqual( | |
522 ('builder1', set(['test2', 'test4'])), | |
523 triggered_or_normal_verifier.need_to_trigger(try_jobs, 1.)) | |
524 self.assertEqual( | |
525 ('builder1', set(['test2', 'test4'])), | |
526 verifier_use_triggered.need_to_trigger(try_jobs, 1.)) | |
527 | |
528 # Now retry the failed jobs, ensuring that the verifiers accepts the | |
529 # non-trigger version of test2. | |
530 try_jobs['key5'] = try_job_on_rietveld.RietveldTryJob( | |
531 init_time=now, | |
532 builder='builder1', | |
533 build=2, | |
534 revision=1, | |
535 requested_steps=['test2', 'test4_trigger'], | |
536 started=int(now), | |
537 steps_passed=['test2'], | |
538 steps_failed=[], | |
539 clobber=False, | |
540 completed=True, | |
541 tries=2, | |
542 parent_key=None) | |
543 self.assertEqual( | |
544 ('builder1', set()), | |
545 triggered_or_normal_verifier.need_to_trigger(try_jobs, 1.)) | |
546 self.assertEqual( | |
547 ('builder1', set()), | |
548 verifier_use_triggered.need_to_trigger(try_jobs, 1.)) | |
549 | |
550 try_jobs['key6'] = try_job_on_rietveld.RietveldTryJob( | |
551 init_time=now, | |
552 builder='test_triggered', | |
553 build=3, | |
554 revision=1, | |
555 requested_steps=['test4'], | |
556 started=int(now), | |
557 steps_passed=['test4'], | |
558 steps_failed=[], | |
559 clobber=False, | |
560 completed=True, | |
561 tries=2, | |
562 parent_key='key5') | |
563 self.assertEqual( | |
564 ('builder1', set()), | |
565 triggered_or_normal_verifier.need_to_trigger(try_jobs, 1.)) | |
566 self.assertEqual( | |
567 ('builder1', set()), | |
568 verifier_use_triggered.need_to_trigger(try_jobs, 1.)) | |
569 | |
570 | |
571 def test_waiting_for(self): | |
572 now = 1. | |
573 triggered_or_normal_verifier = try_job_steps.TryJobTriggeredOrNormalSteps( | |
574 builder_name='test_triggered', | |
575 trigger_name='builder1', | |
576 steps={ | |
577 'test2': 'test2_trigger', | |
578 'test3': 'test3_trigger', | |
579 'test4': 'test4_trigger', | |
580 }, | |
581 trigger_bot_steps=[ | |
582 'test1', | |
583 ], | |
584 use_triggered_bot=False, | |
585 ) | |
586 | |
587 self.assertEqual( | |
588 ('builder1', set(['test1', 'test2', 'test3', 'test4'])), | |
589 triggered_or_normal_verifier.waiting_for({})) | |
590 | |
591 try_jobs = { | |
592 'key1': try_job_on_rietveld.RietveldTryJob( | |
593 init_time=now, | |
594 builder='builder1', | |
595 build=1, | |
596 revision=1, | |
597 requested_steps=['test1', 'test2', 'test3_trigger', | |
598 'test4_trigger'], | |
599 started=int(now), | |
600 steps_passed=['test1'], | |
601 steps_failed=['test2'], | |
602 clobber=False, | |
603 completed=True, | |
604 tries=1, | |
605 parent_key=None)} | |
606 self.assertEqual( | |
607 ('builder1', set(['test2', 'test3', 'test4'])), | |
608 triggered_or_normal_verifier.waiting_for(try_jobs)) | |
609 | |
610 try_jobs['key2'] = try_job_on_rietveld.RietveldTryJob( | |
611 init_time=now, | |
612 builder='test_triggered', | |
613 build=1, | |
614 revision=1, | |
615 requested_steps=['test3', 'test4'], | |
616 started=int(now), | |
617 steps_passed=['test3'], | |
618 steps_failed=['test4'], | |
619 clobber=False, | |
620 completed=True, | |
621 tries=1, | |
622 parent_key='key1') | |
623 self.assertEqual( | |
624 ('builder1', set(['test2', 'test4'])), | |
625 triggered_or_normal_verifier.waiting_for(try_jobs)) | |
626 | |
627 # Add a trigger bot that wasn't triggered by builder 1 to ensure we don't | |
628 # use its steps. | |
629 try_jobs['key4'] = try_job_on_rietveld.RietveldTryJob( | |
630 init_time=now, | |
631 builder='test_triggered', | |
632 build=2, | |
633 revision=1, | |
634 requested_steps=['test4'], | |
635 started=int(now), | |
636 steps_passed=['test4'], | |
637 steps_failed=[], | |
638 clobber=False, | |
639 completed=True, | |
640 tries=1, | |
641 parent_key='key3') | |
642 self.assertEqual( | |
643 ('builder1', set(['test2', 'test4'])), | |
644 triggered_or_normal_verifier.waiting_for(try_jobs)) | |
645 | |
646 # Now retry the failed jobs, ensuring that the verifiers accepts the | |
647 # non-trigger version of test2. | |
648 try_jobs['key5'] = try_job_on_rietveld.RietveldTryJob( | |
649 init_time=now, | |
650 builder='builder1', | |
651 build=2, | |
652 revision=1, | |
653 requested_steps=['test2', 'test4_trigger'], | |
654 started=int(now), | |
655 steps_passed=['test2'], | |
656 steps_failed=[], | |
657 clobber=False, | |
658 completed=True, | |
659 tries=2, | |
660 parent_key=None) | |
661 self.assertEqual( | |
662 ('builder1', set(['test4'])), | |
663 triggered_or_normal_verifier.waiting_for(try_jobs)) | |
664 | |
665 try_jobs['key6'] = try_job_on_rietveld.RietveldTryJob( | |
666 init_time=now, | |
667 builder='test_triggered', | |
668 build=3, | |
669 revision=1, | |
670 requested_steps=['test4'], | |
671 started=int(now), | |
672 steps_passed=['test4'], | |
673 steps_failed=[], | |
674 clobber=False, | |
675 completed=True, | |
676 tries=2, | |
677 parent_key='key5') | |
678 self.assertEqual( | |
679 ('builder1', set()), | |
680 triggered_or_normal_verifier.waiting_for(try_jobs)) | |
681 | |
682 | |
683 if __name__ == '__main__': | |
684 if '-v' in sys.argv: | |
685 unittest.TestCase.maxDiff = None | |
686 unittest.main() | |
OLD | NEW |