blob: a0020bf32c1d68718387786b803c96aeee49e908 [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 = []
Brian Osmanf9810662017-08-30 10:02:10 -040029 configs = []
30 blacklisted = []
31
32 def blacklist(quad):
33 config, src, options, name = quad.split(' ') if type(quad) is str else quad
34 if (config == '_' or
35 config in configs or
36 (config[0] == '~' and config[1:] in configs)):
37 blacklisted.extend([config, src, options, name])
Eric Boren4c7754c2017-04-10 08:19:10 -040038
Mike Klein97d6a7a2017-07-24 10:37:19 -040039 # We've been spending lots of time writing out and especially uploading
40 # .pdfs, but not doing anything further with them. skia:6821
41 args.extend(['--dont_write', 'pdf'])
42
Eric Boren4c7754c2017-04-10 08:19:10 -040043 # This enables non-deterministic random seeding of the GPU FP optimization
Brian Osman7a34dca2017-04-13 13:40:29 -040044 # test.
Ben Wagner6da8f792017-08-10 12:22:56 -040045 # Not Android due to:
Ben Wagner11ab43c2017-08-09 18:05:59 -040046 # - https://skia.googlesource.com/skia/+/
47 # 5910ed347a638ded8cd4c06dbfda086695df1112/BUILD.gn#160
48 # - https://skia.googlesource.com/skia/+/
49 # ce06e261e68848ae21cac1052abc16bc07b961bf/tests/ProcessorTest.cpp#307
Ben Wagner6da8f792017-08-10 12:22:56 -040050 # Not MSAN due to:
51 # - https://skia.googlesource.com/skia/+/
52 # 0ac06e47269a40c177747310a613d213c95d1d6d/infra/bots/recipe_modules/
53 # flavor/gn_flavor.py#80
54 if 'Android' not in bot and 'MSAN' not in bot:
Ben Wagner11ab43c2017-08-09 18:05:59 -040055 args.append('--randomProcessorTest')
Eric Boren4c7754c2017-04-10 08:19:10 -040056
57 # 32-bit desktop bots tend to run out of memory, because they have relatively
58 # far more cores than RAM (e.g. 32 cores, 3G RAM). Hold them back a bit.
59 if '-x86-' in bot and not 'NexusPlayer' in bot:
Mike Kleindf669812017-06-23 13:30:17 -040060 args.extend(['--threads', '4'])
Eric Boren4c7754c2017-04-10 08:19:10 -040061
Kevin Lubick2dafbd72017-08-31 10:39:05 -040062 if 'Chromecast' in bot:
63 args.extend(['--threads', '0'])
64
Eric Boren4c7754c2017-04-10 08:19:10 -040065 # Avoid issues with dynamically exceeding resource cache limits.
66 if 'Test' in bot and 'DISCARDABLE' in bot:
Mike Kleindf669812017-06-23 13:30:17 -040067 args.extend(['--threads', '0'])
68
69 # See if staying on the main thread helps skia:6748.
70 if 'Test-iOS' in bot:
71 args.extend(['--threads', '0'])
Eric Boren4c7754c2017-04-10 08:19:10 -040072
Derek Sollenbergeredfe3df2017-07-19 15:25:24 -040073 # Android's kernel will occasionally attempt to kill our process, using
74 # SIGINT, in an effort to free up resources. If requested, that signal
75 # is ignored and dm will keep attempting to proceed until we actually
76 # exhaust the available resources.
77 if ('NexusPlayer' in bot or
78 'Nexus10' in bot or
79 'PixelC' in bot):
80 args.append('--ignoreSigInt')
81
Ben Wagner32fa5102017-08-10 21:25:55 -040082 if api.vars.builder_cfg.get('cpu_or_gpu') == 'CPU':
83 args.append('--nogpu')
84
85 # These are the canonical configs that we would ideally run on all bots. We
86 # may opt out or substitute some below for specific bots
87 configs.extend(['8888', 'srgb', 'pdf'])
88
89 # Runs out of memory on Android bots. Everyone else seems fine.
90 if 'Android' in bot:
91 configs.remove('pdf')
92
93 if '-GCE-' in bot:
94 configs.extend(['565'])
95 configs.extend(['f16'])
96 configs.extend(['sp-8888', '2ndpic-8888']) # Test niche uses of SkPicture.
97 configs.extend(['lite-8888']) # Experimental display list.
98 configs.extend(['gbr-8888'])
99
100 # NP is running out of RAM when we run all these modes. skia:3255
101 if 'NexusPlayer' not in bot:
102 configs.extend(mode + '-8888' for mode in
103 ['serialize', 'tiles_rt', 'pic'])
104
Ben Wagner32fa5102017-08-10 21:25:55 -0400105 # This bot only differs from vanilla CPU bots in 8888 config.
106 if 'SK_FORCE_RASTER_PIPELINE_BLITTER' in bot:
107 configs = ['8888', 'srgb']
108
109 elif api.vars.builder_cfg.get('cpu_or_gpu') == 'GPU':
110 args.append('--nocpu')
111
112 # Add in either gles or gl configs to the canonical set based on OS
113 sample_count = '8'
114 gl_prefix = 'gl'
115 if 'Android' in bot or 'iOS' in bot:
116 sample_count = '4'
117 # We want to test the OpenGL config not the GLES config on the Shield
118 if 'NVIDIA_Shield' not in bot:
119 gl_prefix = 'gles'
120 elif 'Intel' in bot:
121 sample_count = ''
122 elif 'ChromeOS' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400123 gl_prefix = 'gles'
Eric Boren4c7754c2017-04-10 08:19:10 -0400124
Ben Wagner32fa5102017-08-10 21:25:55 -0400125 configs.extend([gl_prefix, gl_prefix + 'dft', gl_prefix + 'srgb'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400126 if sample_count is not '':
Ben Wagner32fa5102017-08-10 21:25:55 -0400127 configs.append(gl_prefix + 'msaa' + sample_count)
Eric Boren4c7754c2017-04-10 08:19:10 -0400128
Ben Wagner32fa5102017-08-10 21:25:55 -0400129 # The NP produces a long error stream when we run with MSAA. The Tegra3 just
130 # doesn't support it.
131 if ('NexusPlayer' in bot or
132 'Tegra3' in bot or
133 # We aren't interested in fixing msaa bugs on current iOS devices.
134 'iPad4' in bot or
135 'iPadPro' in bot or
136 'iPhone6' in bot or
137 'iPhone7' in bot or
138 # skia:5792
139 'IntelHD530' in bot or
140 'IntelIris540' in bot):
141 configs = [x for x in configs if 'msaa' not in x]
Eric Boren4c7754c2017-04-10 08:19:10 -0400142
Ben Wagner32fa5102017-08-10 21:25:55 -0400143 # The NP produces different images for dft on every run.
144 if 'NexusPlayer' in bot:
145 configs = [x for x in configs if 'dft' not in x]
Eric Boren4c7754c2017-04-10 08:19:10 -0400146
Ben Wagner32fa5102017-08-10 21:25:55 -0400147 if '-TSAN' not in bot and sample_count is not '':
148 if ('TegraK1' in bot or
149 'TegraX1' in bot or
150 'GTX550Ti' in bot or
151 'GTX660' in bot or
152 'QuadroP400' in bot or
153 ('GT610' in bot and 'Ubuntu17' not in bot)):
154 configs.append(gl_prefix + 'nvprdit' + sample_count)
Kevin Lubickae95db42017-04-10 13:05:49 -0400155
Ben Wagner32fa5102017-08-10 21:25:55 -0400156 # We want to test both the OpenGL config and the GLES config on Linux Intel:
157 # GL is used by Chrome, GLES is used by ChromeOS.
Brian Osmanf9810662017-08-30 10:02:10 -0400158 # Also do the Ganesh threading verification test (render with and without
159 # worker threads, using only the SW path renderer, and compare the results).
Ben Wagner32fa5102017-08-10 21:25:55 -0400160 if 'Intel' in bot and api.vars.is_linux:
Brian Osmanf9810662017-08-30 10:02:10 -0400161 configs.extend(['gles', 'glesdft', 'glessrgb', 'gltestthreading'])
162 # skbug.com/6333, skbug.com/6419, skbug.com/6702
163 blacklist('gltestthreading gm _ lcdblendmodes')
164 blacklist('gltestthreading gm _ lcdoverlap')
Brian Osmanbef21ba2017-08-31 13:49:05 -0400165 blacklist('gltestthreading gm _ textbloblooper')
Brian Osman1e75f2a2017-09-07 09:30:44 -0400166 # All of these GMs are flaky, too:
167 blacklist('gltestthreading gm _ bleed_alpha_bmp')
168 blacklist('gltestthreading gm _ bleed_alpha_bmp_shader')
169 blacklist('gltestthreading gm _ bleed_alpha_image')
170 blacklist('gltestthreading gm _ bleed_alpha_image_shader')
171 blacklist('gltestthreading gm _ savelayer_with_backdrop')
172 blacklist('gltestthreading gm _ persp_shaders_bw')
Mike Klein97627d42017-05-11 13:12:48 -0400173
Ben Wagner32fa5102017-08-10 21:25:55 -0400174 # The following devices do not support glessrgb.
175 if 'glessrgb' in configs:
176 if ('IntelHD405' in bot or
177 'IntelIris540' in bot or
Ben Wagnerfef8fdd2017-08-11 14:13:56 -0400178 'IntelIris640' in bot or
Ben Wagner32fa5102017-08-10 21:25:55 -0400179 'IntelBayTrail' in bot or
180 'IntelHD2000' in bot or
181 'AndroidOne' in bot or
182 'Nexus7' in bot or
183 'NexusPlayer' in bot):
184 configs.remove('glessrgb')
185
186 # Test instanced rendering on a limited number of platforms
187 if 'Nexus6' in bot:
188 # inst msaa isn't working yet on Adreno.
189 configs.append(gl_prefix + 'inst')
190 elif 'NVIDIA_Shield' in bot or 'PixelC' in bot:
191 # Multisampled instanced configs use nvpr so we substitute inst msaa
192 # configs for nvpr msaa configs.
193 old = gl_prefix + 'nvpr'
194 new = gl_prefix + 'inst'
195 configs = [x.replace(old, new) for x in configs]
196 # We also test non-msaa instanced.
197 configs.append(new)
Brian Salomon7f56d3d2017-10-09 13:02:49 -0400198 elif 'MacMini7.1' in bot and 'TSAN' not in bot:
199 # The TSAN bot disables GL buffer mapping which is required for inst.
Ben Wagner32fa5102017-08-10 21:25:55 -0400200 configs.extend([gl_prefix + 'inst'])
201
202 # CommandBuffer bot *only* runs the command_buffer config.
203 if 'CommandBuffer' in bot:
204 configs = ['commandbuffer']
205
206 # ANGLE bot *only* runs the angle configs
207 if 'ANGLE' in bot:
208 configs = ['angle_d3d11_es2',
209 'angle_d3d9_es2',
210 'angle_gl_es2',
211 'angle_d3d11_es3']
212 if sample_count is not '':
213 configs.append('angle_d3d11_es2_msaa' + sample_count)
214 configs.append('angle_d3d11_es3_msaa' + sample_count)
215
216 # Vulkan bot *only* runs the vk config.
217 if 'Vulkan' in bot:
218 configs = ['vk']
219
220 if 'ChromeOS' in bot:
221 # Just run GLES for now - maybe add gles_msaa4 in the future
222 configs = ['gles']
223
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400224 if 'Chromecast' in bot:
225 configs = ['gles', '8888']
226
Ben Wagner32fa5102017-08-10 21:25:55 -0400227 # Test coverage counting path renderer.
228 if 'CCPR' in bot:
229 configs = [c for c in configs if c == 'gl' or c == 'gles']
Chris Dalton7a0ebfc2017-10-13 12:35:50 -0600230 args.extend(['--pr', 'ccpr', '--cachePathMasks', 'false'])
Chris Dalton97598a52017-07-18 10:49:07 -0600231
Chris Dalton80ace822017-07-20 10:54:04 -0600232 args.append('--config')
233 args.extend(configs)
234
Eric Boren4c7754c2017-04-10 08:19:10 -0400235 # Run tests, gms, and image decoding tests everywhere.
236 args.extend('--src tests gm image colorImage svg'.split(' '))
237 if 'Vulkan' in bot and 'NexusPlayer' in bot:
238 args.remove('svg')
239 args.remove('image')
Chris Dalton7c304ba2017-09-07 11:57:16 -0600240 elif api.vars.builder_cfg.get('cpu_or_gpu') == 'GPU':
241 # Don't run the 'svgparse_*' svgs on GPU.
242 blacklist('_ svg _ svgparse_')
243 elif bot == 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN':
244 # Only run the CPU SVGs on 8888.
245 blacklist('~8888 svg _ _')
246 else:
247 # On CPU SVGs we only care about parsing. Only run them on the above bot.
248 args.remove('svg')
Eric Boren4c7754c2017-04-10 08:19:10 -0400249
Mike Klein97627d42017-05-11 13:12:48 -0400250 # Eventually I'd like these to pass, but for now just skip 'em.
251 if 'SK_FORCE_RASTER_PIPELINE_BLITTER' in bot:
252 args.remove('tests')
253
Eric Boren4c7754c2017-04-10 08:19:10 -0400254 # TODO: ???
255 blacklist('f16 _ _ dstreadshuffle')
256 blacklist('glsrgb image _ _')
257 blacklist('glessrgb image _ _')
258
Eric Boren4c7754c2017-04-10 08:19:10 -0400259 # Not any point to running these.
260 blacklist('gbr-8888 image _ _')
261 blacklist('gbr-8888 colorImage _ _')
262
263 if 'Valgrind' in bot:
264 # These take 18+ hours to run.
265 blacklist('pdf gm _ fontmgr_iter')
266 blacklist('pdf _ _ PANO_20121023_214540.jpg')
267 blacklist('pdf skp _ worldjournal')
268 blacklist('pdf skp _ desk_baidu.skp')
269 blacklist('pdf skp _ desk_wikipedia.skp')
270 blacklist('_ svg _ _')
271
272 if 'iOS' in bot:
273 blacklist(gl_prefix + ' skp _ _')
274
275 if 'Mac' in bot or 'iOS' in bot:
276 # CG fails on questionable bmps
277 blacklist('_ image gen_platf rgba32abf.bmp')
278 blacklist('_ image gen_platf rgb24prof.bmp')
279 blacklist('_ image gen_platf rgb24lprof.bmp')
280 blacklist('_ image gen_platf 8bpp-pixeldata-cropped.bmp')
281 blacklist('_ image gen_platf 4bpp-pixeldata-cropped.bmp')
282 blacklist('_ image gen_platf 32bpp-pixeldata-cropped.bmp')
283 blacklist('_ image gen_platf 24bpp-pixeldata-cropped.bmp')
284
285 # CG has unpredictable behavior on this questionable gif
286 # It's probably using uninitialized memory
287 blacklist('_ image gen_platf frame_larger_than_image.gif')
288
289 # CG has unpredictable behavior on incomplete pngs
290 # skbug.com/5774
291 blacklist('_ image gen_platf inc0.png')
292 blacklist('_ image gen_platf inc1.png')
293 blacklist('_ image gen_platf inc2.png')
294 blacklist('_ image gen_platf inc3.png')
295 blacklist('_ image gen_platf inc4.png')
296 blacklist('_ image gen_platf inc5.png')
297 blacklist('_ image gen_platf inc6.png')
298 blacklist('_ image gen_platf inc7.png')
299 blacklist('_ image gen_platf inc8.png')
300 blacklist('_ image gen_platf inc9.png')
301 blacklist('_ image gen_platf inc10.png')
302 blacklist('_ image gen_platf inc11.png')
303 blacklist('_ image gen_platf inc12.png')
304 blacklist('_ image gen_platf inc13.png')
305 blacklist('_ image gen_platf inc14.png')
306
Matt Sarett6c50a2e2017-05-01 09:13:05 -0400307 # WIC fails on questionable bmps
Eric Boren4c7754c2017-04-10 08:19:10 -0400308 if 'Win' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400309 blacklist('_ image gen_platf pal8os2v2.bmp')
310 blacklist('_ image gen_platf pal8os2v2-16.bmp')
311 blacklist('_ image gen_platf rgba32abf.bmp')
312 blacklist('_ image gen_platf rgb24prof.bmp')
313 blacklist('_ image gen_platf rgb24lprof.bmp')
314 blacklist('_ image gen_platf 8bpp-pixeldata-cropped.bmp')
315 blacklist('_ image gen_platf 4bpp-pixeldata-cropped.bmp')
316 blacklist('_ image gen_platf 32bpp-pixeldata-cropped.bmp')
317 blacklist('_ image gen_platf 24bpp-pixeldata-cropped.bmp')
Eric Boren4c7754c2017-04-10 08:19:10 -0400318 if 'x86_64' in bot and 'CPU' in bot:
319 # This GM triggers a SkSmallAllocator assert.
320 blacklist('_ gm _ composeshader_bitmap')
321
Matt Sarett6c50a2e2017-05-01 09:13:05 -0400322 if 'Win' in bot or 'Mac' in bot:
Leon Scroggins III3a3cf432017-08-18 13:08:16 -0400323 # WIC and CG fail on arithmetic jpegs
Matt Sarett6c50a2e2017-05-01 09:13:05 -0400324 blacklist('_ image gen_platf testimgari.jpg')
Leon Scroggins III3a3cf432017-08-18 13:08:16 -0400325 # More questionable bmps that fail on Mac, too. skbug.com/6984
326 blacklist('_ image gen_platf rle8-height-negative.bmp')
327 blacklist('_ image gen_platf rle4-height-negative.bmp')
Matt Sarett6c50a2e2017-05-01 09:13:05 -0400328
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400329 if 'Android' in bot or 'iOS' in bot or 'Chromecast' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400330 # This test crashes the N9 (perhaps because of large malloc/frees). It also
331 # is fairly slow and not platform-specific. So we just disable it on all of
332 # Android and iOS. skia:5438
333 blacklist('_ test _ GrShape')
334
Kevin Lubick451b7432017-09-15 14:44:12 -0400335 if api.vars.internal_hardware_label == 1:
336 # skia:7046
337 blacklist('_ test _ WritePixelsNonTexture_Gpu')
338 blacklist('_ test _ WritePixels_Gpu')
339 blacklist('_ test _ GrSurfaceRenderability')
340 blacklist('_ test _ ES2BlendWithNoTexture')
341
Kevin Lubickbd27d1d2017-10-13 08:01:49 -0400342 if api.vars.internal_hardware_label == 2:
343 # skia:7160
344 blacklist('_ test _ SRGBReadWritePixels')
345 blacklist('_ test _ SRGBMipMap')
346
Kevin Lubick451b7432017-09-15 14:44:12 -0400347
Eric Boren4c7754c2017-04-10 08:19:10 -0400348 # skia:4095
Mike Reedfb499092017-06-26 13:53:32 +0000349 bad_serialize_gms = ['bleed_image',
Eric Boren4c7754c2017-04-10 08:19:10 -0400350 'c_gms',
351 'colortype',
352 'colortype_xfermodes',
353 'drawfilter',
354 'fontmgr_bounds_0.75_0',
355 'fontmgr_bounds_1_-0.25',
356 'fontmgr_bounds',
357 'fontmgr_match',
358 'fontmgr_iter',
359 'imagemasksubset']
360
361 # skia:5589
362 bad_serialize_gms.extend(['bitmapfilters',
363 'bitmapshaders',
364 'bleed',
365 'bleed_alpha_bmp',
366 'bleed_alpha_bmp_shader',
367 'convex_poly_clip',
368 'extractalpha',
369 'filterbitmap_checkerboard_32_32_g8',
370 'filterbitmap_image_mandrill_64',
371 'shadows',
372 'simpleaaclip_aaclip'])
373 # skia:5595
374 bad_serialize_gms.extend(['composeshader_bitmap',
375 'scaled_tilemodes_npot',
376 'scaled_tilemodes'])
377
378 # skia:5778
379 bad_serialize_gms.append('typefacerendering_pfaMac')
380 # skia:5942
381 bad_serialize_gms.append('parsedpaths')
382
383 # these use a custom image generator which doesn't serialize
384 bad_serialize_gms.append('ImageGeneratorExternal_rect')
385 bad_serialize_gms.append('ImageGeneratorExternal_shader')
386
387 # skia:6189
388 bad_serialize_gms.append('shadow_utils')
389
Matt Sarett9f3dcb32017-05-04 08:53:32 -0400390 # Not expected to round trip encoding/decoding.
391 bad_serialize_gms.append('makecolorspace')
392
Eric Boren4c7754c2017-04-10 08:19:10 -0400393 for test in bad_serialize_gms:
394 blacklist(['serialize-8888', 'gm', '_', test])
395
396 if 'Mac' not in bot:
397 for test in ['bleed_alpha_image', 'bleed_alpha_image_shader']:
398 blacklist(['serialize-8888', 'gm', '_', test])
399 # It looks like we skip these only for out-of-memory concerns.
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400400 if 'Win' in bot or 'Android' in bot or 'Chromecast' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400401 for test in ['verylargebitmap', 'verylarge_picture_image']:
402 blacklist(['serialize-8888', 'gm', '_', test])
Ben Wagner2e4e73f2017-09-08 15:21:44 -0400403 if 'Mac' in bot and 'CPU' in bot:
Ben Wagner38db79f2017-08-23 15:05:50 -0400404 # skia:6992
Ben Wagner6f98bc62017-09-05 16:02:28 -0400405 blacklist(['pic-8888', 'gm', '_', 'encode-platform'])
Ben Wagner38db79f2017-08-23 15:05:50 -0400406 blacklist(['serialize-8888', 'gm', '_', 'encode-platform'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400407
408 # skia:4769
409 for test in ['drawfilter']:
410 blacklist([ 'sp-8888', 'gm', '_', test])
411 blacklist([ 'pic-8888', 'gm', '_', test])
412 blacklist(['2ndpic-8888', 'gm', '_', test])
413 blacklist([ 'lite-8888', 'gm', '_', test])
414 # skia:4703
415 for test in ['image-cacherator-from-picture',
416 'image-cacherator-from-raster',
417 'image-cacherator-from-ctable']:
418 blacklist([ 'sp-8888', 'gm', '_', test])
419 blacklist([ 'pic-8888', 'gm', '_', test])
420 blacklist([ '2ndpic-8888', 'gm', '_', test])
421 blacklist(['serialize-8888', 'gm', '_', test])
422
423 # GM that requires raster-backed canvas
424 for test in ['gamut', 'complexclip4_bw', 'complexclip4_aa']:
425 blacklist([ 'sp-8888', 'gm', '_', test])
426 blacklist([ 'pic-8888', 'gm', '_', test])
427 blacklist([ 'lite-8888', 'gm', '_', test])
428 blacklist([ '2ndpic-8888', 'gm', '_', test])
429 blacklist(['serialize-8888', 'gm', '_', test])
430
431 # GM that not support tiles_rt
432 for test in ['complexclip4_bw', 'complexclip4_aa']:
433 blacklist([ 'tiles_rt-8888', 'gm', '_', test])
434
435 # Extensions for RAW images
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400436 r = ['arw', 'cr2', 'dng', 'nef', 'nrw', 'orf', 'raf', 'rw2', 'pef', 'srw',
437 'ARW', 'CR2', 'DNG', 'NEF', 'NRW', 'ORF', 'RAF', 'RW2', 'PEF', 'SRW']
Eric Boren4c7754c2017-04-10 08:19:10 -0400438
439 # skbug.com/4888
440 # Blacklist RAW images (and a few large PNGs) on GPU bots
441 # until we can resolve failures.
Matt Sarett929bfeb2017-05-22 10:34:41 -0400442 if 'GPU' in bot:
443 blacklist('_ image _ interlaced1.png')
444 blacklist('_ image _ interlaced2.png')
445 blacklist('_ image _ interlaced3.png')
446 for raw_ext in r:
447 blacklist('_ image _ .%s' % raw_ext)
448
449 # Blacklist memory intensive tests on 32-bit bots.
450 if ('Win2k8' in bot or 'Win8' in bot) and 'x86-' in bot:
451 blacklist('_ image f16 _')
Matt Sarett112565e2017-05-22 13:45:15 -0400452 blacklist('_ image _ abnormal.wbmp')
Eric Boren4c7754c2017-04-10 08:19:10 -0400453 blacklist('_ image _ interlaced1.png')
454 blacklist('_ image _ interlaced2.png')
455 blacklist('_ image _ interlaced3.png')
456 for raw_ext in r:
457 blacklist('_ image _ .%s' % raw_ext)
458
Eric Boren4c7754c2017-04-10 08:19:10 -0400459 if 'IntelHD405' in bot and 'Ubuntu16' in bot:
460 # skia:6331
461 blacklist(['glmsaa8', 'image', 'gen_codec_gpu', 'abnormal.wbmp'])
462 blacklist(['glesmsaa4', 'image', 'gen_codec_gpu', 'abnormal.wbmp'])
463
464 if 'Nexus5' in bot:
465 # skia:5876
466 blacklist(['_', 'gm', '_', 'encode-platform'])
467
468 if 'AndroidOne-GPU' in bot: # skia:4697, skia:4704, skia:4694, skia:4705
469 blacklist(['_', 'gm', '_', 'bigblurs'])
470 blacklist(['_', 'gm', '_', 'bleed'])
471 blacklist(['_', 'gm', '_', 'bleed_alpha_bmp'])
472 blacklist(['_', 'gm', '_', 'bleed_alpha_bmp_shader'])
473 blacklist(['_', 'gm', '_', 'bleed_alpha_image'])
474 blacklist(['_', 'gm', '_', 'bleed_alpha_image_shader'])
475 blacklist(['_', 'gm', '_', 'bleed_image'])
476 blacklist(['_', 'gm', '_', 'dropshadowimagefilter'])
477 blacklist(['_', 'gm', '_', 'filterfastbounds'])
478 blacklist([gl_prefix, 'gm', '_', 'imageblurtiled'])
479 blacklist(['_', 'gm', '_', 'imagefiltersclipped'])
480 blacklist(['_', 'gm', '_', 'imagefiltersscaled'])
481 blacklist(['_', 'gm', '_', 'imageresizetiled'])
482 blacklist(['_', 'gm', '_', 'matrixconvolution'])
483 blacklist(['_', 'gm', '_', 'strokedlines'])
484 if sample_count is not '':
485 gl_msaa_config = gl_prefix + 'msaa' + sample_count
486 blacklist([gl_msaa_config, 'gm', '_', 'imageblurtiled'])
487 blacklist([gl_msaa_config, 'gm', '_', 'imagefiltersbase'])
488
489 match = []
490 if 'Valgrind' in bot: # skia:3021
491 match.append('~Threaded')
492
Ben Wagner6c126422017-06-19 12:45:54 -0400493 if 'Valgrind' in bot and 'PreAbandonGpuContext' in bot:
494 # skia:6575
495 match.append('~multipicturedraw_')
496
Ben Wagnerbb3e7ff2017-04-28 15:28:32 -0400497 if 'CommandBuffer' in bot:
498 # https://crbug.com/697030
499 match.append('~HalfFloatAlphaTextureTest')
500
Eric Boren4c7754c2017-04-10 08:19:10 -0400501 if 'AndroidOne' in bot: # skia:4711
502 match.append('~WritePixels')
503
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400504 if 'Chromecast' in bot: # skia:6581
505 match.append('~matrixconvolution')
506 match.append('~blur_image_filter')
507 match.append('~blur_0.01')
508 match.append('~GM_animated-image-blurs')
509
Eric Boren4c7754c2017-04-10 08:19:10 -0400510 if 'NexusPlayer' in bot:
511 match.append('~ResourceCache')
512
513 if 'Nexus10' in bot:
514 match.append('~CopySurface') # skia:5509
515 match.append('~SRGBReadWritePixels') # skia:6097
516
Eric Boren4c7754c2017-04-10 08:19:10 -0400517 if 'GalaxyS6' in bot:
518 match.append('~SpecialImage') # skia:6338
Brian Osmaneee3c092017-06-15 13:25:10 -0400519 match.append('~skbug6653') # skia:6653
Eric Boren4c7754c2017-04-10 08:19:10 -0400520
521 if 'GalaxyS7_G930A' in bot:
522 match.append('~WritePixels') # skia:6427
523
Eric Boren4c7754c2017-04-10 08:19:10 -0400524 if 'MSAN' in bot:
525 match.extend(['~Once', '~Shared']) # Not sure what's up with these tests.
526
527 if 'TSAN' in bot:
528 match.extend(['~ReadWriteAlpha']) # Flaky on TSAN-covered on nvidia bots.
529 match.extend(['~RGBA4444TextureTest', # Flakier than they are important.
530 '~RGB565TextureTest'])
531
Brian Osmanc49d11e2017-09-22 09:44:35 -0400532 # By default, we test with GPU threading enabled. Leave PixelC devices
533 # running without threads, just to get some coverage of that code path.
534 if 'PixelC' in bot:
535 args.extend(['--gpuThreads', '0'])
536
Ben Wagneradf17dc2017-09-12 23:41:00 -0400537 if 'float_cast_overflow' in bot and 'CPU' in bot:
538 # skia:4632
539 for config in ['565', '8888', 'f16', 'srgb']:
Ben Wagneradf17dc2017-09-12 23:41:00 -0400540 blacklist([config, 'gm', '_', 'clippedcubic2'])
Ben Wagneradf17dc2017-09-12 23:41:00 -0400541 match.append('~^PathOpsCubicIntersection$')
542 match.append('~^PathOpsCubicLineIntersection$')
Ben Wagneradf17dc2017-09-12 23:41:00 -0400543 match.append('~^PathOpsOpCubicsThreaded$')
544 match.append('~^PathOpsOpLoopsThreaded$')
Ben Wagneradf17dc2017-09-12 23:41:00 -0400545
Greg Daniela86385d2017-06-05 11:34:29 -0400546 if 'Vulkan' in bot and 'Adreno530' in bot:
547 # skia:5777
548 match.extend(['~CopySurface'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400549
550 if 'Vulkan' in bot and 'NexusPlayer' in bot:
Ben Wagner407a3b72017-09-07 22:14:07 -0400551 # skia:6132
552 match.extend(['~gradients_no_texture$',
553 '~tilemodes',
554 '~shadertext$',
555 '~bitmapfilters'])
556 match.append('~GrContextFactory_abandon') #skia:6209
557 # skia:7018
558 match.extend(['~ClearOp',
559 '~ComposedImageFilterBounds_Gpu',
560 '~ImageEncode_Gpu',
561 '~ImageFilterFailAffectsTransparentBlack_Gpu',
562 '~ImageFilterZeroBlurSigma_Gpu',
563 '~ImageNewShader_GPU',
564 '~ImageReadPixels_Gpu',
565 '~ImageScalePixels_Gpu',
566 '~OverdrawSurface_Gpu',
567 '~ReadWriteAlpha',
568 '~SpecialImage_DeferredGpu',
569 '~SpecialImage_Gpu',
570 '~SurfaceSemaphores'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400571
Ben Wagnerbe8ad452017-08-11 15:18:03 -0400572 if ('Vulkan' in bot and api.vars.is_linux and
573 ('IntelIris540' in bot or 'IntelIris640' in bot)):
Eric Boren4c7754c2017-04-10 08:19:10 -0400574 match.extend(['~VkHeapTests']) # skia:6245
575
Ben Wagnerf1debdf2017-06-13 13:37:05 -0400576 if 'Vulkan' in bot and 'IntelIris540' in bot and 'Win' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400577 # skia:6398
578 blacklist(['vk', 'gm', '_', 'aarectmodes'])
579 blacklist(['vk', 'gm', '_', 'aaxfermodes'])
580 blacklist(['vk', 'gm', '_', 'arithmode'])
581 blacklist(['vk', 'gm', '_', 'composeshader_bitmap'])
582 blacklist(['vk', 'gm', '_', 'composeshader_bitmap2'])
583 blacklist(['vk', 'gm', '_', 'dftextCOLR'])
584 blacklist(['vk', 'gm', '_', 'drawregionmodes'])
585 blacklist(['vk', 'gm', '_', 'filterfastbounds'])
586 blacklist(['vk', 'gm', '_', 'fontcache'])
587 blacklist(['vk', 'gm', '_', 'fontmgr_iterWin10'])
588 blacklist(['vk', 'gm', '_', 'fontmgr_iter_factoryWin10'])
589 blacklist(['vk', 'gm', '_', 'fontmgr_matchWin10'])
590 blacklist(['vk', 'gm', '_', 'fontscalerWin'])
591 blacklist(['vk', 'gm', '_', 'fontscalerdistortable'])
592 blacklist(['vk', 'gm', '_', 'gammagradienttext'])
593 blacklist(['vk', 'gm', '_', 'gammatextWin'])
594 blacklist(['vk', 'gm', '_', 'gradtext'])
595 blacklist(['vk', 'gm', '_', 'hairmodes'])
596 blacklist(['vk', 'gm', '_', 'imagefilters_xfermodes'])
597 blacklist(['vk', 'gm', '_', 'imagefiltersclipped'])
598 blacklist(['vk', 'gm', '_', 'imagefiltersgraph'])
599 blacklist(['vk', 'gm', '_', 'imagefiltersscaled'])
600 blacklist(['vk', 'gm', '_', 'imagefiltersstroked'])
601 blacklist(['vk', 'gm', '_', 'imagefilterstransformed'])
602 blacklist(['vk', 'gm', '_', 'imageresizetiled'])
603 blacklist(['vk', 'gm', '_', 'lcdblendmodes'])
604 blacklist(['vk', 'gm', '_', 'lcdoverlap'])
605 blacklist(['vk', 'gm', '_', 'lcdtextWin'])
606 blacklist(['vk', 'gm', '_', 'lcdtextsize'])
607 blacklist(['vk', 'gm', '_', 'matriximagefilter'])
608 blacklist(['vk', 'gm', '_', 'mixedtextblobsCOLR'])
Greg Daniel744d3c52017-06-09 13:50:20 -0400609 blacklist(['vk', 'gm', '_', 'mixershader'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400610 blacklist(['vk', 'gm', '_', 'pictureimagefilter'])
611 blacklist(['vk', 'gm', '_', 'resizeimagefilter'])
612 blacklist(['vk', 'gm', '_', 'rotate_imagefilter'])
613 blacklist(['vk', 'gm', '_', 'savelayer_lcdtext'])
614 blacklist(['vk', 'gm', '_', 'srcmode'])
615 blacklist(['vk', 'gm', '_', 'surfaceprops'])
616 blacklist(['vk', 'gm', '_', 'textblobgeometrychange'])
617 blacklist(['vk', 'gm', '_', 'textbloblooper'])
618 blacklist(['vk', 'gm', '_', 'textblobmixedsizes'])
619 blacklist(['vk', 'gm', '_', 'textblobmixedsizes_df'])
620 blacklist(['vk', 'gm', '_', 'textblobrandomfont'])
621 blacklist(['vk', 'gm', '_', 'textfilter_color'])
622 blacklist(['vk', 'gm', '_', 'textfilter_image'])
623 blacklist(['vk', 'gm', '_', 'typefacerenderingWin'])
624 blacklist(['vk', 'gm', '_', 'varied_text_clipped_lcd'])
625 blacklist(['vk', 'gm', '_', 'varied_text_ignorable_clip_lcd'])
626 blacklist(['vk', 'gm', '_', 'xfermodeimagefilter'])
627 match.append('~ApplyGamma')
628 match.append('~ComposedImageFilterBounds_Gpu')
Matt Sarett77443972017-04-11 11:25:37 -0400629 match.append('~DeferredTextureImage')
Chris Dalton114a3c02017-05-26 15:17:19 -0600630 match.append('~GrMeshTest')
Eric Boren4c7754c2017-04-10 08:19:10 -0400631 match.append('~ImageFilterFailAffectsTransparentBlack_Gpu')
632 match.append('~ImageFilterZeroBlurSigma_Gpu')
633 match.append('~ImageNewShader_GPU')
634 match.append('~NewTextureFromPixmap')
635 match.append('~ReadPixels_Gpu')
636 match.append('~ReadPixels_Texture')
637 match.append('~ReadWriteAlpha')
Brian Osmane18ceb12017-06-15 16:04:45 -0400638 match.append('~skbug6653')
Eric Boren4c7754c2017-04-10 08:19:10 -0400639 match.append('~SRGBReadWritePixels')
640 match.append('~SpecialImage_DeferredGpu')
641 match.append('~SpecialImage_Gpu')
642 match.append('~WritePixels_Gpu')
Brian Osman33ea1362017-04-19 10:51:39 -0400643 match.append('~WritePixelsNonTexture_Gpu')
Eric Boren4c7754c2017-04-10 08:19:10 -0400644 match.append('~XfermodeImageFilterCroppedInput_Gpu')
645
Robert Phillips435db422017-10-04 09:38:11 -0400646 if 'AlphaR2' in bot and 'ANGLE' in bot:
647 # skia:7096
648 match.append('~PinnedImageTest')
649
Eric Boren4c7754c2017-04-10 08:19:10 -0400650 if 'IntelIris540' in bot and 'ANGLE' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400651 for config in ['angle_d3d9_es2', 'angle_d3d11_es2', 'angle_gl_es2']:
Brian Salomon6e554e32017-06-23 12:08:10 -0400652 # skia:6103
Eric Boren4c7754c2017-04-10 08:19:10 -0400653 blacklist([config, 'gm', '_', 'multipicturedraw_invpathclip_simple'])
654 blacklist([config, 'gm', '_', 'multipicturedraw_noclip_simple'])
655 blacklist([config, 'gm', '_', 'multipicturedraw_pathclip_simple'])
656 blacklist([config, 'gm', '_', 'multipicturedraw_rectclip_simple'])
657 blacklist([config, 'gm', '_', 'multipicturedraw_rrectclip_simple'])
Brian Salomon6e554e32017-06-23 12:08:10 -0400658 # skia:6141
659 blacklist([config, 'gm', '_', 'discard'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400660
Ben Wagnerc6b2e6b2017-10-07 18:57:25 -0400661 if ('IntelIris6100' in bot or 'IntelHD4400' in bot) and 'ANGLE' in bot:
662 # skia:6857
663 blacklist(['angle_d3d9_es2', 'gm', '_', 'lighting'])
664
Eric Boren89cd3572017-06-28 13:50:22 -0400665 if 'IntelBayTrail' in bot and api.vars.is_linux:
Eric Boren4c7754c2017-04-10 08:19:10 -0400666 match.append('~ImageStorageLoad') # skia:6358
667
Kevin Lubickc14e5a72017-08-15 13:22:19 -0400668 if 'PowerVRGX6250' in bot:
669 match.append('~gradients_view_perspective_nodither') #skia:6972
670
Eric Boren4c7754c2017-04-10 08:19:10 -0400671 if blacklisted:
672 args.append('--blacklist')
673 args.extend(blacklisted)
674
675 if match:
676 args.append('--match')
677 args.extend(match)
678
679 # These bots run out of memory running RAW codec tests. Do not run them in
680 # parallel
681 if ('NexusPlayer' in bot or 'Nexus5' in bot or 'Nexus9' in bot
682 or 'Win8-MSVC-ShuttleB' in bot):
683 args.append('--noRAW_threading')
684
Stephan Altmueller74dac542017-09-11 15:32:21 -0400685 # Let's make all bots produce verbose output by default.
686 args.append('--verbose')
Mike Kleinc9089062017-06-26 09:09:32 -0400687
Eric Boren4c7754c2017-04-10 08:19:10 -0400688 return args
689
690
691def key_params(api):
692 """Build a unique key from the builder name (as a list).
693
694 E.g. arch x86 gpu GeForce320M mode MacMini4.1 os Mac10.6
695 """
696 # Don't bother to include role, which is always Test.
697 # TryBots are uploaded elsewhere so they can use the same key.
698 blacklist = ['role', 'is_trybot']
699
700 flat = []
701 for k in sorted(api.vars.builder_cfg.keys()):
702 if k not in blacklist:
703 flat.append(k)
704 flat.append(api.vars.builder_cfg[k])
705 return flat
706
707
708def test_steps(api):
709 """Run the DM test."""
710 use_hash_file = False
711 if api.vars.upload_dm_results:
Eric Boren4c7754c2017-04-10 08:19:10 -0400712 host_dm_dir = str(api.vars.dm_dir)
713 device_dm_dir = str(api.flavor.device_dirs.dm_dir)
714 if host_dm_dir != device_dm_dir:
715 api.flavor.create_clean_device_dir(device_dm_dir)
716
717 # Obtain the list of already-generated hashes.
718 hash_filename = 'uninteresting_hashes.txt'
719
720 # Ensure that the tmp_dir exists.
Robert Iannucci8cd50412017-07-07 14:36:58 -0700721 api.run.run_once(api.file.ensure_directory,
722 'makedirs tmp_dir',
723 api.vars.tmp_dir)
Eric Boren4c7754c2017-04-10 08:19:10 -0400724
725 host_hashes_file = api.vars.tmp_dir.join(hash_filename)
726 hashes_file = api.flavor.device_path_join(
727 api.flavor.device_dirs.tmp_dir, hash_filename)
728 api.run(
729 api.python.inline,
730 'get uninteresting hashes',
731 program="""
732 import contextlib
733 import math
734 import socket
735 import sys
736 import time
737 import urllib2
738
Stephan Altmuellerc19ebc52017-05-30 16:39:17 -0400739 HASHES_URL = 'https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt'
Eric Boren4c7754c2017-04-10 08:19:10 -0400740 RETRIES = 5
741 TIMEOUT = 60
742 WAIT_BASE = 15
743
744 socket.setdefaulttimeout(TIMEOUT)
745 for retry in range(RETRIES):
746 try:
747 with contextlib.closing(
748 urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:
749 hashes = w.read()
750 with open(sys.argv[1], 'w') as f:
751 f.write(hashes)
752 break
753 except Exception as e:
754 print 'Failed to get uninteresting hashes from %s:' % HASHES_URL
755 print e
756 if retry == RETRIES:
757 raise
758 waittime = WAIT_BASE * math.pow(2, retry)
759 print 'Retry in %d seconds.' % waittime
760 time.sleep(waittime)
761 """,
762 args=[host_hashes_file],
763 abort_on_failure=False,
764 fail_build_on_failure=False,
765 infra_step=True)
766
767 if api.path.exists(host_hashes_file):
768 api.flavor.copy_file_to_device(host_hashes_file, hashes_file)
769 use_hash_file = True
770
771 # Run DM.
772 properties = [
773 'gitHash', api.vars.got_revision,
Eric Boren4c7754c2017-04-10 08:19:10 -0400774 'builder', api.vars.builder_name,
Eric Boren4c7754c2017-04-10 08:19:10 -0400775 ]
776 if api.vars.is_trybot:
777 properties.extend([
778 'issue', api.vars.issue,
779 'patchset', api.vars.patchset,
780 'patch_storage', api.vars.patch_storage,
781 ])
Eric Borenf9aa9e52017-04-10 09:56:10 -0400782 properties.extend(['swarming_bot_id', api.vars.swarming_bot_id])
783 properties.extend(['swarming_task_id', api.vars.swarming_task_id])
Eric Boren4c7754c2017-04-10 08:19:10 -0400784
785 args = [
786 'dm',
Eric Boren4c7754c2017-04-10 08:19:10 -0400787 '--resourcePath', api.flavor.device_dirs.resource_dir,
788 '--skps', api.flavor.device_dirs.skp_dir,
789 '--images', api.flavor.device_path_join(
790 api.flavor.device_dirs.images_dir, 'dm'),
791 '--colorImages', api.flavor.device_path_join(
792 api.flavor.device_dirs.images_dir, 'colorspace'),
793 '--nameByHash',
794 '--properties'
795 ] + properties
796
797 args.extend(['--svgs', api.flavor.device_dirs.svg_dir])
798
799 args.append('--key')
800 args.extend(key_params(api))
801 if use_hash_file:
802 args.extend(['--uninterestingHashesFile', hashes_file])
803 if api.vars.upload_dm_results:
804 args.extend(['--writePath', api.flavor.device_dirs.dm_dir])
805
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400806 if 'Chromecast' in api.vars.builder_cfg.get('os', ''):
807 # Due to limited disk space, we only deal with skps and one image.
808 args = [
809 'dm',
810 '--undefok', # This helps branches that may not know new flags.
811 '--resourcePath', api.flavor.device_dirs.resource_dir,
812 '--skps', api.flavor.device_dirs.skp_dir,
813 '--images', api.flavor.device_path_join(
814 api.flavor.device_dirs.resource_dir, 'color_wheel.jpg'),
815 ]
816
Eric Boren89cd3572017-06-28 13:50:22 -0400817 args.extend(dm_flags(api, api.vars.builder_name))
Eric Boren4c7754c2017-04-10 08:19:10 -0400818
Eric Boren4c7754c2017-04-10 08:19:10 -0400819 # See skia:2789.
Ben Wagner988d15e2017-04-27 13:08:50 -0400820 extra_config_parts = api.vars.builder_cfg.get('extra_config', '').split('_')
821 if 'AbandonGpuContext' in extra_config_parts:
Eric Boren4c7754c2017-04-10 08:19:10 -0400822 args.append('--abandonGpuContext')
Ben Wagner988d15e2017-04-27 13:08:50 -0400823 if 'PreAbandonGpuContext' in extra_config_parts:
Eric Boren4c7754c2017-04-10 08:19:10 -0400824 args.append('--preAbandonGpuContext')
Ben Wagner988d15e2017-04-27 13:08:50 -0400825 if 'ReleaseAndAbandonGpuContext' in extra_config_parts:
Eric Boren6ec17e32017-04-26 14:25:29 -0400826 args.append('--releaseAndAbandonGpuContext')
Eric Boren4c7754c2017-04-10 08:19:10 -0400827
Ben Wagner5655ba42017-10-02 10:48:32 -0400828 api.run(api.flavor.step, 'dm', cmd=args, abort_on_failure=False)
Eric Boren4c7754c2017-04-10 08:19:10 -0400829
830 if api.vars.upload_dm_results:
831 # Copy images and JSON to host machine if needed.
832 api.flavor.copy_directory_contents_to_host(
833 api.flavor.device_dirs.dm_dir, api.vars.dm_dir)
834
835
borenet1ed2ae42016-07-26 11:52:17 -0700836def RunSteps(api):
Eric Boren4c7754c2017-04-10 08:19:10 -0400837 api.core.setup()
Robert Iannucci297a7ef2017-05-12 19:09:38 -0700838 env = {}
Eric Boren4c7754c2017-04-10 08:19:10 -0400839 if 'iOS' in api.vars.builder_name:
840 env['IOS_BUNDLE_ID'] = 'com.google.dm'
Stephan Altmueller63e843d2017-04-25 11:38:38 -0400841 env['IOS_MOUNT_POINT'] = api.vars.slave_dir.join('mnt_iosdevice')
Robert Iannucci297a7ef2017-05-12 19:09:38 -0700842 with api.context(env=env):
Eric Boren4c7754c2017-04-10 08:19:10 -0400843 try:
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400844 if 'Chromecast' in api.vars.builder_name:
845 api.flavor.install(resources=True, skps=True)
846 else:
847 api.flavor.install_everything()
Eric Boren4c7754c2017-04-10 08:19:10 -0400848 test_steps(api)
849 finally:
850 api.flavor.cleanup_steps()
851 api.run.check_failure()
852
853
Eric Borenf9aa9e52017-04-10 09:56:10 -0400854TEST_BUILDERS = [
Kevin Lubickfe079d42017-04-12 08:31:48 -0400855 'Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-Android',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400856 'Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-Android',
857 'Test-Android-Clang-GalaxyS7_G930A-GPU-Adreno530-arm64-Debug-Android',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400858 'Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-Android',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400859 'Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-Android_CCPR',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400860 'Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Release-Android',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400861 'Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-Android',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400862 'Test-Android-Clang-Nexus6p-GPU-Adreno430-arm64-Debug-Android_Vulkan',
863 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-Android',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400864 'Test-Android-Clang-NexusPlayer-CPU-Moorefield-x86-Release-Android',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400865 'Test-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-Android_Vulkan',
866 'Test-Android-Clang-PixelC-CPU-TegraX1-arm64-Debug-Android',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400867 'Test-Android-Clang-PixelXL-GPU-Adreno530-arm64-Debug-Android_CCPR',
868 'Test-Android-Clang-PixelXL-GPU-Adreno530-arm64-Debug-Android_Vulkan',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400869 'Test-ChromeOS-Clang-Chromebook_C100p-GPU-MaliT764-arm-Debug',
Kevin Lubickc14e5a72017-08-15 13:22:19 -0400870 'Test-ChromeOS-Clang-Chromebook_CB5_312T-GPU-PowerVRGX6250-arm-Debug',
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400871 'Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400872 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN',
Kevin Lubickc795a4c2017-10-09 15:26:19 -0400873 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-Coverage',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400874 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-MSAN',
Ben Wagner9fb285e2017-10-02 16:53:07 -0400875 ('Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug'
876 '-SK_USE_DISCARDABLE_SCALEDIMAGECACHE'),
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400877 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-UBSAN_float_cast_overflow',
878 ('Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release'
879 '-SK_FORCE_RASTER_PIPELINE_BLITTER'),
880 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-TSAN',
881 'Test-Debian9-GCC-GCE-CPU-AVX2-x86-Debug',
882 'Test-Debian9-GCC-GCE-CPU-AVX2-x86_64-Debug',
Ben Wagner38db79f2017-08-23 15:05:50 -0400883 'Test-Mac-Clang-MacMini7.1-CPU-AVX-x86_64-Release',
Ben Wagnercc4221b2017-08-17 17:29:04 -0400884 'Test-Mac-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Debug-CommandBuffer',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400885 'Test-Ubuntu16-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug',
886 'Test-Ubuntu16-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-Vulkan',
Kevin Lubicke0240452017-10-10 10:51:40 -0400887 ('Test-Ubuntu16-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-Vulkan'
888 '_Coverage'),
Kevin Lubickfe079d42017-04-12 08:31:48 -0400889 'Test-Ubuntu16-Clang-NUCDE3815TYKHE-GPU-IntelBayTrail-x86_64-Debug',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400890 ('Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release'
891 '-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41'),
892 ('Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release'
893 '-Valgrind_PreAbandonGpuContext_SK_CPU_LIMIT_SSE41'),
894 ('Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release'
895 '-Valgrind_SK_CPU_LIMIT_SSE41'),
Ben Wagnera317a992017-10-11 00:23:58 -0400896 'Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-Vulkan',
Ben Wagner7cf2fd62017-10-09 14:27:26 -0400897 ('Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release'
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400898 '-ReleaseAndAbandonGpuContext'),
Ben Wagnera317a992017-10-11 00:23:58 -0400899 'Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-Vulkan',
900 'Test-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-Debug-Vulkan',
901 'Test-Win10-Clang-ZBOX-GPU-GTX1070-x86_64-Debug-Vulkan',
Robert Phillips435db422017-10-04 09:38:11 -0400902 'Test-Win10-MSVC-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-ANGLE',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400903 'Test-Win10-MSVC-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-ANGLE',
Ben Wagnerc6b2e6b2017-10-07 18:57:25 -0400904 'Test-Win10-MSVC-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release-ANGLE',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400905 'Test-Win10-MSVC-ShuttleC-GPU-GTX960-x86_64-Debug-ANGLE',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400906 'Test-Win8-MSVC-Golo-CPU-AVX-x86-Debug',
907 'Test-iOS-Clang-iPadPro-GPU-GT7800-arm64-Release',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400908]
borenet1ed2ae42016-07-26 11:52:17 -0700909
910
911def GenTests(api):
Eric Borenf9aa9e52017-04-10 09:56:10 -0400912 for builder in TEST_BUILDERS:
913 test = (
914 api.test(builder) +
915 api.properties(buildername=builder,
916 revision='abc123',
917 path_config='kitchen',
918 swarm_out_dir='[SWARM_OUT_DIR]') +
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')
Ben Wagnerf835c222017-04-30 11:14:51 -0400928 ) +
929 api.step_data('get swarming bot id',
930 stdout=api.raw_io.output('skia-bot-123')) +
931 api.step_data('get swarming task id',
932 stdout=api.raw_io.output('123456'))
Eric Borenf9aa9e52017-04-10 09:56:10 -0400933 )
Eric Borenf9aa9e52017-04-10 09:56:10 -0400934 if 'Win' in builder:
935 test += api.platform('win', 64)
Eric Boren4c7754c2017-04-10 08:19:10 -0400936
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400937 if 'Chromecast' in builder:
938 test += api.step_data(
939 'read chromecast ip',
940 stdout=api.raw_io.output('192.168.1.2:5555'))
941
Eric Borenf9aa9e52017-04-10 09:56:10 -0400942 if 'ChromeOS' in builder:
943 test += api.step_data(
944 'read chromeos ip',
945 stdout=api.raw_io.output('{"user_ip":"foo@127.0.0.1"}'))
Eric Boren4c7754c2017-04-10 08:19:10 -0400946
947
Eric Borenf9aa9e52017-04-10 09:56:10 -0400948 yield test
Eric Boren4c7754c2017-04-10 08:19:10 -0400949
Kevin Lubickfe079d42017-04-12 08:31:48 -0400950 builder = 'Test-Win2k8-MSVC-GCE-CPU-AVX2-x86_64-Release'
951 yield (
952 api.test('trybot') +
953 api.properties(buildername=builder,
954 revision='abc123',
955 path_config='kitchen',
956 swarm_out_dir='[SWARM_OUT_DIR]') +
957 api.properties(patch_storage='gerrit') +
958 api.properties.tryserver(
959 buildername=builder,
960 gerrit_project='skia',
961 gerrit_url='https://skia-review.googlesource.com/',
962 )+
963 api.path.exists(
964 api.path['start_dir'].join('skia'),
965 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
966 'skimage', 'VERSION'),
967 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
968 'skp', 'VERSION'),
969 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
970 'svg', 'VERSION'),
971 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
972 )
973 )
974
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400975 builder = 'Test-Debian9-GCC-GCE-CPU-AVX2-x86_64-Debug'
borenet1ed2ae42016-07-26 11:52:17 -0700976 yield (
Eric Boren4c7754c2017-04-10 08:19:10 -0400977 api.test('failed_dm') +
978 api.properties(buildername=builder,
borenet1ed2ae42016-07-26 11:52:17 -0700979 revision='abc123',
980 path_config='kitchen',
981 swarm_out_dir='[SWARM_OUT_DIR]') +
982 api.path.exists(
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500983 api.path['start_dir'].join('skia'),
984 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400985 'skimage', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500986 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400987 'skp', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500988 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400989 'svg', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500990 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
Eric Boren4c7754c2017-04-10 08:19:10 -0400991 ) +
992 api.step_data('symbolized dm', retcode=1)
993 )
994
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400995 builder = 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-Android'
Eric Boren4c7754c2017-04-10 08:19:10 -0400996 yield (
997 api.test('failed_get_hashes') +
998 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -0400999 revision='abc123',
1000 path_config='kitchen',
1001 swarm_out_dir='[SWARM_OUT_DIR]') +
1002 api.path.exists(
1003 api.path['start_dir'].join('skia'),
1004 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1005 'skimage', 'VERSION'),
1006 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1007 'skp', 'VERSION'),
1008 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1009 'svg', 'VERSION'),
1010 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
1011 ) +
1012 api.step_data('get uninteresting hashes', retcode=1)
1013 )
1014
Ben Wagner6e0a6b32017-09-26 14:11:15 -04001015 builder = 'Test-Android-Clang-NexusPlayer-CPU-Moorefield-x86-Debug-Android'
Eric Boren4c7754c2017-04-10 08:19:10 -04001016 yield (
1017 api.test('failed_push') +
1018 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -04001019 revision='abc123',
1020 path_config='kitchen',
1021 swarm_out_dir='[SWARM_OUT_DIR]') +
1022 api.path.exists(
1023 api.path['start_dir'].join('skia'),
1024 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1025 'skimage', 'VERSION'),
1026 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1027 'skp', 'VERSION'),
1028 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1029 'svg', 'VERSION'),
1030 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
1031 ) +
1032 api.step_data('push [START_DIR]/skia/resources/* '+
1033 '/sdcard/revenge_of_the_skiabot/resources', retcode=1)
1034 )
1035
1036 builder = 'Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Debug-Android'
1037 yield (
1038 api.test('failed_pull') +
1039 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -04001040 revision='abc123',
1041 path_config='kitchen',
1042 swarm_out_dir='[SWARM_OUT_DIR]') +
1043 api.path.exists(
1044 api.path['start_dir'].join('skia'),
1045 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1046 'skimage', 'VERSION'),
1047 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1048 'skp', 'VERSION'),
1049 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1050 'svg', 'VERSION'),
1051 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
1052 ) +
1053 api.step_data('dm', retcode=1) +
1054 api.step_data('pull /sdcard/revenge_of_the_skiabot/dm_out '+
1055 '[CUSTOM_[SWARM_OUT_DIR]]/dm', retcode=1)
borenetbfa5b452016-10-19 10:13:32 -07001056 )
Eric Boren053d7a42017-09-15 08:35:31 -04001057
1058 yield (
Kevin Lubick451b7432017-09-15 14:44:12 -04001059 api.test('internal_bot_1') +
Eric Boren053d7a42017-09-15 08:35:31 -04001060 api.properties(buildername=builder,
1061 revision='abc123',
1062 path_config='kitchen',
1063 swarm_out_dir='[SWARM_OUT_DIR]',
Kevin Lubick451b7432017-09-15 14:44:12 -04001064 internal_hardware_label=1) +
Eric Boren053d7a42017-09-15 08:35:31 -04001065 api.path.exists(
1066 api.path['start_dir'].join('skia'),
1067 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1068 'skimage', 'VERSION'),
1069 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1070 'skp', 'VERSION'),
1071 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1072 'svg', 'VERSION'),
1073 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
1074 )
1075 )
Kevin Lubickbd27d1d2017-10-13 08:01:49 -04001076
1077 yield (
1078 api.test('internal_bot_2') +
1079 api.properties(buildername=builder,
1080 revision='abc123',
1081 path_config='kitchen',
1082 swarm_out_dir='[SWARM_OUT_DIR]',
1083 internal_hardware_label=2) +
1084 api.path.exists(
1085 api.path['start_dir'].join('skia'),
1086 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1087 'skimage', 'VERSION'),
1088 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1089 'skp', 'VERSION'),
1090 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1091 'svg', 'VERSION'),
1092 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
1093 )
1094 )