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')
74 args.append('--config')
77 # Run tests and gms everywhere,
78 # and image decoding tests everywhere except GPU bots.
79 # TODO: remove skp from default --src list?
81 args.extend('--src tests gm'.split(' '))
83 args.extend('--src tests gm image'.split(' '))
86 args.extend(('--threads', '0'))
90 # Several of the newest version bmps fail on SkImageDecoder
91 blacklist.extend('_ image decode pal8os2v2.bmp'.split(' '))
92 blacklist.extend('_ image decode pal8v4.bmp'.split(' '))
93 blacklist.extend('_ image decode pal8v5.bmp'.split(' '))
94 blacklist.extend('_ image decode rgb16-565.bmp'.split(' '))
95 blacklist.extend('_ image decode rgb16-565pal.bmp'.split(' '))
96 blacklist.extend('_ image decode rgb32-111110.bmp'.split(' '))
97 blacklist.extend('_ image decode rgb32bf.bmp'.split(' '))
98 blacklist.extend('_ image decode rgba32.bmp'.split(' '))
99 blacklist.extend('_ image decode rgba32abf.bmp'.split(' '))
100 blacklist.extend('_ image decode rgb24largepal.bmp'.split(' '))
101 blacklist.extend('_ image decode pal8os2v2-16.bmp'.split(' '))
102 blacklist.extend('_ image decode pal8oversizepal.bmp'.split(' '))
103 blacklist.extend('_ image decode pal4rletrns.bmp'.split(' '))
104 blacklist.extend('_ image decode pal8rletrns.bmp'.split(' '))
105 blacklist.extend('_ image decode 4bpp-pixeldata-cropped.bmp'.split(' '))
106 blacklist.extend('_ image decode 8bpp-pixeldata-cropped.bmp'.split(' '))
107 blacklist.extend('_ image decode 24bpp-pixeldata-cropped.bmp'.split(' '))
108 blacklist.extend('_ image decode 32bpp-pixeldata-cropped.bmp'.split(' '))
109 blacklist.extend('_ image decode testcase7.bmp'.split(' '))
111 # New ico files that fail on SkImageDecoder
112 blacklist.extend('_ image decode Hopstarter-Mac-Folders-Apple.ico'.split(' '))
114 # Incomplete image tests that fail on SkImageDecoder
115 blacklist.extend('_ image decode inc0.gif'.split(' '))
116 blacklist.extend('_ image decode inc1.gif'.split(' '))
117 blacklist.extend('_ image decode incInterlaced.gif'.split(' '))
118 blacklist.extend('_ image decode inc0.jpg'.split(' '))
119 blacklist.extend('_ image decode incGray.jpg'.split(' '))
120 blacklist.extend('_ image decode inc0.wbmp'.split(' '))
121 blacklist.extend('_ image decode inc1.wbmp'.split(' '))
122 blacklist.extend('_ image decode inc0.webp'.split(' '))
123 blacklist.extend('_ image decode inc1.webp'.split(' '))
124 blacklist.extend('_ image decode inc0.ico'.split(' '))
125 blacklist.extend('_ image decode inc1.ico'.split(' '))
126 blacklist.extend('_ image decode inc0.png'.split(' '))
127 blacklist.extend('_ image decode inc1.png'.split(' '))
128 blacklist.extend('_ image decode inc2.png'.split(' '))
129 blacklist.extend('_ image decode inc12.png'.split(' '))
130 blacklist.extend('_ image decode inc13.png'.split(' '))
131 blacklist.extend('_ image decode inc14.png'.split(' '))
133 # Leon doesn't care about this, so why run it?
135 blacklist.extend('_ image decode _'.split(' '))
137 # Certain gm's on win7 gpu and pdf are never finishing and keeping the test
140 blacklist.extend('msaa16 gm _ colorwheelnative'.split(' '))
141 blacklist.extend('pdf gm _ fontmgr_iter_factory'.split(' '))
143 if 'Valgrind' in bot:
144 # PDF + .webp -> jumps depending on uninitialized memory. skia:3505
145 blacklist.extend('pdf _ _ .webp'.split(' '))
146 # These take 18+ hours to run.
147 blacklist.extend('pdf gm _ fontmgr_iter'.split(' '))
148 blacklist.extend('pdf _ _ PANO_20121023_214540.jpg'.split(' '))
149 blacklist.extend('pdf skp _ worldjournal'.split(' '))
150 blacklist.extend('pdf skp _ desk_baidu.skp'.split(' '))
151 blacklist.extend('pdf skp _ desk_wikipedia.skp'.split(' '))
154 blacklist.extend('gpu skp _ _ msaa skp _ _'.split(' '))
155 blacklist.extend('gpu image decode _ msaa image decode _'.split(' '))
156 blacklist.extend('msaa16 gm _ tilemodesProcess'.split(' '))
158 # the 32-bit GCE bots run out of memory in DM when running these large images
159 if 'x86' in bot and not 'x86-64' in bot:
160 blacklist.extend('_ image _ interlaced1.png'.split(' '))
161 blacklist.extend('_ image _ interlaced2.png'.split(' '))
162 blacklist.extend('_ image _ interlaced3.png'.split(' '))
165 args.append('--blacklist')
166 args.extend(blacklist)
169 if 'Valgrind' in bot: # skia:3021
170 match.append('~Threaded')
171 if 'TSAN' in bot: # skia:3562
172 match.append('~Math')
174 if 'GalaxyS3' in bot: # skia:1699
175 match.append('~WritePixels')
177 # skia:3249: these images flakily don't decode on Android.
179 match.append('~tabl_mozilla_0')
180 match.append('~desk_yahoonews_0')
182 if 'NexusPlayer' in bot:
183 match.append('~ResourceCache')
186 match.append('~WritePixels')
188 if 'GalaxyS4' in bot: # skia:4079
189 match.append('~imagefiltersclipped')
190 match.append('~imagefilterscropexpand')
191 match.append('~scaled_tilemodes_npot')
192 match.append('~bleed_image') # skia:4367
193 match.append('~ReadPixels') # skia:4368
196 args.append('--match')
200 cov_end = lineno() # Don't care about code coverage past here.
204 import coverage # This way the bots don't need coverage.py to be installed.
208 'Test-Android-GCC-Nexus9-GPU-TegraK1-Arm64-Debug',
209 'Test-Android-GCC-GalaxyS3-GPU-Mali400-Arm7-Debug',
210 'Test-Android-GCC-GalaxyS4-GPU-SGX544-Arm7-Release',
211 'Test-Android-GCC-Nexus7-GPU-Tegra3-Arm7-Release',
212 'Test-Android-GCC-NexusPlayer-CPU-SSSE3-x86-Release',
213 'Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind',
214 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-TSAN',
215 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Valgrind',
216 'Test-Win7-MSVC-ShuttleA-GPU-HD2000-x86-Debug-ANGLE',
219 cov = coverage.coverage()
222 args[case] = get_args(case)
225 this_file = os.path.basename(__file__)
226 _, _, not_run, _ = cov.analysis(this_file)
227 filtered = [line for line in not_run if line > cov_start and line < cov_end]
229 print 'Lines not covered by test cases: ', filtered
232 golden = this_file.replace('.py', '.json')
233 with open(os.path.join(os.path.dirname(__file__), golden), 'w') as f:
234 json.dump(args, f, indent=2, sort_keys=True)
237 if __name__ == '__main__':
238 if len(sys.argv) == 2 and sys.argv[1] == 'test':
242 if len(sys.argv) != 3:
246 with open(sys.argv[1], 'w') as out:
247 json.dump(get_args(sys.argv[2]), out)