blob: 81079701e1d780b7d40b3926dc3ccd32fb434c04 [file] [log] [blame]
msarett114912d2015-03-25 12:28:33 -07001#
2# Copyright 2015 Google Inc.
3#
4# Use of this source code is governed by a BSD-style license that can be
5# found in the LICENSE file.
6#
7
mtklein11a2c502015-02-24 09:25:16 -08008#!/usr/bin/env python
9
10usage = '''
11Write extra flags to outfile for DM based on the bot name:
borenet1e37d172015-03-27 05:42:18 -070012 $ python dm_flags.py outfile Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug
mtklein11a2c502015-02-24 09:25:16 -080013Or run self-tests:
14 $ python dm_flags.py test
15'''
16
17import inspect
18import json
19import os
20import sys
21
22
23def lineno():
24 caller = inspect.stack()[1] # Up one level to our caller.
25 return inspect.getframeinfo(caller[0]).lineno
26
27
28cov_start = lineno()+1 # We care about coverage starting just past this def.
mtkleinf73e5892015-02-24 11:45:11 -080029def get_args(bot):
mtklein11a2c502015-02-24 09:25:16 -080030 args = []
31
borenetd9b6be12015-05-06 08:33:51 -070032 configs = ['565', '8888', 'gpu']
borenete3aeaec2015-05-05 13:11:27 -070033
borenetd9b6be12015-05-06 08:33:51 -070034 if 'Android' not in bot:
35 configs.extend(('upright-matrix-8888', 'upright-matrix-gpu'))
36 args.extend('--matrix 0 1 1 0'.split(' '))
mtkleinfca5c882015-04-21 10:34:47 -070037
mtklein32618cb2015-05-07 10:26:44 -070038 if '-GCE-' in bot:
39 configs.append('sp-8888')
40
mtkleinfca5c882015-04-21 10:34:47 -070041 if 'TegraK1' in bot or 'GTX550Ti' in bot or 'GTX660' in bot or 'GT610' in bot:
42 if 'Android' in bot:
43 configs.append('nvprmsaa4')
44 else:
45 configs.append('nvprmsaa16')
46
bsalomon5abf5842015-02-27 10:13:36 -080047 # The S4 crashes and the NP produces a long error stream when we run with
mtkleind5574622015-04-21 11:25:47 -070048 # MSAA. The Tegra2 and Tegra3 just don't support it.
bsalomon5abf5842015-02-27 10:13:36 -080049 if ('GalaxyS4' not in bot and
mtkleind5574622015-04-21 11:25:47 -070050 'NexusPlayer' not in bot and
stephanadeee2982015-05-05 07:55:06 -070051 'Tegra3' not in bot and
52 'iOS' not in bot):
bsalomon5abf5842015-02-27 10:13:36 -080053 if 'Android' in bot:
mtkleinfca5c882015-04-21 10:34:47 -070054 configs.append('msaa4')
bsalomon5abf5842015-02-27 10:13:36 -080055 else:
mtkleinfca5c882015-04-21 10:34:47 -070056 configs.append('msaa16')
mtklein82b33db2015-03-04 13:58:05 -080057 # Runs out of memory on Android bots and Daisy. Everyone else seems fine.
mtklein150d3502015-03-05 13:38:17 -080058 if 'Android' not in bot and 'Daisy' not in bot:
mtklein84aada82015-03-04 11:47:11 -080059 configs.append('pdf')
bsalomon5abf5842015-02-27 10:13:36 -080060
borenet97025e32015-04-28 09:54:55 -070061 # NP is running out of RAM when we run all these modes. skia:3255
62 if 'NexusPlayer' not in bot:
mtklein11a2c502015-02-24 09:25:16 -080063 configs.extend(mode + '-8888' for mode in
64 ['serialize', 'tiles_rt', 'pipe'])
bsalomon0bb8c1f2015-06-04 15:10:45 -070065
mtkleinee2a3ea2015-02-25 08:16:19 -080066 if 'ANGLE' in bot:
67 configs.append('angle')
mtklein11a2c502015-02-24 09:25:16 -080068 args.append('--config')
69 args.extend(configs)
70
mtklein1866b572015-06-12 11:31:51 -070071 # Run tests and gms everywhere,
72 # and image decoding tests everywhere except GPU bots.
73 # TODO: remove skp from default --src list?
74 if 'GPU' in bot:
75 args.extend('--src tests gm'.split(' '))
76 else:
77 args.extend('--src tests gm image'.split(' '))
78
borenet97025e32015-04-28 09:54:55 -070079 if 'GalaxyS' in bot:
80 args.extend(('--threads', '0'))
81
mtklein11a2c502015-02-24 09:25:16 -080082 blacklist = []
scroggoc1121ef2015-07-16 12:36:10 -070083
84 # We do not draw image sources on msaa anyway, so avoid the creation of
85 # large canvases. skbug.com/4045
86 blacklist.extend('msaa image _ _'.split(' '))
87
mtklein11a2c502015-02-24 09:25:16 -080088 # This image is too large to be a texture for many GPUs.
djsollen54416de2015-04-03 07:24:48 -070089 blacklist.extend('gpu _ _ PANO_20121023_214540.jpg'.split(' '))
mtklein11a2c502015-02-24 09:25:16 -080090
msarett114912d2015-03-25 12:28:33 -070091 # Several of the newest version bmps fail on SkImageDecoder
djsollen54416de2015-04-03 07:24:48 -070092 blacklist.extend('_ image decode pal8os2v2.bmp'.split(' '))
93 blacklist.extend('_ image decode pal8v4.bmp'.split(' '))
94 blacklist.extend('_ image decode pal8v5.bmp'.split(' '))
95 blacklist.extend('_ image decode rgb16-565.bmp'.split(' '))
96 blacklist.extend('_ image decode rgb16-565pal.bmp'.split(' '))
97 blacklist.extend('_ image decode rgb32-111110.bmp'.split(' '))
98 blacklist.extend('_ image decode rgb32bf.bmp'.split(' '))
99 blacklist.extend('_ image decode rgba32.bmp'.split(' '))
100 blacklist.extend('_ image decode rgba32abf.bmp'.split(' '))
101 blacklist.extend('_ image decode rgb24largepal.bmp'.split(' '))
102 blacklist.extend('_ image decode pal8os2v2-16.bmp'.split(' '))
103 blacklist.extend('_ image decode pal8oversizepal.bmp'.split(' '))
msarett2f273a12015-04-06 08:38:49 -0700104 blacklist.extend('_ image decode pal4rletrns.bmp'.split(' '))
105 blacklist.extend('_ image decode pal8rletrns.bmp'.split(' '))
msarett3c309db2015-04-10 14:36:48 -0700106 blacklist.extend('_ image decode 4bpp-pixeldata-cropped.bmp'.split(' '))
107 blacklist.extend('_ image decode 8bpp-pixeldata-cropped.bmp'.split(' '))
108 blacklist.extend('_ image decode 24bpp-pixeldata-cropped.bmp'.split(' '))
109 blacklist.extend('_ image decode 32bpp-pixeldata-cropped.bmp'.split(' '))
djsollen54416de2015-04-03 07:24:48 -0700110 blacklist.extend('_ image subset rgb24largepal.bmp'.split(' '))
111 blacklist.extend('_ image subset pal8os2v2-16.bmp'.split(' '))
112 blacklist.extend('_ image subset pal8oversizepal.bmp'.split(' '))
msarett3c309db2015-04-10 14:36:48 -0700113 blacklist.extend('_ image subset 4bpp-pixeldata-cropped.bmp'.split(' '))
114 blacklist.extend('_ image subset 8bpp-pixeldata-cropped.bmp'.split(' '))
115 blacklist.extend('_ image subset 24bpp-pixeldata-cropped.bmp'.split(' '))
116 blacklist.extend('_ image subset 32bpp-pixeldata-cropped.bmp'.split(' '))
msarett114912d2015-03-25 12:28:33 -0700117
118 # New ico files that fail on SkImageDecoder
djsollen54416de2015-04-03 07:24:48 -0700119 blacklist.extend('_ image decode Hopstarter-Mac-Folders-Apple.ico'.split(' '))
msarett114912d2015-03-25 12:28:33 -0700120
mtkleine2aab902015-03-17 12:52:16 -0700121 # Leon doesn't care about this, so why run it?
122 if 'Win' in bot:
djsollen54416de2015-04-03 07:24:48 -0700123 blacklist.extend('_ image decode _'.split(' '))
124 blacklist.extend('_ image subset _'.split(' '))
mtkleine2aab902015-03-17 12:52:16 -0700125
egdaniel89c2a542015-03-19 13:09:17 -0700126 # Certain gm's on win7 gpu and pdf are never finishing and keeping the test
127 # running forever
128 if 'Win7' in bot:
djsollen54416de2015-04-03 07:24:48 -0700129 blacklist.extend('msaa16 gm _ colorwheelnative'.split(' '))
130 blacklist.extend('pdf gm _ fontmgr_iter_factory'.split(' '))
egdaniel89c2a542015-03-19 13:09:17 -0700131
mtklein150d3502015-03-05 13:38:17 -0800132 if 'Valgrind' in bot:
mtkleinde7665a2015-03-14 07:24:29 -0700133 # PDF + .webp -> jumps depending on uninitialized memory. skia:3505
djsollen54416de2015-04-03 07:24:48 -0700134 blacklist.extend('pdf _ _ .webp'.split(' '))
mtkleince866872015-03-26 05:12:13 -0700135 # These take 18+ hours to run.
djsollen54416de2015-04-03 07:24:48 -0700136 blacklist.extend('pdf gm _ fontmgr_iter'.split(' '))
137 blacklist.extend('pdf _ _ PANO_20121023_214540.jpg'.split(' '))
Mike Kleinfbcf0bd2015-04-09 06:03:22 -0400138 blacklist.extend('pdf skp _ worldjournal'.split(' '))
djsollen54416de2015-04-03 07:24:48 -0700139 blacklist.extend('pdf skp _ desk_baidu.skp'.split(' '))
borenet22ecae82015-04-13 13:29:26 -0700140 blacklist.extend('pdf skp _ desk_wikipedia.skp'.split(' '))
mtklein150d3502015-03-05 13:38:17 -0800141
stephanadeee2982015-05-05 07:55:06 -0700142 if 'iOS' in bot:
143 blacklist.extend('gpu skp _ _ msaa skp _ _'.split(' '))
144 blacklist.extend('gpu image decode _ msaa image decode _'.split(' '))
145 blacklist.extend('gpu image subset _ msaa image subset _'.split(' '))
146 blacklist.extend('msaa16 gm _ tilemodesProcess'.split(' '))
147
mtklein11a2c502015-02-24 09:25:16 -0800148 if blacklist:
149 args.append('--blacklist')
150 args.extend(blacklist)
151
152 match = []
mtklein11a2c502015-02-24 09:25:16 -0800153 if 'Valgrind' in bot: # skia:3021
154 match.append('~Threaded')
herb19fb80e2015-06-30 14:23:29 -0700155 if 'TSAN' in bot: # skia:3562
156 match.append('~Math')
mtklein905d01b2015-03-18 14:06:55 -0700157
borenet97025e32015-04-28 09:54:55 -0700158 if 'GalaxyS3' in bot: # skia:1699
mtklein11a2c502015-02-24 09:25:16 -0800159 match.append('~WritePixels')
160
161 # skia:3249: these images flakily don't decode on Android.
162 if 'Android' in bot:
163 match.append('~tabl_mozilla_0')
164 match.append('~desk_yahoonews_0')
165
mtklein4e2d3be2015-03-10 11:55:18 -0700166 if 'NexusPlayer' in bot:
167 match.append('~ResourceCache')
168
stephanadeee2982015-05-05 07:55:06 -0700169 if 'iOS' in bot:
170 match.append('~WritePixels')
171
mtklein11a2c502015-02-24 09:25:16 -0800172 if match:
173 args.append('--match')
174 args.extend(match)
175
mtklein11a2c502015-02-24 09:25:16 -0800176 return args
177cov_end = lineno() # Don't care about code coverage past here.
178
179
180def self_test():
181 import coverage # This way the bots don't need coverage.py to be installed.
182 args = {}
183 cases = [
mtkleine4b19c42015-05-05 10:28:44 -0700184 'Pretend-iOS-Bot',
mtkleinfca5c882015-04-21 10:34:47 -0700185 'Test-Android-GCC-Nexus9-GPU-TegraK1-Arm64-Debug',
borenet1e37d172015-03-27 05:42:18 -0700186 'Test-Android-GCC-GalaxyS3-GPU-Mali400-Arm7-Debug',
mtkleine4b19c42015-05-05 10:28:44 -0700187 'Test-Android-GCC-GalaxyS4-GPU-SGX544-Arm7-Release',
borenet1e37d172015-03-27 05:42:18 -0700188 'Test-Android-GCC-Nexus7-GPU-Tegra3-Arm7-Release',
189 'Test-Android-GCC-NexusPlayer-CPU-SSSE3-x86-Release',
borenet1e37d172015-03-27 05:42:18 -0700190 'Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind',
191 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-TSAN',
192 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Valgrind',
193 'Test-Win7-MSVC-ShuttleA-GPU-HD2000-x86-Debug-ANGLE',
mtklein11a2c502015-02-24 09:25:16 -0800194 ]
195
196 cov = coverage.coverage()
197 cov.start()
198 for case in cases:
mtkleinf73e5892015-02-24 11:45:11 -0800199 args[case] = get_args(case)
mtklein11a2c502015-02-24 09:25:16 -0800200 cov.stop()
201
202 this_file = os.path.basename(__file__)
203 _, _, not_run, _ = cov.analysis(this_file)
204 filtered = [line for line in not_run if line > cov_start and line < cov_end]
205 if filtered:
206 print 'Lines not covered by test cases: ', filtered
207 sys.exit(1)
208
209 golden = this_file.replace('.py', '.json')
210 with open(os.path.join(os.path.dirname(__file__), golden), 'w') as f:
211 json.dump(args, f, indent=2, sort_keys=True)
212
213
214if __name__ == '__main__':
215 if len(sys.argv) == 2 and sys.argv[1] == 'test':
216 self_test()
217 sys.exit(0)
218
219 if len(sys.argv) != 3:
220 print usage
221 sys.exit(1)
222
223 with open(sys.argv[1], 'w') as out:
mtkleinf73e5892015-02-24 11:45:11 -0800224 json.dump(get_args(sys.argv[2]), out)