blob: 233bb08e2fd2806ad3fced7327c983c56103e83b [file] [log] [blame]
borenet1ed2ae42016-07-26 11:52:17 -07001# Copyright 2016 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5
6# Recipe module for Skia Swarming test.
7
8
9DEPS = [
Eric Boren4c7754c2017-04-10 08:19:10 -040010 'core',
Eric Boren896af752017-04-24 13:22:56 -040011 'env',
12 'flavor',
Robert Iannucci297a7ef2017-05-12 19:09:38 -070013 'recipe_engine/context',
Robert Iannucci8cd50412017-07-07 14:36:58 -070014 'recipe_engine/file',
Eric Boren4c7754c2017-04-10 08:19:10 -040015 'recipe_engine/json',
borenet1ed2ae42016-07-26 11:52:17 -070016 'recipe_engine/path',
17 'recipe_engine/platform',
18 'recipe_engine/properties',
Eric Boren4c7754c2017-04-10 08:19:10 -040019 'recipe_engine/python',
borenet1ed2ae42016-07-26 11:52:17 -070020 'recipe_engine/raw_io',
Eric Boren4c7754c2017-04-10 08:19:10 -040021 'recipe_engine/step',
Eric Boren4c7754c2017-04-10 08:19:10 -040022 'run',
23 'vars',
borenet1ed2ae42016-07-26 11:52:17 -070024]
25
26
Eric Boren89cd3572017-06-28 13:50:22 -040027def dm_flags(api, bot):
Eric Boren4c7754c2017-04-10 08:19:10 -040028 args = []
29
Mike Klein97d6a7a2017-07-24 10:37:19 -040030 # We've been spending lots of time writing out and especially uploading
31 # .pdfs, but not doing anything further with them. skia:6821
32 args.extend(['--dont_write', 'pdf'])
33
Eric Boren4c7754c2017-04-10 08:19:10 -040034 # This enables non-deterministic random seeding of the GPU FP optimization
Brian Osman7a34dca2017-04-13 13:40:29 -040035 # test.
Ben Wagner6da8f792017-08-10 12:22:56 -040036 # Not Android due to:
Ben Wagner11ab43c2017-08-09 18:05:59 -040037 # - https://skia.googlesource.com/skia/+/
38 # 5910ed347a638ded8cd4c06dbfda086695df1112/BUILD.gn#160
39 # - https://skia.googlesource.com/skia/+/
40 # ce06e261e68848ae21cac1052abc16bc07b961bf/tests/ProcessorTest.cpp#307
Ben Wagner6da8f792017-08-10 12:22:56 -040041 # Not MSAN due to:
42 # - https://skia.googlesource.com/skia/+/
43 # 0ac06e47269a40c177747310a613d213c95d1d6d/infra/bots/recipe_modules/
44 # flavor/gn_flavor.py#80
45 if 'Android' not in bot and 'MSAN' not in bot:
Ben Wagner11ab43c2017-08-09 18:05:59 -040046 args.append('--randomProcessorTest')
Eric Boren4c7754c2017-04-10 08:19:10 -040047
48 # 32-bit desktop bots tend to run out of memory, because they have relatively
49 # far more cores than RAM (e.g. 32 cores, 3G RAM). Hold them back a bit.
50 if '-x86-' in bot and not 'NexusPlayer' in bot:
Mike Kleindf669812017-06-23 13:30:17 -040051 args.extend(['--threads', '4'])
Eric Boren4c7754c2017-04-10 08:19:10 -040052
53 # Avoid issues with dynamically exceeding resource cache limits.
54 if 'Test' in bot and 'DISCARDABLE' in bot:
Mike Kleindf669812017-06-23 13:30:17 -040055 args.extend(['--threads', '0'])
56
57 # See if staying on the main thread helps skia:6748.
58 if 'Test-iOS' in bot:
59 args.extend(['--threads', '0'])
Eric Boren4c7754c2017-04-10 08:19:10 -040060
Derek Sollenbergeredfe3df2017-07-19 15:25:24 -040061 # Android's kernel will occasionally attempt to kill our process, using
62 # SIGINT, in an effort to free up resources. If requested, that signal
63 # is ignored and dm will keep attempting to proceed until we actually
64 # exhaust the available resources.
65 if ('NexusPlayer' in bot or
66 'Nexus10' in bot or
67 'PixelC' in bot):
68 args.append('--ignoreSigInt')
69
Ben Wagner32fa5102017-08-10 21:25:55 -040070 configs = []
71 if api.vars.builder_cfg.get('cpu_or_gpu') == 'CPU':
72 args.append('--nogpu')
73
74 # These are the canonical configs that we would ideally run on all bots. We
75 # may opt out or substitute some below for specific bots
76 configs.extend(['8888', 'srgb', 'pdf'])
77
78 # Runs out of memory on Android bots. Everyone else seems fine.
79 if 'Android' in bot:
80 configs.remove('pdf')
81
82 if '-GCE-' in bot:
83 configs.extend(['565'])
84 configs.extend(['f16'])
85 configs.extend(['sp-8888', '2ndpic-8888']) # Test niche uses of SkPicture.
86 configs.extend(['lite-8888']) # Experimental display list.
87 configs.extend(['gbr-8888'])
88
89 # NP is running out of RAM when we run all these modes. skia:3255
90 if 'NexusPlayer' not in bot:
91 configs.extend(mode + '-8888' for mode in
92 ['serialize', 'tiles_rt', 'pic'])
93
94 if 'Ci20' in bot:
95 # This bot is really slow, cut it down to just 8888.
96 configs = ['8888']
97
98 # This bot only differs from vanilla CPU bots in 8888 config.
99 if 'SK_FORCE_RASTER_PIPELINE_BLITTER' in bot:
100 configs = ['8888', 'srgb']
101
102 elif api.vars.builder_cfg.get('cpu_or_gpu') == 'GPU':
103 args.append('--nocpu')
104
105 # Add in either gles or gl configs to the canonical set based on OS
106 sample_count = '8'
107 gl_prefix = 'gl'
108 if 'Android' in bot or 'iOS' in bot:
109 sample_count = '4'
110 # We want to test the OpenGL config not the GLES config on the Shield
111 if 'NVIDIA_Shield' not in bot:
112 gl_prefix = 'gles'
113 elif 'Intel' in bot:
114 sample_count = ''
115 elif 'ChromeOS' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400116 gl_prefix = 'gles'
Eric Boren4c7754c2017-04-10 08:19:10 -0400117
Ben Wagner32fa5102017-08-10 21:25:55 -0400118 configs.extend([gl_prefix, gl_prefix + 'dft', gl_prefix + 'srgb'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400119 if sample_count is not '':
Ben Wagner32fa5102017-08-10 21:25:55 -0400120 configs.append(gl_prefix + 'msaa' + sample_count)
Eric Boren4c7754c2017-04-10 08:19:10 -0400121
Ben Wagner32fa5102017-08-10 21:25:55 -0400122 # The NP produces a long error stream when we run with MSAA. The Tegra3 just
123 # doesn't support it.
124 if ('NexusPlayer' in bot or
125 'Tegra3' in bot or
126 # We aren't interested in fixing msaa bugs on current iOS devices.
127 'iPad4' in bot or
128 'iPadPro' in bot or
129 'iPhone6' in bot or
130 'iPhone7' in bot or
131 # skia:5792
132 'IntelHD530' in bot or
133 'IntelIris540' in bot):
134 configs = [x for x in configs if 'msaa' not in x]
Eric Boren4c7754c2017-04-10 08:19:10 -0400135
Ben Wagner32fa5102017-08-10 21:25:55 -0400136 # The NP produces different images for dft on every run.
137 if 'NexusPlayer' in bot:
138 configs = [x for x in configs if 'dft' not in x]
Eric Boren4c7754c2017-04-10 08:19:10 -0400139
Ben Wagner32fa5102017-08-10 21:25:55 -0400140 if '-TSAN' not in bot and sample_count is not '':
141 if ('TegraK1' in bot or
142 'TegraX1' in bot or
143 'GTX550Ti' in bot or
144 'GTX660' in bot or
145 'QuadroP400' in bot or
146 ('GT610' in bot and 'Ubuntu17' not in bot)):
147 configs.append(gl_prefix + 'nvprdit' + sample_count)
Kevin Lubickae95db42017-04-10 13:05:49 -0400148
Ben Wagner32fa5102017-08-10 21:25:55 -0400149 # We want to test both the OpenGL config and the GLES config on Linux Intel:
150 # GL is used by Chrome, GLES is used by ChromeOS.
151 if 'Intel' in bot and api.vars.is_linux:
152 configs.extend(['gles', 'glesdft', 'glessrgb'])
Mike Klein97627d42017-05-11 13:12:48 -0400153
Ben Wagner32fa5102017-08-10 21:25:55 -0400154 # The following devices do not support glessrgb.
155 if 'glessrgb' in configs:
156 if ('IntelHD405' in bot or
157 'IntelIris540' in bot or
Ben Wagnerfef8fdd2017-08-11 14:13:56 -0400158 'IntelIris640' in bot or
Ben Wagner32fa5102017-08-10 21:25:55 -0400159 'IntelBayTrail' in bot or
160 'IntelHD2000' in bot or
161 'AndroidOne' in bot or
162 'Nexus7' in bot or
163 'NexusPlayer' in bot):
164 configs.remove('glessrgb')
165
166 # Test instanced rendering on a limited number of platforms
167 if 'Nexus6' in bot:
168 # inst msaa isn't working yet on Adreno.
169 configs.append(gl_prefix + 'inst')
170 elif 'NVIDIA_Shield' in bot or 'PixelC' in bot:
171 # Multisampled instanced configs use nvpr so we substitute inst msaa
172 # configs for nvpr msaa configs.
173 old = gl_prefix + 'nvpr'
174 new = gl_prefix + 'inst'
175 configs = [x.replace(old, new) for x in configs]
176 # We also test non-msaa instanced.
177 configs.append(new)
Ben Wagnercc4221b2017-08-17 17:29:04 -0400178 elif 'MacMini7.1' in bot:
Ben Wagner32fa5102017-08-10 21:25:55 -0400179 configs.extend([gl_prefix + 'inst'])
180
181 # CommandBuffer bot *only* runs the command_buffer config.
182 if 'CommandBuffer' in bot:
183 configs = ['commandbuffer']
184
185 # ANGLE bot *only* runs the angle configs
186 if 'ANGLE' in bot:
187 configs = ['angle_d3d11_es2',
188 'angle_d3d9_es2',
189 'angle_gl_es2',
190 'angle_d3d11_es3']
191 if sample_count is not '':
192 configs.append('angle_d3d11_es2_msaa' + sample_count)
193 configs.append('angle_d3d11_es3_msaa' + sample_count)
194
195 # Vulkan bot *only* runs the vk config.
196 if 'Vulkan' in bot:
197 configs = ['vk']
198
199 if 'ChromeOS' in bot:
200 # Just run GLES for now - maybe add gles_msaa4 in the future
201 configs = ['gles']
202
203 # Test coverage counting path renderer.
204 if 'CCPR' in bot:
205 configs = [c for c in configs if c == 'gl' or c == 'gles']
206 args.extend(['--pr', 'ccpr'])
Chris Dalton97598a52017-07-18 10:49:07 -0600207
Chris Dalton80ace822017-07-20 10:54:04 -0600208 args.append('--config')
209 args.extend(configs)
210
Eric Boren4c7754c2017-04-10 08:19:10 -0400211 # Run tests, gms, and image decoding tests everywhere.
212 args.extend('--src tests gm image colorImage svg'.split(' '))
213 if 'Vulkan' in bot and 'NexusPlayer' in bot:
214 args.remove('svg')
215 args.remove('image')
216
Mike Klein97627d42017-05-11 13:12:48 -0400217 # Eventually I'd like these to pass, but for now just skip 'em.
218 if 'SK_FORCE_RASTER_PIPELINE_BLITTER' in bot:
219 args.remove('tests')
220
Eric Boren4c7754c2017-04-10 08:19:10 -0400221 blacklisted = []
222 def blacklist(quad):
223 config, src, options, name = quad.split(' ') if type(quad) is str else quad
Chris Daltonecf78ac2017-08-15 15:43:08 -0600224 if (config == '_' or
225 config in configs or
226 (config[0] == '~' and config[1:] in configs)):
Eric Boren4c7754c2017-04-10 08:19:10 -0400227 blacklisted.extend([config, src, options, name])
228
Chris Daltonecf78ac2017-08-15 15:43:08 -0600229 # Only run the 'svgparse_*' svgs on 8888.
230 if api.vars.builder_cfg.get('cpu_or_gpu') == 'GPU':
231 blacklist('_ svg _ svgparse_')
232 else:
233 blacklist('~8888 svg _ svgparse_')
234
Eric Boren4c7754c2017-04-10 08:19:10 -0400235 # TODO: ???
236 blacklist('f16 _ _ dstreadshuffle')
237 blacklist('glsrgb image _ _')
238 blacklist('glessrgb image _ _')
239
Eric Boren4c7754c2017-04-10 08:19:10 -0400240 # Not any point to running these.
241 blacklist('gbr-8888 image _ _')
242 blacklist('gbr-8888 colorImage _ _')
243
244 if 'Valgrind' in bot:
245 # These take 18+ hours to run.
246 blacklist('pdf gm _ fontmgr_iter')
247 blacklist('pdf _ _ PANO_20121023_214540.jpg')
248 blacklist('pdf skp _ worldjournal')
249 blacklist('pdf skp _ desk_baidu.skp')
250 blacklist('pdf skp _ desk_wikipedia.skp')
251 blacklist('_ svg _ _')
252
253 if 'iOS' in bot:
254 blacklist(gl_prefix + ' skp _ _')
255
256 if 'Mac' in bot or 'iOS' in bot:
257 # CG fails on questionable bmps
258 blacklist('_ image gen_platf rgba32abf.bmp')
259 blacklist('_ image gen_platf rgb24prof.bmp')
260 blacklist('_ image gen_platf rgb24lprof.bmp')
261 blacklist('_ image gen_platf 8bpp-pixeldata-cropped.bmp')
262 blacklist('_ image gen_platf 4bpp-pixeldata-cropped.bmp')
263 blacklist('_ image gen_platf 32bpp-pixeldata-cropped.bmp')
264 blacklist('_ image gen_platf 24bpp-pixeldata-cropped.bmp')
265
266 # CG has unpredictable behavior on this questionable gif
267 # It's probably using uninitialized memory
268 blacklist('_ image gen_platf frame_larger_than_image.gif')
269
270 # CG has unpredictable behavior on incomplete pngs
271 # skbug.com/5774
272 blacklist('_ image gen_platf inc0.png')
273 blacklist('_ image gen_platf inc1.png')
274 blacklist('_ image gen_platf inc2.png')
275 blacklist('_ image gen_platf inc3.png')
276 blacklist('_ image gen_platf inc4.png')
277 blacklist('_ image gen_platf inc5.png')
278 blacklist('_ image gen_platf inc6.png')
279 blacklist('_ image gen_platf inc7.png')
280 blacklist('_ image gen_platf inc8.png')
281 blacklist('_ image gen_platf inc9.png')
282 blacklist('_ image gen_platf inc10.png')
283 blacklist('_ image gen_platf inc11.png')
284 blacklist('_ image gen_platf inc12.png')
285 blacklist('_ image gen_platf inc13.png')
286 blacklist('_ image gen_platf inc14.png')
287
Matt Sarett6c50a2e2017-05-01 09:13:05 -0400288 # WIC fails on questionable bmps
Eric Boren4c7754c2017-04-10 08:19:10 -0400289 if 'Win' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400290 blacklist('_ image gen_platf pal8os2v2.bmp')
291 blacklist('_ image gen_platf pal8os2v2-16.bmp')
292 blacklist('_ image gen_platf rgba32abf.bmp')
293 blacklist('_ image gen_platf rgb24prof.bmp')
294 blacklist('_ image gen_platf rgb24lprof.bmp')
295 blacklist('_ image gen_platf 8bpp-pixeldata-cropped.bmp')
296 blacklist('_ image gen_platf 4bpp-pixeldata-cropped.bmp')
297 blacklist('_ image gen_platf 32bpp-pixeldata-cropped.bmp')
298 blacklist('_ image gen_platf 24bpp-pixeldata-cropped.bmp')
Eric Boren4c7754c2017-04-10 08:19:10 -0400299 if 'x86_64' in bot and 'CPU' in bot:
300 # This GM triggers a SkSmallAllocator assert.
301 blacklist('_ gm _ composeshader_bitmap')
302
Matt Sarett6c50a2e2017-05-01 09:13:05 -0400303 if 'Win' in bot or 'Mac' in bot:
Leon Scroggins III3a3cf432017-08-18 13:08:16 -0400304 # WIC and CG fail on arithmetic jpegs
Matt Sarett6c50a2e2017-05-01 09:13:05 -0400305 blacklist('_ image gen_platf testimgari.jpg')
Leon Scroggins III3a3cf432017-08-18 13:08:16 -0400306 # More questionable bmps that fail on Mac, too. skbug.com/6984
307 blacklist('_ image gen_platf rle8-height-negative.bmp')
308 blacklist('_ image gen_platf rle4-height-negative.bmp')
Matt Sarett6c50a2e2017-05-01 09:13:05 -0400309
Eric Boren4c7754c2017-04-10 08:19:10 -0400310 if 'Android' in bot or 'iOS' in bot:
311 # This test crashes the N9 (perhaps because of large malloc/frees). It also
312 # is fairly slow and not platform-specific. So we just disable it on all of
313 # Android and iOS. skia:5438
314 blacklist('_ test _ GrShape')
315
Eric Boren4c7754c2017-04-10 08:19:10 -0400316 # skia:4095
Mike Reedfb499092017-06-26 13:53:32 +0000317 bad_serialize_gms = ['bleed_image',
Eric Boren4c7754c2017-04-10 08:19:10 -0400318 'c_gms',
319 'colortype',
320 'colortype_xfermodes',
321 'drawfilter',
322 'fontmgr_bounds_0.75_0',
323 'fontmgr_bounds_1_-0.25',
324 'fontmgr_bounds',
325 'fontmgr_match',
326 'fontmgr_iter',
327 'imagemasksubset']
328
329 # skia:5589
330 bad_serialize_gms.extend(['bitmapfilters',
331 'bitmapshaders',
332 'bleed',
333 'bleed_alpha_bmp',
334 'bleed_alpha_bmp_shader',
335 'convex_poly_clip',
336 'extractalpha',
337 'filterbitmap_checkerboard_32_32_g8',
338 'filterbitmap_image_mandrill_64',
339 'shadows',
340 'simpleaaclip_aaclip'])
341 # skia:5595
342 bad_serialize_gms.extend(['composeshader_bitmap',
343 'scaled_tilemodes_npot',
344 'scaled_tilemodes'])
345
346 # skia:5778
347 bad_serialize_gms.append('typefacerendering_pfaMac')
348 # skia:5942
349 bad_serialize_gms.append('parsedpaths')
350
351 # these use a custom image generator which doesn't serialize
352 bad_serialize_gms.append('ImageGeneratorExternal_rect')
353 bad_serialize_gms.append('ImageGeneratorExternal_shader')
354
355 # skia:6189
356 bad_serialize_gms.append('shadow_utils')
357
Matt Sarett9f3dcb32017-05-04 08:53:32 -0400358 # Not expected to round trip encoding/decoding.
359 bad_serialize_gms.append('makecolorspace')
360
Eric Boren4c7754c2017-04-10 08:19:10 -0400361 for test in bad_serialize_gms:
362 blacklist(['serialize-8888', 'gm', '_', test])
363
364 if 'Mac' not in bot:
365 for test in ['bleed_alpha_image', 'bleed_alpha_image_shader']:
366 blacklist(['serialize-8888', 'gm', '_', test])
367 # It looks like we skip these only for out-of-memory concerns.
368 if 'Win' in bot or 'Android' in bot:
369 for test in ['verylargebitmap', 'verylarge_picture_image']:
370 blacklist(['serialize-8888', 'gm', '_', test])
371
372 # skia:4769
373 for test in ['drawfilter']:
374 blacklist([ 'sp-8888', 'gm', '_', test])
375 blacklist([ 'pic-8888', 'gm', '_', test])
376 blacklist(['2ndpic-8888', 'gm', '_', test])
377 blacklist([ 'lite-8888', 'gm', '_', test])
378 # skia:4703
379 for test in ['image-cacherator-from-picture',
380 'image-cacherator-from-raster',
381 'image-cacherator-from-ctable']:
382 blacklist([ 'sp-8888', 'gm', '_', test])
383 blacklist([ 'pic-8888', 'gm', '_', test])
384 blacklist([ '2ndpic-8888', 'gm', '_', test])
385 blacklist(['serialize-8888', 'gm', '_', test])
386
387 # GM that requires raster-backed canvas
388 for test in ['gamut', 'complexclip4_bw', 'complexclip4_aa']:
389 blacklist([ 'sp-8888', 'gm', '_', test])
390 blacklist([ 'pic-8888', 'gm', '_', test])
391 blacklist([ 'lite-8888', 'gm', '_', test])
392 blacklist([ '2ndpic-8888', 'gm', '_', test])
393 blacklist(['serialize-8888', 'gm', '_', test])
394
395 # GM that not support tiles_rt
396 for test in ['complexclip4_bw', 'complexclip4_aa']:
397 blacklist([ 'tiles_rt-8888', 'gm', '_', test])
398
399 # Extensions for RAW images
400 r = ["arw", "cr2", "dng", "nef", "nrw", "orf", "raf", "rw2", "pef", "srw",
401 "ARW", "CR2", "DNG", "NEF", "NRW", "ORF", "RAF", "RW2", "PEF", "SRW"]
402
403 # skbug.com/4888
404 # Blacklist RAW images (and a few large PNGs) on GPU bots
405 # until we can resolve failures.
Matt Sarett929bfeb2017-05-22 10:34:41 -0400406 if 'GPU' in bot:
407 blacklist('_ image _ interlaced1.png')
408 blacklist('_ image _ interlaced2.png')
409 blacklist('_ image _ interlaced3.png')
410 for raw_ext in r:
411 blacklist('_ image _ .%s' % raw_ext)
412
413 # Blacklist memory intensive tests on 32-bit bots.
414 if ('Win2k8' in bot or 'Win8' in bot) and 'x86-' in bot:
415 blacklist('_ image f16 _')
Matt Sarett112565e2017-05-22 13:45:15 -0400416 blacklist('_ image _ abnormal.wbmp')
Eric Boren4c7754c2017-04-10 08:19:10 -0400417 blacklist('_ image _ interlaced1.png')
418 blacklist('_ image _ interlaced2.png')
419 blacklist('_ image _ interlaced3.png')
420 for raw_ext in r:
421 blacklist('_ image _ .%s' % raw_ext)
422
Eric Boren4c7754c2017-04-10 08:19:10 -0400423 if 'IntelHD405' in bot and 'Ubuntu16' in bot:
424 # skia:6331
425 blacklist(['glmsaa8', 'image', 'gen_codec_gpu', 'abnormal.wbmp'])
426 blacklist(['glesmsaa4', 'image', 'gen_codec_gpu', 'abnormal.wbmp'])
427
428 if 'Nexus5' in bot:
429 # skia:5876
430 blacklist(['_', 'gm', '_', 'encode-platform'])
431
432 if 'AndroidOne-GPU' in bot: # skia:4697, skia:4704, skia:4694, skia:4705
433 blacklist(['_', 'gm', '_', 'bigblurs'])
434 blacklist(['_', 'gm', '_', 'bleed'])
435 blacklist(['_', 'gm', '_', 'bleed_alpha_bmp'])
436 blacklist(['_', 'gm', '_', 'bleed_alpha_bmp_shader'])
437 blacklist(['_', 'gm', '_', 'bleed_alpha_image'])
438 blacklist(['_', 'gm', '_', 'bleed_alpha_image_shader'])
439 blacklist(['_', 'gm', '_', 'bleed_image'])
440 blacklist(['_', 'gm', '_', 'dropshadowimagefilter'])
441 blacklist(['_', 'gm', '_', 'filterfastbounds'])
442 blacklist([gl_prefix, 'gm', '_', 'imageblurtiled'])
443 blacklist(['_', 'gm', '_', 'imagefiltersclipped'])
444 blacklist(['_', 'gm', '_', 'imagefiltersscaled'])
445 blacklist(['_', 'gm', '_', 'imageresizetiled'])
446 blacklist(['_', 'gm', '_', 'matrixconvolution'])
447 blacklist(['_', 'gm', '_', 'strokedlines'])
448 if sample_count is not '':
449 gl_msaa_config = gl_prefix + 'msaa' + sample_count
450 blacklist([gl_msaa_config, 'gm', '_', 'imageblurtiled'])
451 blacklist([gl_msaa_config, 'gm', '_', 'imagefiltersbase'])
452
453 match = []
454 if 'Valgrind' in bot: # skia:3021
455 match.append('~Threaded')
456
Ben Wagner6c126422017-06-19 12:45:54 -0400457 if 'Valgrind' in bot and 'PreAbandonGpuContext' in bot:
458 # skia:6575
459 match.append('~multipicturedraw_')
460
Ben Wagnerbb3e7ff2017-04-28 15:28:32 -0400461 if 'CommandBuffer' in bot:
462 # https://crbug.com/697030
463 match.append('~HalfFloatAlphaTextureTest')
464
Eric Boren4c7754c2017-04-10 08:19:10 -0400465 if 'AndroidOne' in bot: # skia:4711
466 match.append('~WritePixels')
467
468 if 'NexusPlayer' in bot:
469 match.append('~ResourceCache')
470
471 if 'Nexus10' in bot:
472 match.append('~CopySurface') # skia:5509
473 match.append('~SRGBReadWritePixels') # skia:6097
474
Eric Boren4c7754c2017-04-10 08:19:10 -0400475 if 'GalaxyS6' in bot:
476 match.append('~SpecialImage') # skia:6338
Brian Osmaneee3c092017-06-15 13:25:10 -0400477 match.append('~skbug6653') # skia:6653
Eric Boren4c7754c2017-04-10 08:19:10 -0400478
479 if 'GalaxyS7_G930A' in bot:
480 match.append('~WritePixels') # skia:6427
481
Eric Boren4c7754c2017-04-10 08:19:10 -0400482 if 'MSAN' in bot:
483 match.extend(['~Once', '~Shared']) # Not sure what's up with these tests.
484
485 if 'TSAN' in bot:
486 match.extend(['~ReadWriteAlpha']) # Flaky on TSAN-covered on nvidia bots.
487 match.extend(['~RGBA4444TextureTest', # Flakier than they are important.
488 '~RGB565TextureTest'])
489
Greg Daniela86385d2017-06-05 11:34:29 -0400490 if 'Vulkan' in bot and 'Adreno530' in bot:
491 # skia:5777
492 match.extend(['~CopySurface'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400493
494 if 'Vulkan' in bot and 'NexusPlayer' in bot:
Greg Daniel98fae702017-06-05 09:22:46 -0400495 match.extend(['~gradients_no_texture$', # skia:6132
Eric Boren4c7754c2017-04-10 08:19:10 -0400496 '~tilemodes', # skia:6132
497 '~shadertext$', # skia:6132
498 '~bitmapfilters', # skia:6132
499 '~GrContextFactory_abandon']) #skia:6209
500
Ben Wagnerbe8ad452017-08-11 15:18:03 -0400501 if ('Vulkan' in bot and api.vars.is_linux and
502 ('IntelIris540' in bot or 'IntelIris640' in bot)):
Eric Boren4c7754c2017-04-10 08:19:10 -0400503 match.extend(['~VkHeapTests']) # skia:6245
504
Ben Wagnerf1debdf2017-06-13 13:37:05 -0400505 if 'Vulkan' in bot and 'IntelIris540' in bot and 'Win' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400506 # skia:6398
507 blacklist(['vk', 'gm', '_', 'aarectmodes'])
508 blacklist(['vk', 'gm', '_', 'aaxfermodes'])
509 blacklist(['vk', 'gm', '_', 'arithmode'])
510 blacklist(['vk', 'gm', '_', 'composeshader_bitmap'])
511 blacklist(['vk', 'gm', '_', 'composeshader_bitmap2'])
512 blacklist(['vk', 'gm', '_', 'dftextCOLR'])
513 blacklist(['vk', 'gm', '_', 'drawregionmodes'])
514 blacklist(['vk', 'gm', '_', 'filterfastbounds'])
515 blacklist(['vk', 'gm', '_', 'fontcache'])
516 blacklist(['vk', 'gm', '_', 'fontmgr_iterWin10'])
517 blacklist(['vk', 'gm', '_', 'fontmgr_iter_factoryWin10'])
518 blacklist(['vk', 'gm', '_', 'fontmgr_matchWin10'])
519 blacklist(['vk', 'gm', '_', 'fontscalerWin'])
520 blacklist(['vk', 'gm', '_', 'fontscalerdistortable'])
521 blacklist(['vk', 'gm', '_', 'gammagradienttext'])
522 blacklist(['vk', 'gm', '_', 'gammatextWin'])
523 blacklist(['vk', 'gm', '_', 'gradtext'])
524 blacklist(['vk', 'gm', '_', 'hairmodes'])
525 blacklist(['vk', 'gm', '_', 'imagefilters_xfermodes'])
526 blacklist(['vk', 'gm', '_', 'imagefiltersclipped'])
527 blacklist(['vk', 'gm', '_', 'imagefiltersgraph'])
528 blacklist(['vk', 'gm', '_', 'imagefiltersscaled'])
529 blacklist(['vk', 'gm', '_', 'imagefiltersstroked'])
530 blacklist(['vk', 'gm', '_', 'imagefilterstransformed'])
531 blacklist(['vk', 'gm', '_', 'imageresizetiled'])
532 blacklist(['vk', 'gm', '_', 'lcdblendmodes'])
533 blacklist(['vk', 'gm', '_', 'lcdoverlap'])
534 blacklist(['vk', 'gm', '_', 'lcdtextWin'])
535 blacklist(['vk', 'gm', '_', 'lcdtextsize'])
536 blacklist(['vk', 'gm', '_', 'matriximagefilter'])
537 blacklist(['vk', 'gm', '_', 'mixedtextblobsCOLR'])
Greg Daniel744d3c52017-06-09 13:50:20 -0400538 blacklist(['vk', 'gm', '_', 'mixershader'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400539 blacklist(['vk', 'gm', '_', 'pictureimagefilter'])
540 blacklist(['vk', 'gm', '_', 'resizeimagefilter'])
541 blacklist(['vk', 'gm', '_', 'rotate_imagefilter'])
542 blacklist(['vk', 'gm', '_', 'savelayer_lcdtext'])
543 blacklist(['vk', 'gm', '_', 'srcmode'])
544 blacklist(['vk', 'gm', '_', 'surfaceprops'])
545 blacklist(['vk', 'gm', '_', 'textblobgeometrychange'])
546 blacklist(['vk', 'gm', '_', 'textbloblooper'])
547 blacklist(['vk', 'gm', '_', 'textblobmixedsizes'])
548 blacklist(['vk', 'gm', '_', 'textblobmixedsizes_df'])
549 blacklist(['vk', 'gm', '_', 'textblobrandomfont'])
550 blacklist(['vk', 'gm', '_', 'textfilter_color'])
551 blacklist(['vk', 'gm', '_', 'textfilter_image'])
552 blacklist(['vk', 'gm', '_', 'typefacerenderingWin'])
553 blacklist(['vk', 'gm', '_', 'varied_text_clipped_lcd'])
554 blacklist(['vk', 'gm', '_', 'varied_text_ignorable_clip_lcd'])
555 blacklist(['vk', 'gm', '_', 'xfermodeimagefilter'])
556 match.append('~ApplyGamma')
557 match.append('~ComposedImageFilterBounds_Gpu')
Matt Sarett77443972017-04-11 11:25:37 -0400558 match.append('~DeferredTextureImage')
Chris Dalton114a3c02017-05-26 15:17:19 -0600559 match.append('~GrMeshTest')
Eric Boren4c7754c2017-04-10 08:19:10 -0400560 match.append('~ImageFilterFailAffectsTransparentBlack_Gpu')
561 match.append('~ImageFilterZeroBlurSigma_Gpu')
562 match.append('~ImageNewShader_GPU')
563 match.append('~NewTextureFromPixmap')
564 match.append('~ReadPixels_Gpu')
565 match.append('~ReadPixels_Texture')
566 match.append('~ReadWriteAlpha')
Brian Osmane18ceb12017-06-15 16:04:45 -0400567 match.append('~skbug6653')
Eric Boren4c7754c2017-04-10 08:19:10 -0400568 match.append('~SRGBReadWritePixels')
569 match.append('~SpecialImage_DeferredGpu')
570 match.append('~SpecialImage_Gpu')
571 match.append('~WritePixels_Gpu')
Brian Osman33ea1362017-04-19 10:51:39 -0400572 match.append('~WritePixelsNonTexture_Gpu')
Eric Boren4c7754c2017-04-10 08:19:10 -0400573 match.append('~XfermodeImageFilterCroppedInput_Gpu')
574
575 if 'IntelIris540' in bot and 'ANGLE' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400576 for config in ['angle_d3d9_es2', 'angle_d3d11_es2', 'angle_gl_es2']:
Brian Salomon6e554e32017-06-23 12:08:10 -0400577 # skia:6103
Eric Boren4c7754c2017-04-10 08:19:10 -0400578 blacklist([config, 'gm', '_', 'multipicturedraw_invpathclip_simple'])
579 blacklist([config, 'gm', '_', 'multipicturedraw_noclip_simple'])
580 blacklist([config, 'gm', '_', 'multipicturedraw_pathclip_simple'])
581 blacklist([config, 'gm', '_', 'multipicturedraw_rectclip_simple'])
582 blacklist([config, 'gm', '_', 'multipicturedraw_rrectclip_simple'])
Brian Salomon6e554e32017-06-23 12:08:10 -0400583 # skia:6141
584 blacklist([config, 'gm', '_', 'discard'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400585
Eric Boren89cd3572017-06-28 13:50:22 -0400586 if 'IntelBayTrail' in bot and api.vars.is_linux:
Eric Boren4c7754c2017-04-10 08:19:10 -0400587 match.append('~ImageStorageLoad') # skia:6358
588
Kevin Lubickae95db42017-04-10 13:05:49 -0400589 if 'Ci20' in bot:
590 match.append('~Codec_Dimensions') # skia:6477
591 match.append('~FontMgrAndroidParser') # skia:6478
592 match.append('~PathOpsSimplify') # skia:6479
593 blacklist(['_', 'gm', '_', 'fast_slow_blurimagefilter']) # skia:6480
594
Kevin Lubickc14e5a72017-08-15 13:22:19 -0400595 if 'PowerVRGX6250' in bot:
596 match.append('~gradients_view_perspective_nodither') #skia:6972
597
Eric Boren4c7754c2017-04-10 08:19:10 -0400598 if blacklisted:
599 args.append('--blacklist')
600 args.extend(blacklisted)
601
602 if match:
603 args.append('--match')
604 args.extend(match)
605
606 # These bots run out of memory running RAW codec tests. Do not run them in
607 # parallel
608 if ('NexusPlayer' in bot or 'Nexus5' in bot or 'Nexus9' in bot
609 or 'Win8-MSVC-ShuttleB' in bot):
610 args.append('--noRAW_threading')
611
Stephan Altmuellere86af692017-07-21 10:12:45 -0400612 # Some people don't like verbose output.
613 verbose = False
614
615 if 'Intel' in bot and api.vars.is_linux and not 'Vulkan' in bot:
616 # TODO(dogben): Track down what's causing bots to die.
617 verbose = True
618
Ben Wagner40c0f242017-04-28 15:55:35 -0400619 if 'Valgrind' in bot and 'PreAbandonGpuContext' in bot:
Ben Wagner47ac0242017-06-27 13:44:36 -0400620 verbose = True
Ben Wagner40c0f242017-04-28 15:55:35 -0400621
Mike Kleinc9089062017-06-26 09:09:32 -0400622 if 'NexusPlayer' in bot and 'CPU' in bot:
623 # The Nexus Player's image decoding tests are slow enough that swarming
624 # times it out for not printing anything frequently enough. --verbose
625 # makes dm print something every time we start or complete a task.
Ben Wagner47ac0242017-06-27 13:44:36 -0400626 verbose = True
627
Stephan Altmuellere86af692017-07-21 10:12:45 -0400628 if 'Android' in bot or 'iOS' in bot:
629 # Enable verbose output on mobile platforms.
630 verbose = True
631
Ben Wagner47ac0242017-06-27 13:44:36 -0400632 if verbose:
Mike Kleinc9089062017-06-26 09:09:32 -0400633 args.append('--verbose')
634
Eric Boren4c7754c2017-04-10 08:19:10 -0400635 return args
636
637
638def key_params(api):
639 """Build a unique key from the builder name (as a list).
640
641 E.g. arch x86 gpu GeForce320M mode MacMini4.1 os Mac10.6
642 """
643 # Don't bother to include role, which is always Test.
644 # TryBots are uploaded elsewhere so they can use the same key.
645 blacklist = ['role', 'is_trybot']
646
647 flat = []
648 for k in sorted(api.vars.builder_cfg.keys()):
649 if k not in blacklist:
650 flat.append(k)
651 flat.append(api.vars.builder_cfg[k])
652 return flat
653
654
655def test_steps(api):
656 """Run the DM test."""
657 use_hash_file = False
658 if api.vars.upload_dm_results:
659 # This must run before we write anything into
660 # api.flavor.device_dirs.dm_dir or we may end up deleting our
661 # output on machines where they're the same.
662 api.flavor.create_clean_host_dir(api.vars.dm_dir)
663 host_dm_dir = str(api.vars.dm_dir)
664 device_dm_dir = str(api.flavor.device_dirs.dm_dir)
665 if host_dm_dir != device_dm_dir:
666 api.flavor.create_clean_device_dir(device_dm_dir)
667
668 # Obtain the list of already-generated hashes.
669 hash_filename = 'uninteresting_hashes.txt'
670
671 # Ensure that the tmp_dir exists.
Robert Iannucci8cd50412017-07-07 14:36:58 -0700672 api.run.run_once(api.file.ensure_directory,
673 'makedirs tmp_dir',
674 api.vars.tmp_dir)
Eric Boren4c7754c2017-04-10 08:19:10 -0400675
676 host_hashes_file = api.vars.tmp_dir.join(hash_filename)
677 hashes_file = api.flavor.device_path_join(
678 api.flavor.device_dirs.tmp_dir, hash_filename)
679 api.run(
680 api.python.inline,
681 'get uninteresting hashes',
682 program="""
683 import contextlib
684 import math
685 import socket
686 import sys
687 import time
688 import urllib2
689
Stephan Altmuellerc19ebc52017-05-30 16:39:17 -0400690 HASHES_URL = 'https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt'
Eric Boren4c7754c2017-04-10 08:19:10 -0400691 RETRIES = 5
692 TIMEOUT = 60
693 WAIT_BASE = 15
694
695 socket.setdefaulttimeout(TIMEOUT)
696 for retry in range(RETRIES):
697 try:
698 with contextlib.closing(
699 urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:
700 hashes = w.read()
701 with open(sys.argv[1], 'w') as f:
702 f.write(hashes)
703 break
704 except Exception as e:
705 print 'Failed to get uninteresting hashes from %s:' % HASHES_URL
706 print e
707 if retry == RETRIES:
708 raise
709 waittime = WAIT_BASE * math.pow(2, retry)
710 print 'Retry in %d seconds.' % waittime
711 time.sleep(waittime)
712 """,
713 args=[host_hashes_file],
714 abort_on_failure=False,
715 fail_build_on_failure=False,
716 infra_step=True)
717
718 if api.path.exists(host_hashes_file):
719 api.flavor.copy_file_to_device(host_hashes_file, hashes_file)
720 use_hash_file = True
721
722 # Run DM.
723 properties = [
724 'gitHash', api.vars.got_revision,
Eric Boren4c7754c2017-04-10 08:19:10 -0400725 'builder', api.vars.builder_name,
Eric Boren4c7754c2017-04-10 08:19:10 -0400726 ]
727 if api.vars.is_trybot:
728 properties.extend([
729 'issue', api.vars.issue,
730 'patchset', api.vars.patchset,
731 'patch_storage', api.vars.patch_storage,
732 ])
Eric Borenf9aa9e52017-04-10 09:56:10 -0400733 properties.extend(['swarming_bot_id', api.vars.swarming_bot_id])
734 properties.extend(['swarming_task_id', api.vars.swarming_task_id])
Eric Boren4c7754c2017-04-10 08:19:10 -0400735
736 args = [
737 'dm',
Eric Boren4c7754c2017-04-10 08:19:10 -0400738 '--resourcePath', api.flavor.device_dirs.resource_dir,
739 '--skps', api.flavor.device_dirs.skp_dir,
740 '--images', api.flavor.device_path_join(
741 api.flavor.device_dirs.images_dir, 'dm'),
742 '--colorImages', api.flavor.device_path_join(
743 api.flavor.device_dirs.images_dir, 'colorspace'),
744 '--nameByHash',
745 '--properties'
746 ] + properties
747
748 args.extend(['--svgs', api.flavor.device_dirs.svg_dir])
749
750 args.append('--key')
751 args.extend(key_params(api))
752 if use_hash_file:
753 args.extend(['--uninterestingHashesFile', hashes_file])
754 if api.vars.upload_dm_results:
755 args.extend(['--writePath', api.flavor.device_dirs.dm_dir])
756
Eric Boren89cd3572017-06-28 13:50:22 -0400757 args.extend(dm_flags(api, api.vars.builder_name))
Eric Boren4c7754c2017-04-10 08:19:10 -0400758
Eric Boren896af752017-04-24 13:22:56 -0400759 env = {}
Eric Boren4c7754c2017-04-10 08:19:10 -0400760 if 'Ubuntu16' in api.vars.builder_name:
761 # The vulkan in this asset name simply means that the graphics driver
762 # supports Vulkan. It is also the driver used for GL code.
763 dri_path = api.vars.slave_dir.join('linux_vulkan_intel_driver_release')
764 if 'Debug' in api.vars.builder_name:
765 dri_path = api.vars.slave_dir.join('linux_vulkan_intel_driver_debug')
766
767 if 'Vulkan' in api.vars.builder_name:
768 sdk_path = api.vars.slave_dir.join('linux_vulkan_sdk', 'bin')
769 lib_path = api.vars.slave_dir.join('linux_vulkan_sdk', 'lib')
770 env.update({
771 'PATH':'%%(PATH)s:%s' % sdk_path,
772 'LD_LIBRARY_PATH': '%s:%s' % (lib_path, dri_path),
773 'LIBGL_DRIVERS_PATH': dri_path,
774 'VK_ICD_FILENAMES':'%s' % dri_path.join('intel_icd.x86_64.json'),
775 })
776 else:
777 # Even the non-vulkan NUC jobs could benefit from the newer drivers.
778 env.update({
779 'LD_LIBRARY_PATH': dri_path,
780 'LIBGL_DRIVERS_PATH': dri_path,
781 })
782
783 # See skia:2789.
Ben Wagner988d15e2017-04-27 13:08:50 -0400784 extra_config_parts = api.vars.builder_cfg.get('extra_config', '').split('_')
785 if 'AbandonGpuContext' in extra_config_parts:
Eric Boren4c7754c2017-04-10 08:19:10 -0400786 args.append('--abandonGpuContext')
Ben Wagner988d15e2017-04-27 13:08:50 -0400787 if 'PreAbandonGpuContext' in extra_config_parts:
Eric Boren4c7754c2017-04-10 08:19:10 -0400788 args.append('--preAbandonGpuContext')
Ben Wagner988d15e2017-04-27 13:08:50 -0400789 if 'ReleaseAndAbandonGpuContext' in extra_config_parts:
Eric Boren6ec17e32017-04-26 14:25:29 -0400790 args.append('--releaseAndAbandonGpuContext')
Eric Boren4c7754c2017-04-10 08:19:10 -0400791
Eric Boren896af752017-04-24 13:22:56 -0400792 with api.env(env):
Eric Boren4c7754c2017-04-10 08:19:10 -0400793 api.run(api.flavor.step, 'dm', cmd=args, abort_on_failure=False)
794
795 if api.vars.upload_dm_results:
796 # Copy images and JSON to host machine if needed.
797 api.flavor.copy_directory_contents_to_host(
798 api.flavor.device_dirs.dm_dir, api.vars.dm_dir)
799
800
borenet1ed2ae42016-07-26 11:52:17 -0700801def RunSteps(api):
Eric Boren4c7754c2017-04-10 08:19:10 -0400802 api.core.setup()
Robert Iannucci297a7ef2017-05-12 19:09:38 -0700803 env = {}
Eric Boren4c7754c2017-04-10 08:19:10 -0400804 if 'iOS' in api.vars.builder_name:
805 env['IOS_BUNDLE_ID'] = 'com.google.dm'
Stephan Altmueller63e843d2017-04-25 11:38:38 -0400806 env['IOS_MOUNT_POINT'] = api.vars.slave_dir.join('mnt_iosdevice')
Robert Iannucci297a7ef2017-05-12 19:09:38 -0700807 with api.context(env=env):
Eric Boren4c7754c2017-04-10 08:19:10 -0400808 try:
809 api.flavor.install_everything()
810 test_steps(api)
811 finally:
812 api.flavor.cleanup_steps()
813 api.run.check_failure()
814
815
Eric Borenf9aa9e52017-04-10 09:56:10 -0400816TEST_BUILDERS = [
Kevin Lubickfe079d42017-04-12 08:31:48 -0400817 'Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-Android',
Kevin Lubickae95db42017-04-10 13:05:49 -0400818 'Test-Android-Clang-Ci20-CPU-IngenicJZ4780-mipsel-Release-Android',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400819 'Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-Android',
820 'Test-Android-Clang-GalaxyS7_G930A-GPU-Adreno530-arm64-Debug-Android',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400821 'Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-Android',
Chris Dalton80ace822017-07-20 10:54:04 -0600822 "Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-Android_CCPR",
Kevin Lubickfe079d42017-04-12 08:31:48 -0400823 'Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Release-Android',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400824 'Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-Android',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400825 'Test-Android-Clang-Nexus6p-GPU-Adreno430-arm64-Debug-Android_Vulkan',
Greg Daniela86385d2017-06-05 11:34:29 -0400826 'Test-Android-Clang-PixelXL-GPU-Adreno530-arm64-Debug-Android_Vulkan',
Chris Dalton80ace822017-07-20 10:54:04 -0600827 'Test-Android-Clang-PixelXL-GPU-Adreno530-arm64-Debug-Android_CCPR',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400828 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-Android',
829 'Test-Android-Clang-NexusPlayer-CPU-SSE4-x86-Release-Android',
830 'Test-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-Android_Vulkan',
831 'Test-Android-Clang-PixelC-CPU-TegraX1-arm64-Debug-Android',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400832 'Test-ChromeOS-Clang-Chromebook_C100p-GPU-MaliT764-arm-Debug',
Kevin Lubickc14e5a72017-08-15 13:22:19 -0400833 'Test-ChromeOS-Clang-Chromebook_CB5_312T-GPU-PowerVRGX6250-arm-Debug',
Ben Wagnercc4221b2017-08-17 17:29:04 -0400834 'Test-Mac-Clang-MacMini7.1-CPU-AVX-x86_64-Debug',
835 'Test-Mac-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Debug-CommandBuffer',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400836 'Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN',
837 'Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-MSAN',
838 'Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-TSAN',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400839 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug',
840 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400841 'Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind',
842 ('Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind' +
843 '_AbandonGpuContext'),
844 ('Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind' +
845 '_PreAbandonGpuContext'),
Eric Borenf9aa9e52017-04-10 09:56:10 -0400846 ('Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-SK_USE_DISCARDABLE_' +
847 'SCALEDIMAGECACHE'),
Kevin Lubickfe079d42017-04-12 08:31:48 -0400848 'Test-Ubuntu16-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug',
849 'Test-Ubuntu16-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-Vulkan',
850 'Test-Ubuntu16-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release',
851 'Test-Ubuntu16-Clang-NUCDE3815TYKHE-GPU-IntelBayTrail-x86_64-Debug',
Ben Wagnerab909b52017-08-09 14:41:31 -0400852 ('Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-Valgrind' +
853 '_PreAbandonGpuContext_SK_CPU_LIMIT_SSE41'),
Leon Scroggins IIIbb8126d2017-05-02 11:14:31 -0400854 'Test-Win8-MSVC-Golo-CPU-AVX-x86-Debug',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400855 'Test-Win10-MSVC-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-Vulkan',
Eric Boren6ec17e32017-04-26 14:25:29 -0400856 ('Test-Win10-MSVC-NUC5i7RYH-GPU-IntelIris6100-x86_64-Release-'
857 'ReleaseAndAbandonGpuContext'),
Kevin Lubickfe079d42017-04-12 08:31:48 -0400858 'Test-Win10-MSVC-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-ANGLE',
859 'Test-Win10-MSVC-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-Vulkan',
860 'Test-Win10-MSVC-ShuttleA-GPU-GTX660-x86_64-Debug-Vulkan',
861 'Test-Win10-MSVC-ShuttleC-GPU-GTX960-x86_64-Debug-ANGLE',
862 'Test-Win10-MSVC-ZBOX-GPU-GTX1070-x86_64-Debug-Vulkan',
863 'Test-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release',
Mike Klein97627d42017-05-11 13:12:48 -0400864 ('Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-'
865 'SK_FORCE_RASTER_PIPELINE_BLITTER'),
Eric Borenf9aa9e52017-04-10 09:56:10 -0400866]
borenet1ed2ae42016-07-26 11:52:17 -0700867
868
869def GenTests(api):
Eric Borenf9aa9e52017-04-10 09:56:10 -0400870 for builder in TEST_BUILDERS:
871 test = (
872 api.test(builder) +
873 api.properties(buildername=builder,
874 revision='abc123',
875 path_config='kitchen',
876 swarm_out_dir='[SWARM_OUT_DIR]') +
877 api.path.exists(
878 api.path['start_dir'].join('skia'),
879 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
880 'skimage', 'VERSION'),
881 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
882 'skp', 'VERSION'),
883 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
884 'svg', 'VERSION'),
885 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
Ben Wagnerf835c222017-04-30 11:14:51 -0400886 ) +
887 api.step_data('get swarming bot id',
888 stdout=api.raw_io.output('skia-bot-123')) +
889 api.step_data('get swarming task id',
890 stdout=api.raw_io.output('123456'))
Eric Borenf9aa9e52017-04-10 09:56:10 -0400891 )
Eric Borenf9aa9e52017-04-10 09:56:10 -0400892 if 'Win' in builder:
893 test += api.platform('win', 64)
Eric Boren4c7754c2017-04-10 08:19:10 -0400894
Eric Borenf9aa9e52017-04-10 09:56:10 -0400895 if 'ChromeOS' in builder:
896 test += api.step_data(
897 'read chromeos ip',
898 stdout=api.raw_io.output('{"user_ip":"foo@127.0.0.1"}'))
Eric Boren4c7754c2017-04-10 08:19:10 -0400899
900
Eric Borenf9aa9e52017-04-10 09:56:10 -0400901 yield test
Eric Boren4c7754c2017-04-10 08:19:10 -0400902
Kevin Lubickfe079d42017-04-12 08:31:48 -0400903 builder = 'Test-Win2k8-MSVC-GCE-CPU-AVX2-x86_64-Release'
904 yield (
905 api.test('trybot') +
906 api.properties(buildername=builder,
907 revision='abc123',
908 path_config='kitchen',
909 swarm_out_dir='[SWARM_OUT_DIR]') +
910 api.properties(patch_storage='gerrit') +
911 api.properties.tryserver(
912 buildername=builder,
913 gerrit_project='skia',
914 gerrit_url='https://skia-review.googlesource.com/',
915 )+
916 api.path.exists(
917 api.path['start_dir'].join('skia'),
918 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
919 'skimage', 'VERSION'),
920 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
921 'skp', 'VERSION'),
922 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
923 'svg', 'VERSION'),
924 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
925 )
926 )
927
Eric Boren4c7754c2017-04-10 08:19:10 -0400928 builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug'
borenet1ed2ae42016-07-26 11:52:17 -0700929 yield (
Eric Boren4c7754c2017-04-10 08:19:10 -0400930 api.test('failed_dm') +
931 api.properties(buildername=builder,
borenet1ed2ae42016-07-26 11:52:17 -0700932 revision='abc123',
933 path_config='kitchen',
934 swarm_out_dir='[SWARM_OUT_DIR]') +
935 api.path.exists(
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500936 api.path['start_dir'].join('skia'),
937 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400938 'skimage', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500939 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400940 'skp', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500941 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400942 'svg', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500943 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
Eric Boren4c7754c2017-04-10 08:19:10 -0400944 ) +
945 api.step_data('symbolized dm', retcode=1)
946 )
947
Kevin Lubickfe079d42017-04-12 08:31:48 -0400948 builder = 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-Android'
Eric Boren4c7754c2017-04-10 08:19:10 -0400949 yield (
950 api.test('failed_get_hashes') +
951 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -0400952 revision='abc123',
953 path_config='kitchen',
954 swarm_out_dir='[SWARM_OUT_DIR]') +
955 api.path.exists(
956 api.path['start_dir'].join('skia'),
957 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
958 'skimage', 'VERSION'),
959 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
960 'skp', 'VERSION'),
961 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
962 'svg', 'VERSION'),
963 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
964 ) +
965 api.step_data('get uninteresting hashes', retcode=1)
966 )
967
Kevin Lubickfe079d42017-04-12 08:31:48 -0400968 builder = 'Test-Android-Clang-NexusPlayer-CPU-SSE4-x86-Debug-Android'
Eric Boren4c7754c2017-04-10 08:19:10 -0400969 yield (
970 api.test('failed_push') +
971 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -0400972 revision='abc123',
973 path_config='kitchen',
974 swarm_out_dir='[SWARM_OUT_DIR]') +
975 api.path.exists(
976 api.path['start_dir'].join('skia'),
977 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
978 'skimage', 'VERSION'),
979 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
980 'skp', 'VERSION'),
981 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
982 'svg', 'VERSION'),
983 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
984 ) +
985 api.step_data('push [START_DIR]/skia/resources/* '+
986 '/sdcard/revenge_of_the_skiabot/resources', retcode=1)
987 )
988
989 builder = 'Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Debug-Android'
990 yield (
991 api.test('failed_pull') +
992 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -0400993 revision='abc123',
994 path_config='kitchen',
995 swarm_out_dir='[SWARM_OUT_DIR]') +
996 api.path.exists(
997 api.path['start_dir'].join('skia'),
998 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
999 'skimage', 'VERSION'),
1000 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1001 'skp', 'VERSION'),
1002 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1003 'svg', 'VERSION'),
1004 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
1005 ) +
1006 api.step_data('dm', retcode=1) +
1007 api.step_data('pull /sdcard/revenge_of_the_skiabot/dm_out '+
1008 '[CUSTOM_[SWARM_OUT_DIR]]/dm', retcode=1)
borenetbfa5b452016-10-19 10:13:32 -07001009 )