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

Side by Side Diff: content/test/gpu/generate_buildbot_json.py

Issue 2675153002: Clean up generate_buildbot_json.py. (Closed)
Patch Set: Created 3 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2016 The Chromium Authors. All rights reserved. 2 # Copyright 2016 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Script to generate chromium.gpu.json and chromium.gpu.fyi.json in 6 """Script to generate chromium.gpu.json and chromium.gpu.fyi.json in
7 the src/testing/buildbot directory. Maintaining these files by hand is 7 the src/testing/buildbot directory. Maintaining these files by hand is
8 too unwieldy. 8 too unwieldy.
9 """ 9 """
10 10
11 import copy 11 import copy
12 import json 12 import json
13 import os 13 import os
14 import string 14 import string
15 import sys 15 import sys
16 16
17 THIS_DIR = os.path.dirname(os.path.abspath(__file__)) 17 THIS_DIR = os.path.dirname(os.path.abspath(__file__))
18 SRC_DIR = os.path.dirname(os.path.dirname(os.path.dirname(THIS_DIR))) 18 SRC_DIR = os.path.dirname(os.path.dirname(os.path.dirname(THIS_DIR)))
19 19
20 # "Types" of waterfalls and bots. A bot's type is the union of its own
21 # type and the type of its waterfall. Predicates can apply to these
22 # sets in order to run tests only on a certain subset of the bots.
23 class Types(object):
24 GPU = 'gpu'
25 GPU_FYI = 'gpu_fyi'
26 OPTIONAL = 'optional'
27 V8_FYI = 'v8_fyi'
28
29 # The predicate functions receive a list of types as input and
30 # determine whether the test should run on the given bot.
31 class Predicates(object):
32 @staticmethod
33 def DEFAULT(x):
34 # By default, tests run on the chromium.gpu and chromium.gpu.fyi
35 # waterfalls, but not on the optional tryservers or on the
36 # client.v8.fyi waterfall.
37 return Types.OPTIONAL not in x and Types.V8_FYI not in x
38
39 @staticmethod
40 def FYI_ONLY(x):
41 # This predicate is more complex than desired because the optional
42 # tryservers are considered to be on the chromium.gpu.fyi
43 # waterfall.
44 return Types.GPU_FYI in x and Types.OPTIONAL not in x
45
46 @staticmethod
47 def FYI_AND_OPTIONAL(x):
48 return Predicates.FYI_ONLY(x) or Types.OPTIONAL in x
49
50 @staticmethod
51 def FYI_OPTIONAL_AND_V8(x):
52 return Predicates.FYI_AND_OPTIONAL(x) or Types.V8_FYI in x
53
54 @staticmethod
55 def DEFAULT_PLUS_V8(x):
56 return Predicates.DEFAULT(x) or Types.V8_FYI in x
57
58
20 WATERFALL = { 59 WATERFALL = {
60 'name': 'chromium.gpu',
61 'type': Types.GPU,
62
21 'builders': { 63 'builders': {
22 'GPU Win Builder' : {}, 64 'GPU Win Builder' : {},
23 'GPU Win Builder (dbg)' : {}, 65 'GPU Win Builder (dbg)' : {},
24 'GPU Mac Builder' : {}, 66 'GPU Mac Builder' : {},
25 'GPU Mac Builder (dbg)' : {}, 67 'GPU Mac Builder (dbg)' : {},
26 'GPU Linux Builder' : {}, 68 'GPU Linux Builder' : {},
27 'GPU Linux Builder (dbg)' : {}, 69 'GPU Linux Builder (dbg)' : {},
28 }, 70 },
29 71
30 'testers': { 72 'testers': {
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 }, 157 },
116 ], 158 ],
117 'build_config': 'Debug', 159 'build_config': 'Debug',
118 'swarming': True, 160 'swarming': True,
119 'os_type': 'linux', 161 'os_type': 'linux',
120 }, 162 },
121 } 163 }
122 } 164 }
123 165
124 FYI_WATERFALL = { 166 FYI_WATERFALL = {
167 'name': 'chromium.gpu.fyi',
168 'type': Types.GPU_FYI,
169
125 'builders': { 170 'builders': {
126 'GPU Win Builder' : {}, 171 'GPU Win Builder' : {},
127 'GPU Win Builder (dbg)' : {}, 172 'GPU Win Builder (dbg)' : {},
128 'GPU Win x64 Builder' : {}, 173 'GPU Win x64 Builder' : {},
129 'GPU Win x64 Builder (dbg)' : {}, 174 'GPU Win x64 Builder (dbg)' : {},
130 'GPU Mac Builder' : {}, 175 'GPU Mac Builder' : {},
131 'GPU Mac Builder (dbg)' : {}, 176 'GPU Mac Builder (dbg)' : {},
132 'GPU Linux Builder' : {}, 177 'GPU Linux Builder' : {},
133 'GPU Linux Builder (dbg)' : {}, 178 'GPU Linux Builder (dbg)' : {},
134 'Linux ChromiumOS Builder' : { 179 'Linux ChromiumOS Builder' : {
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 'Optional Win7 Release (NVIDIA)': { 687 'Optional Win7 Release (NVIDIA)': {
643 'swarming_dimensions': [ 688 'swarming_dimensions': [
644 { 689 {
645 'gpu': '10de:104a', 690 'gpu': '10de:104a',
646 'os': 'Windows-2008ServerR2-SP1' 691 'os': 'Windows-2008ServerR2-SP1'
647 }, 692 },
648 ], 693 ],
649 'build_config': 'Release', 694 'build_config': 'Release',
650 'swarming': True, 695 'swarming': True,
651 'os_type': 'win', 696 'os_type': 'win',
697 'type': Types.OPTIONAL,
652 }, 698 },
653 'Optional Win7 Release (AMD)': { 699 'Optional Win7 Release (AMD)': {
654 'swarming_dimensions': [ 700 'swarming_dimensions': [
655 { 701 {
656 'gpu': '1002:6613', 702 'gpu': '1002:6613',
657 'os': 'Windows-2008ServerR2-SP1' 703 'os': 'Windows-2008ServerR2-SP1'
658 }, 704 },
659 ], 705 ],
660 'build_config': 'Release', 706 'build_config': 'Release',
661 'swarming': True, 707 'swarming': True,
662 'os_type': 'win', 708 'os_type': 'win',
709 'type': Types.OPTIONAL,
663 }, 710 },
664 'Optional Mac 10.10 Release (Intel)': { 711 'Optional Mac 10.10 Release (Intel)': {
665 'swarming_dimensions': [ 712 'swarming_dimensions': [
666 { 713 {
667 'gpu': '8086:0a2e', 714 'gpu': '8086:0a2e',
668 'os': 'Mac-10.12' 715 'os': 'Mac-10.12'
669 }, 716 },
670 ], 717 ],
671 'build_config': 'Release', 718 'build_config': 'Release',
672 'swarming': True, 719 'swarming': True,
673 'os_type': 'mac', 720 'os_type': 'mac',
721 'type': Types.OPTIONAL,
674 }, 722 },
675 'Optional Mac Retina Release': { 723 'Optional Mac Retina Release': {
676 'swarming_dimensions': [ 724 'swarming_dimensions': [
677 { 725 {
678 'gpu': '10de:0fe9', 726 'gpu': '10de:0fe9',
679 'hidpi': '1', 727 'hidpi': '1',
680 'os': 'Mac' 728 'os': 'Mac'
681 }, 729 },
682 ], 730 ],
683 'build_config': 'Release', 731 'build_config': 'Release',
684 'swarming': True, 732 'swarming': True,
685 'os_type': 'mac', 733 'os_type': 'mac',
734 'type': Types.OPTIONAL,
686 }, 735 },
687 'Optional Mac 10.10 Retina Release (AMD)': { 736 'Optional Mac 10.10 Retina Release (AMD)': {
688 'swarming_dimensions': [ 737 'swarming_dimensions': [
689 { 738 {
690 'gpu': '1002:6821', 739 'gpu': '1002:6821',
691 'hidpi': '1', 740 'hidpi': '1',
692 'os': 'Mac' 741 'os': 'Mac'
693 }, 742 },
694 ], 743 ],
695 'build_config': 'Release', 744 'build_config': 'Release',
696 'swarming': True, 745 'swarming': True,
697 'os_type': 'mac', 746 'os_type': 'mac',
747 'type': Types.OPTIONAL,
698 }, 748 },
699 'Optional Linux Release (NVIDIA)': { 749 'Optional Linux Release (NVIDIA)': {
700 'swarming_dimensions': [ 750 'swarming_dimensions': [
701 { 751 {
702 'gpu': '10de:104a', 752 'gpu': '10de:104a',
703 'os': 'Ubuntu' 753 'os': 'Ubuntu'
704 }, 754 },
705 ], 755 ],
706 'build_config': 'Release', 756 'build_config': 'Release',
707 'swarming': True, 757 'swarming': True,
708 'os_type': 'linux', 758 'os_type': 'linux',
759 'type': Types.OPTIONAL,
709 }, 760 },
710 } 761 }
711 } 762 }
712 763
713 V8_FYI_WATERFALL = { 764 V8_FYI_WATERFALL = {
765 'name': 'client.v8.fyi',
766 'type': Types.V8_FYI,
767
714 'prologue': { 768 'prologue': {
715 "V8 Android GN (dbg)": { 769 "V8 Android GN (dbg)": {
716 "additional_compile_targets": [ 770 "additional_compile_targets": [
717 "chrome_public_apk" 771 "chrome_public_apk"
718 ], 772 ],
719 "gtest_tests": [] 773 "gtest_tests": []
720 }, 774 },
721 "V8 Linux GN": { 775 "V8 Linux GN": {
722 "additional_compile_targets": [ 776 "additional_compile_targets": [
723 "accessibility_unittests", 777 "accessibility_unittests",
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
808 'swarming': True, 862 'swarming': True,
809 'os_type': 'linux', 863 'os_type': 'linux',
810 }, 864 },
811 } 865 }
812 } 866 }
813 867
814 COMMON_GTESTS = { 868 COMMON_GTESTS = {
815 'angle_deqp_egl_tests': { 869 'angle_deqp_egl_tests': {
816 'tester_configs': [ 870 'tester_configs': [
817 { 871 {
818 'fyi_only': True, 872 # Run this on the FYI waterfall and optional tryservers.
819 # Run this on the optional tryservers. 873 'predicate': Predicates.FYI_AND_OPTIONAL,
820 'run_on_optional': True,
821 # Run only on the Win7 Release NVIDIA 32- and 64-bit bots 874 # Run only on the Win7 Release NVIDIA 32- and 64-bit bots
822 # (and trybots) for the time being, at least until more capacity is 875 # (and trybots) for the time being, at least until more capacity is
823 # added. 876 # added.
824 # TODO(jmadill): Run on the Linux Release NVIDIA bots. 877 # TODO(jmadill): Run on the Linux Release NVIDIA bots.
825 'build_configs': ['Release', 'Release_x64'], 878 'build_configs': ['Release', 'Release_x64'],
826 'swarming_dimension_sets': [ 879 'swarming_dimension_sets': [
827 { 880 {
828 'gpu': '10de:104a', 881 'gpu': '10de:104a',
829 'os': 'Windows-2008ServerR2-SP1' 882 'os': 'Windows-2008ServerR2-SP1'
830 } 883 }
831 ], 884 ],
832 }, 885 },
833 ], 886 ],
834 'args': [ 887 'args': [
835 '--test-launcher-batch-limit=400' 888 '--test-launcher-batch-limit=400'
836 ] 889 ]
837 }, 890 },
838 891
839 'angle_deqp_gles2_d3d11_tests': { 892 'angle_deqp_gles2_d3d11_tests': {
840 'tester_configs': [ 893 'tester_configs': [
841 { 894 {
842 'fyi_only': True, 895 # Run this on the FYI waterfall and optional tryservers.
843 # Run this on the optional tryservers. 896 'predicate': Predicates.FYI_AND_OPTIONAL,
844 'run_on_optional': True,
845 # Run only on the Win7 NVIDIA/AMD R7 240 32- and 64-bit bots (and 897 # Run only on the Win7 NVIDIA/AMD R7 240 32- and 64-bit bots (and
846 # trybots) for the time being, at least until more capacity is 898 # trybots) for the time being, at least until more capacity is
847 # added. 899 # added.
848 'build_configs': ['Release', 'Release_x64'], 900 'build_configs': ['Release', 'Release_x64'],
849 'swarming_dimension_sets': [ 901 'swarming_dimension_sets': [
850 # NVIDIA Win 7 902 # NVIDIA Win 7
851 { 903 {
852 'gpu': '10de:104a', 904 'gpu': '10de:104a',
853 'os': 'Windows-2008ServerR2-SP1' 905 'os': 'Windows-2008ServerR2-SP1'
854 }, 906 },
(...skipping 11 matching lines...) Expand all
866 'test': 'angle_deqp_gles2_tests', 918 'test': 'angle_deqp_gles2_tests',
867 'args': [ 919 'args': [
868 '--test-launcher-batch-limit=400', 920 '--test-launcher-batch-limit=400',
869 '--deqp-egl-display-type=angle-d3d11' 921 '--deqp-egl-display-type=angle-d3d11'
870 ] 922 ]
871 }, 923 },
872 924
873 'angle_deqp_gles2_gl_tests': { 925 'angle_deqp_gles2_gl_tests': {
874 'tester_configs': [ 926 'tester_configs': [
875 { 927 {
876 'fyi_only': True, 928 # Run this on the FYI waterfall and optional tryservers.
877 # Run this on the optional tryservers. 929 'predicate': Predicates.FYI_AND_OPTIONAL,
878 'run_on_optional': True,
879 # Run only on the Linux Release NVIDIA 32- and 64-bit bots (and 930 # Run only on the Linux Release NVIDIA 32- and 64-bit bots (and
880 # trybots) for the time being, at least until more capacity is added. 931 # trybots) for the time being, at least until more capacity is added.
881 'build_configs': ['Release', 'Release_x64'], 932 'build_configs': ['Release', 'Release_x64'],
882 'swarming_dimension_sets': [ 933 'swarming_dimension_sets': [
883 # NVIDIA Linux 934 # NVIDIA Linux
884 { 935 {
885 'gpu': '10de:104a', 936 'gpu': '10de:104a',
886 'os': 'Ubuntu' 937 'os': 'Ubuntu'
887 }, 938 },
888 ], 939 ],
889 }, 940 },
890 ], 941 ],
891 'desktop_swarming': { 942 'desktop_swarming': {
892 'shards': 4, 943 'shards': 4,
893 }, 944 },
894 'test': 'angle_deqp_gles2_tests', 945 'test': 'angle_deqp_gles2_tests',
895 'args': [ 946 'args': [
896 '--test-launcher-batch-limit=400', 947 '--test-launcher-batch-limit=400',
897 '--deqp-egl-display-type=angle-gl' 948 '--deqp-egl-display-type=angle-gl'
898 ] 949 ]
899 }, 950 },
900 951
901 'angle_deqp_gles2_gles_tests': { 952 'angle_deqp_gles2_gles_tests': {
902 'tester_configs': [ 953 'tester_configs': [
903 { 954 {
904 'allow_on_android': True, 955 # Run this on the FYI waterfall and optional tryservers.
905 'fyi_only': True, 956 'predicate': Predicates.FYI_AND_OPTIONAL,
906 # Run this on the optional tryservers.
907 'run_on_optional': True,
908 # Run on Nexus 5X swarmed bots. 957 # Run on Nexus 5X swarmed bots.
909 'build_configs': ['android-chromium'], 958 'build_configs': ['android-chromium'],
910 'swarming_dimension_sets': [ 959 'swarming_dimension_sets': [
911 # Nexus 5X 960 # Nexus 5X
912 { 961 {
913 'device_type': 'bullhead', 962 'device_type': 'bullhead',
914 'device_os': 'M', 963 'device_os': 'M',
915 'os': 'Android' 964 'os': 'Android'
916 } 965 }
917 ], 966 ],
918 }, 967 },
919 ], 968 ],
920 'test': 'angle_deqp_gles2_tests', 969 'test': 'angle_deqp_gles2_tests',
921 # Only pass the display type to desktop. The Android runner doesn't support 970 # Only pass the display type to desktop. The Android runner doesn't support
922 # passing args to the executable but only one display type is supported on 971 # passing args to the executable but only one display type is supported on
923 # Android anyways. 972 # Android anyways.
924 'desktop_args': [ 973 'desktop_args': [
925 '--test-launcher-batch-limit=400', 974 '--test-launcher-batch-limit=400',
926 '--deqp-egl-display-type=angle-gles' 975 '--deqp-egl-display-type=angle-gles'
927 ], 976 ],
928 'android_args': ['--enable-xml-result-parsing'] 977 'android_args': ['--enable-xml-result-parsing']
929 }, 978 },
930 979
931 'angle_deqp_gles3_d3d11_tests': { 980 'angle_deqp_gles3_d3d11_tests': {
932 'tester_configs': [ 981 'tester_configs': [
933 { 982 {
934 'fyi_only': True,
935 # TODO(jmadill): Run this on ANGLE roll tryservers. 983 # TODO(jmadill): Run this on ANGLE roll tryservers.
936 'run_on_optional': False, 984 'predicate': Predicates.FYI_ONLY,
937 # Run only on the NVIDIA and AMD Win7 bots (and trybots) for the time 985 # Run only on the NVIDIA and AMD Win7 bots (and trybots) for the time
938 # being, at least until more capacity is added. 986 # being, at least until more capacity is added.
939 'build_configs': ['Release'], 987 'build_configs': ['Release'],
940 'swarming_dimension_sets': [ 988 'swarming_dimension_sets': [
941 # NVIDIA Win 7 989 # NVIDIA Win 7
942 { 990 {
943 'gpu': '10de:104a', 991 'gpu': '10de:104a',
944 'os': 'Windows-2008ServerR2-SP1' 992 'os': 'Windows-2008ServerR2-SP1'
945 }, 993 },
946 # AMD Win 7 994 # AMD Win 7
(...skipping 10 matching lines...) Expand all
957 'test': 'angle_deqp_gles3_tests', 1005 'test': 'angle_deqp_gles3_tests',
958 'args': [ 1006 'args': [
959 '--test-launcher-batch-limit=400', 1007 '--test-launcher-batch-limit=400',
960 '--deqp-egl-display-type=angle-d3d11' 1008 '--deqp-egl-display-type=angle-d3d11'
961 ] 1009 ]
962 }, 1010 },
963 1011
964 'angle_deqp_gles3_gl_tests': { 1012 'angle_deqp_gles3_gl_tests': {
965 'tester_configs': [ 1013 'tester_configs': [
966 { 1014 {
967 'fyi_only': True,
968 # TODO(jmadill): Run this on ANGLE roll tryservers. 1015 # TODO(jmadill): Run this on ANGLE roll tryservers.
969 'run_on_optional': False, 1016 'predicate': Predicates.FYI_ONLY,
970 # Run only on the Linux Release NVIDIA 32-bit bots (and trybots) for 1017 # Run only on the Linux Release NVIDIA 32-bit bots (and trybots) for
971 # the time being, at least until more capacity is added. 1018 # the time being, at least until more capacity is added.
972 'build_configs': ['Release'], 1019 'build_configs': ['Release'],
973 'swarming_dimension_sets': [ 1020 'swarming_dimension_sets': [
974 # NVIDIA Linux 1021 # NVIDIA Linux
975 { 1022 {
976 'gpu': '10de:104a', 1023 'gpu': '10de:104a',
977 'os': 'Ubuntu' 1024 'os': 'Ubuntu'
978 } 1025 }
979 ], 1026 ],
980 } 1027 }
981 ], 1028 ],
982 'swarming': { 1029 'swarming': {
983 'shards': 12, 1030 'shards': 12,
984 }, 1031 },
985 'test': 'angle_deqp_gles3_tests', 1032 'test': 'angle_deqp_gles3_tests',
986 'args': [ 1033 'args': [
987 '--test-launcher-batch-limit=400', 1034 '--test-launcher-batch-limit=400',
988 '--deqp-egl-display-type=angle-gl' 1035 '--deqp-egl-display-type=angle-gl'
989 ] 1036 ]
990 }, 1037 },
991 1038
992 'angle_deqp_gles31_d3d11_tests': { 1039 'angle_deqp_gles31_d3d11_tests': {
993 'tester_configs': [ 1040 'tester_configs': [
994 { 1041 {
995 'fyi_only': True, 1042 'predicate': Predicates.FYI_ONLY,
996 'run_on_optional': False,
997 # Run on the Win Release NVIDIA bots. 1043 # Run on the Win Release NVIDIA bots.
998 'build_configs': ['Release'], 1044 'build_configs': ['Release'],
999 'swarming_dimension_sets': [ 1045 'swarming_dimension_sets': [
1000 { 1046 {
1001 'gpu': '10de:104a', 1047 'gpu': '10de:104a',
1002 'os': 'Windows-2008ServerR2-SP1' 1048 'os': 'Windows-2008ServerR2-SP1'
1003 } 1049 }
1004 ], 1050 ],
1005 } 1051 }
1006 ], 1052 ],
1007 'swarming': { 1053 'swarming': {
1008 # TODO(geofflang): Increase the number of shards as more tests start to 1054 # TODO(geofflang): Increase the number of shards as more tests start to
1009 # pass and runtime increases. 1055 # pass and runtime increases.
1010 'shards': 4, 1056 'shards': 4,
1011 }, 1057 },
1012 'test': 'angle_deqp_gles31_tests', 1058 'test': 'angle_deqp_gles31_tests',
1013 'args': [ 1059 'args': [
1014 '--test-launcher-batch-limit=400', 1060 '--test-launcher-batch-limit=400',
1015 '--deqp-egl-display-type=angle-d3d11' 1061 '--deqp-egl-display-type=angle-d3d11'
1016 ] 1062 ]
1017 }, 1063 },
1018 1064
1019 'angle_deqp_gles31_gl_tests': { 1065 'angle_deqp_gles31_gl_tests': {
1020 'tester_configs': [ 1066 'tester_configs': [
1021 { 1067 {
1022 'fyi_only': True, 1068 'predicate': Predicates.FYI_ONLY,
1023 'run_on_optional': False, 1069 # Run on the Win Release NVIDIA bots.
1024 # Run on the Win/Linux Release NVIDIA bots.
1025 'build_configs': ['Release'], 1070 'build_configs': ['Release'],
1026 'swarming_dimension_sets': [ 1071 'swarming_dimension_sets': [
1027 { 1072 {
1028 'gpu': '10de:104a', 1073 'gpu': '10de:104a',
1029 'os': 'Windows-2008ServerR2-SP1' 1074 'os': 'Windows-2008ServerR2-SP1'
1030 }, 1075 },
1031 { 1076 {
1032 'gpu': '10de:104a', 1077 'gpu': '10de:104a',
1033 'os': 'Ubuntu' 1078 'os': 'Ubuntu'
1034 } 1079 }
(...skipping 11 matching lines...) Expand all
1046 '--deqp-egl-display-type=angle-gl' 1091 '--deqp-egl-display-type=angle-gl'
1047 ] 1092 ]
1048 }, 1093 },
1049 1094
1050 # Until we have more capacity, run angle_end2end_tests only on the 1095 # Until we have more capacity, run angle_end2end_tests only on the
1051 # FYI waterfall, the ANGLE trybots (which mirror the FYI waterfall), 1096 # FYI waterfall, the ANGLE trybots (which mirror the FYI waterfall),
1052 # and the optional trybots (mainly used during ANGLE rolls). 1097 # and the optional trybots (mainly used during ANGLE rolls).
1053 'angle_end2end_tests': { 1098 'angle_end2end_tests': {
1054 'tester_configs': [ 1099 'tester_configs': [
1055 { 1100 {
1056 'allow_on_android': True, 1101 'predicate': Predicates.FYI_AND_OPTIONAL,
1057 'fyi_only': True,
1058 'run_on_optional': True,
1059 }, 1102 },
1060 ], 1103 ],
1061 'disabled_tester_configs': [ 1104 'disabled_tester_configs': [
1062 { 1105 {
1063 'names': [ 1106 'names': [
1064 # TODO(ynovikov) Investigate why the test breaks on older devices. 1107 # TODO(ynovikov) Investigate why the test breaks on older devices.
1065 'Android Release (Nexus 5)', 1108 'Android Release (Nexus 5)',
1066 'Android Release (Nexus 6)', 1109 'Android Release (Nexus 6)',
1067 'Android Release (Nexus 9)', 1110 'Android Release (Nexus 9)',
1068 1111
1069 # These tests are flaky on old AMD. 1112 # These tests are flaky on old AMD.
1070 # TODO(jmadill): Enably flaky test retries only on this config. 1113 # TODO(jmadill): Enably flaky test retries only on this config.
1071 'Win7 Release (AMD R5 230)', 1114 'Win7 Release (AMD R5 230)',
1072 ], 1115 ],
1073 }, 1116 },
1074 ], 1117 ],
1075 'desktop_args': [ 1118 'desktop_args': [
1076 '--use-gpu-in-tests', 1119 '--use-gpu-in-tests',
1077 # ANGLE test retries deliberately disabled to prevent flakiness. 1120 # ANGLE test retries deliberately disabled to prevent flakiness.
1078 # http://crbug.com/669196 1121 # http://crbug.com/669196
1079 '--test-launcher-retry-limit=0' 1122 '--test-launcher-retry-limit=0'
1080 ] 1123 ]
1081 }, 1124 },
1082 'angle_unittests': { 1125 'angle_unittests': {
1083 'tester_configs': [
1084 {
1085 'allow_on_android': True,
1086 }
1087 ],
1088 'desktop_args': [ 1126 'desktop_args': [
1089 '--use-gpu-in-tests', 1127 '--use-gpu-in-tests',
1090 # ANGLE test retries deliberately disabled to prevent flakiness. 1128 # ANGLE test retries deliberately disabled to prevent flakiness.
1091 # http://crbug.com/669196 1129 # http://crbug.com/669196
1092 '--test-launcher-retry-limit=0' 1130 '--test-launcher-retry-limit=0'
1093 ] 1131 ]
1094 }, 1132 },
1095 # Until the media-only tests are extracted from content_unittests, 1133 # Until the media-only tests are extracted from content_unittests,
1096 # and audio_unittests and content_unittests can be run on the commit 1134 # and audio_unittests and content_unittests can be run on the commit
1097 # queue with --require-audio-hardware-for-testing, run them only on 1135 # queue with --require-audio-hardware-for-testing, run them only on
1098 # the FYI waterfall. 1136 # the FYI waterfall.
1099 # 1137 #
1100 # Note that the transition to the Chromium recipe has forced the 1138 # Note that the transition to the Chromium recipe has forced the
1101 # removal of the --require-audio-hardware-for-testing flag for the 1139 # removal of the --require-audio-hardware-for-testing flag for the
1102 # time being. See crbug.com/574942. 1140 # time being. See crbug.com/574942.
1103 'audio_unittests': { 1141 'audio_unittests': {
1104 'tester_configs': [ 1142 'tester_configs': [
1105 { 1143 {
1106 'fyi_only': True, 1144 'predicate': Predicates.FYI_ONLY,
1107 } 1145 }
1108 ], 1146 ],
1147 # Don't run these tests on Android.
1148 'disabled_tester_configs': [
1149 {
1150 'os_types': ['android'],
1151 },
1152 ],
1109 'args': ['--use-gpu-in-tests'] 1153 'args': ['--use-gpu-in-tests']
1110 }, 1154 },
1111 # TODO(kbr): content_unittests is killing the Linux GPU swarming 1155 # TODO(kbr): content_unittests is killing the Linux GPU swarming
1112 # bots. crbug.com/582094 . It's not useful now anyway until audio 1156 # bots. crbug.com/582094 . It's not useful now anyway until audio
1113 # hardware is deployed on the swarming bots, so stop running it 1157 # hardware is deployed on the swarming bots, so stop running it
1114 # everywhere. 1158 # everywhere.
1115 # 'content_unittests': {}, 1159 # 'content_unittests': {},
1116 'gl_tests': { 1160 'gl_tests': {
1117 'tester_configs': [
1118 {
1119 'allow_on_android': True,
1120 }
1121 ],
1122 'disabled_tester_configs': [ 1161 'disabled_tester_configs': [
1123 { 1162 {
1124 'names': [ 1163 'names': [
1125 # TODO(kbr): investigate inability to recognize this 1164 # TODO(kbr): investigate inability to recognize this
1126 # configuration in the various tests. crbug.com/624621 1165 # configuration in the various tests. crbug.com/624621
1127 'Android Release (Pixel C)', 1166 'Android Release (Pixel C)',
1128 ], 1167 ],
1129 }, 1168 },
1130 ], 1169 ],
1131 'desktop_args': ['--use-gpu-in-tests'] 1170 'desktop_args': ['--use-gpu-in-tests']
1132 }, 1171 },
1133 'gl_unittests': { 1172 'gl_unittests': {
1134 'tester_configs': [
1135 {
1136 'allow_on_android': True,
1137 }
1138 ],
1139 'desktop_args': ['--use-gpu-in-tests'] 1173 'desktop_args': ['--use-gpu-in-tests']
1140 }, 1174 },
1141 # The gles2_conform_tests are closed-source and deliberately only run 1175 # The gles2_conform_tests are closed-source and deliberately only run
1142 # on the FYI waterfall and the optional tryservers. 1176 # on the FYI waterfall and the optional tryservers.
1143 'gles2_conform_test': { 1177 'gles2_conform_test': {
1144 'tester_configs': [ 1178 'tester_configs': [
1145 { 1179 {
1146 'fyi_only': True, 1180 # Run this on the FYI waterfall and optional tryservers.
1147 # Run this on the optional tryservers. 1181 'predicate': Predicates.FYI_AND_OPTIONAL,
1148 'run_on_optional': True,
1149 } 1182 }
1150 ], 1183 ],
1184 # Don't run these tests on Android.
1185 'disabled_tester_configs': [
1186 {
1187 'os_types': ['android'],
1188 },
1189 ],
1151 'args': ['--use-gpu-in-tests'] 1190 'args': ['--use-gpu-in-tests']
1152 }, 1191 },
1153 'gles2_conform_d3d9_test': { 1192 'gles2_conform_d3d9_test': {
1154 'tester_configs': [ 1193 'tester_configs': [
1155 { 1194 {
1156 'fyi_only': True, 1195 # Run this on the FYI waterfall and optional tryservers.
1196 'predicate': Predicates.FYI_AND_OPTIONAL,
1157 'os_types': ['win'], 1197 'os_types': ['win'],
1158 # Run this on the optional tryservers.
1159 'run_on_optional': True,
1160 } 1198 }
1161 ], 1199 ],
1162 'args': [ 1200 'args': [
1163 '--use-gpu-in-tests', 1201 '--use-gpu-in-tests',
1164 '--use-angle=d3d9', 1202 '--use-angle=d3d9',
1165 ], 1203 ],
1166 'test': 'gles2_conform_test', 1204 'test': 'gles2_conform_test',
1167 }, 1205 },
1168 'gles2_conform_gl_test': { 1206 'gles2_conform_gl_test': {
1169 'tester_configs': [ 1207 'tester_configs': [
1170 { 1208 {
1171 'fyi_only': True, 1209 # Run this on the FYI waterfall and optional tryservers.
1210 'predicate': Predicates.FYI_AND_OPTIONAL,
1172 'os_types': ['win'], 1211 'os_types': ['win'],
1173 # Run this on the optional tryservers.
1174 'run_on_optional': True,
1175 } 1212 }
1176 ], 1213 ],
1177 'args': [ 1214 'args': [
1178 '--use-gpu-in-tests', 1215 '--use-gpu-in-tests',
1179 '--use-angle=gl', 1216 '--use-angle=gl',
1180 '--disable-gpu-sandbox', 1217 '--disable-gpu-sandbox',
1181 ], 1218 ],
1182 'test': 'gles2_conform_test', 1219 'test': 'gles2_conform_test',
1183 }, 1220 },
1184 'swiftshader_unittests': { 1221 'swiftshader_unittests': {
1185 'tester_configs': [ 1222 'tester_configs': [
1186 { 1223 {
1187 'fyi_only': True, 1224 # Run this on the FYI waterfall and optional tryservers.
1188 # Run this on the optional tryservers. 1225 'predicate': Predicates.FYI_AND_OPTIONAL,
1189 'run_on_optional': True,
1190 'os_types': ['win', 'linux'], 1226 'os_types': ['win', 'linux'],
1191 }, 1227 },
1192 ], 1228 ],
1193 }, 1229 },
1194 'tab_capture_end2end_tests': { 1230 'tab_capture_end2end_tests': {
1195 'tester_configs': [ 1231 'tester_configs': [
1196 { 1232 {
1197 'build_configs': ['Release', 'Release_x64'], 1233 'build_configs': ['Release', 'Release_x64'],
1198 } 1234 }
1199 ], 1235 ],
1236 # Don't run these tests on Android.
1237 'disabled_tester_configs': [
1238 {
1239 'os_types': ['android'],
1240 },
1241 ],
1200 'override_compile_targets': [ 1242 'override_compile_targets': [
1201 'tab_capture_end2end_tests_run', 1243 'tab_capture_end2end_tests_run',
1202 ], 1244 ],
1203 }, 1245 },
1204 'video_decode_accelerator_unittest': { 1246 'video_decode_accelerator_unittest': {
1205 'tester_configs': [ 1247 'tester_configs': [
1206 { 1248 {
1207 'os_types': ['win'] 1249 'os_types': ['win']
1208 }, 1250 },
1209 ], 1251 ],
1210 'args': [ 1252 'args': [
1211 '--use-test-data-path', 1253 '--use-test-data-path',
1212 ], 1254 ],
1213 }, 1255 },
1214 } 1256 }
1215 1257
1216 # This requires a hack because the isolate's name is different than 1258 # This requires a hack because the isolate's name is different than
1217 # the executable's name. On the few non-swarmed testers, this causes 1259 # the executable's name. On the few non-swarmed testers, this causes
1218 # the executable to not be found. It would be better if the Chromium 1260 # the executable to not be found. It would be better if the Chromium
1219 # recipe supported running isolates locally. crbug.com/581953 1261 # recipe supported running isolates locally. crbug.com/581953
1220 1262
1221 NON_SWARMED_GTESTS = { 1263 NON_SWARMED_GTESTS = {
1222 'tab_capture_end2end_tests': { 1264 'tab_capture_end2end_tests': {
1223 'swarming': { 1265 'swarming': {
1224 'can_use_on_swarming_builders': False 1266 'can_use_on_swarming_builders': False
1225 }, 1267 },
1226 'test': 'browser_tests', 1268 # Don't run these tests on Android.
1227 'args': [ 1269 'disabled_tester_configs': [
1228 '--enable-gpu', 1270 {
1229 '--test-launcher-jobs=1', 1271 'os_types': ['android'],
1230 '--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:' + \ 1272 },
1231 'TabCaptureApiPixelTest.EndToEnd*' 1273 ],
1232 ], 1274 'test': 'browser_tests',
1233 'swarming': { 1275 'args': [
1234 'can_use_on_swarming_builders': False, 1276 '--enable-gpu',
1235 }, 1277 '--test-launcher-jobs=1',
1278 '--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:' + \
1279 'TabCaptureApiPixelTest.EndToEnd*'
1280 ],
1281 'swarming': {
1282 'can_use_on_swarming_builders': False,
1283 },
1236 } 1284 }
1237 } 1285 }
1238 1286
1239 # These tests use Telemetry's new browser_test_runner, which is a much 1287 # These tests use Telemetry's new browser_test_runner, which is a much
1240 # simpler harness for correctness testing. 1288 # simpler harness for correctness testing.
1241 TELEMETRY_GPU_INTEGRATION_TESTS = { 1289 TELEMETRY_GPU_INTEGRATION_TESTS = {
1242 'context_lost': { 1290 'context_lost': {
1243 'tester_configs': [ 1291 'tester_configs': [
1244 { 1292 {
1245 'allow_on_android': True, 1293 'predicate': Predicates.DEFAULT_PLUS_V8,
1246 'run_on_v8': True,
1247 }, 1294 },
1248 ] 1295 ]
1249 }, 1296 },
1250 'depth_capture': { 1297 'depth_capture': {
1251 'tester_configs': [ 1298 'tester_configs': [
1252 { 1299 {
1253 'allow_on_android': True, 1300 'predicate': Predicates.DEFAULT_PLUS_V8,
1254 'run_on_v8': True,
1255 }, 1301 },
1256 ] 1302 ]
1257 }, 1303 },
1258 'gpu_process_launch_tests': { 1304 'gpu_process_launch_tests': {
1259 'target_name': 'gpu_process', 1305 'target_name': 'gpu_process',
1260 'tester_configs': [ 1306 'tester_configs': [
1261 { 1307 {
1262 'allow_on_android': True, 1308 'predicate': Predicates.DEFAULT_PLUS_V8,
1263 'run_on_v8': True,
1264 } 1309 }
1265 ], 1310 ],
1266 }, 1311 },
1267 'hardware_accelerated_feature': { 1312 'hardware_accelerated_feature': {
1268 'tester_configs': [ 1313 'tester_configs': [
1269 { 1314 {
1270 'allow_on_android': True, 1315 'predicate': Predicates.DEFAULT_PLUS_V8,
1271 'run_on_v8': True,
1272 }, 1316 },
1273 ], 1317 ],
1274 }, 1318 },
1275 'maps_pixel_test': { 1319 'maps_pixel_test': {
1276 'target_name': 'maps', 1320 'target_name': 'maps',
1277 'args': [ 1321 'args': [
1278 '--os-type', 1322 '--os-type',
1279 '${os_type}', 1323 '${os_type}',
1280 '--build-revision', 1324 '--build-revision',
1281 '${got_revision}', 1325 '${got_revision}',
1282 '--test-machine-name', 1326 '--test-machine-name',
1283 '${buildername}', 1327 '${buildername}',
1284 ], 1328 ],
1285 'tester_configs': [ 1329 'tester_configs': [
1286 { 1330 {
1287 'allow_on_android': True, 1331 'predicate': Predicates.DEFAULT_PLUS_V8,
1288 'run_on_v8': True,
1289 }, 1332 },
1290 ], 1333 ],
1291 }, 1334 },
1292 'pixel_test': { 1335 'pixel_test': {
1293 'target_name': 'pixel', 1336 'target_name': 'pixel',
1294 'args': [ 1337 'args': [
1295 '--refimg-cloud-storage-bucket', 1338 '--refimg-cloud-storage-bucket',
1296 'chromium-gpu-archive/reference-images', 1339 'chromium-gpu-archive/reference-images',
1297 '--os-type', 1340 '--os-type',
1298 '${os_type}', 1341 '${os_type}',
1299 '--build-revision', 1342 '--build-revision',
1300 '${got_revision}', 1343 '${got_revision}',
1301 '--test-machine-name', 1344 '--test-machine-name',
1302 '${buildername}', 1345 '${buildername}',
1303 ], 1346 ],
1304 'non_precommit_args': [ 1347 'non_precommit_args': [
1305 '--upload-refimg-to-cloud-storage', 1348 '--upload-refimg-to-cloud-storage',
1306 ], 1349 ],
1307 'precommit_args': [ 1350 'precommit_args': [
1308 '--download-refimg-from-cloud-storage', 1351 '--download-refimg-from-cloud-storage',
1309 ], 1352 ],
1310 'tester_configs': [ 1353 'tester_configs': [
1311 { 1354 {
1312 'allow_on_android': True, 1355 'predicate': Predicates.DEFAULT_PLUS_V8,
1313 'run_on_v8': True,
1314 }, 1356 },
1315 ], 1357 ],
1316 }, 1358 },
1317 'screenshot_sync': { 1359 'screenshot_sync': {
1318 'tester_configs': [ 1360 'tester_configs': [
1319 { 1361 {
1320 'allow_on_android': True, 1362 'predicate': Predicates.DEFAULT_PLUS_V8,
1321 'run_on_v8': True,
1322 }, 1363 },
1323 ], 1364 ],
1324 }, 1365 },
1325 'trace_test': { 1366 'trace_test': {
1326 'tester_configs': [ 1367 'tester_configs': [
1327 { 1368 {
1328 'allow_on_android': True, 1369 'predicate': Predicates.DEFAULT_PLUS_V8,
1329 'run_on_v8': True,
1330 }, 1370 },
1331 ], 1371 ],
1332 }, 1372 },
1333 'webgl_conformance': { 1373 'webgl_conformance': {
1334 'tester_configs': [ 1374 'tester_configs': [
1335 { 1375 {
1336 'allow_on_android': True, 1376 'predicate': Predicates.DEFAULT_PLUS_V8,
1337 'run_on_v8': True,
1338 }, 1377 },
1339 ], 1378 ],
1340 'asan_args': ['--is-asan'], 1379 'asan_args': ['--is-asan'],
1341 }, 1380 },
1342 'webgl_conformance_d3d9_tests': { 1381 'webgl_conformance_d3d9_tests': {
1343 'tester_configs': [ 1382 'tester_configs': [
1344 { 1383 {
1345 'fyi_only': True, 1384 # Run this on the FYI waterfall and optional tryservers.
1385 'predicate': Predicates.FYI_AND_OPTIONAL,
1346 'os_types': ['win'], 1386 'os_types': ['win'],
1347 'run_on_optional': True,
1348 } 1387 }
1349 ], 1388 ],
1350 'target_name': 'webgl_conformance', 1389 'target_name': 'webgl_conformance',
1351 'extra_browser_args': [ 1390 'extra_browser_args': [
1352 '--use-angle=d3d9', 1391 '--use-angle=d3d9',
1353 ], 1392 ],
1354 'asan_args': ['--is-asan'], 1393 'asan_args': ['--is-asan'],
1355 }, 1394 },
1356 'webgl_conformance_gl_tests': { 1395 'webgl_conformance_gl_tests': {
1357 'tester_configs': [ 1396 'tester_configs': [
1358 { 1397 {
1359 'fyi_only': True, 1398 # Run this on the FYI waterfall and optional tryservers.
1399 'predicate': Predicates.FYI_AND_OPTIONAL,
1360 'os_types': ['win'], 1400 'os_types': ['win'],
1361 'run_on_optional': True,
1362 } 1401 }
1363 ], 1402 ],
1364 'disabled_tester_configs': [ 1403 'disabled_tester_configs': [
1365 { 1404 {
1366 'swarming_dimension_sets': [ 1405 'swarming_dimension_sets': [
1367 # crbug.com/555545 and crbug.com/649824: 1406 # crbug.com/555545 and crbug.com/649824:
1368 # Disable webgl_conformance_gl_tests on some Win/AMD cards. 1407 # Disable webgl_conformance_gl_tests on some Win/AMD cards.
1369 # Always fails on older cards, flaky on newer cards. 1408 # Always fails on older cards, flaky on newer cards.
1370 # Note that these must match the GPUs exactly; wildcard 1409 # Note that these must match the GPUs exactly; wildcard
1371 # matches (i.e., only device ID) aren't supported! 1410 # matches (i.e., only device ID) aren't supported!
(...skipping 19 matching lines...) Expand all
1391 ], 1430 ],
1392 'target_name': 'webgl_conformance', 1431 'target_name': 'webgl_conformance',
1393 'extra_browser_args': [ 1432 'extra_browser_args': [
1394 '--use-angle=gl', 1433 '--use-angle=gl',
1395 ], 1434 ],
1396 'asan_args': ['--is-asan'], 1435 'asan_args': ['--is-asan'],
1397 }, 1436 },
1398 'webgl_conformance_angle_tests': { 1437 'webgl_conformance_angle_tests': {
1399 'tester_configs': [ 1438 'tester_configs': [
1400 { 1439 {
1401 'fyi_only': True, 1440 # Run this on the FYI waterfall and optional tryservers.
1441 'predicate': Predicates.FYI_AND_OPTIONAL,
1402 'os_types': ['linux'], 1442 'os_types': ['linux'],
1403 'run_on_optional': True,
1404 } 1443 }
1405 ], 1444 ],
1406 'target_name': 'webgl_conformance', 1445 'target_name': 'webgl_conformance',
1407 'extra_browser_args': [ 1446 'extra_browser_args': [
1408 '--use-gl=angle', 1447 '--use-gl=angle',
1409 ], 1448 ],
1410 'asan_args': ['--is-asan'], 1449 'asan_args': ['--is-asan'],
1411 }, 1450 },
1412 'webgl_conformance_d3d11_passthrough': { 1451 'webgl_conformance_d3d11_passthrough': {
1413 'tester_configs': [ 1452 'tester_configs': [
1414 { 1453 {
1415 'fyi_only': True, 1454 # Run this on the FYI waterfall and optional tryservers.
1455 'predicate': Predicates.FYI_AND_OPTIONAL,
1416 'os_types': ['win'], 1456 'os_types': ['win'],
1417 'run_on_optional': True,
1418 } 1457 }
1419 ], 1458 ],
1420 'target_name': 'webgl_conformance', 1459 'target_name': 'webgl_conformance',
1421 'extra_browser_args': [ 1460 'extra_browser_args': [
1422 '--use-angle=d3d11', 1461 '--use-angle=d3d11',
1423 '--use-passthrough-cmd-decoder', 1462 '--use-passthrough-cmd-decoder',
1424 # TODO(geofflang): Remove --disable-es3-apis once crbug.com/671217 is 1463 # TODO(geofflang): Remove --disable-es3-apis once crbug.com/671217 is
1425 # complete. 1464 # complete.
1426 '--disable-es3-apis', 1465 '--disable-es3-apis',
1427 # TODO(geofflang): --disable-es3-gl-context is required because of 1466 # TODO(geofflang): --disable-es3-gl-context is required because of
1428 # crbug.com/680522 1467 # crbug.com/680522
1429 '--disable-es3-gl-context', 1468 '--disable-es3-gl-context',
1430 ], 1469 ],
1431 'asan_args': ['--is-asan'], 1470 'asan_args': ['--is-asan'],
1432 }, 1471 },
1433 'webgl2_conformance_tests': { 1472 'webgl2_conformance_tests': {
1434 'tester_configs': [ 1473 'tester_configs': [
1435 { 1474 {
1436 # The WebGL 2.0 conformance tests take over an hour to run on 1475 # The WebGL 2.0 conformance tests take over an hour to run on
1437 # the Debug bots, which is too long. 1476 # the Debug bots, which is too long.
1438 'build_configs': ['Release', 'Release_x64'], 1477 'build_configs': ['Release', 'Release_x64'],
1439 'fyi_only': True, 1478 'predicate': Predicates.FYI_OPTIONAL_AND_V8,
1440 'run_on_optional': True,
1441 'run_on_v8': True,
1442 }, 1479 },
1443 ], 1480 ],
1444 'disabled_tester_configs': [ 1481 'disabled_tester_configs': [
1445 { 1482 {
1446 'names': [ 1483 'names': [
1447 # http://crbug.com/599451: this test is currently too slow 1484 # http://crbug.com/599451: this test is currently too slow
1448 # to run on x64 in Debug mode. Need to shard the tests. 1485 # to run on x64 in Debug mode. Need to shard the tests.
1449 'Win7 x64 Debug (NVIDIA)', 1486 'Win7 x64 Debug (NVIDIA)',
1450 ], 1487 ],
1488 # Don't run these tests on Android yet.
1489 'os_types': ['android'],
1451 }, 1490 },
1452 ], 1491 ],
1453 'target_name': 'webgl_conformance', 1492 'target_name': 'webgl_conformance',
1454 'args': [ 1493 'args': [
1455 '--webgl-conformance-version=2.0.1', 1494 '--webgl-conformance-version=2.0.1',
1456 # The current working directory when run via isolate is 1495 # The current working directory when run via isolate is
1457 # out/Debug or out/Release. Reference this file relatively to 1496 # out/Debug or out/Release. Reference this file relatively to
1458 # it. 1497 # it.
1459 '--read-abbreviated-json-results-from=' + \ 1498 '--read-abbreviated-json-results-from=' + \
1460 '../../content/test/data/gpu/webgl2_conformance_tests_output.json', 1499 '../../content/test/data/gpu/webgl2_conformance_tests_output.json',
1461 ], 1500 ],
1462 'asan_args': ['--is-asan'], 1501 'asan_args': ['--is-asan'],
1463 'swarming': { 1502 'swarming': {
1464 # These tests currently take about an hour and fifteen minutes 1503 # These tests currently take about an hour and fifteen minutes
1465 # to run. Split them into roughly 5-minute shards. 1504 # to run. Split them into roughly 5-minute shards.
1466 'shards': 15, 1505 'shards': 15,
1467 }, 1506 },
1468 }, 1507 },
1469 'webgl2_conformance_angle_tests': { 1508 'webgl2_conformance_angle_tests': {
1470 'tester_configs': [ 1509 'tester_configs': [
1471 { 1510 {
1472 # The WebGL 2.0 conformance tests take over an hour to run on 1511 # The WebGL 2.0 conformance tests take over an hour to run on
1473 # the Debug bots, which is too long. 1512 # the Debug bots, which is too long.
1474 'build_configs': ['Release'], 1513 'build_configs': ['Release'],
1475 'fyi_only': True, 1514 'predicate': Predicates.FYI_ONLY,
1476 'run_on_optional': False, 1515 # Only run on the NVIDIA Release and Intel Release Linux bots.
1477 # Only run on the NVIDIA Release and Intel Release Linux bots
1478 'swarming_dimension_sets': [ 1516 'swarming_dimension_sets': [
1479 { 1517 {
1480 'gpu': '10de:104a', 1518 'gpu': '10de:104a',
1481 'os': 'Ubuntu' 1519 'os': 'Ubuntu'
1482 }, 1520 },
1483 { 1521 {
1484 'gpu': '8086:0412', 1522 'gpu': '8086:0412',
1485 'os': 'Ubuntu' 1523 'os': 'Ubuntu'
1486 }, 1524 },
1487 { 1525 {
(...skipping 24 matching lines...) Expand all
1512 }, 1550 },
1513 } 1551 }
1514 1552
1515 # These isolated tests don't use telemetry. They need to be placed in the 1553 # These isolated tests don't use telemetry. They need to be placed in the
1516 # isolated_scripts section of the generated json. 1554 # isolated_scripts section of the generated json.
1517 NON_TELEMETRY_ISOLATED_SCRIPT_TESTS = { 1555 NON_TELEMETRY_ISOLATED_SCRIPT_TESTS = {
1518 # We run angle_perftests on the ANGLE CQ to ensure the tests don't crash. 1556 # We run angle_perftests on the ANGLE CQ to ensure the tests don't crash.
1519 'angle_perftests': { 1557 'angle_perftests': {
1520 'tester_configs': [ 1558 'tester_configs': [
1521 { 1559 {
1522 'fyi_only': True, 1560 'predicate': Predicates.FYI_AND_OPTIONAL,
1523 'run_on_optional': True,
1524 # Run on the Win/Linux Release NVIDIA bots. 1561 # Run on the Win/Linux Release NVIDIA bots.
1525 'build_configs': ['Release'], 1562 'build_configs': ['Release'],
1526 'swarming_dimension_sets': [ 1563 'swarming_dimension_sets': [
1527 { 1564 {
1528 'gpu': '10de:104a', 1565 'gpu': '10de:104a',
1529 'os': 'Windows-2008ServerR2-SP1' 1566 'os': 'Windows-2008ServerR2-SP1'
1530 }, 1567 },
1531 { 1568 {
1532 'gpu': '10de:104a', 1569 'gpu': '10de:104a',
1533 'os': 'Ubuntu' 1570 'os': 'Ubuntu'
(...skipping 19 matching lines...) Expand all
1553 if set(dimensions.items()).issubset(cur_dims.items()): 1590 if set(dimensions.items()).issubset(cur_dims.items()):
1554 return True 1591 return True
1555 return False 1592 return False
1556 1593
1557 def is_android(tester_config): 1594 def is_android(tester_config):
1558 return tester_config['os_type'] == 'android' 1595 return tester_config['os_type'] == 'android'
1559 1596
1560 def is_asan(tester_config): 1597 def is_asan(tester_config):
1561 return tester_config.get('is_asan', False) 1598 return tester_config.get('is_asan', False)
1562 1599
1563 def tester_config_matches_tester(tester_name, tester_config, tc, is_fyi, is_v8, 1600
1601 # Returns a list describing the type of this tester. It may include
1602 # both the type of the bot as well as the waterfall.
1603 def get_tester_type(tester_config):
1604 result = []
1605 if 'type' in tester_config:
1606 result.append(tester_config['type'])
1607 result.append(tester_config['parent']['type'])
1608 return result
1609
1610 def tester_config_matches_tester(tester_name, tester_config, tc,
1564 check_waterfall): 1611 check_waterfall):
1565 if check_waterfall: 1612 if check_waterfall:
1566 if tc.get('fyi_only', False) and not is_fyi: 1613 if not tc.get('predicate', Predicates.DEFAULT)(
1567 return False 1614 get_tester_type(tester_config)):
1568
1569 # Handle the optional tryservers with the 'run_on_optional' flag.
1570 # Only a subset of the tests run on these tryservers.
1571 if tester_name.startswith('Optional') and not tc.get(
1572 'run_on_optional', False):
1573 return False
1574
1575 # Handle the client.v8.fyi GPU bots with the 'run_on_v8' flag.
1576 if (is_v8 and not tc.get('run_on_v8', False)):
1577 return False 1615 return False
1578 1616
1579 if 'names' in tc: 1617 if 'names' in tc:
1580 # Give priority to matching the tester_name. 1618 # Give priority to matching the tester_name.
1581 if tester_name in tc['names']: 1619 if tester_name in tc['names']:
1582 return True 1620 return True
1583 if not tester_name in tc['names']: 1621 if not tester_name in tc['names']:
1584 return False 1622 return False
1585 if 'os_types' in tc: 1623 if 'os_types' in tc:
1586 if not tester_config['os_type'] in tc['os_types']: 1624 if not tester_config['os_type'] in tc['os_types']:
1587 return False 1625 return False
1588 if 'build_configs' in tc: 1626 if 'build_configs' in tc:
1589 if not tester_config['build_config'] in tc['build_configs']: 1627 if not tester_config['build_config'] in tc['build_configs']:
1590 return False 1628 return False
1591 if 'swarming_dimension_sets' in tc: 1629 if 'swarming_dimension_sets' in tc:
1592 if not matches_swarming_dimensions(tester_config, 1630 if not matches_swarming_dimensions(tester_config,
1593 tc['swarming_dimension_sets']): 1631 tc['swarming_dimension_sets']):
1594 return False 1632 return False
1595 if is_android(tester_config):
1596 if not tc.get('allow_on_android', False):
1597 return False
1598 return True 1633 return True
1599 1634
1600 def should_run_on_tester(tester_name, tester_config, test_config, 1635 def should_run_on_tester(tester_name, tester_config, test_config):
1601 is_fyi, is_v8):
1602 # Check if this config is disabled on this tester 1636 # Check if this config is disabled on this tester
1603 if 'disabled_tester_configs' in test_config: 1637 if 'disabled_tester_configs' in test_config:
1604 for dtc in test_config['disabled_tester_configs']: 1638 for dtc in test_config['disabled_tester_configs']:
1605 if tester_config_matches_tester(tester_name, tester_config, dtc, 1639 if tester_config_matches_tester(tester_name, tester_config, dtc, False):
1606 is_fyi, is_v8, False):
1607 return False 1640 return False
1608 if 'tester_configs' in test_config: 1641 if 'tester_configs' in test_config:
1609 for tc in test_config['tester_configs']: 1642 for tc in test_config['tester_configs']:
1610 if tester_config_matches_tester(tester_name, tester_config, tc, 1643 if tester_config_matches_tester(tester_name, tester_config, tc, True):
1611 is_fyi, is_v8, True):
1612 return True 1644 return True
1613 return False 1645 return False
1614 else: 1646 else:
1615 # If tester_configs is unspecified, run nearly all tests by default, 1647 # If tester_configs is unspecified, run nearly all tests by default,
1616 # but let tester_config_matches_tester filter out any undesired 1648 # but let tester_config_matches_tester filter out any undesired
1617 # tests, such as ones that should only run on the Optional bots. 1649 # tests, such as ones that should only run on the Optional bots.
1618 return tester_config_matches_tester(tester_name, tester_config, {}, 1650 return tester_config_matches_tester(tester_name, tester_config, {}, True)
1619 is_fyi, is_v8, True)
1620 1651
1621 def generate_gtest(tester_name, tester_config, test, test_config, 1652 def remove_tester_configs_from_result(result):
1622 is_fyi, is_v8):
1623 if not should_run_on_tester(tester_name, tester_config, test_config,
1624 is_fyi, is_v8):
1625 return None
1626 result = copy.deepcopy(test_config)
1627 if 'tester_configs' in result: 1653 if 'tester_configs' in result:
1628 # Don't print the tester_configs in the JSON. 1654 # Don't print the tester_configs in the JSON.
1629 result.pop('tester_configs') 1655 result.pop('tester_configs')
1630 if 'disabled_tester_configs' in result: 1656 if 'disabled_tester_configs' in result:
1631 # Don't print the disabled_tester_configs in the JSON. 1657 # Don't print the disabled_tester_configs in the JSON.
1632 result.pop('disabled_tester_configs') 1658 result.pop('disabled_tester_configs')
1659
1660 def generate_gtest(tester_name, tester_config, test, test_config):
1661 if not should_run_on_tester(tester_name, tester_config, test_config):
1662 return None
1663 result = copy.deepcopy(test_config)
1633 if 'test' in result: 1664 if 'test' in result:
1634 result['name'] = test 1665 result['name'] = test
1635 else: 1666 else:
1636 result['test'] = test 1667 result['test'] = test
1637 if (not tester_config['swarming']) and test in NON_SWARMED_GTESTS: 1668 if (not tester_config['swarming']) and test in NON_SWARMED_GTESTS:
1638 # Need to override this result. 1669 # Need to override this result.
1639 result = copy.deepcopy(NON_SWARMED_GTESTS[test]) 1670 result = copy.deepcopy(NON_SWARMED_GTESTS[test])
1640 result['name'] = test 1671 result['name'] = test
1641 else: 1672 else:
1642 if not 'swarming' in result: 1673 if not 'swarming' in result:
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1684 if not 'args' in result: 1715 if not 'args' in result:
1685 result['args'] = [] 1716 result['args'] = []
1686 result['args'] += result['android_args'] 1717 result['args'] += result['android_args']
1687 # Don't put the android args in the JSON. 1718 # Don't put the android args in the JSON.
1688 result.pop('android_args') 1719 result.pop('android_args')
1689 if 'desktop_swarming' in result: 1720 if 'desktop_swarming' in result:
1690 if not is_android(tester_config): 1721 if not is_android(tester_config):
1691 result['swarming'].update(result['desktop_swarming']) 1722 result['swarming'].update(result['desktop_swarming'])
1692 # Don't put the desktop_swarming in the JSON. 1723 # Don't put the desktop_swarming in the JSON.
1693 result.pop('desktop_swarming') 1724 result.pop('desktop_swarming')
1725 # Remove the tester_configs and disabled_tester_configs, if present,
1726 # from the result.
1727 remove_tester_configs_from_result(result)
1694 1728
1695 # This flag only has an effect on the Linux bots that run tests 1729 # This flag only has an effect on the Linux bots that run tests
1696 # locally (as opposed to via Swarming), which are only those couple 1730 # locally (as opposed to via Swarming), which are only those couple
1697 # on the chromium.gpu.fyi waterfall. Still, there is no harm in 1731 # on the chromium.gpu.fyi waterfall. Still, there is no harm in
1698 # specifying it everywhere. 1732 # specifying it everywhere.
1699 result['use_xvfb'] = False 1733 result['use_xvfb'] = False
1700 return result 1734 return result
1701 1735
1702 def generate_gtests(tester_name, tester_config, test_dictionary, is_fyi, is_v8): 1736 def generate_gtests(tester_name, tester_config, test_dictionary):
1703 # The relative ordering of some of the tests is important to 1737 # The relative ordering of some of the tests is important to
1704 # minimize differences compared to the handwritten JSON files, since 1738 # minimize differences compared to the handwritten JSON files, since
1705 # Python's sorts are stable and there are some tests with the same 1739 # Python's sorts are stable and there are some tests with the same
1706 # key (see gles2_conform_d3d9_test and similar variants). Avoid 1740 # key (see gles2_conform_d3d9_test and similar variants). Avoid
1707 # losing the order by avoiding coalescing the dictionaries into one. 1741 # losing the order by avoiding coalescing the dictionaries into one.
1708 gtests = [] 1742 gtests = []
1709 for test_name, test_config in sorted(test_dictionary.iteritems()): 1743 for test_name, test_config in sorted(test_dictionary.iteritems()):
1710 test = generate_gtest(tester_name, tester_config, 1744 test = generate_gtest(tester_name, tester_config,
1711 test_name, test_config, is_fyi, is_v8) 1745 test_name, test_config)
1712 if test: 1746 if test:
1713 # generate_gtest may veto the test generation on this platform. 1747 # generate_gtest may veto the test generation on this platform.
1714 gtests.append(test) 1748 gtests.append(test)
1715 return gtests 1749 return gtests
1716 1750
1717 def generate_isolated_test(tester_name, tester_config, test, test_config, 1751 def generate_isolated_test(tester_name, tester_config, test, test_config,
1718 is_fyi, is_v8, extra_browser_args, isolate_name, 1752 extra_browser_args, isolate_name,
1719 override_compile_targets, prefix_args): 1753 override_compile_targets, prefix_args):
1720 if not should_run_on_tester(tester_name, tester_config, test_config, 1754 if not should_run_on_tester(tester_name, tester_config, test_config):
1721 is_fyi, is_v8):
1722 return None 1755 return None
1723 test_args = ['-v'] 1756 test_args = ['-v']
1724 extra_browser_args_string = "" 1757 extra_browser_args_string = ""
1725 if extra_browser_args != None: 1758 if extra_browser_args != None:
1726 extra_browser_args_string += ' '.join(extra_browser_args) 1759 extra_browser_args_string += ' '.join(extra_browser_args)
1727 if 'extra_browser_args' in test_config: 1760 if 'extra_browser_args' in test_config:
1728 extra_browser_args_string += ' ' + ' '.join( 1761 extra_browser_args_string += ' ' + ' '.join(
1729 test_config['extra_browser_args']) 1762 test_config['extra_browser_args'])
1730 if extra_browser_args_string != "": 1763 if extra_browser_args_string != "":
1731 test_args.append('--extra-browser-args=' + extra_browser_args_string) 1764 test_args.append('--extra-browser-args=' + extra_browser_args_string)
(...skipping 30 matching lines...) Expand all
1762 } 1795 }
1763 if override_compile_targets != None: 1796 if override_compile_targets != None:
1764 result['override_compile_targets'] = override_compile_targets 1797 result['override_compile_targets'] = override_compile_targets
1765 if 'non_precommit_args' in test_config: 1798 if 'non_precommit_args' in test_config:
1766 result['non_precommit_args'] = test_config['non_precommit_args'] 1799 result['non_precommit_args'] = test_config['non_precommit_args']
1767 if 'precommit_args' in test_config: 1800 if 'precommit_args' in test_config:
1768 result['precommit_args'] = test_config['precommit_args'] 1801 result['precommit_args'] = test_config['precommit_args']
1769 return result 1802 return result
1770 1803
1771 def generate_telemetry_test(tester_name, tester_config, 1804 def generate_telemetry_test(tester_name, tester_config,
1772 test, test_config, is_fyi, is_v8): 1805 test, test_config):
1773 extra_browser_args = ['--enable-logging=stderr', '--js-flags=--expose-gc'] 1806 extra_browser_args = ['--enable-logging=stderr', '--js-flags=--expose-gc']
1774 benchmark_name = test_config.get('target_name') or test 1807 benchmark_name = test_config.get('target_name') or test
1775 prefix_args = [ 1808 prefix_args = [
1776 benchmark_name, 1809 benchmark_name,
1777 '--show-stdout', 1810 '--show-stdout',
1778 '--browser=%s' % tester_config['build_config'].lower() 1811 '--browser=%s' % tester_config['build_config'].lower()
1779 ] 1812 ]
1780 return generate_isolated_test(tester_name, tester_config, test, 1813 return generate_isolated_test(tester_name, tester_config, test,
1781 test_config, is_fyi, is_v8, extra_browser_args, 1814 test_config, extra_browser_args,
1782 'telemetry_gpu_integration_test', 1815 'telemetry_gpu_integration_test',
1783 ['telemetry_gpu_integration_test_run'], 1816 ['telemetry_gpu_integration_test_run'],
1784 prefix_args) 1817 prefix_args)
1785 1818
1786 def generate_telemetry_tests(tester_name, tester_config, 1819 def generate_telemetry_tests(tester_name, tester_config,
1787 test_dictionary, is_fyi, is_v8): 1820 test_dictionary):
1788 isolated_scripts = [] 1821 isolated_scripts = []
1789 for test_name, test_config in sorted(test_dictionary.iteritems()): 1822 for test_name, test_config in sorted(test_dictionary.iteritems()):
1790 test = generate_telemetry_test( 1823 test = generate_telemetry_test(
1791 tester_name, tester_config, test_name, test_config, is_fyi, is_v8) 1824 tester_name, tester_config, test_name, test_config)
1792 if test: 1825 if test:
1793 isolated_scripts.append(test) 1826 isolated_scripts.append(test)
1794 return isolated_scripts 1827 return isolated_scripts
1795 1828
1796 def generate_non_telemetry_isolated_test(tester_name, tester_config, 1829 def generate_non_telemetry_isolated_test(tester_name, tester_config,
1797 test, test_config, is_fyi, is_v8): 1830 test, test_config):
1798 return generate_isolated_test(tester_name, tester_config, test, 1831 return generate_isolated_test(tester_name, tester_config, test,
1799 test_config, is_fyi, is_v8, 1832 test_config,
1800 None, test, None, []) 1833 None, test, None, [])
1801 1834
1802 def generate_non_telemetry_isolated_tests(tester_name, tester_config, 1835 def generate_non_telemetry_isolated_tests(tester_name, tester_config,
1803 test_dictionary, is_fyi, is_v8): 1836 test_dictionary):
1804 isolated_scripts = [] 1837 isolated_scripts = []
1805 for test_name, test_config in sorted(test_dictionary.iteritems()): 1838 for test_name, test_config in sorted(test_dictionary.iteritems()):
1806 test = generate_non_telemetry_isolated_test( 1839 test = generate_non_telemetry_isolated_test(
1807 tester_name, tester_config, test_name, test_config, is_fyi, is_v8) 1840 tester_name, tester_config, test_name, test_config)
1808 if test: 1841 if test:
1809 isolated_scripts.append(test) 1842 isolated_scripts.append(test)
1810 return isolated_scripts 1843 return isolated_scripts
1811 1844
1812 def generate_all_tests(waterfall, filename, is_fyi, is_v8): 1845 def install_parent_links(waterfall):
1846 # Make the testers point back to the top-level waterfall so that we
1847 # can ask about its properties when determining whether a given test
1848 # should run on a given waterfall.
1849 for name, config in waterfall.get('testers', {}).iteritems():
1850 config['parent'] = waterfall
1851
1852 def generate_all_tests(waterfall, filename):
1813 tests = {} 1853 tests = {}
1814 for builder, config in waterfall.get('prologue', {}).iteritems(): 1854 for builder, config in waterfall.get('prologue', {}).iteritems():
1815 tests[builder] = config 1855 tests[builder] = config
1816 for builder, config in waterfall.get('builders', {}).iteritems(): 1856 for builder, config in waterfall.get('builders', {}).iteritems():
1817 tests[builder] = config 1857 tests[builder] = config
1818 for name, config in waterfall['testers'].iteritems(): 1858 for name, config in waterfall['testers'].iteritems():
1819 gtests = generate_gtests(name, config, COMMON_GTESTS, is_fyi, is_v8) 1859 gtests = generate_gtests(name, config, COMMON_GTESTS)
1820 isolated_scripts = \ 1860 isolated_scripts = \
1821 generate_telemetry_tests( 1861 generate_telemetry_tests(
1822 name, config, TELEMETRY_GPU_INTEGRATION_TESTS, is_fyi, is_v8) + \ 1862 name, config, TELEMETRY_GPU_INTEGRATION_TESTS) + \
1823 generate_non_telemetry_isolated_tests(name, config, 1863 generate_non_telemetry_isolated_tests(name, config,
1824 NON_TELEMETRY_ISOLATED_SCRIPT_TESTS, is_fyi, is_v8) 1864 NON_TELEMETRY_ISOLATED_SCRIPT_TESTS)
1825 tests[name] = { 1865 tests[name] = {
1826 'gtest_tests': sorted(gtests, key=lambda x: x['test']), 1866 'gtest_tests': sorted(gtests, key=lambda x: x['test']),
1827 'isolated_scripts': sorted(isolated_scripts, key=lambda x: x['name']) 1867 'isolated_scripts': sorted(isolated_scripts, key=lambda x: x['name'])
1828 } 1868 }
1829 tests['AAAAA1 AUTOGENERATED FILE DO NOT EDIT'] = {} 1869 tests['AAAAA1 AUTOGENERATED FILE DO NOT EDIT'] = {}
1830 tests['AAAAA2 See generate_buildbot_json.py to make changes'] = {} 1870 tests['AAAAA2 See generate_buildbot_json.py to make changes'] = {}
1831 with open(os.path.join(SRC_DIR, 'testing', 'buildbot', filename), 'wb') as fp: 1871 with open(os.path.join(SRC_DIR, 'testing', 'buildbot', filename), 'wb') as fp:
1832 json.dump(tests, fp, indent=2, separators=(',', ': '), sort_keys=True) 1872 json.dump(tests, fp, indent=2, separators=(',', ': '), sort_keys=True)
1833 fp.write('\n') 1873 fp.write('\n')
1834 1874
1835 def main(): 1875 def main():
1836 generate_all_tests(FYI_WATERFALL, 'chromium.gpu.fyi.json', True, False) 1876 install_parent_links(FYI_WATERFALL)
1837 generate_all_tests(WATERFALL, 'chromium.gpu.json', False, False) 1877 install_parent_links(WATERFALL)
1838 generate_all_tests(V8_FYI_WATERFALL, 'client.v8.fyi.json', True, True) 1878 install_parent_links(V8_FYI_WATERFALL)
1879
1880 generate_all_tests(FYI_WATERFALL, 'chromium.gpu.fyi.json')
1881 generate_all_tests(WATERFALL, 'chromium.gpu.json')
1882 generate_all_tests(V8_FYI_WATERFALL, 'client.v8.fyi.json')
1839 return 0 1883 return 0
1840 1884
1841 if __name__ == "__main__": 1885 if __name__ == "__main__":
1842 sys.exit(main()) 1886 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698