2 # Copyright 2015 Google Inc.
4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file.
11 Write extra flags to outfile for DM based on the bot name:
12 $ python dm_flags.py outfile Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug
14 $ python dm_flags.py test
24 caller = inspect.stack()[1] # Up one level to our caller.
25 return inspect.getframeinfo(caller[0]).lineno
28 cov_start = lineno()+1 # We care about coverage starting just past this def.
32 configs = ['565', '8888', 'gpu']
34 if 'Android' not in bot:
35 configs.extend(('upright-matrix-8888', 'upright-matrix-gpu'))
36 args.extend('--matrix 0 1 1 0'.split(' '))
39 configs.append('sp-8888')
40 configs.extend(['remote-8888', 'remote_cache-8888'])
42 if '-TSAN' not in bot:
43 if ('TegraK1' in bot or
48 configs.append('nvprmsaa4')
50 configs.append('nvprmsaa16')
52 # The S4 crashes and the NP produces a long error stream when we run with
53 # MSAA. The Tegra2 and Tegra3 just don't support it.
54 if ('GalaxyS4' not in bot and
55 'NexusPlayer' not in bot and
56 'Tegra3' not in bot and
59 configs.append('msaa4')
61 configs.append('msaa16')
62 # Runs out of memory on Android bots and Daisy. Everyone else seems fine.
63 if 'Android' not in bot and 'Daisy' not in bot:
65 configs.append('pdf_poppler')
67 # NP is running out of RAM when we run all these modes. skia:3255
68 if 'NexusPlayer' not in bot:
69 configs.extend(mode + '-8888' for mode in
70 ['serialize', 'tiles_rt', 'pipe'])
73 configs.append('angle')
75 # We want to run gpudft on atleast the mali 400
77 configs.append('gpudft')
79 args.append('--config')
82 # Run tests and gms everywhere,
83 # and image decoding tests everywhere except GPU bots.
84 # TODO: remove skp from default --src list?
86 args.extend('--src tests gm'.split(' '))
88 args.extend('--src tests gm image'.split(' '))
91 args.extend(('--threads', '0'))
95 # Several of the newest version bmps fail on SkImageDecoder
96 blacklist.extend('_ image decode pal8os2v2.bmp'.split(' '))
97 blacklist.extend('_ image decode pal8v4.bmp'.split(' '))
98 blacklist.extend('_ image decode pal8v5.bmp'.split(' '))
99 blacklist.extend('_ image decode rgb16-565.bmp'.split(' '))
100 blacklist.extend('_ image decode rgb16-565pal.bmp'.split(' '))
101 blacklist.extend('_ image decode rgb32-111110.bmp'.split(' '))
102 blacklist.extend('_ image decode rgb32bf.bmp'.split(' '))
103 blacklist.extend('_ image decode rgba32.bmp'.split(' '))
104 blacklist.extend('_ image decode rgba32abf.bmp'.split(' '))
105 blacklist.extend('_ image decode rgb24largepal.bmp'.split(' '))
106 blacklist.extend('_ image decode pal8os2v2-16.bmp'.split(' '))
107 blacklist.extend('_ image decode pal8oversizepal.bmp'.split(' '))
108 blacklist.extend('_ image decode pal4rletrns.bmp'.split(' '))
109 blacklist.extend('_ image decode pal8rletrns.bmp'.split(' '))
110 blacklist.extend('_ image decode 4bpp-pixeldata-cropped.bmp'.split(' '))
111 blacklist.extend('_ image decode 8bpp-pixeldata-cropped.bmp'.split(' '))
112 blacklist.extend('_ image decode 24bpp-pixeldata-cropped.bmp'.split(' '))
113 blacklist.extend('_ image decode 32bpp-pixeldata-cropped.bmp'.split(' '))
114 blacklist.extend('_ image decode testcase7.bmp'.split(' '))
116 # New ico files that fail on SkImageDecoder
117 blacklist.extend('_ image decode Hopstarter-Mac-Folders-Apple.ico'.split(' '))
119 # Gif test image uses uninitialized memory on Mac bots
121 blacklist.extend('_ image decode frame_larger_than_image.gif'.split(' '))
123 # Incomplete image tests that fail on SkImageDecoder
124 blacklist.extend('_ image decode inc0.gif'.split(' '))
125 blacklist.extend('_ image decode inc1.gif'.split(' '))
126 blacklist.extend('_ image decode incInterlaced.gif'.split(' '))
127 blacklist.extend('_ image decode inc0.jpg'.split(' '))
128 blacklist.extend('_ image decode incGray.jpg'.split(' '))
129 blacklist.extend('_ image decode inc0.wbmp'.split(' '))
130 blacklist.extend('_ image decode inc1.wbmp'.split(' '))
131 blacklist.extend('_ image decode inc0.webp'.split(' '))
132 blacklist.extend('_ image decode inc1.webp'.split(' '))
133 blacklist.extend('_ image decode inc0.ico'.split(' '))
134 blacklist.extend('_ image decode inc1.ico'.split(' '))
135 blacklist.extend('_ image decode inc0.png'.split(' '))
136 blacklist.extend('_ image decode inc1.png'.split(' '))
137 blacklist.extend('_ image decode inc2.png'.split(' '))
138 blacklist.extend('_ image decode inc12.png'.split(' '))
139 blacklist.extend('_ image decode inc13.png'.split(' '))
140 blacklist.extend('_ image decode inc14.png'.split(' '))
142 # Leon doesn't care about this, so why run it?
144 blacklist.extend('_ image decode _'.split(' '))
146 # Certain gm's on win7 gpu and pdf are never finishing and keeping the test
149 blacklist.extend('msaa16 gm _ colorwheelnative'.split(' '))
150 blacklist.extend('pdf gm _ fontmgr_iter_factory'.split(' '))
152 if 'Valgrind' in bot:
153 # PDF + .webp -> jumps depending on uninitialized memory. skia:3505
154 blacklist.extend('pdf _ _ .webp'.split(' '))
155 # These take 18+ hours to run.
156 blacklist.extend('pdf gm _ fontmgr_iter'.split(' '))
157 blacklist.extend('pdf _ _ PANO_20121023_214540.jpg'.split(' '))
158 blacklist.extend('pdf skp _ worldjournal'.split(' '))
159 blacklist.extend('pdf skp _ desk_baidu.skp'.split(' '))
160 blacklist.extend('pdf skp _ desk_wikipedia.skp'.split(' '))
163 blacklist.extend('gpu skp _ _ msaa skp _ _'.split(' '))
164 blacklist.extend('gpu image decode _ msaa image decode _'.split(' '))
165 blacklist.extend('msaa16 gm _ tilemodesProcess'.split(' '))
167 # the 32-bit GCE bots run out of memory in DM when running these large images
168 if 'x86' in bot and not 'x86-64' in bot:
169 blacklist.extend('_ image _ interlaced1.png'.split(' '))
170 blacklist.extend('_ image _ interlaced2.png'.split(' '))
171 blacklist.extend('_ image _ interlaced3.png'.split(' '))
174 args.append('--blacklist')
175 args.extend(blacklist)
178 if 'Valgrind' in bot: # skia:3021
179 match.append('~Threaded')
181 if 'GalaxyS3' in bot: # skia:1699
182 match.append('~WritePixels')
184 if 'AndroidOne' in bot: # skia:4711
185 match.append('~WritePixels')
187 if 'NexusPlayer' in bot:
188 match.append('~ResourceCache')
190 if 'GalaxyS4' in bot: # skia:4079
191 match.append('~imagefiltersclipped')
192 match.append('~imagefilterscropexpand')
193 match.append('~scaled_tilemodes_npot')
194 match.append('~bleed_image') # skia:4367
195 match.append('~ReadPixels') # skia:4368
197 if 'ANGLE' in bot and 'Debug' in bot:
198 match.append('~GLPrograms') # skia:4717
201 args.append('--match')
205 cov_end = lineno() # Don't care about code coverage past here.
209 import coverage # This way the bots don't need coverage.py to be installed.
213 'Test-Android-GCC-AndroidOne-GPU-Mali400MP2-Arm7-Release',
214 'Test-Android-GCC-Nexus9-GPU-TegraK1-Arm64-Debug',
215 'Test-Android-GCC-GalaxyS3-GPU-Mali400-Arm7-Debug',
216 'Test-Android-GCC-GalaxyS4-GPU-SGX544-Arm7-Release',
217 'Test-Android-GCC-Nexus7-GPU-Tegra3-Arm7-Release',
218 'Test-Android-GCC-NexusPlayer-CPU-SSSE3-x86-Release',
219 'Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind',
220 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-TSAN',
221 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Valgrind',
222 'Test-Win7-MSVC-ShuttleA-GPU-HD2000-x86-Debug-ANGLE',
223 'Test-Mac10.8-Clang-MacMini4.1-CPU-SSE4-x86_64-Release',
226 cov = coverage.coverage()
229 args[case] = get_args(case)
232 this_file = os.path.basename(__file__)
233 _, _, not_run, _ = cov.analysis(this_file)
234 filtered = [line for line in not_run if line > cov_start and line < cov_end]
236 print 'Lines not covered by test cases: ', filtered
239 golden = this_file.replace('.py', '.json')
240 with open(os.path.join(os.path.dirname(__file__), golden), 'w') as f:
241 json.dump(args, f, indent=2, sort_keys=True)
244 if __name__ == '__main__':
245 if len(sys.argv) == 2 and sys.argv[1] == 'test':
249 if len(sys.argv) != 3:
253 with open(sys.argv[1], 'w') as out:
254 json.dump(get_args(sys.argv[2]), out)