blob: 69ec34afe590a63124f8b8f61bcbdc4296d7c0ea [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])
Ben Wagner38db79f2017-08-23 15:05:50 -0400371 if 'Mac' in bot and 'CPU' in bot and 'Release' in bot:
372 # skia:6992
373 blacklist(['serialize-8888', 'gm', '_', 'encode-platform'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400374
375 # skia:4769
376 for test in ['drawfilter']:
377 blacklist([ 'sp-8888', 'gm', '_', test])
378 blacklist([ 'pic-8888', 'gm', '_', test])
379 blacklist(['2ndpic-8888', 'gm', '_', test])
380 blacklist([ 'lite-8888', 'gm', '_', test])
381 # skia:4703
382 for test in ['image-cacherator-from-picture',
383 'image-cacherator-from-raster',
384 'image-cacherator-from-ctable']:
385 blacklist([ 'sp-8888', 'gm', '_', test])
386 blacklist([ 'pic-8888', 'gm', '_', test])
387 blacklist([ '2ndpic-8888', 'gm', '_', test])
388 blacklist(['serialize-8888', 'gm', '_', test])
389
390 # GM that requires raster-backed canvas
391 for test in ['gamut', 'complexclip4_bw', 'complexclip4_aa']:
392 blacklist([ 'sp-8888', 'gm', '_', test])
393 blacklist([ 'pic-8888', 'gm', '_', test])
394 blacklist([ 'lite-8888', 'gm', '_', test])
395 blacklist([ '2ndpic-8888', 'gm', '_', test])
396 blacklist(['serialize-8888', 'gm', '_', test])
397
398 # GM that not support tiles_rt
399 for test in ['complexclip4_bw', 'complexclip4_aa']:
400 blacklist([ 'tiles_rt-8888', 'gm', '_', test])
401
402 # Extensions for RAW images
403 r = ["arw", "cr2", "dng", "nef", "nrw", "orf", "raf", "rw2", "pef", "srw",
404 "ARW", "CR2", "DNG", "NEF", "NRW", "ORF", "RAF", "RW2", "PEF", "SRW"]
405
406 # skbug.com/4888
407 # Blacklist RAW images (and a few large PNGs) on GPU bots
408 # until we can resolve failures.
Matt Sarett929bfeb2017-05-22 10:34:41 -0400409 if 'GPU' in bot:
410 blacklist('_ image _ interlaced1.png')
411 blacklist('_ image _ interlaced2.png')
412 blacklist('_ image _ interlaced3.png')
413 for raw_ext in r:
414 blacklist('_ image _ .%s' % raw_ext)
415
416 # Blacklist memory intensive tests on 32-bit bots.
417 if ('Win2k8' in bot or 'Win8' in bot) and 'x86-' in bot:
418 blacklist('_ image f16 _')
Matt Sarett112565e2017-05-22 13:45:15 -0400419 blacklist('_ image _ abnormal.wbmp')
Eric Boren4c7754c2017-04-10 08:19:10 -0400420 blacklist('_ image _ interlaced1.png')
421 blacklist('_ image _ interlaced2.png')
422 blacklist('_ image _ interlaced3.png')
423 for raw_ext in r:
424 blacklist('_ image _ .%s' % raw_ext)
425
Eric Boren4c7754c2017-04-10 08:19:10 -0400426 if 'IntelHD405' in bot and 'Ubuntu16' in bot:
427 # skia:6331
428 blacklist(['glmsaa8', 'image', 'gen_codec_gpu', 'abnormal.wbmp'])
429 blacklist(['glesmsaa4', 'image', 'gen_codec_gpu', 'abnormal.wbmp'])
430
431 if 'Nexus5' in bot:
432 # skia:5876
433 blacklist(['_', 'gm', '_', 'encode-platform'])
434
435 if 'AndroidOne-GPU' in bot: # skia:4697, skia:4704, skia:4694, skia:4705
436 blacklist(['_', 'gm', '_', 'bigblurs'])
437 blacklist(['_', 'gm', '_', 'bleed'])
438 blacklist(['_', 'gm', '_', 'bleed_alpha_bmp'])
439 blacklist(['_', 'gm', '_', 'bleed_alpha_bmp_shader'])
440 blacklist(['_', 'gm', '_', 'bleed_alpha_image'])
441 blacklist(['_', 'gm', '_', 'bleed_alpha_image_shader'])
442 blacklist(['_', 'gm', '_', 'bleed_image'])
443 blacklist(['_', 'gm', '_', 'dropshadowimagefilter'])
444 blacklist(['_', 'gm', '_', 'filterfastbounds'])
445 blacklist([gl_prefix, 'gm', '_', 'imageblurtiled'])
446 blacklist(['_', 'gm', '_', 'imagefiltersclipped'])
447 blacklist(['_', 'gm', '_', 'imagefiltersscaled'])
448 blacklist(['_', 'gm', '_', 'imageresizetiled'])
449 blacklist(['_', 'gm', '_', 'matrixconvolution'])
450 blacklist(['_', 'gm', '_', 'strokedlines'])
451 if sample_count is not '':
452 gl_msaa_config = gl_prefix + 'msaa' + sample_count
453 blacklist([gl_msaa_config, 'gm', '_', 'imageblurtiled'])
454 blacklist([gl_msaa_config, 'gm', '_', 'imagefiltersbase'])
455
456 match = []
457 if 'Valgrind' in bot: # skia:3021
458 match.append('~Threaded')
459
Ben Wagner6c126422017-06-19 12:45:54 -0400460 if 'Valgrind' in bot and 'PreAbandonGpuContext' in bot:
461 # skia:6575
462 match.append('~multipicturedraw_')
463
Ben Wagnerbb3e7ff2017-04-28 15:28:32 -0400464 if 'CommandBuffer' in bot:
465 # https://crbug.com/697030
466 match.append('~HalfFloatAlphaTextureTest')
467
Eric Boren4c7754c2017-04-10 08:19:10 -0400468 if 'AndroidOne' in bot: # skia:4711
469 match.append('~WritePixels')
470
471 if 'NexusPlayer' in bot:
472 match.append('~ResourceCache')
473
474 if 'Nexus10' in bot:
475 match.append('~CopySurface') # skia:5509
476 match.append('~SRGBReadWritePixels') # skia:6097
477
Eric Boren4c7754c2017-04-10 08:19:10 -0400478 if 'GalaxyS6' in bot:
479 match.append('~SpecialImage') # skia:6338
Brian Osmaneee3c092017-06-15 13:25:10 -0400480 match.append('~skbug6653') # skia:6653
Eric Boren4c7754c2017-04-10 08:19:10 -0400481
482 if 'GalaxyS7_G930A' in bot:
483 match.append('~WritePixels') # skia:6427
484
Eric Boren4c7754c2017-04-10 08:19:10 -0400485 if 'MSAN' in bot:
486 match.extend(['~Once', '~Shared']) # Not sure what's up with these tests.
487
488 if 'TSAN' in bot:
489 match.extend(['~ReadWriteAlpha']) # Flaky on TSAN-covered on nvidia bots.
490 match.extend(['~RGBA4444TextureTest', # Flakier than they are important.
491 '~RGB565TextureTest'])
492
Greg Daniela86385d2017-06-05 11:34:29 -0400493 if 'Vulkan' in bot and 'Adreno530' in bot:
494 # skia:5777
495 match.extend(['~CopySurface'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400496
497 if 'Vulkan' in bot and 'NexusPlayer' in bot:
Greg Daniel98fae702017-06-05 09:22:46 -0400498 match.extend(['~gradients_no_texture$', # skia:6132
Eric Boren4c7754c2017-04-10 08:19:10 -0400499 '~tilemodes', # skia:6132
500 '~shadertext$', # skia:6132
501 '~bitmapfilters', # skia:6132
502 '~GrContextFactory_abandon']) #skia:6209
503
Ben Wagnerbe8ad452017-08-11 15:18:03 -0400504 if ('Vulkan' in bot and api.vars.is_linux and
505 ('IntelIris540' in bot or 'IntelIris640' in bot)):
Eric Boren4c7754c2017-04-10 08:19:10 -0400506 match.extend(['~VkHeapTests']) # skia:6245
507
Ben Wagnerf1debdf2017-06-13 13:37:05 -0400508 if 'Vulkan' in bot and 'IntelIris540' in bot and 'Win' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400509 # skia:6398
510 blacklist(['vk', 'gm', '_', 'aarectmodes'])
511 blacklist(['vk', 'gm', '_', 'aaxfermodes'])
512 blacklist(['vk', 'gm', '_', 'arithmode'])
513 blacklist(['vk', 'gm', '_', 'composeshader_bitmap'])
514 blacklist(['vk', 'gm', '_', 'composeshader_bitmap2'])
515 blacklist(['vk', 'gm', '_', 'dftextCOLR'])
516 blacklist(['vk', 'gm', '_', 'drawregionmodes'])
517 blacklist(['vk', 'gm', '_', 'filterfastbounds'])
518 blacklist(['vk', 'gm', '_', 'fontcache'])
519 blacklist(['vk', 'gm', '_', 'fontmgr_iterWin10'])
520 blacklist(['vk', 'gm', '_', 'fontmgr_iter_factoryWin10'])
521 blacklist(['vk', 'gm', '_', 'fontmgr_matchWin10'])
522 blacklist(['vk', 'gm', '_', 'fontscalerWin'])
523 blacklist(['vk', 'gm', '_', 'fontscalerdistortable'])
524 blacklist(['vk', 'gm', '_', 'gammagradienttext'])
525 blacklist(['vk', 'gm', '_', 'gammatextWin'])
526 blacklist(['vk', 'gm', '_', 'gradtext'])
527 blacklist(['vk', 'gm', '_', 'hairmodes'])
528 blacklist(['vk', 'gm', '_', 'imagefilters_xfermodes'])
529 blacklist(['vk', 'gm', '_', 'imagefiltersclipped'])
530 blacklist(['vk', 'gm', '_', 'imagefiltersgraph'])
531 blacklist(['vk', 'gm', '_', 'imagefiltersscaled'])
532 blacklist(['vk', 'gm', '_', 'imagefiltersstroked'])
533 blacklist(['vk', 'gm', '_', 'imagefilterstransformed'])
534 blacklist(['vk', 'gm', '_', 'imageresizetiled'])
535 blacklist(['vk', 'gm', '_', 'lcdblendmodes'])
536 blacklist(['vk', 'gm', '_', 'lcdoverlap'])
537 blacklist(['vk', 'gm', '_', 'lcdtextWin'])
538 blacklist(['vk', 'gm', '_', 'lcdtextsize'])
539 blacklist(['vk', 'gm', '_', 'matriximagefilter'])
540 blacklist(['vk', 'gm', '_', 'mixedtextblobsCOLR'])
Greg Daniel744d3c52017-06-09 13:50:20 -0400541 blacklist(['vk', 'gm', '_', 'mixershader'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400542 blacklist(['vk', 'gm', '_', 'pictureimagefilter'])
543 blacklist(['vk', 'gm', '_', 'resizeimagefilter'])
544 blacklist(['vk', 'gm', '_', 'rotate_imagefilter'])
545 blacklist(['vk', 'gm', '_', 'savelayer_lcdtext'])
546 blacklist(['vk', 'gm', '_', 'srcmode'])
547 blacklist(['vk', 'gm', '_', 'surfaceprops'])
548 blacklist(['vk', 'gm', '_', 'textblobgeometrychange'])
549 blacklist(['vk', 'gm', '_', 'textbloblooper'])
550 blacklist(['vk', 'gm', '_', 'textblobmixedsizes'])
551 blacklist(['vk', 'gm', '_', 'textblobmixedsizes_df'])
552 blacklist(['vk', 'gm', '_', 'textblobrandomfont'])
553 blacklist(['vk', 'gm', '_', 'textfilter_color'])
554 blacklist(['vk', 'gm', '_', 'textfilter_image'])
555 blacklist(['vk', 'gm', '_', 'typefacerenderingWin'])
556 blacklist(['vk', 'gm', '_', 'varied_text_clipped_lcd'])
557 blacklist(['vk', 'gm', '_', 'varied_text_ignorable_clip_lcd'])
558 blacklist(['vk', 'gm', '_', 'xfermodeimagefilter'])
559 match.append('~ApplyGamma')
560 match.append('~ComposedImageFilterBounds_Gpu')
Matt Sarett77443972017-04-11 11:25:37 -0400561 match.append('~DeferredTextureImage')
Chris Dalton114a3c02017-05-26 15:17:19 -0600562 match.append('~GrMeshTest')
Eric Boren4c7754c2017-04-10 08:19:10 -0400563 match.append('~ImageFilterFailAffectsTransparentBlack_Gpu')
564 match.append('~ImageFilterZeroBlurSigma_Gpu')
565 match.append('~ImageNewShader_GPU')
566 match.append('~NewTextureFromPixmap')
567 match.append('~ReadPixels_Gpu')
568 match.append('~ReadPixels_Texture')
569 match.append('~ReadWriteAlpha')
Brian Osmane18ceb12017-06-15 16:04:45 -0400570 match.append('~skbug6653')
Eric Boren4c7754c2017-04-10 08:19:10 -0400571 match.append('~SRGBReadWritePixels')
572 match.append('~SpecialImage_DeferredGpu')
573 match.append('~SpecialImage_Gpu')
574 match.append('~WritePixels_Gpu')
Brian Osman33ea1362017-04-19 10:51:39 -0400575 match.append('~WritePixelsNonTexture_Gpu')
Eric Boren4c7754c2017-04-10 08:19:10 -0400576 match.append('~XfermodeImageFilterCroppedInput_Gpu')
577
578 if 'IntelIris540' in bot and 'ANGLE' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400579 for config in ['angle_d3d9_es2', 'angle_d3d11_es2', 'angle_gl_es2']:
Brian Salomon6e554e32017-06-23 12:08:10 -0400580 # skia:6103
Eric Boren4c7754c2017-04-10 08:19:10 -0400581 blacklist([config, 'gm', '_', 'multipicturedraw_invpathclip_simple'])
582 blacklist([config, 'gm', '_', 'multipicturedraw_noclip_simple'])
583 blacklist([config, 'gm', '_', 'multipicturedraw_pathclip_simple'])
584 blacklist([config, 'gm', '_', 'multipicturedraw_rectclip_simple'])
585 blacklist([config, 'gm', '_', 'multipicturedraw_rrectclip_simple'])
Brian Salomon6e554e32017-06-23 12:08:10 -0400586 # skia:6141
587 blacklist([config, 'gm', '_', 'discard'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400588
Eric Boren89cd3572017-06-28 13:50:22 -0400589 if 'IntelBayTrail' in bot and api.vars.is_linux:
Eric Boren4c7754c2017-04-10 08:19:10 -0400590 match.append('~ImageStorageLoad') # skia:6358
591
Kevin Lubickae95db42017-04-10 13:05:49 -0400592 if 'Ci20' in bot:
593 match.append('~Codec_Dimensions') # skia:6477
594 match.append('~FontMgrAndroidParser') # skia:6478
595 match.append('~PathOpsSimplify') # skia:6479
596 blacklist(['_', 'gm', '_', 'fast_slow_blurimagefilter']) # skia:6480
597
Kevin Lubickc14e5a72017-08-15 13:22:19 -0400598 if 'PowerVRGX6250' in bot:
599 match.append('~gradients_view_perspective_nodither') #skia:6972
600
Eric Boren4c7754c2017-04-10 08:19:10 -0400601 if blacklisted:
602 args.append('--blacklist')
603 args.extend(blacklisted)
604
605 if match:
606 args.append('--match')
607 args.extend(match)
608
609 # These bots run out of memory running RAW codec tests. Do not run them in
610 # parallel
611 if ('NexusPlayer' in bot or 'Nexus5' in bot or 'Nexus9' in bot
612 or 'Win8-MSVC-ShuttleB' in bot):
613 args.append('--noRAW_threading')
614
Stephan Altmuellere86af692017-07-21 10:12:45 -0400615 # Some people don't like verbose output.
616 verbose = False
617
618 if 'Intel' in bot and api.vars.is_linux and not 'Vulkan' in bot:
619 # TODO(dogben): Track down what's causing bots to die.
620 verbose = True
621
Ben Wagner40c0f242017-04-28 15:55:35 -0400622 if 'Valgrind' in bot and 'PreAbandonGpuContext' in bot:
Ben Wagner47ac0242017-06-27 13:44:36 -0400623 verbose = True
Ben Wagner40c0f242017-04-28 15:55:35 -0400624
Mike Kleinc9089062017-06-26 09:09:32 -0400625 if 'NexusPlayer' in bot and 'CPU' in bot:
626 # The Nexus Player's image decoding tests are slow enough that swarming
627 # times it out for not printing anything frequently enough. --verbose
628 # makes dm print something every time we start or complete a task.
Ben Wagner47ac0242017-06-27 13:44:36 -0400629 verbose = True
630
Stephan Altmuellere86af692017-07-21 10:12:45 -0400631 if 'Android' in bot or 'iOS' in bot:
632 # Enable verbose output on mobile platforms.
633 verbose = True
634
Ben Wagner47ac0242017-06-27 13:44:36 -0400635 if verbose:
Mike Kleinc9089062017-06-26 09:09:32 -0400636 args.append('--verbose')
637
Eric Boren4c7754c2017-04-10 08:19:10 -0400638 return args
639
640
641def key_params(api):
642 """Build a unique key from the builder name (as a list).
643
644 E.g. arch x86 gpu GeForce320M mode MacMini4.1 os Mac10.6
645 """
646 # Don't bother to include role, which is always Test.
647 # TryBots are uploaded elsewhere so they can use the same key.
648 blacklist = ['role', 'is_trybot']
649
650 flat = []
651 for k in sorted(api.vars.builder_cfg.keys()):
652 if k not in blacklist:
653 flat.append(k)
654 flat.append(api.vars.builder_cfg[k])
655 return flat
656
657
658def test_steps(api):
659 """Run the DM test."""
660 use_hash_file = False
661 if api.vars.upload_dm_results:
662 # This must run before we write anything into
663 # api.flavor.device_dirs.dm_dir or we may end up deleting our
664 # output on machines where they're the same.
665 api.flavor.create_clean_host_dir(api.vars.dm_dir)
666 host_dm_dir = str(api.vars.dm_dir)
667 device_dm_dir = str(api.flavor.device_dirs.dm_dir)
668 if host_dm_dir != device_dm_dir:
669 api.flavor.create_clean_device_dir(device_dm_dir)
670
671 # Obtain the list of already-generated hashes.
672 hash_filename = 'uninteresting_hashes.txt'
673
674 # Ensure that the tmp_dir exists.
Robert Iannucci8cd50412017-07-07 14:36:58 -0700675 api.run.run_once(api.file.ensure_directory,
676 'makedirs tmp_dir',
677 api.vars.tmp_dir)
Eric Boren4c7754c2017-04-10 08:19:10 -0400678
679 host_hashes_file = api.vars.tmp_dir.join(hash_filename)
680 hashes_file = api.flavor.device_path_join(
681 api.flavor.device_dirs.tmp_dir, hash_filename)
682 api.run(
683 api.python.inline,
684 'get uninteresting hashes',
685 program="""
686 import contextlib
687 import math
688 import socket
689 import sys
690 import time
691 import urllib2
692
Stephan Altmuellerc19ebc52017-05-30 16:39:17 -0400693 HASHES_URL = 'https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt'
Eric Boren4c7754c2017-04-10 08:19:10 -0400694 RETRIES = 5
695 TIMEOUT = 60
696 WAIT_BASE = 15
697
698 socket.setdefaulttimeout(TIMEOUT)
699 for retry in range(RETRIES):
700 try:
701 with contextlib.closing(
702 urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:
703 hashes = w.read()
704 with open(sys.argv[1], 'w') as f:
705 f.write(hashes)
706 break
707 except Exception as e:
708 print 'Failed to get uninteresting hashes from %s:' % HASHES_URL
709 print e
710 if retry == RETRIES:
711 raise
712 waittime = WAIT_BASE * math.pow(2, retry)
713 print 'Retry in %d seconds.' % waittime
714 time.sleep(waittime)
715 """,
716 args=[host_hashes_file],
717 abort_on_failure=False,
718 fail_build_on_failure=False,
719 infra_step=True)
720
721 if api.path.exists(host_hashes_file):
722 api.flavor.copy_file_to_device(host_hashes_file, hashes_file)
723 use_hash_file = True
724
725 # Run DM.
726 properties = [
727 'gitHash', api.vars.got_revision,
Eric Boren4c7754c2017-04-10 08:19:10 -0400728 'builder', api.vars.builder_name,
Eric Boren4c7754c2017-04-10 08:19:10 -0400729 ]
730 if api.vars.is_trybot:
731 properties.extend([
732 'issue', api.vars.issue,
733 'patchset', api.vars.patchset,
734 'patch_storage', api.vars.patch_storage,
735 ])
Eric Borenf9aa9e52017-04-10 09:56:10 -0400736 properties.extend(['swarming_bot_id', api.vars.swarming_bot_id])
737 properties.extend(['swarming_task_id', api.vars.swarming_task_id])
Eric Boren4c7754c2017-04-10 08:19:10 -0400738
739 args = [
740 'dm',
Eric Boren4c7754c2017-04-10 08:19:10 -0400741 '--resourcePath', api.flavor.device_dirs.resource_dir,
742 '--skps', api.flavor.device_dirs.skp_dir,
743 '--images', api.flavor.device_path_join(
744 api.flavor.device_dirs.images_dir, 'dm'),
745 '--colorImages', api.flavor.device_path_join(
746 api.flavor.device_dirs.images_dir, 'colorspace'),
747 '--nameByHash',
748 '--properties'
749 ] + properties
750
751 args.extend(['--svgs', api.flavor.device_dirs.svg_dir])
752
753 args.append('--key')
754 args.extend(key_params(api))
755 if use_hash_file:
756 args.extend(['--uninterestingHashesFile', hashes_file])
757 if api.vars.upload_dm_results:
758 args.extend(['--writePath', api.flavor.device_dirs.dm_dir])
759
Eric Boren89cd3572017-06-28 13:50:22 -0400760 args.extend(dm_flags(api, api.vars.builder_name))
Eric Boren4c7754c2017-04-10 08:19:10 -0400761
Eric Boren896af752017-04-24 13:22:56 -0400762 env = {}
Eric Boren4c7754c2017-04-10 08:19:10 -0400763 if 'Ubuntu16' in api.vars.builder_name:
764 # The vulkan in this asset name simply means that the graphics driver
765 # supports Vulkan. It is also the driver used for GL code.
766 dri_path = api.vars.slave_dir.join('linux_vulkan_intel_driver_release')
767 if 'Debug' in api.vars.builder_name:
768 dri_path = api.vars.slave_dir.join('linux_vulkan_intel_driver_debug')
769
770 if 'Vulkan' in api.vars.builder_name:
771 sdk_path = api.vars.slave_dir.join('linux_vulkan_sdk', 'bin')
772 lib_path = api.vars.slave_dir.join('linux_vulkan_sdk', 'lib')
773 env.update({
774 'PATH':'%%(PATH)s:%s' % sdk_path,
775 'LD_LIBRARY_PATH': '%s:%s' % (lib_path, dri_path),
776 'LIBGL_DRIVERS_PATH': dri_path,
777 'VK_ICD_FILENAMES':'%s' % dri_path.join('intel_icd.x86_64.json'),
778 })
779 else:
780 # Even the non-vulkan NUC jobs could benefit from the newer drivers.
781 env.update({
782 'LD_LIBRARY_PATH': dri_path,
783 'LIBGL_DRIVERS_PATH': dri_path,
784 })
785
786 # See skia:2789.
Ben Wagner988d15e2017-04-27 13:08:50 -0400787 extra_config_parts = api.vars.builder_cfg.get('extra_config', '').split('_')
788 if 'AbandonGpuContext' in extra_config_parts:
Eric Boren4c7754c2017-04-10 08:19:10 -0400789 args.append('--abandonGpuContext')
Ben Wagner988d15e2017-04-27 13:08:50 -0400790 if 'PreAbandonGpuContext' in extra_config_parts:
Eric Boren4c7754c2017-04-10 08:19:10 -0400791 args.append('--preAbandonGpuContext')
Ben Wagner988d15e2017-04-27 13:08:50 -0400792 if 'ReleaseAndAbandonGpuContext' in extra_config_parts:
Eric Boren6ec17e32017-04-26 14:25:29 -0400793 args.append('--releaseAndAbandonGpuContext')
Eric Boren4c7754c2017-04-10 08:19:10 -0400794
Eric Boren896af752017-04-24 13:22:56 -0400795 with api.env(env):
Eric Boren4c7754c2017-04-10 08:19:10 -0400796 api.run(api.flavor.step, 'dm', cmd=args, abort_on_failure=False)
797
798 if api.vars.upload_dm_results:
799 # Copy images and JSON to host machine if needed.
800 api.flavor.copy_directory_contents_to_host(
801 api.flavor.device_dirs.dm_dir, api.vars.dm_dir)
802
803
borenet1ed2ae42016-07-26 11:52:17 -0700804def RunSteps(api):
Eric Boren4c7754c2017-04-10 08:19:10 -0400805 api.core.setup()
Robert Iannucci297a7ef2017-05-12 19:09:38 -0700806 env = {}
Eric Boren4c7754c2017-04-10 08:19:10 -0400807 if 'iOS' in api.vars.builder_name:
808 env['IOS_BUNDLE_ID'] = 'com.google.dm'
Stephan Altmueller63e843d2017-04-25 11:38:38 -0400809 env['IOS_MOUNT_POINT'] = api.vars.slave_dir.join('mnt_iosdevice')
Robert Iannucci297a7ef2017-05-12 19:09:38 -0700810 with api.context(env=env):
Eric Boren4c7754c2017-04-10 08:19:10 -0400811 try:
812 api.flavor.install_everything()
813 test_steps(api)
814 finally:
815 api.flavor.cleanup_steps()
816 api.run.check_failure()
817
818
Eric Borenf9aa9e52017-04-10 09:56:10 -0400819TEST_BUILDERS = [
Kevin Lubickfe079d42017-04-12 08:31:48 -0400820 'Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-Android',
Kevin Lubickae95db42017-04-10 13:05:49 -0400821 'Test-Android-Clang-Ci20-CPU-IngenicJZ4780-mipsel-Release-Android',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400822 'Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-Android',
823 'Test-Android-Clang-GalaxyS7_G930A-GPU-Adreno530-arm64-Debug-Android',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400824 'Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-Android',
Chris Dalton80ace822017-07-20 10:54:04 -0600825 "Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-Android_CCPR",
Kevin Lubickfe079d42017-04-12 08:31:48 -0400826 'Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Release-Android',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400827 'Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-Android',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400828 'Test-Android-Clang-Nexus6p-GPU-Adreno430-arm64-Debug-Android_Vulkan',
Greg Daniela86385d2017-06-05 11:34:29 -0400829 'Test-Android-Clang-PixelXL-GPU-Adreno530-arm64-Debug-Android_Vulkan',
Chris Dalton80ace822017-07-20 10:54:04 -0600830 'Test-Android-Clang-PixelXL-GPU-Adreno530-arm64-Debug-Android_CCPR',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400831 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-Android',
832 'Test-Android-Clang-NexusPlayer-CPU-SSE4-x86-Release-Android',
833 'Test-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-Android_Vulkan',
834 'Test-Android-Clang-PixelC-CPU-TegraX1-arm64-Debug-Android',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400835 'Test-ChromeOS-Clang-Chromebook_C100p-GPU-MaliT764-arm-Debug',
Kevin Lubickc14e5a72017-08-15 13:22:19 -0400836 'Test-ChromeOS-Clang-Chromebook_CB5_312T-GPU-PowerVRGX6250-arm-Debug',
Ben Wagner38db79f2017-08-23 15:05:50 -0400837 'Test-Mac-Clang-MacMini7.1-CPU-AVX-x86_64-Release',
Ben Wagnercc4221b2017-08-17 17:29:04 -0400838 'Test-Mac-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Debug-CommandBuffer',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400839 'Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN',
840 'Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-MSAN',
841 'Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-TSAN',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400842 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug',
843 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400844 'Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind',
845 ('Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind' +
846 '_AbandonGpuContext'),
847 ('Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind' +
848 '_PreAbandonGpuContext'),
Eric Borenf9aa9e52017-04-10 09:56:10 -0400849 ('Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-SK_USE_DISCARDABLE_' +
850 'SCALEDIMAGECACHE'),
Kevin Lubickfe079d42017-04-12 08:31:48 -0400851 'Test-Ubuntu16-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug',
852 'Test-Ubuntu16-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-Vulkan',
853 'Test-Ubuntu16-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release',
854 'Test-Ubuntu16-Clang-NUCDE3815TYKHE-GPU-IntelBayTrail-x86_64-Debug',
Ben Wagnerab909b52017-08-09 14:41:31 -0400855 ('Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-Valgrind' +
856 '_PreAbandonGpuContext_SK_CPU_LIMIT_SSE41'),
Leon Scroggins IIIbb8126d2017-05-02 11:14:31 -0400857 'Test-Win8-MSVC-Golo-CPU-AVX-x86-Debug',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400858 'Test-Win10-MSVC-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-Vulkan',
Eric Boren6ec17e32017-04-26 14:25:29 -0400859 ('Test-Win10-MSVC-NUC5i7RYH-GPU-IntelIris6100-x86_64-Release-'
860 'ReleaseAndAbandonGpuContext'),
Kevin Lubickfe079d42017-04-12 08:31:48 -0400861 'Test-Win10-MSVC-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-ANGLE',
862 'Test-Win10-MSVC-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-Vulkan',
863 'Test-Win10-MSVC-ShuttleA-GPU-GTX660-x86_64-Debug-Vulkan',
864 'Test-Win10-MSVC-ShuttleC-GPU-GTX960-x86_64-Debug-ANGLE',
865 'Test-Win10-MSVC-ZBOX-GPU-GTX1070-x86_64-Debug-Vulkan',
866 'Test-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release',
Mike Klein97627d42017-05-11 13:12:48 -0400867 ('Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-'
868 'SK_FORCE_RASTER_PIPELINE_BLITTER'),
Eric Borenf9aa9e52017-04-10 09:56:10 -0400869]
borenet1ed2ae42016-07-26 11:52:17 -0700870
871
872def GenTests(api):
Eric Borenf9aa9e52017-04-10 09:56:10 -0400873 for builder in TEST_BUILDERS:
874 test = (
875 api.test(builder) +
876 api.properties(buildername=builder,
877 revision='abc123',
878 path_config='kitchen',
879 swarm_out_dir='[SWARM_OUT_DIR]') +
880 api.path.exists(
881 api.path['start_dir'].join('skia'),
882 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
883 'skimage', 'VERSION'),
884 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
885 'skp', 'VERSION'),
886 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
887 'svg', 'VERSION'),
888 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
Ben Wagnerf835c222017-04-30 11:14:51 -0400889 ) +
890 api.step_data('get swarming bot id',
891 stdout=api.raw_io.output('skia-bot-123')) +
892 api.step_data('get swarming task id',
893 stdout=api.raw_io.output('123456'))
Eric Borenf9aa9e52017-04-10 09:56:10 -0400894 )
Eric Borenf9aa9e52017-04-10 09:56:10 -0400895 if 'Win' in builder:
896 test += api.platform('win', 64)
Eric Boren4c7754c2017-04-10 08:19:10 -0400897
Eric Borenf9aa9e52017-04-10 09:56:10 -0400898 if 'ChromeOS' in builder:
899 test += api.step_data(
900 'read chromeos ip',
901 stdout=api.raw_io.output('{"user_ip":"foo@127.0.0.1"}'))
Eric Boren4c7754c2017-04-10 08:19:10 -0400902
903
Eric Borenf9aa9e52017-04-10 09:56:10 -0400904 yield test
Eric Boren4c7754c2017-04-10 08:19:10 -0400905
Kevin Lubickfe079d42017-04-12 08:31:48 -0400906 builder = 'Test-Win2k8-MSVC-GCE-CPU-AVX2-x86_64-Release'
907 yield (
908 api.test('trybot') +
909 api.properties(buildername=builder,
910 revision='abc123',
911 path_config='kitchen',
912 swarm_out_dir='[SWARM_OUT_DIR]') +
913 api.properties(patch_storage='gerrit') +
914 api.properties.tryserver(
915 buildername=builder,
916 gerrit_project='skia',
917 gerrit_url='https://skia-review.googlesource.com/',
918 )+
919 api.path.exists(
920 api.path['start_dir'].join('skia'),
921 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
922 'skimage', 'VERSION'),
923 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
924 'skp', 'VERSION'),
925 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
926 'svg', 'VERSION'),
927 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
928 )
929 )
930
Eric Boren4c7754c2017-04-10 08:19:10 -0400931 builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug'
borenet1ed2ae42016-07-26 11:52:17 -0700932 yield (
Eric Boren4c7754c2017-04-10 08:19:10 -0400933 api.test('failed_dm') +
934 api.properties(buildername=builder,
borenet1ed2ae42016-07-26 11:52:17 -0700935 revision='abc123',
936 path_config='kitchen',
937 swarm_out_dir='[SWARM_OUT_DIR]') +
938 api.path.exists(
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500939 api.path['start_dir'].join('skia'),
940 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400941 'skimage', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500942 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400943 'skp', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500944 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400945 'svg', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500946 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
Eric Boren4c7754c2017-04-10 08:19:10 -0400947 ) +
948 api.step_data('symbolized dm', retcode=1)
949 )
950
Kevin Lubickfe079d42017-04-12 08:31:48 -0400951 builder = 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-Android'
Eric Boren4c7754c2017-04-10 08:19:10 -0400952 yield (
953 api.test('failed_get_hashes') +
954 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -0400955 revision='abc123',
956 path_config='kitchen',
957 swarm_out_dir='[SWARM_OUT_DIR]') +
958 api.path.exists(
959 api.path['start_dir'].join('skia'),
960 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
961 'skimage', 'VERSION'),
962 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
963 'skp', 'VERSION'),
964 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
965 'svg', 'VERSION'),
966 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
967 ) +
968 api.step_data('get uninteresting hashes', retcode=1)
969 )
970
Kevin Lubickfe079d42017-04-12 08:31:48 -0400971 builder = 'Test-Android-Clang-NexusPlayer-CPU-SSE4-x86-Debug-Android'
Eric Boren4c7754c2017-04-10 08:19:10 -0400972 yield (
973 api.test('failed_push') +
974 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -0400975 revision='abc123',
976 path_config='kitchen',
977 swarm_out_dir='[SWARM_OUT_DIR]') +
978 api.path.exists(
979 api.path['start_dir'].join('skia'),
980 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
981 'skimage', 'VERSION'),
982 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
983 'skp', 'VERSION'),
984 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
985 'svg', 'VERSION'),
986 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
987 ) +
988 api.step_data('push [START_DIR]/skia/resources/* '+
989 '/sdcard/revenge_of_the_skiabot/resources', retcode=1)
990 )
991
992 builder = 'Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Debug-Android'
993 yield (
994 api.test('failed_pull') +
995 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -0400996 revision='abc123',
997 path_config='kitchen',
998 swarm_out_dir='[SWARM_OUT_DIR]') +
999 api.path.exists(
1000 api.path['start_dir'].join('skia'),
1001 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1002 'skimage', 'VERSION'),
1003 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1004 'skp', 'VERSION'),
1005 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1006 'svg', 'VERSION'),
1007 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
1008 ) +
1009 api.step_data('dm', retcode=1) +
1010 api.step_data('pull /sdcard/revenge_of_the_skiabot/dm_out '+
1011 '[CUSTOM_[SWARM_OUT_DIR]]/dm', retcode=1)
borenetbfa5b452016-10-19 10:13:32 -07001012 )