blob: 1a97ca7e8843b5199ed93ef829ab57b67b23f0b4 [file] [log] [blame]
Kenneth Russelleb60cbd22017-12-05 07:54:281#!/usr/bin/python
2# Copyright 2017 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"""Tests for generate_buildbot_json.py."""
7
Zhiling Huangbe008172018-03-08 19:13:118import argparse
9import os
Kenneth Russelleb60cbd22017-12-05 07:54:2810import unittest
11
12import generate_buildbot_json
13
14
15class FakeBBGen(generate_buildbot_json.BBJSONGenerator):
16 def __init__(self, waterfalls, test_suites, exceptions):
17 super(FakeBBGen, self).__init__()
18 self.files = {
19 'waterfalls.pyl': waterfalls,
20 'test_suites.pyl': test_suites,
21 'test_suite_exceptions.pyl': exceptions,
22 }
23
24 def read_file(self, relative_path):
25 return self.files[relative_path]
26
27 def write_file(self, relative_path, contents):
28 self.files[relative_path] = contents
29
30
31FOO_GTESTS_WATERFALL = """\
32[
33 {
34 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:4335 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:2836 'Fake Tester': {
37 'swarming': {
38 'dimension_sets': [
39 {
40 'kvm': '1',
41 },
42 ],
43 },
44 'test_suites': {
45 'gtest_tests': 'foo_tests',
46 },
47 },
48 },
49 },
50]
51"""
52
Shenghua Zhangaba8bad2018-02-07 02:12:0953FOO_GTESTS_MULTI_DIMENSION_WATERFALL = """\
54[
55 {
56 'name': 'chromium.test',
57 'machines': {
58 'Fake Tester': {
59 'swarming': {
60 'dimension_sets': [
61 {
62 "gpu": "none",
63 "os": "1",
64 },
65 ],
66 },
67 'use_multi_dimension_trigger_script': True,
68 'alternate_swarming_dimensions': [
69 {
70 "gpu": "none",
71 "os": "2",
72 },
73 ],
74 'test_suites': {
75 'gtest_tests': 'foo_tests',
76 },
77 },
78 },
79 },
80]
81"""
82
Kenneth Russelleb60cbd22017-12-05 07:54:2883COMPOSITION_GTEST_SUITE_WATERFALL = """\
84[
85 {
86 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:4387 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:2888 'Fake Tester': {
89 'test_suites': {
90 'gtest_tests': 'composition_tests',
91 },
92 },
93 },
94 },
95]
96"""
97
John Budorickedfe7f872018-01-23 15:27:2298COMPOSITION_GTEST_SUITE_WITH_ARGS_WATERFALL = """\
99[
100 {
101 'name': 'chromium.test',
102 'machines': {
103 'Fake Tester': {
104 'test_suites': {
105 'gtest_tests': 'composition_tests',
106 },
107 'args': [
108 '--this-is-an-argument',
109 ],
110 },
111 },
112 },
113]
114"""
115
Kenneth Russelleb60cbd22017-12-05 07:54:28116FOO_ISOLATED_SCRIPTS_WATERFALL = """\
117[
118 {
119 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43120 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28121 'Fake Tester': {
122 'test_suites': {
123 'isolated_scripts': 'composition_tests',
124 },
125 },
126 },
127 },
128]
129"""
130
131FOO_SCRIPT_WATERFALL = """\
132[
133 {
134 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43135 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28136 'Fake Tester': {
137 'test_suites': {
138 'scripts': 'foo_scripts',
139 },
140 },
141 },
142 },
143]
144"""
145
146FOO_JUNIT_WATERFALL = """\
147[
148 {
149 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43150 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28151 'Fake Tester': {
152 'test_suites': {
153 'junit_tests': 'composition_tests',
154 },
155 },
156 },
157 },
158]
159"""
160
161FOO_CTS_WATERFALL = """\
162[
163 {
164 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43165 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28166 'Fake Tester': {
167 'test_suites': {
168 'cts_tests': 'foo_cts_tests',
169 },
170 },
171 },
172 },
173]
174"""
175
176FOO_INSTRUMENTATION_TEST_WATERFALL = """\
177[
178 {
179 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43180 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28181 'Fake Tester': {
182 'test_suites': {
183 'instrumentation_tests': 'composition_tests',
184 },
185 },
186 },
187 },
188]
189"""
190
191UNKNOWN_TEST_SUITE_WATERFALL = """\
192[
193 {
194 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43195 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28196 'Fake Tester': {
197 'test_suites': {
198 'gtest_tests': 'baz_tests',
199 },
200 },
201 },
202 },
203]
204"""
205
206UNKNOWN_TEST_SUITE_TYPE_WATERFALL = """\
207[
208 {
209 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43210 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28211 'Fake Tester': {
212 'test_suites': {
213 'gtest_tests': 'foo_tests',
214 'foo_test_type': 'foo_tests',
215 },
216 },
217 },
218 },
219]
220"""
221
222ANDROID_WATERFALL = """\
223[
224 {
225 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43226 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28227 'Android Builder': {
228 'additional_compile_targets': [
229 'bar_test',
230 ],
231 },
Kenneth Russelleb60cbd22017-12-05 07:54:28232 'Fake Android K Tester': {
233 'additional_compile_targets': [
234 'bar_test',
235 ],
236 'swarming': {
237 'dimension_sets': [
238 {
239 'device_os': 'KTU84P',
240 'device_type': 'hammerhead',
241 },
242 ],
243 },
244 'os_type': 'android',
Benjamin Pastene766d48f52017-12-18 21:47:42245 'skip_device_recovery': True,
Kenneth Russelleb60cbd22017-12-05 07:54:28246 'test_suites': {
247 'gtest_tests': 'foo_tests',
248 },
249 },
250 'Fake Android L Tester': {
251 'swarming': {
252 'dimension_sets': [
253 {
254 'device_os': 'KTU84P',
255 'device_type': 'hammerhead',
256 },
257 ],
258 },
259 'os_type': 'android',
260 'skip_merge_script': True,
261 'skip_output_links': True,
262 'test_suites': {
263 'gtest_tests': 'foo_tests',
264 },
265 },
266 'Fake Android M Tester': {
267 'swarming': {
268 'dimension_sets': [
269 {
270 'device_os': 'MMB29Q',
271 'device_type': 'bullhead',
272 },
273 ],
274 },
275 'os_type': 'android',
276 'use_swarming': False,
277 'test_suites': {
278 'gtest_tests': 'foo_tests',
279 },
280 },
281 },
282 },
283]
284"""
285
286FOO_TEST_SUITE = """\
287{
288 'foo_tests': {
289 'foo_test': {
290 'swarming': {
291 'dimension_sets': [
292 {
293 'integrity': 'high',
294 }
295 ],
296 'expiration': 120,
297 },
298 },
299 },
300}
301"""
302
Kenneth Russell8ceeabf2017-12-11 17:53:28303FOO_TEST_SUITE_WITH_ARGS = """\
304{
305 'foo_tests': {
306 'foo_test': {
307 'args': [
308 '--c_arg',
309 ],
310 },
311 },
312}
313"""
314
Kenneth Russelleb60cbd22017-12-05 07:54:28315FOO_SCRIPT_SUITE = """\
316{
317 'foo_scripts': {
318 'foo_test': {
319 'script': 'foo.py',
320 },
321 'bar_test': {
322 'script': 'bar.py',
323 },
324 },
325}
326"""
327
328FOO_CTS_SUITE = """\
329{
330 'foo_cts_tests': {
331 'arch': 'arm64',
332 'platform': 'L',
333 },
334}
335"""
336
337GOOD_COMPOSITION_TEST_SUITES = """\
338{
339 'foo_tests': {
340 'foo_test': {},
341 },
342 'bar_tests': {
343 'bar_test': {},
344 },
345 'composition_tests': [
346 'foo_tests',
347 'bar_tests',
348 ],
349}
350"""
351
352BAD_COMPOSITION_TEST_SUITES = """\
353{
354 'foo_tests': {},
355 'bar_tests': {},
356 'buggy_composition_tests': [
357 'bar_tests',
358 ],
359 'composition_tests': [
360 'foo_tests',
361 'buggy_composition_tests',
362 ],
363}
364"""
365
Kenneth Russell8ceeabf2017-12-11 17:53:28366INSTRUMENTATION_TESTS_WITH_DIFFERENT_NAMES = """\
367{
368 'composition_tests': {
369 'foo_tests': {
370 'test': 'foo_test',
371 },
372 'bar_tests': {
373 'test': 'foo_test',
374 },
375 },
376}
377"""
378
Dirk Pranke1b767092017-12-07 04:44:23379SCRIPT_SUITE = """\
380{
381 'foo_scripts': {
382 'foo_test': {
383 'script': 'foo.py',
384 },
385 },
386}
387"""
388
Kenneth Russelleb60cbd22017-12-05 07:54:28389UNREFED_TEST_SUITE = """\
390{
391 'foo_tests': {},
392 'bar_tests': {},
393}
394"""
395
396REUSING_TEST_WITH_DIFFERENT_NAME = """\
397{
398 'foo_tests': {
399 'foo_test': {},
400 'variation_test': {
401 'args': [
402 '--variation',
403 ],
404 'test': 'foo_test',
405 },
406 },
407}
408"""
409
410EMPTY_EXCEPTIONS = """\
411{
412}
413"""
414
Dirk Pranke1b767092017-12-07 04:44:23415SCRIPT_WITH_ARGS_EXCEPTIONS = """\
416{
417 'foo_test': {
418 'modifications': {
419 'Fake Tester': {
420 'args': ['--fake-arg'],
421 },
422 },
423 },
424}
425"""
426
Kenneth Russelleb60cbd22017-12-05 07:54:28427NO_BAR_TEST_EXCEPTIONS = """\
428{
429 'bar_test': {
430 'remove_from': [
431 'Fake Tester',
432 ]
433 }
434}
435"""
436
437EMPTY_BAR_TEST_EXCEPTIONS = """\
438{
439 'bar_test': {
440 }
441}
442"""
443
444FOO_TEST_MODIFICATIONS = """\
445{
446 'foo_test': {
447 'modifications': {
448 'Fake Tester': {
449 'args': [
450 '--bar',
451 ],
452 'swarming': {
453 'hard_timeout': 600,
454 },
455 },
456 },
457 }
458}
459"""
460
461ANDROID_TEST_EXCEPTIONS = """\
462{
463 'foo_test': {
464 'key_removals': {
465 'Fake Android K Tester': [
466 'merge',
467 ],
468 },
469 },
470}
471"""
472
473NONEXISTENT_REMOVAL = """\
474{
475 'foo_test': {
476 'remove_from': [
477 'Nonexistent Tester',
478 ]
479 }
480}
481"""
482
483NONEXISTENT_MODIFICATION = """\
484{
485 'foo_test': {
486 'modifications': {
487 'Nonexistent Tester': {
488 'args': [],
489 },
490 },
491 }
492}
493"""
494
John Budorick826d5ed2017-12-28 19:27:32495NONEXISTENT_KEY_REMOVAL = """
496{
497 'foo_test': {
498 'key_removals': {
499 'Fake Tester': [
500 'args',
501 ],
502 }
503 },
504}
505"""
506
Kenneth Russelleb60cbd22017-12-05 07:54:28507COMPOSITION_WATERFALL_OUTPUT = """\
508{
509 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
510 "AAAAA2 See generate_buildbot_json.py to make changes": {},
511 "Fake Tester": {
512 "gtest_tests": [
513 {
514 "swarming": {
515 "can_use_on_swarming_builders": true
516 },
517 "test": "bar_test"
518 },
519 {
520 "swarming": {
521 "can_use_on_swarming_builders": true
522 },
523 "test": "foo_test"
524 }
525 ]
526 }
527}
528"""
529
John Budorickedfe7f872018-01-23 15:27:22530COMPOSITION_WATERFALL_WITH_ARGS_OUTPUT = """\
531{
532 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
533 "AAAAA2 See generate_buildbot_json.py to make changes": {},
534 "Fake Tester": {
535 "gtest_tests": [
536 {
537 "args": [
538 "--this-is-an-argument"
539 ],
540 "swarming": {
541 "can_use_on_swarming_builders": true
542 },
543 "test": "bar_test"
544 },
545 {
546 "args": [
547 "--this-is-an-argument"
548 ],
549 "swarming": {
550 "can_use_on_swarming_builders": true
551 },
552 "test": "foo_test"
553 }
554 ]
555 }
556}
557"""
558
Kenneth Russelleb60cbd22017-12-05 07:54:28559VARIATION_GTEST_OUTPUT = """\
560{
561 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
562 "AAAAA2 See generate_buildbot_json.py to make changes": {},
563 "Fake Tester": {
564 "gtest_tests": [
565 {
566 "swarming": {
567 "can_use_on_swarming_builders": true,
568 "dimension_sets": [
569 {
570 "kvm": "1"
571 }
572 ]
573 },
574 "test": "foo_test"
575 },
576 {
577 "args": [
578 "--variation"
579 ],
580 "name": "variation_test",
581 "swarming": {
582 "can_use_on_swarming_builders": true,
583 "dimension_sets": [
584 {
585 "kvm": "1"
586 }
587 ]
588 },
589 "test": "foo_test"
590 }
591 ]
592 }
593}
594"""
595
596COMPOSITION_WATERFALL_FILTERED_OUTPUT = """\
597{
598 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
599 "AAAAA2 See generate_buildbot_json.py to make changes": {},
600 "Fake Tester": {
601 "gtest_tests": [
602 {
603 "swarming": {
604 "can_use_on_swarming_builders": true
605 },
606 "test": "foo_test"
607 }
608 ]
609 }
610}
611"""
612
Kenneth Russell8ceeabf2017-12-11 17:53:28613MERGED_ARGS_OUTPUT = """\
614{
615 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
616 "AAAAA2 See generate_buildbot_json.py to make changes": {},
617 "Fake Tester": {
618 "gtest_tests": [
619 {
620 "args": [
John Budorick5fae58f2018-01-17 17:33:43621 "--bar",
622 "--c_arg"
Kenneth Russell8ceeabf2017-12-11 17:53:28623 ],
624 "swarming": {
625 "can_use_on_swarming_builders": true,
626 "dimension_sets": [
627 {
628 "kvm": "1"
629 }
630 ],
631 "hard_timeout": 600
632 },
633 "test": "foo_test"
634 }
635 ]
636 }
637}
638"""
639
Kenneth Russelleb60cbd22017-12-05 07:54:28640MODIFIED_OUTPUT = """\
641{
642 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
643 "AAAAA2 See generate_buildbot_json.py to make changes": {},
644 "Fake Tester": {
645 "gtest_tests": [
646 {
647 "args": [
648 "--bar"
649 ],
650 "swarming": {
651 "can_use_on_swarming_builders": true,
652 "dimension_sets": [
653 {
654 "integrity": "high",
655 "kvm": "1"
656 }
657 ],
658 "expiration": 120,
659 "hard_timeout": 600
660 },
661 "test": "foo_test"
662 }
663 ]
664 }
665}
666"""
667
668ISOLATED_SCRIPT_OUTPUT = """\
669{
670 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
671 "AAAAA2 See generate_buildbot_json.py to make changes": {},
672 "Fake Tester": {
673 "isolated_scripts": [
674 {
675 "isolate_name": "foo_test",
676 "name": "foo_test",
677 "swarming": {
678 "can_use_on_swarming_builders": true
679 }
680 }
681 ]
682 }
683}
684"""
685
686SCRIPT_OUTPUT = """\
687{
688 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
689 "AAAAA2 See generate_buildbot_json.py to make changes": {},
690 "Fake Tester": {
691 "scripts": [
692 {
693 "name": "foo_test",
694 "script": "foo.py"
695 }
696 ]
697 }
698}
699"""
700
Dirk Pranke1b767092017-12-07 04:44:23701SCRIPT_WITH_ARGS_OUTPUT = """\
702{
703 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
704 "AAAAA2 See generate_buildbot_json.py to make changes": {},
705 "Fake Tester": {
706 "scripts": [
707 {
708 "args": [
709 "--fake-arg"
710 ],
711 "name": "foo_test",
712 "script": "foo.py"
713 }
714 ]
715 }
716}
717"""
718
Kenneth Russelleb60cbd22017-12-05 07:54:28719JUNIT_OUTPUT = """\
720{
721 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
722 "AAAAA2 See generate_buildbot_json.py to make changes": {},
723 "Fake Tester": {
724 "junit_tests": [
725 {
726 "test": "foo_test"
727 }
728 ]
729 }
730}
731"""
732
733CTS_OUTPUT = """\
734{
735 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
736 "AAAAA2 See generate_buildbot_json.py to make changes": {},
737 "Fake Tester": {
738 "cts_tests": [
739 {
740 "arch": "arm64",
741 "platform": "L"
742 }
743 ]
744 }
745}
746"""
747
748INSTRUMENTATION_TEST_OUTPUT = """\
749{
750 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
751 "AAAAA2 See generate_buildbot_json.py to make changes": {},
752 "Fake Tester": {
753 "instrumentation_tests": [
754 {
755 "test": "foo_test"
756 }
757 ]
758 }
759}
760"""
761
Kenneth Russell8ceeabf2017-12-11 17:53:28762INSTRUMENTATION_TEST_DIFFERENT_NAMES_OUTPUT = """\
763{
764 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
765 "AAAAA2 See generate_buildbot_json.py to make changes": {},
766 "Fake Tester": {
767 "instrumentation_tests": [
768 {
769 "name": "bar_tests",
770 "test": "foo_test"
771 },
772 {
773 "name": "foo_tests",
774 "test": "foo_test"
775 }
776 ]
777 }
778}
779"""
780
Kenneth Russelleb60cbd22017-12-05 07:54:28781ANDROID_WATERFALL_OUTPUT = """\
782{
783 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
784 "AAAAA2 See generate_buildbot_json.py to make changes": {},
785 "Android Builder": {
786 "additional_compile_targets": [
787 "bar_test"
788 ]
789 },
790 "Fake Android K Tester": {
791 "additional_compile_targets": [
792 "bar_test"
793 ],
794 "gtest_tests": [
795 {
John Budorick826d5ed2017-12-28 19:27:32796 "args": [
797 "--gs-results-bucket=chromium-result-details"
798 ],
Kenneth Russelleb60cbd22017-12-05 07:54:28799 "swarming": {
800 "can_use_on_swarming_builders": true,
801 "cipd_packages": [
802 {
803 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
804 "location": "bin",
805 "revision": \
806"git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
807 }
808 ],
809 "dimension_sets": [
810 {
811 "device_os": "KTU84P",
812 "device_type": "hammerhead",
813 "integrity": "high"
814 }
815 ],
816 "expiration": 120,
817 "output_links": [
818 {
819 "link": [
820 "https://luci-logdog.appspot.com/v/?s",
821 "=android%2Fswarming%2Flogcats%2F",
822 "${TASK_ID}%2F%2B%2Funified_logcats"
823 ],
824 "name": "shard #${SHARD_INDEX} logcats"
825 }
826 ]
827 },
828 "test": "foo_test"
829 }
830 ]
831 },
832 "Fake Android L Tester": {
833 "gtest_tests": [
834 {
Benjamin Pastene766d48f52017-12-18 21:47:42835 "args": [
John Budorick826d5ed2017-12-28 19:27:32836 "--gs-results-bucket=chromium-result-details",
Benjamin Pastene766d48f52017-12-18 21:47:42837 "--recover-devices"
838 ],
Kenneth Russelleb60cbd22017-12-05 07:54:28839 "swarming": {
840 "can_use_on_swarming_builders": true,
841 "cipd_packages": [
842 {
843 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
844 "location": "bin",
845 "revision": \
846"git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
847 }
848 ],
849 "dimension_sets": [
850 {
851 "device_os": "KTU84P",
852 "device_type": "hammerhead",
853 "integrity": "high"
854 }
855 ],
856 "expiration": 120
857 },
858 "test": "foo_test"
859 }
860 ]
861 },
862 "Fake Android M Tester": {
863 "gtest_tests": [
864 {
865 "swarming": {
866 "can_use_on_swarming_builders": false
867 },
868 "test": "foo_test"
869 }
870 ]
871 }
872}
873"""
874
Shenghua Zhangaba8bad2018-02-07 02:12:09875MULTI_DIMENSION_OUTPUT = """\
876{
877 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
878 "AAAAA2 See generate_buildbot_json.py to make changes": {},
879 "Fake Tester": {
880 "gtest_tests": [
881 {
882 "swarming": {
883 "can_use_on_swarming_builders": true,
884 "dimension_sets": [
885 {
886 "gpu": "none",
887 "integrity": "high",
888 "os": "1"
889 }
890 ],
891 "expiration": 120
892 },
893 "test": "foo_test",
894 "trigger_script": {
895 "args": [
896 "--multiple-trigger-configs",
897 "[{\\"gpu\\": \\"none\\", \\"os\\": \\"1\\"}, \
898{\\"gpu\\": \\"none\\", \\"os\\": \\"2\\"}]",
899 "--multiple-dimension-script-verbose",
900 "True"
901 ],
902 "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
903 }
904 }
905 ]
906 }
907}
908"""
909
Kenneth Russelleb60cbd22017-12-05 07:54:28910class UnitTest(unittest.TestCase):
911 def test_base_generator(self):
912 # Only needed for complete code coverage.
913 self.assertRaises(NotImplementedError,
914 generate_buildbot_json.BaseGenerator(None).generate,
915 None, None, None, None)
916 self.assertRaises(NotImplementedError,
917 generate_buildbot_json.BaseGenerator(None).sort,
918 None)
919
920 def test_good_test_suites_are_ok(self):
921 fbb = FakeBBGen(FOO_GTESTS_WATERFALL,
922 FOO_TEST_SUITE,
923 EMPTY_EXCEPTIONS)
924 fbb.check_input_file_consistency()
925
Shenghua Zhangaba8bad2018-02-07 02:12:09926 def test_good_multi_dimension_test_suites_are_ok(self):
927 fbb = FakeBBGen(FOO_GTESTS_MULTI_DIMENSION_WATERFALL,
928 FOO_TEST_SUITE,
929 EMPTY_EXCEPTIONS)
930 fbb.check_input_file_consistency()
931
Kenneth Russelleb60cbd22017-12-05 07:54:28932 def test_good_composition_test_suites_are_ok(self):
933 fbb = FakeBBGen(COMPOSITION_GTEST_SUITE_WATERFALL,
934 GOOD_COMPOSITION_TEST_SUITES,
935 EMPTY_EXCEPTIONS)
936 fbb.check_input_file_consistency()
937
938 def test_bad_composition_test_suites_are_caught(self):
939 fbb = FakeBBGen(COMPOSITION_GTEST_SUITE_WATERFALL,
940 BAD_COMPOSITION_TEST_SUITES,
941 EMPTY_EXCEPTIONS)
942 self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
943 'Composition test suites may not refer to.*',
944 fbb.check_input_file_consistency)
945
946 def test_unknown_test_suites_are_caught(self):
947 fbb = FakeBBGen(UNKNOWN_TEST_SUITE_WATERFALL,
948 FOO_TEST_SUITE,
949 EMPTY_EXCEPTIONS)
950 self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
951 'Test suite baz_tests from machine.*',
952 fbb.check_input_file_consistency)
953
954 def test_unknown_test_suite_types_are_caught(self):
955 fbb = FakeBBGen(UNKNOWN_TEST_SUITE_TYPE_WATERFALL,
956 FOO_TEST_SUITE,
957 EMPTY_EXCEPTIONS)
958 self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
959 'Unknown test suite type foo_test_type.*',
960 fbb.check_input_file_consistency)
961
962 def test_unrefed_test_suite_caught(self):
963 fbb = FakeBBGen(FOO_GTESTS_WATERFALL,
964 UNREFED_TEST_SUITE,
965 EMPTY_EXCEPTIONS)
966 self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
967 '.*unreferenced.*bar_tests.*',
968 fbb.check_input_file_consistency)
969
970 def test_good_waterfall_output(self):
971 fbb = FakeBBGen(COMPOSITION_GTEST_SUITE_WATERFALL,
972 GOOD_COMPOSITION_TEST_SUITES,
973 EMPTY_EXCEPTIONS)
974 fbb.files['chromium.test.json'] = COMPOSITION_WATERFALL_OUTPUT
975 fbb.check_output_file_consistency(verbose=True)
976
977 def test_reusing_gtest_targets(self):
978 fbb = FakeBBGen(FOO_GTESTS_WATERFALL,
979 REUSING_TEST_WITH_DIFFERENT_NAME,
980 EMPTY_EXCEPTIONS)
981 fbb.files['chromium.test.json'] = VARIATION_GTEST_OUTPUT
982 fbb.check_output_file_consistency(verbose=True)
983
984 def test_noop_exception_does_nothing(self):
985 fbb = FakeBBGen(COMPOSITION_GTEST_SUITE_WATERFALL,
986 GOOD_COMPOSITION_TEST_SUITES,
987 EMPTY_BAR_TEST_EXCEPTIONS)
988 fbb.files['chromium.test.json'] = COMPOSITION_WATERFALL_OUTPUT
989 fbb.check_output_file_consistency(verbose=True)
990
Kenneth Russell8ceeabf2017-12-11 17:53:28991 def test_test_arg_merges(self):
992 fbb = FakeBBGen(FOO_GTESTS_WATERFALL,
993 FOO_TEST_SUITE_WITH_ARGS,
994 FOO_TEST_MODIFICATIONS)
995 fbb.files['chromium.test.json'] = MERGED_ARGS_OUTPUT
996 fbb.check_output_file_consistency(verbose=True)
997
Kenneth Russelleb60cbd22017-12-05 07:54:28998 def test_test_filtering(self):
999 fbb = FakeBBGen(COMPOSITION_GTEST_SUITE_WATERFALL,
1000 GOOD_COMPOSITION_TEST_SUITES,
1001 NO_BAR_TEST_EXCEPTIONS)
1002 fbb.files['chromium.test.json'] = COMPOSITION_WATERFALL_FILTERED_OUTPUT
1003 fbb.check_output_file_consistency(verbose=True)
1004
1005 def test_test_modifications(self):
1006 fbb = FakeBBGen(FOO_GTESTS_WATERFALL,
1007 FOO_TEST_SUITE,
1008 FOO_TEST_MODIFICATIONS)
1009 fbb.files['chromium.test.json'] = MODIFIED_OUTPUT
1010 fbb.check_output_file_consistency(verbose=True)
1011
1012 def test_isolated_script_tests(self):
1013 fbb = FakeBBGen(FOO_ISOLATED_SCRIPTS_WATERFALL,
1014 GOOD_COMPOSITION_TEST_SUITES,
1015 NO_BAR_TEST_EXCEPTIONS)
1016 fbb.files['chromium.test.json'] = ISOLATED_SCRIPT_OUTPUT
1017 fbb.check_output_file_consistency(verbose=True)
1018
Dirk Pranke1b767092017-12-07 04:44:231019 def test_script_with_args(self):
1020 fbb = FakeBBGen(FOO_SCRIPT_WATERFALL,
1021 SCRIPT_SUITE,
1022 SCRIPT_WITH_ARGS_EXCEPTIONS,
1023 )
1024 fbb.files['chromium.test.json'] = SCRIPT_WITH_ARGS_OUTPUT
1025 fbb.check_output_file_consistency(verbose=True)
1026
1027 def test_script(self):
Kenneth Russelleb60cbd22017-12-05 07:54:281028 fbb = FakeBBGen(FOO_SCRIPT_WATERFALL,
1029 FOO_SCRIPT_SUITE,
1030 NO_BAR_TEST_EXCEPTIONS)
1031 fbb.files['chromium.test.json'] = SCRIPT_OUTPUT
1032 fbb.check_output_file_consistency(verbose=True)
1033
1034 def test_junit_tests(self):
1035 fbb = FakeBBGen(FOO_JUNIT_WATERFALL,
1036 GOOD_COMPOSITION_TEST_SUITES,
1037 NO_BAR_TEST_EXCEPTIONS)
1038 fbb.files['chromium.test.json'] = JUNIT_OUTPUT
1039 fbb.check_output_file_consistency(verbose=True)
1040
1041 def test_cts_tests(self):
1042 fbb = FakeBBGen(FOO_CTS_WATERFALL,
1043 FOO_CTS_SUITE,
1044 EMPTY_EXCEPTIONS)
1045 fbb.files['chromium.test.json'] = CTS_OUTPUT
1046 fbb.check_output_file_consistency(verbose=True)
1047
1048 def test_instrumentation_tests(self):
1049 fbb = FakeBBGen(FOO_INSTRUMENTATION_TEST_WATERFALL,
1050 GOOD_COMPOSITION_TEST_SUITES,
1051 NO_BAR_TEST_EXCEPTIONS)
1052 fbb.files['chromium.test.json'] = INSTRUMENTATION_TEST_OUTPUT
1053 fbb.check_output_file_consistency(verbose=True)
1054
Kenneth Russell8ceeabf2017-12-11 17:53:281055 def test_instrumentation_tests_with_different_names(self):
1056 fbb = FakeBBGen(FOO_INSTRUMENTATION_TEST_WATERFALL,
1057 INSTRUMENTATION_TESTS_WITH_DIFFERENT_NAMES,
1058 EMPTY_EXCEPTIONS)
1059 fbb.files['chromium.test.json'] = \
1060 INSTRUMENTATION_TEST_DIFFERENT_NAMES_OUTPUT
1061 fbb.check_output_file_consistency(verbose=True)
1062
Kenneth Russelleb60cbd22017-12-05 07:54:281063 def test_ungenerated_output_files_are_caught(self):
1064 fbb = FakeBBGen(COMPOSITION_GTEST_SUITE_WATERFALL,
1065 GOOD_COMPOSITION_TEST_SUITES,
1066 NO_BAR_TEST_EXCEPTIONS)
1067 fbb.files['chromium.test.json'] = (
1068 '\n' + COMPOSITION_WATERFALL_FILTERED_OUTPUT)
1069 self.assertRaises(generate_buildbot_json.BBGenErr,
1070 fbb.check_output_file_consistency)
1071
1072 def test_android_output_options(self):
1073 fbb = FakeBBGen(ANDROID_WATERFALL,
1074 FOO_TEST_SUITE,
1075 ANDROID_TEST_EXCEPTIONS)
1076 fbb.files['chromium.test.json'] = ANDROID_WATERFALL_OUTPUT
1077 fbb.check_output_file_consistency(verbose=True)
1078
1079 def test_nonexistent_removal_raises(self):
1080 fbb = FakeBBGen(FOO_GTESTS_WATERFALL,
1081 FOO_TEST_SUITE,
1082 NONEXISTENT_REMOVAL)
1083 self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
1084 'The following nonexistent machines.*',
1085 fbb.check_input_file_consistency)
1086
1087 def test_nonexistent_modification_raises(self):
1088 fbb = FakeBBGen(FOO_GTESTS_WATERFALL,
1089 FOO_TEST_SUITE,
1090 NONEXISTENT_MODIFICATION)
1091 self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
1092 'The following nonexistent machines.*',
1093 fbb.check_input_file_consistency)
1094
John Budorick826d5ed2017-12-28 19:27:321095 def test_nonexistent_key_removal_raises(self):
1096 fbb = FakeBBGen(FOO_GTESTS_WATERFALL,
1097 FOO_TEST_SUITE,
1098 NONEXISTENT_KEY_REMOVAL)
1099 with self.assertRaises(generate_buildbot_json.BBGenErr):
1100 fbb.check_output_file_consistency(verbose=True)
1101
John Budorickedfe7f872018-01-23 15:27:221102 def test_waterfall_args(self):
1103 fbb = FakeBBGen(COMPOSITION_GTEST_SUITE_WITH_ARGS_WATERFALL,
1104 GOOD_COMPOSITION_TEST_SUITES,
1105 EMPTY_EXCEPTIONS)
1106 fbb.files['chromium.test.json'] = COMPOSITION_WATERFALL_WITH_ARGS_OUTPUT
1107 fbb.check_output_file_consistency(verbose=True)
1108
Shenghua Zhangaba8bad2018-02-07 02:12:091109 def test_multi_dimension_output(self):
1110 fbb = FakeBBGen(FOO_GTESTS_MULTI_DIMENSION_WATERFALL,
1111 FOO_TEST_SUITE,
1112 EMPTY_EXCEPTIONS)
1113 fbb.files['chromium.test.json'] = MULTI_DIMENSION_OUTPUT
1114 fbb.check_output_file_consistency(verbose=True)
1115
Zhiling Huangbe008172018-03-08 19:13:111116 def test_relative_pyl_file_dir(self):
1117 fbb = FakeBBGen(FOO_GTESTS_WATERFALL,
1118 REUSING_TEST_WITH_DIFFERENT_NAME,
1119 EMPTY_EXCEPTIONS)
1120 fbb.args = argparse.Namespace(pyl_files_dir='relative/path/')
1121 for file_name in list(fbb.files):
1122 fbb.files[os.path.join('relative/path/', file_name)] = (
1123 fbb.files.pop(file_name))
1124 fbb.check_input_file_consistency()
1125 fbb.files['relative/path/chromium.test.json'] = VARIATION_GTEST_OUTPUT
1126 fbb.check_output_file_consistency(verbose=True)
1127
Dirk Pranke1b767092017-12-07 04:44:231128
Kenneth Russelleb60cbd22017-12-05 07:54:281129if __name__ == '__main__':
1130 unittest.main()
1131