blob: 5192bcb9fea2871f6f833ea3055c39306a5c43ce [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
105 if 'Ci20' in bot:
106 # This bot is really slow, cut it down to just 8888.
107 configs = ['8888']
108
109 # This bot only differs from vanilla CPU bots in 8888 config.
110 if 'SK_FORCE_RASTER_PIPELINE_BLITTER' in bot:
111 configs = ['8888', 'srgb']
112
113 elif api.vars.builder_cfg.get('cpu_or_gpu') == 'GPU':
114 args.append('--nocpu')
115
116 # Add in either gles or gl configs to the canonical set based on OS
117 sample_count = '8'
118 gl_prefix = 'gl'
119 if 'Android' in bot or 'iOS' in bot:
120 sample_count = '4'
121 # We want to test the OpenGL config not the GLES config on the Shield
122 if 'NVIDIA_Shield' not in bot:
123 gl_prefix = 'gles'
124 elif 'Intel' in bot:
125 sample_count = ''
126 elif 'ChromeOS' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400127 gl_prefix = 'gles'
Eric Boren4c7754c2017-04-10 08:19:10 -0400128
Ben Wagner32fa5102017-08-10 21:25:55 -0400129 configs.extend([gl_prefix, gl_prefix + 'dft', gl_prefix + 'srgb'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400130 if sample_count is not '':
Ben Wagner32fa5102017-08-10 21:25:55 -0400131 configs.append(gl_prefix + 'msaa' + sample_count)
Eric Boren4c7754c2017-04-10 08:19:10 -0400132
Ben Wagner32fa5102017-08-10 21:25:55 -0400133 # The NP produces a long error stream when we run with MSAA. The Tegra3 just
134 # doesn't support it.
135 if ('NexusPlayer' in bot or
136 'Tegra3' in bot or
137 # We aren't interested in fixing msaa bugs on current iOS devices.
138 'iPad4' in bot or
139 'iPadPro' in bot or
140 'iPhone6' in bot or
141 'iPhone7' in bot or
142 # skia:5792
143 'IntelHD530' in bot or
144 'IntelIris540' in bot):
145 configs = [x for x in configs if 'msaa' not in x]
Eric Boren4c7754c2017-04-10 08:19:10 -0400146
Ben Wagner32fa5102017-08-10 21:25:55 -0400147 # The NP produces different images for dft on every run.
148 if 'NexusPlayer' in bot:
149 configs = [x for x in configs if 'dft' not in x]
Eric Boren4c7754c2017-04-10 08:19:10 -0400150
Ben Wagner32fa5102017-08-10 21:25:55 -0400151 if '-TSAN' not in bot and sample_count is not '':
152 if ('TegraK1' in bot or
153 'TegraX1' in bot or
154 'GTX550Ti' in bot or
155 'GTX660' in bot or
156 'QuadroP400' in bot or
157 ('GT610' in bot and 'Ubuntu17' not in bot)):
158 configs.append(gl_prefix + 'nvprdit' + sample_count)
Kevin Lubickae95db42017-04-10 13:05:49 -0400159
Ben Wagner32fa5102017-08-10 21:25:55 -0400160 # We want to test both the OpenGL config and the GLES config on Linux Intel:
161 # GL is used by Chrome, GLES is used by ChromeOS.
Brian Osmanf9810662017-08-30 10:02:10 -0400162 # Also do the Ganesh threading verification test (render with and without
163 # worker threads, using only the SW path renderer, and compare the results).
Ben Wagner32fa5102017-08-10 21:25:55 -0400164 if 'Intel' in bot and api.vars.is_linux:
Brian Osmanf9810662017-08-30 10:02:10 -0400165 configs.extend(['gles', 'glesdft', 'glessrgb', 'gltestthreading'])
166 # skbug.com/6333, skbug.com/6419, skbug.com/6702
167 blacklist('gltestthreading gm _ lcdblendmodes')
168 blacklist('gltestthreading gm _ lcdoverlap')
Brian Osmanbef21ba2017-08-31 13:49:05 -0400169 blacklist('gltestthreading gm _ textbloblooper')
Brian Osman1e75f2a2017-09-07 09:30:44 -0400170 # All of these GMs are flaky, too:
171 blacklist('gltestthreading gm _ bleed_alpha_bmp')
172 blacklist('gltestthreading gm _ bleed_alpha_bmp_shader')
173 blacklist('gltestthreading gm _ bleed_alpha_image')
174 blacklist('gltestthreading gm _ bleed_alpha_image_shader')
175 blacklist('gltestthreading gm _ savelayer_with_backdrop')
176 blacklist('gltestthreading gm _ persp_shaders_bw')
Mike Klein97627d42017-05-11 13:12:48 -0400177
Ben Wagner32fa5102017-08-10 21:25:55 -0400178 # The following devices do not support glessrgb.
179 if 'glessrgb' in configs:
180 if ('IntelHD405' in bot or
181 'IntelIris540' in bot or
Ben Wagnerfef8fdd2017-08-11 14:13:56 -0400182 'IntelIris640' in bot or
Ben Wagner32fa5102017-08-10 21:25:55 -0400183 'IntelBayTrail' in bot or
184 'IntelHD2000' in bot or
185 'AndroidOne' in bot or
186 'Nexus7' in bot or
187 'NexusPlayer' in bot):
188 configs.remove('glessrgb')
189
190 # Test instanced rendering on a limited number of platforms
191 if 'Nexus6' in bot:
192 # inst msaa isn't working yet on Adreno.
193 configs.append(gl_prefix + 'inst')
194 elif 'NVIDIA_Shield' in bot or 'PixelC' in bot:
195 # Multisampled instanced configs use nvpr so we substitute inst msaa
196 # configs for nvpr msaa configs.
197 old = gl_prefix + 'nvpr'
198 new = gl_prefix + 'inst'
199 configs = [x.replace(old, new) for x in configs]
200 # We also test non-msaa instanced.
201 configs.append(new)
Ben Wagnercc4221b2017-08-17 17:29:04 -0400202 elif 'MacMini7.1' in bot:
Ben Wagner32fa5102017-08-10 21:25:55 -0400203 configs.extend([gl_prefix + 'inst'])
204
205 # CommandBuffer bot *only* runs the command_buffer config.
206 if 'CommandBuffer' in bot:
207 configs = ['commandbuffer']
208
209 # ANGLE bot *only* runs the angle configs
210 if 'ANGLE' in bot:
211 configs = ['angle_d3d11_es2',
212 'angle_d3d9_es2',
213 'angle_gl_es2',
214 'angle_d3d11_es3']
215 if sample_count is not '':
216 configs.append('angle_d3d11_es2_msaa' + sample_count)
217 configs.append('angle_d3d11_es3_msaa' + sample_count)
218
219 # Vulkan bot *only* runs the vk config.
220 if 'Vulkan' in bot:
221 configs = ['vk']
222
223 if 'ChromeOS' in bot:
224 # Just run GLES for now - maybe add gles_msaa4 in the future
225 configs = ['gles']
226
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400227 if 'Chromecast' in bot:
228 configs = ['gles', '8888']
229
Ben Wagner32fa5102017-08-10 21:25:55 -0400230 # Test coverage counting path renderer.
231 if 'CCPR' in bot:
232 configs = [c for c in configs if c == 'gl' or c == 'gles']
233 args.extend(['--pr', 'ccpr'])
Chris Dalton97598a52017-07-18 10:49:07 -0600234
Chris Dalton80ace822017-07-20 10:54:04 -0600235 args.append('--config')
236 args.extend(configs)
237
Eric Boren4c7754c2017-04-10 08:19:10 -0400238 # Run tests, gms, and image decoding tests everywhere.
239 args.extend('--src tests gm image colorImage svg'.split(' '))
240 if 'Vulkan' in bot and 'NexusPlayer' in bot:
241 args.remove('svg')
242 args.remove('image')
Chris Dalton7c304ba2017-09-07 11:57:16 -0600243 elif api.vars.builder_cfg.get('cpu_or_gpu') == 'GPU':
244 # Don't run the 'svgparse_*' svgs on GPU.
245 blacklist('_ svg _ svgparse_')
246 elif bot == 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN':
247 # Only run the CPU SVGs on 8888.
248 blacklist('~8888 svg _ _')
249 else:
250 # On CPU SVGs we only care about parsing. Only run them on the above bot.
251 args.remove('svg')
Eric Boren4c7754c2017-04-10 08:19:10 -0400252
Mike Klein97627d42017-05-11 13:12:48 -0400253 # Eventually I'd like these to pass, but for now just skip 'em.
254 if 'SK_FORCE_RASTER_PIPELINE_BLITTER' in bot:
255 args.remove('tests')
256
Eric Boren4c7754c2017-04-10 08:19:10 -0400257 # TODO: ???
258 blacklist('f16 _ _ dstreadshuffle')
259 blacklist('glsrgb image _ _')
260 blacklist('glessrgb image _ _')
261
Eric Boren4c7754c2017-04-10 08:19:10 -0400262 # Not any point to running these.
263 blacklist('gbr-8888 image _ _')
264 blacklist('gbr-8888 colorImage _ _')
265
266 if 'Valgrind' in bot:
267 # These take 18+ hours to run.
268 blacklist('pdf gm _ fontmgr_iter')
269 blacklist('pdf _ _ PANO_20121023_214540.jpg')
270 blacklist('pdf skp _ worldjournal')
271 blacklist('pdf skp _ desk_baidu.skp')
272 blacklist('pdf skp _ desk_wikipedia.skp')
273 blacklist('_ svg _ _')
274
275 if 'iOS' in bot:
276 blacklist(gl_prefix + ' skp _ _')
277
278 if 'Mac' in bot or 'iOS' in bot:
279 # CG fails on questionable bmps
280 blacklist('_ image gen_platf rgba32abf.bmp')
281 blacklist('_ image gen_platf rgb24prof.bmp')
282 blacklist('_ image gen_platf rgb24lprof.bmp')
283 blacklist('_ image gen_platf 8bpp-pixeldata-cropped.bmp')
284 blacklist('_ image gen_platf 4bpp-pixeldata-cropped.bmp')
285 blacklist('_ image gen_platf 32bpp-pixeldata-cropped.bmp')
286 blacklist('_ image gen_platf 24bpp-pixeldata-cropped.bmp')
287
288 # CG has unpredictable behavior on this questionable gif
289 # It's probably using uninitialized memory
290 blacklist('_ image gen_platf frame_larger_than_image.gif')
291
292 # CG has unpredictable behavior on incomplete pngs
293 # skbug.com/5774
294 blacklist('_ image gen_platf inc0.png')
295 blacklist('_ image gen_platf inc1.png')
296 blacklist('_ image gen_platf inc2.png')
297 blacklist('_ image gen_platf inc3.png')
298 blacklist('_ image gen_platf inc4.png')
299 blacklist('_ image gen_platf inc5.png')
300 blacklist('_ image gen_platf inc6.png')
301 blacklist('_ image gen_platf inc7.png')
302 blacklist('_ image gen_platf inc8.png')
303 blacklist('_ image gen_platf inc9.png')
304 blacklist('_ image gen_platf inc10.png')
305 blacklist('_ image gen_platf inc11.png')
306 blacklist('_ image gen_platf inc12.png')
307 blacklist('_ image gen_platf inc13.png')
308 blacklist('_ image gen_platf inc14.png')
309
Matt Sarett6c50a2e2017-05-01 09:13:05 -0400310 # WIC fails on questionable bmps
Eric Boren4c7754c2017-04-10 08:19:10 -0400311 if 'Win' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400312 blacklist('_ image gen_platf pal8os2v2.bmp')
313 blacklist('_ image gen_platf pal8os2v2-16.bmp')
314 blacklist('_ image gen_platf rgba32abf.bmp')
315 blacklist('_ image gen_platf rgb24prof.bmp')
316 blacklist('_ image gen_platf rgb24lprof.bmp')
317 blacklist('_ image gen_platf 8bpp-pixeldata-cropped.bmp')
318 blacklist('_ image gen_platf 4bpp-pixeldata-cropped.bmp')
319 blacklist('_ image gen_platf 32bpp-pixeldata-cropped.bmp')
320 blacklist('_ image gen_platf 24bpp-pixeldata-cropped.bmp')
Eric Boren4c7754c2017-04-10 08:19:10 -0400321 if 'x86_64' in bot and 'CPU' in bot:
322 # This GM triggers a SkSmallAllocator assert.
323 blacklist('_ gm _ composeshader_bitmap')
324
Matt Sarett6c50a2e2017-05-01 09:13:05 -0400325 if 'Win' in bot or 'Mac' in bot:
Leon Scroggins III3a3cf432017-08-18 13:08:16 -0400326 # WIC and CG fail on arithmetic jpegs
Matt Sarett6c50a2e2017-05-01 09:13:05 -0400327 blacklist('_ image gen_platf testimgari.jpg')
Leon Scroggins III3a3cf432017-08-18 13:08:16 -0400328 # More questionable bmps that fail on Mac, too. skbug.com/6984
329 blacklist('_ image gen_platf rle8-height-negative.bmp')
330 blacklist('_ image gen_platf rle4-height-negative.bmp')
Matt Sarett6c50a2e2017-05-01 09:13:05 -0400331
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400332 if 'Android' in bot or 'iOS' in bot or 'Chromecast' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400333 # This test crashes the N9 (perhaps because of large malloc/frees). It also
334 # is fairly slow and not platform-specific. So we just disable it on all of
335 # Android and iOS. skia:5438
336 blacklist('_ test _ GrShape')
337
Eric Boren4c7754c2017-04-10 08:19:10 -0400338 # skia:4095
Mike Reedfb499092017-06-26 13:53:32 +0000339 bad_serialize_gms = ['bleed_image',
Eric Boren4c7754c2017-04-10 08:19:10 -0400340 'c_gms',
341 'colortype',
342 'colortype_xfermodes',
343 'drawfilter',
344 'fontmgr_bounds_0.75_0',
345 'fontmgr_bounds_1_-0.25',
346 'fontmgr_bounds',
347 'fontmgr_match',
348 'fontmgr_iter',
349 'imagemasksubset']
350
351 # skia:5589
352 bad_serialize_gms.extend(['bitmapfilters',
353 'bitmapshaders',
354 'bleed',
355 'bleed_alpha_bmp',
356 'bleed_alpha_bmp_shader',
357 'convex_poly_clip',
358 'extractalpha',
359 'filterbitmap_checkerboard_32_32_g8',
360 'filterbitmap_image_mandrill_64',
361 'shadows',
362 'simpleaaclip_aaclip'])
363 # skia:5595
364 bad_serialize_gms.extend(['composeshader_bitmap',
365 'scaled_tilemodes_npot',
366 'scaled_tilemodes'])
367
368 # skia:5778
369 bad_serialize_gms.append('typefacerendering_pfaMac')
370 # skia:5942
371 bad_serialize_gms.append('parsedpaths')
372
373 # these use a custom image generator which doesn't serialize
374 bad_serialize_gms.append('ImageGeneratorExternal_rect')
375 bad_serialize_gms.append('ImageGeneratorExternal_shader')
376
377 # skia:6189
378 bad_serialize_gms.append('shadow_utils')
379
Matt Sarett9f3dcb32017-05-04 08:53:32 -0400380 # Not expected to round trip encoding/decoding.
381 bad_serialize_gms.append('makecolorspace')
382
Eric Boren4c7754c2017-04-10 08:19:10 -0400383 for test in bad_serialize_gms:
384 blacklist(['serialize-8888', 'gm', '_', test])
385
386 if 'Mac' not in bot:
387 for test in ['bleed_alpha_image', 'bleed_alpha_image_shader']:
388 blacklist(['serialize-8888', 'gm', '_', test])
389 # It looks like we skip these only for out-of-memory concerns.
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400390 if 'Win' in bot or 'Android' in bot or 'Chromecast' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400391 for test in ['verylargebitmap', 'verylarge_picture_image']:
392 blacklist(['serialize-8888', 'gm', '_', test])
Ben Wagner2e4e73f2017-09-08 15:21:44 -0400393 if 'Mac' in bot and 'CPU' in bot:
Ben Wagner38db79f2017-08-23 15:05:50 -0400394 # skia:6992
Ben Wagner6f98bc62017-09-05 16:02:28 -0400395 blacklist(['pic-8888', 'gm', '_', 'encode-platform'])
Ben Wagner38db79f2017-08-23 15:05:50 -0400396 blacklist(['serialize-8888', 'gm', '_', 'encode-platform'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400397
398 # skia:4769
399 for test in ['drawfilter']:
400 blacklist([ 'sp-8888', 'gm', '_', test])
401 blacklist([ 'pic-8888', 'gm', '_', test])
402 blacklist(['2ndpic-8888', 'gm', '_', test])
403 blacklist([ 'lite-8888', 'gm', '_', test])
404 # skia:4703
405 for test in ['image-cacherator-from-picture',
406 'image-cacherator-from-raster',
407 'image-cacherator-from-ctable']:
408 blacklist([ 'sp-8888', 'gm', '_', test])
409 blacklist([ 'pic-8888', 'gm', '_', test])
410 blacklist([ '2ndpic-8888', 'gm', '_', test])
411 blacklist(['serialize-8888', 'gm', '_', test])
412
413 # GM that requires raster-backed canvas
414 for test in ['gamut', 'complexclip4_bw', 'complexclip4_aa']:
415 blacklist([ 'sp-8888', 'gm', '_', test])
416 blacklist([ 'pic-8888', 'gm', '_', test])
417 blacklist([ 'lite-8888', 'gm', '_', test])
418 blacklist([ '2ndpic-8888', 'gm', '_', test])
419 blacklist(['serialize-8888', 'gm', '_', test])
420
421 # GM that not support tiles_rt
422 for test in ['complexclip4_bw', 'complexclip4_aa']:
423 blacklist([ 'tiles_rt-8888', 'gm', '_', test])
424
425 # Extensions for RAW images
426 r = ["arw", "cr2", "dng", "nef", "nrw", "orf", "raf", "rw2", "pef", "srw",
427 "ARW", "CR2", "DNG", "NEF", "NRW", "ORF", "RAF", "RW2", "PEF", "SRW"]
428
429 # skbug.com/4888
430 # Blacklist RAW images (and a few large PNGs) on GPU bots
431 # until we can resolve failures.
Matt Sarett929bfeb2017-05-22 10:34:41 -0400432 if 'GPU' in bot:
433 blacklist('_ image _ interlaced1.png')
434 blacklist('_ image _ interlaced2.png')
435 blacklist('_ image _ interlaced3.png')
436 for raw_ext in r:
437 blacklist('_ image _ .%s' % raw_ext)
438
439 # Blacklist memory intensive tests on 32-bit bots.
440 if ('Win2k8' in bot or 'Win8' in bot) and 'x86-' in bot:
441 blacklist('_ image f16 _')
Matt Sarett112565e2017-05-22 13:45:15 -0400442 blacklist('_ image _ abnormal.wbmp')
Eric Boren4c7754c2017-04-10 08:19:10 -0400443 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
Eric Boren4c7754c2017-04-10 08:19:10 -0400449 if 'IntelHD405' in bot and 'Ubuntu16' in bot:
450 # skia:6331
451 blacklist(['glmsaa8', 'image', 'gen_codec_gpu', 'abnormal.wbmp'])
452 blacklist(['glesmsaa4', 'image', 'gen_codec_gpu', 'abnormal.wbmp'])
453
454 if 'Nexus5' in bot:
455 # skia:5876
456 blacklist(['_', 'gm', '_', 'encode-platform'])
457
458 if 'AndroidOne-GPU' in bot: # skia:4697, skia:4704, skia:4694, skia:4705
459 blacklist(['_', 'gm', '_', 'bigblurs'])
460 blacklist(['_', 'gm', '_', 'bleed'])
461 blacklist(['_', 'gm', '_', 'bleed_alpha_bmp'])
462 blacklist(['_', 'gm', '_', 'bleed_alpha_bmp_shader'])
463 blacklist(['_', 'gm', '_', 'bleed_alpha_image'])
464 blacklist(['_', 'gm', '_', 'bleed_alpha_image_shader'])
465 blacklist(['_', 'gm', '_', 'bleed_image'])
466 blacklist(['_', 'gm', '_', 'dropshadowimagefilter'])
467 blacklist(['_', 'gm', '_', 'filterfastbounds'])
468 blacklist([gl_prefix, 'gm', '_', 'imageblurtiled'])
469 blacklist(['_', 'gm', '_', 'imagefiltersclipped'])
470 blacklist(['_', 'gm', '_', 'imagefiltersscaled'])
471 blacklist(['_', 'gm', '_', 'imageresizetiled'])
472 blacklist(['_', 'gm', '_', 'matrixconvolution'])
473 blacklist(['_', 'gm', '_', 'strokedlines'])
474 if sample_count is not '':
475 gl_msaa_config = gl_prefix + 'msaa' + sample_count
476 blacklist([gl_msaa_config, 'gm', '_', 'imageblurtiled'])
477 blacklist([gl_msaa_config, 'gm', '_', 'imagefiltersbase'])
478
479 match = []
480 if 'Valgrind' in bot: # skia:3021
481 match.append('~Threaded')
482
Ben Wagner6c126422017-06-19 12:45:54 -0400483 if 'Valgrind' in bot and 'PreAbandonGpuContext' in bot:
484 # skia:6575
485 match.append('~multipicturedraw_')
486
Ben Wagnerbb3e7ff2017-04-28 15:28:32 -0400487 if 'CommandBuffer' in bot:
488 # https://crbug.com/697030
489 match.append('~HalfFloatAlphaTextureTest')
490
Eric Boren4c7754c2017-04-10 08:19:10 -0400491 if 'AndroidOne' in bot: # skia:4711
492 match.append('~WritePixels')
493
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400494 if 'Chromecast' in bot: # skia:6581
495 match.append('~matrixconvolution')
496 match.append('~blur_image_filter')
497 match.append('~blur_0.01')
498 match.append('~GM_animated-image-blurs')
499
Eric Boren4c7754c2017-04-10 08:19:10 -0400500 if 'NexusPlayer' in bot:
501 match.append('~ResourceCache')
502
503 if 'Nexus10' in bot:
504 match.append('~CopySurface') # skia:5509
505 match.append('~SRGBReadWritePixels') # skia:6097
506
Eric Boren4c7754c2017-04-10 08:19:10 -0400507 if 'GalaxyS6' in bot:
508 match.append('~SpecialImage') # skia:6338
Brian Osmaneee3c092017-06-15 13:25:10 -0400509 match.append('~skbug6653') # skia:6653
Eric Boren4c7754c2017-04-10 08:19:10 -0400510
511 if 'GalaxyS7_G930A' in bot:
512 match.append('~WritePixels') # skia:6427
513
Eric Boren4c7754c2017-04-10 08:19:10 -0400514 if 'MSAN' in bot:
515 match.extend(['~Once', '~Shared']) # Not sure what's up with these tests.
516
517 if 'TSAN' in bot:
Brian Osmanf9810662017-08-30 10:02:10 -0400518 args.extend(['--gpuThreads', '8'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400519 match.extend(['~ReadWriteAlpha']) # Flaky on TSAN-covered on nvidia bots.
520 match.extend(['~RGBA4444TextureTest', # Flakier than they are important.
521 '~RGB565TextureTest'])
522
Greg Daniela86385d2017-06-05 11:34:29 -0400523 if 'Vulkan' in bot and 'Adreno530' in bot:
524 # skia:5777
525 match.extend(['~CopySurface'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400526
527 if 'Vulkan' in bot and 'NexusPlayer' in bot:
Ben Wagner407a3b72017-09-07 22:14:07 -0400528 # skia:6132
529 match.extend(['~gradients_no_texture$',
530 '~tilemodes',
531 '~shadertext$',
532 '~bitmapfilters'])
533 match.append('~GrContextFactory_abandon') #skia:6209
534 # skia:7018
535 match.extend(['~ClearOp',
536 '~ComposedImageFilterBounds_Gpu',
537 '~ImageEncode_Gpu',
538 '~ImageFilterFailAffectsTransparentBlack_Gpu',
539 '~ImageFilterZeroBlurSigma_Gpu',
540 '~ImageNewShader_GPU',
541 '~ImageReadPixels_Gpu',
542 '~ImageScalePixels_Gpu',
543 '~OverdrawSurface_Gpu',
544 '~ReadWriteAlpha',
545 '~SpecialImage_DeferredGpu',
546 '~SpecialImage_Gpu',
547 '~SurfaceSemaphores'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400548
Ben Wagnerbe8ad452017-08-11 15:18:03 -0400549 if ('Vulkan' in bot and api.vars.is_linux and
550 ('IntelIris540' in bot or 'IntelIris640' in bot)):
Eric Boren4c7754c2017-04-10 08:19:10 -0400551 match.extend(['~VkHeapTests']) # skia:6245
552
Ben Wagnerf1debdf2017-06-13 13:37:05 -0400553 if 'Vulkan' in bot and 'IntelIris540' in bot and 'Win' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400554 # skia:6398
555 blacklist(['vk', 'gm', '_', 'aarectmodes'])
556 blacklist(['vk', 'gm', '_', 'aaxfermodes'])
557 blacklist(['vk', 'gm', '_', 'arithmode'])
558 blacklist(['vk', 'gm', '_', 'composeshader_bitmap'])
559 blacklist(['vk', 'gm', '_', 'composeshader_bitmap2'])
560 blacklist(['vk', 'gm', '_', 'dftextCOLR'])
561 blacklist(['vk', 'gm', '_', 'drawregionmodes'])
562 blacklist(['vk', 'gm', '_', 'filterfastbounds'])
563 blacklist(['vk', 'gm', '_', 'fontcache'])
564 blacklist(['vk', 'gm', '_', 'fontmgr_iterWin10'])
565 blacklist(['vk', 'gm', '_', 'fontmgr_iter_factoryWin10'])
566 blacklist(['vk', 'gm', '_', 'fontmgr_matchWin10'])
567 blacklist(['vk', 'gm', '_', 'fontscalerWin'])
568 blacklist(['vk', 'gm', '_', 'fontscalerdistortable'])
569 blacklist(['vk', 'gm', '_', 'gammagradienttext'])
570 blacklist(['vk', 'gm', '_', 'gammatextWin'])
571 blacklist(['vk', 'gm', '_', 'gradtext'])
572 blacklist(['vk', 'gm', '_', 'hairmodes'])
573 blacklist(['vk', 'gm', '_', 'imagefilters_xfermodes'])
574 blacklist(['vk', 'gm', '_', 'imagefiltersclipped'])
575 blacklist(['vk', 'gm', '_', 'imagefiltersgraph'])
576 blacklist(['vk', 'gm', '_', 'imagefiltersscaled'])
577 blacklist(['vk', 'gm', '_', 'imagefiltersstroked'])
578 blacklist(['vk', 'gm', '_', 'imagefilterstransformed'])
579 blacklist(['vk', 'gm', '_', 'imageresizetiled'])
580 blacklist(['vk', 'gm', '_', 'lcdblendmodes'])
581 blacklist(['vk', 'gm', '_', 'lcdoverlap'])
582 blacklist(['vk', 'gm', '_', 'lcdtextWin'])
583 blacklist(['vk', 'gm', '_', 'lcdtextsize'])
584 blacklist(['vk', 'gm', '_', 'matriximagefilter'])
585 blacklist(['vk', 'gm', '_', 'mixedtextblobsCOLR'])
Greg Daniel744d3c52017-06-09 13:50:20 -0400586 blacklist(['vk', 'gm', '_', 'mixershader'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400587 blacklist(['vk', 'gm', '_', 'pictureimagefilter'])
588 blacklist(['vk', 'gm', '_', 'resizeimagefilter'])
589 blacklist(['vk', 'gm', '_', 'rotate_imagefilter'])
590 blacklist(['vk', 'gm', '_', 'savelayer_lcdtext'])
591 blacklist(['vk', 'gm', '_', 'srcmode'])
592 blacklist(['vk', 'gm', '_', 'surfaceprops'])
593 blacklist(['vk', 'gm', '_', 'textblobgeometrychange'])
594 blacklist(['vk', 'gm', '_', 'textbloblooper'])
595 blacklist(['vk', 'gm', '_', 'textblobmixedsizes'])
596 blacklist(['vk', 'gm', '_', 'textblobmixedsizes_df'])
597 blacklist(['vk', 'gm', '_', 'textblobrandomfont'])
598 blacklist(['vk', 'gm', '_', 'textfilter_color'])
599 blacklist(['vk', 'gm', '_', 'textfilter_image'])
600 blacklist(['vk', 'gm', '_', 'typefacerenderingWin'])
601 blacklist(['vk', 'gm', '_', 'varied_text_clipped_lcd'])
602 blacklist(['vk', 'gm', '_', 'varied_text_ignorable_clip_lcd'])
603 blacklist(['vk', 'gm', '_', 'xfermodeimagefilter'])
604 match.append('~ApplyGamma')
605 match.append('~ComposedImageFilterBounds_Gpu')
Matt Sarett77443972017-04-11 11:25:37 -0400606 match.append('~DeferredTextureImage')
Chris Dalton114a3c02017-05-26 15:17:19 -0600607 match.append('~GrMeshTest')
Eric Boren4c7754c2017-04-10 08:19:10 -0400608 match.append('~ImageFilterFailAffectsTransparentBlack_Gpu')
609 match.append('~ImageFilterZeroBlurSigma_Gpu')
610 match.append('~ImageNewShader_GPU')
611 match.append('~NewTextureFromPixmap')
612 match.append('~ReadPixels_Gpu')
613 match.append('~ReadPixels_Texture')
614 match.append('~ReadWriteAlpha')
Brian Osmane18ceb12017-06-15 16:04:45 -0400615 match.append('~skbug6653')
Eric Boren4c7754c2017-04-10 08:19:10 -0400616 match.append('~SRGBReadWritePixels')
617 match.append('~SpecialImage_DeferredGpu')
618 match.append('~SpecialImage_Gpu')
619 match.append('~WritePixels_Gpu')
Brian Osman33ea1362017-04-19 10:51:39 -0400620 match.append('~WritePixelsNonTexture_Gpu')
Eric Boren4c7754c2017-04-10 08:19:10 -0400621 match.append('~XfermodeImageFilterCroppedInput_Gpu')
622
623 if 'IntelIris540' in bot and 'ANGLE' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400624 for config in ['angle_d3d9_es2', 'angle_d3d11_es2', 'angle_gl_es2']:
Brian Salomon6e554e32017-06-23 12:08:10 -0400625 # skia:6103
Eric Boren4c7754c2017-04-10 08:19:10 -0400626 blacklist([config, 'gm', '_', 'multipicturedraw_invpathclip_simple'])
627 blacklist([config, 'gm', '_', 'multipicturedraw_noclip_simple'])
628 blacklist([config, 'gm', '_', 'multipicturedraw_pathclip_simple'])
629 blacklist([config, 'gm', '_', 'multipicturedraw_rectclip_simple'])
630 blacklist([config, 'gm', '_', 'multipicturedraw_rrectclip_simple'])
Brian Salomon6e554e32017-06-23 12:08:10 -0400631 # skia:6141
632 blacklist([config, 'gm', '_', 'discard'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400633
Eric Boren89cd3572017-06-28 13:50:22 -0400634 if 'IntelBayTrail' in bot and api.vars.is_linux:
Eric Boren4c7754c2017-04-10 08:19:10 -0400635 match.append('~ImageStorageLoad') # skia:6358
636
Kevin Lubickae95db42017-04-10 13:05:49 -0400637 if 'Ci20' in bot:
638 match.append('~Codec_Dimensions') # skia:6477
639 match.append('~FontMgrAndroidParser') # skia:6478
640 match.append('~PathOpsSimplify') # skia:6479
641 blacklist(['_', 'gm', '_', 'fast_slow_blurimagefilter']) # skia:6480
642
Kevin Lubickc14e5a72017-08-15 13:22:19 -0400643 if 'PowerVRGX6250' in bot:
644 match.append('~gradients_view_perspective_nodither') #skia:6972
645
Eric Boren4c7754c2017-04-10 08:19:10 -0400646 if blacklisted:
647 args.append('--blacklist')
648 args.extend(blacklisted)
649
650 if match:
651 args.append('--match')
652 args.extend(match)
653
654 # These bots run out of memory running RAW codec tests. Do not run them in
655 # parallel
656 if ('NexusPlayer' in bot or 'Nexus5' in bot or 'Nexus9' in bot
657 or 'Win8-MSVC-ShuttleB' in bot):
658 args.append('--noRAW_threading')
659
Stephan Altmuellere86af692017-07-21 10:12:45 -0400660 # Some people don't like verbose output.
661 verbose = False
662
663 if 'Intel' in bot and api.vars.is_linux and not 'Vulkan' in bot:
664 # TODO(dogben): Track down what's causing bots to die.
665 verbose = True
666
Ben Wagner40c0f242017-04-28 15:55:35 -0400667 if 'Valgrind' in bot and 'PreAbandonGpuContext' in bot:
Ben Wagner47ac0242017-06-27 13:44:36 -0400668 verbose = True
Ben Wagner40c0f242017-04-28 15:55:35 -0400669
Mike Kleinc9089062017-06-26 09:09:32 -0400670 if 'NexusPlayer' in bot and 'CPU' in bot:
671 # The Nexus Player's image decoding tests are slow enough that swarming
672 # times it out for not printing anything frequently enough. --verbose
673 # makes dm print something every time we start or complete a task.
Ben Wagner47ac0242017-06-27 13:44:36 -0400674 verbose = True
675
Stephan Altmuellere86af692017-07-21 10:12:45 -0400676 if 'Android' in bot or 'iOS' in bot:
677 # Enable verbose output on mobile platforms.
678 verbose = True
679
Ben Wagner47ac0242017-06-27 13:44:36 -0400680 if verbose:
Mike Kleinc9089062017-06-26 09:09:32 -0400681 args.append('--verbose')
682
Eric Boren4c7754c2017-04-10 08:19:10 -0400683 return args
684
685
686def key_params(api):
687 """Build a unique key from the builder name (as a list).
688
689 E.g. arch x86 gpu GeForce320M mode MacMini4.1 os Mac10.6
690 """
691 # Don't bother to include role, which is always Test.
692 # TryBots are uploaded elsewhere so they can use the same key.
693 blacklist = ['role', 'is_trybot']
694
695 flat = []
696 for k in sorted(api.vars.builder_cfg.keys()):
697 if k not in blacklist:
698 flat.append(k)
699 flat.append(api.vars.builder_cfg[k])
700 return flat
701
702
703def test_steps(api):
704 """Run the DM test."""
705 use_hash_file = False
706 if api.vars.upload_dm_results:
707 # This must run before we write anything into
708 # api.flavor.device_dirs.dm_dir or we may end up deleting our
709 # output on machines where they're the same.
710 api.flavor.create_clean_host_dir(api.vars.dm_dir)
711 host_dm_dir = str(api.vars.dm_dir)
712 device_dm_dir = str(api.flavor.device_dirs.dm_dir)
713 if host_dm_dir != device_dm_dir:
714 api.flavor.create_clean_device_dir(device_dm_dir)
715
716 # Obtain the list of already-generated hashes.
717 hash_filename = 'uninteresting_hashes.txt'
718
719 # Ensure that the tmp_dir exists.
Robert Iannucci8cd50412017-07-07 14:36:58 -0700720 api.run.run_once(api.file.ensure_directory,
721 'makedirs tmp_dir',
722 api.vars.tmp_dir)
Eric Boren4c7754c2017-04-10 08:19:10 -0400723
724 host_hashes_file = api.vars.tmp_dir.join(hash_filename)
725 hashes_file = api.flavor.device_path_join(
726 api.flavor.device_dirs.tmp_dir, hash_filename)
727 api.run(
728 api.python.inline,
729 'get uninteresting hashes',
730 program="""
731 import contextlib
732 import math
733 import socket
734 import sys
735 import time
736 import urllib2
737
Stephan Altmuellerc19ebc52017-05-30 16:39:17 -0400738 HASHES_URL = 'https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt'
Eric Boren4c7754c2017-04-10 08:19:10 -0400739 RETRIES = 5
740 TIMEOUT = 60
741 WAIT_BASE = 15
742
743 socket.setdefaulttimeout(TIMEOUT)
744 for retry in range(RETRIES):
745 try:
746 with contextlib.closing(
747 urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:
748 hashes = w.read()
749 with open(sys.argv[1], 'w') as f:
750 f.write(hashes)
751 break
752 except Exception as e:
753 print 'Failed to get uninteresting hashes from %s:' % HASHES_URL
754 print e
755 if retry == RETRIES:
756 raise
757 waittime = WAIT_BASE * math.pow(2, retry)
758 print 'Retry in %d seconds.' % waittime
759 time.sleep(waittime)
760 """,
761 args=[host_hashes_file],
762 abort_on_failure=False,
763 fail_build_on_failure=False,
764 infra_step=True)
765
766 if api.path.exists(host_hashes_file):
767 api.flavor.copy_file_to_device(host_hashes_file, hashes_file)
768 use_hash_file = True
769
770 # Run DM.
771 properties = [
772 'gitHash', api.vars.got_revision,
Eric Boren4c7754c2017-04-10 08:19:10 -0400773 'builder', api.vars.builder_name,
Eric Boren4c7754c2017-04-10 08:19:10 -0400774 ]
775 if api.vars.is_trybot:
776 properties.extend([
777 'issue', api.vars.issue,
778 'patchset', api.vars.patchset,
779 'patch_storage', api.vars.patch_storage,
780 ])
Eric Borenf9aa9e52017-04-10 09:56:10 -0400781 properties.extend(['swarming_bot_id', api.vars.swarming_bot_id])
782 properties.extend(['swarming_task_id', api.vars.swarming_task_id])
Eric Boren4c7754c2017-04-10 08:19:10 -0400783
784 args = [
785 'dm',
Eric Boren4c7754c2017-04-10 08:19:10 -0400786 '--resourcePath', api.flavor.device_dirs.resource_dir,
787 '--skps', api.flavor.device_dirs.skp_dir,
788 '--images', api.flavor.device_path_join(
789 api.flavor.device_dirs.images_dir, 'dm'),
790 '--colorImages', api.flavor.device_path_join(
791 api.flavor.device_dirs.images_dir, 'colorspace'),
792 '--nameByHash',
793 '--properties'
794 ] + properties
795
796 args.extend(['--svgs', api.flavor.device_dirs.svg_dir])
797
798 args.append('--key')
799 args.extend(key_params(api))
800 if use_hash_file:
801 args.extend(['--uninterestingHashesFile', hashes_file])
802 if api.vars.upload_dm_results:
803 args.extend(['--writePath', api.flavor.device_dirs.dm_dir])
804
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400805 if 'Chromecast' in api.vars.builder_cfg.get('os', ''):
806 # Due to limited disk space, we only deal with skps and one image.
807 args = [
808 'dm',
809 '--undefok', # This helps branches that may not know new flags.
810 '--resourcePath', api.flavor.device_dirs.resource_dir,
811 '--skps', api.flavor.device_dirs.skp_dir,
812 '--images', api.flavor.device_path_join(
813 api.flavor.device_dirs.resource_dir, 'color_wheel.jpg'),
814 ]
815
Eric Boren89cd3572017-06-28 13:50:22 -0400816 args.extend(dm_flags(api, api.vars.builder_name))
Eric Boren4c7754c2017-04-10 08:19:10 -0400817
Eric Boren896af752017-04-24 13:22:56 -0400818 env = {}
Eric Boren4c7754c2017-04-10 08:19:10 -0400819 if 'Ubuntu16' in api.vars.builder_name:
820 # The vulkan in this asset name simply means that the graphics driver
821 # supports Vulkan. It is also the driver used for GL code.
822 dri_path = api.vars.slave_dir.join('linux_vulkan_intel_driver_release')
823 if 'Debug' in api.vars.builder_name:
824 dri_path = api.vars.slave_dir.join('linux_vulkan_intel_driver_debug')
825
826 if 'Vulkan' in api.vars.builder_name:
827 sdk_path = api.vars.slave_dir.join('linux_vulkan_sdk', 'bin')
828 lib_path = api.vars.slave_dir.join('linux_vulkan_sdk', 'lib')
829 env.update({
830 'PATH':'%%(PATH)s:%s' % sdk_path,
831 'LD_LIBRARY_PATH': '%s:%s' % (lib_path, dri_path),
832 'LIBGL_DRIVERS_PATH': dri_path,
833 'VK_ICD_FILENAMES':'%s' % dri_path.join('intel_icd.x86_64.json'),
834 })
835 else:
836 # Even the non-vulkan NUC jobs could benefit from the newer drivers.
837 env.update({
838 'LD_LIBRARY_PATH': dri_path,
839 'LIBGL_DRIVERS_PATH': dri_path,
840 })
841
842 # See skia:2789.
Ben Wagner988d15e2017-04-27 13:08:50 -0400843 extra_config_parts = api.vars.builder_cfg.get('extra_config', '').split('_')
844 if 'AbandonGpuContext' in extra_config_parts:
Eric Boren4c7754c2017-04-10 08:19:10 -0400845 args.append('--abandonGpuContext')
Ben Wagner988d15e2017-04-27 13:08:50 -0400846 if 'PreAbandonGpuContext' in extra_config_parts:
Eric Boren4c7754c2017-04-10 08:19:10 -0400847 args.append('--preAbandonGpuContext')
Ben Wagner988d15e2017-04-27 13:08:50 -0400848 if 'ReleaseAndAbandonGpuContext' in extra_config_parts:
Eric Boren6ec17e32017-04-26 14:25:29 -0400849 args.append('--releaseAndAbandonGpuContext')
Eric Boren4c7754c2017-04-10 08:19:10 -0400850
Eric Boren896af752017-04-24 13:22:56 -0400851 with api.env(env):
Eric Boren4c7754c2017-04-10 08:19:10 -0400852 api.run(api.flavor.step, 'dm', cmd=args, abort_on_failure=False)
853
854 if api.vars.upload_dm_results:
855 # Copy images and JSON to host machine if needed.
856 api.flavor.copy_directory_contents_to_host(
857 api.flavor.device_dirs.dm_dir, api.vars.dm_dir)
858
859
borenet1ed2ae42016-07-26 11:52:17 -0700860def RunSteps(api):
Eric Boren4c7754c2017-04-10 08:19:10 -0400861 api.core.setup()
Robert Iannucci297a7ef2017-05-12 19:09:38 -0700862 env = {}
Eric Boren4c7754c2017-04-10 08:19:10 -0400863 if 'iOS' in api.vars.builder_name:
864 env['IOS_BUNDLE_ID'] = 'com.google.dm'
Stephan Altmueller63e843d2017-04-25 11:38:38 -0400865 env['IOS_MOUNT_POINT'] = api.vars.slave_dir.join('mnt_iosdevice')
Robert Iannucci297a7ef2017-05-12 19:09:38 -0700866 with api.context(env=env):
Eric Boren4c7754c2017-04-10 08:19:10 -0400867 try:
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400868 if 'Chromecast' in api.vars.builder_name:
869 api.flavor.install(resources=True, skps=True)
870 else:
871 api.flavor.install_everything()
Eric Boren4c7754c2017-04-10 08:19:10 -0400872 test_steps(api)
873 finally:
874 api.flavor.cleanup_steps()
875 api.run.check_failure()
876
877
Eric Borenf9aa9e52017-04-10 09:56:10 -0400878TEST_BUILDERS = [
Kevin Lubickfe079d42017-04-12 08:31:48 -0400879 'Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-Android',
Kevin Lubickae95db42017-04-10 13:05:49 -0400880 'Test-Android-Clang-Ci20-CPU-IngenicJZ4780-mipsel-Release-Android',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400881 'Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-Android',
882 'Test-Android-Clang-GalaxyS7_G930A-GPU-Adreno530-arm64-Debug-Android',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400883 'Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-Android',
Chris Dalton80ace822017-07-20 10:54:04 -0600884 "Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-Android_CCPR",
Kevin Lubickfe079d42017-04-12 08:31:48 -0400885 'Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Release-Android',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400886 'Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-Android',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400887 'Test-Android-Clang-Nexus6p-GPU-Adreno430-arm64-Debug-Android_Vulkan',
Greg Daniela86385d2017-06-05 11:34:29 -0400888 'Test-Android-Clang-PixelXL-GPU-Adreno530-arm64-Debug-Android_Vulkan',
Chris Dalton80ace822017-07-20 10:54:04 -0600889 'Test-Android-Clang-PixelXL-GPU-Adreno530-arm64-Debug-Android_CCPR',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400890 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-Android',
891 'Test-Android-Clang-NexusPlayer-CPU-SSE4-x86-Release-Android',
892 'Test-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-Android_Vulkan',
893 'Test-Android-Clang-PixelC-CPU-TegraX1-arm64-Debug-Android',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400894 'Test-ChromeOS-Clang-Chromebook_C100p-GPU-MaliT764-arm-Debug',
Kevin Lubickc14e5a72017-08-15 13:22:19 -0400895 'Test-ChromeOS-Clang-Chromebook_CB5_312T-GPU-PowerVRGX6250-arm-Debug',
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400896 'Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release',
Ben Wagner38db79f2017-08-23 15:05:50 -0400897 'Test-Mac-Clang-MacMini7.1-CPU-AVX-x86_64-Release',
Ben Wagnercc4221b2017-08-17 17:29:04 -0400898 'Test-Mac-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Debug-CommandBuffer',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400899 'Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN',
900 'Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-MSAN',
901 'Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-TSAN',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400902 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug',
903 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug',
Chris Dalton7c304ba2017-09-07 11:57:16 -0600904 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400905 'Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind',
906 ('Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind' +
907 '_AbandonGpuContext'),
908 ('Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind' +
909 '_PreAbandonGpuContext'),
Eric Borenf9aa9e52017-04-10 09:56:10 -0400910 ('Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-SK_USE_DISCARDABLE_' +
911 'SCALEDIMAGECACHE'),
Kevin Lubickfe079d42017-04-12 08:31:48 -0400912 'Test-Ubuntu16-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug',
913 'Test-Ubuntu16-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-Vulkan',
914 'Test-Ubuntu16-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release',
915 'Test-Ubuntu16-Clang-NUCDE3815TYKHE-GPU-IntelBayTrail-x86_64-Debug',
Ben Wagnerab909b52017-08-09 14:41:31 -0400916 ('Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-Valgrind' +
917 '_PreAbandonGpuContext_SK_CPU_LIMIT_SSE41'),
Leon Scroggins IIIbb8126d2017-05-02 11:14:31 -0400918 'Test-Win8-MSVC-Golo-CPU-AVX-x86-Debug',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400919 'Test-Win10-MSVC-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-Vulkan',
Eric Boren6ec17e32017-04-26 14:25:29 -0400920 ('Test-Win10-MSVC-NUC5i7RYH-GPU-IntelIris6100-x86_64-Release-'
921 'ReleaseAndAbandonGpuContext'),
Kevin Lubickfe079d42017-04-12 08:31:48 -0400922 'Test-Win10-MSVC-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-ANGLE',
923 'Test-Win10-MSVC-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-Vulkan',
924 'Test-Win10-MSVC-ShuttleA-GPU-GTX660-x86_64-Debug-Vulkan',
925 'Test-Win10-MSVC-ShuttleC-GPU-GTX960-x86_64-Debug-ANGLE',
926 'Test-Win10-MSVC-ZBOX-GPU-GTX1070-x86_64-Debug-Vulkan',
927 'Test-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release',
Mike Klein97627d42017-05-11 13:12:48 -0400928 ('Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-'
929 'SK_FORCE_RASTER_PIPELINE_BLITTER'),
Eric Borenf9aa9e52017-04-10 09:56:10 -0400930]
borenet1ed2ae42016-07-26 11:52:17 -0700931
932
933def GenTests(api):
Eric Borenf9aa9e52017-04-10 09:56:10 -0400934 for builder in TEST_BUILDERS:
935 test = (
936 api.test(builder) +
937 api.properties(buildername=builder,
938 revision='abc123',
939 path_config='kitchen',
940 swarm_out_dir='[SWARM_OUT_DIR]') +
941 api.path.exists(
942 api.path['start_dir'].join('skia'),
943 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
944 'skimage', 'VERSION'),
945 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
946 'skp', 'VERSION'),
947 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
948 'svg', 'VERSION'),
949 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
Ben Wagnerf835c222017-04-30 11:14:51 -0400950 ) +
951 api.step_data('get swarming bot id',
952 stdout=api.raw_io.output('skia-bot-123')) +
953 api.step_data('get swarming task id',
954 stdout=api.raw_io.output('123456'))
Eric Borenf9aa9e52017-04-10 09:56:10 -0400955 )
Eric Borenf9aa9e52017-04-10 09:56:10 -0400956 if 'Win' in builder:
957 test += api.platform('win', 64)
Eric Boren4c7754c2017-04-10 08:19:10 -0400958
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400959 if 'Chromecast' in builder:
960 test += api.step_data(
961 'read chromecast ip',
962 stdout=api.raw_io.output('192.168.1.2:5555'))
963
Eric Borenf9aa9e52017-04-10 09:56:10 -0400964 if 'ChromeOS' in builder:
965 test += api.step_data(
966 'read chromeos ip',
967 stdout=api.raw_io.output('{"user_ip":"foo@127.0.0.1"}'))
Eric Boren4c7754c2017-04-10 08:19:10 -0400968
969
Eric Borenf9aa9e52017-04-10 09:56:10 -0400970 yield test
Eric Boren4c7754c2017-04-10 08:19:10 -0400971
Kevin Lubickfe079d42017-04-12 08:31:48 -0400972 builder = 'Test-Win2k8-MSVC-GCE-CPU-AVX2-x86_64-Release'
973 yield (
974 api.test('trybot') +
975 api.properties(buildername=builder,
976 revision='abc123',
977 path_config='kitchen',
978 swarm_out_dir='[SWARM_OUT_DIR]') +
979 api.properties(patch_storage='gerrit') +
980 api.properties.tryserver(
981 buildername=builder,
982 gerrit_project='skia',
983 gerrit_url='https://skia-review.googlesource.com/',
984 )+
985 api.path.exists(
986 api.path['start_dir'].join('skia'),
987 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
988 'skimage', 'VERSION'),
989 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
990 'skp', 'VERSION'),
991 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
992 'svg', 'VERSION'),
993 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
994 )
995 )
996
Eric Boren4c7754c2017-04-10 08:19:10 -0400997 builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug'
borenet1ed2ae42016-07-26 11:52:17 -0700998 yield (
Eric Boren4c7754c2017-04-10 08:19:10 -0400999 api.test('failed_dm') +
1000 api.properties(buildername=builder,
borenet1ed2ae42016-07-26 11:52:17 -07001001 revision='abc123',
1002 path_config='kitchen',
1003 swarm_out_dir='[SWARM_OUT_DIR]') +
1004 api.path.exists(
Ravi Mistry9bcca6a2016-11-21 16:06:19 -05001005 api.path['start_dir'].join('skia'),
1006 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -04001007 'skimage', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -05001008 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -04001009 'skp', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -05001010 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -04001011 'svg', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -05001012 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
Eric Boren4c7754c2017-04-10 08:19:10 -04001013 ) +
1014 api.step_data('symbolized dm', retcode=1)
1015 )
1016
Kevin Lubickfe079d42017-04-12 08:31:48 -04001017 builder = 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-Android'
Eric Boren4c7754c2017-04-10 08:19:10 -04001018 yield (
1019 api.test('failed_get_hashes') +
1020 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -04001021 revision='abc123',
1022 path_config='kitchen',
1023 swarm_out_dir='[SWARM_OUT_DIR]') +
1024 api.path.exists(
1025 api.path['start_dir'].join('skia'),
1026 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1027 'skimage', 'VERSION'),
1028 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1029 'skp', 'VERSION'),
1030 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1031 'svg', 'VERSION'),
1032 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
1033 ) +
1034 api.step_data('get uninteresting hashes', retcode=1)
1035 )
1036
Kevin Lubickfe079d42017-04-12 08:31:48 -04001037 builder = 'Test-Android-Clang-NexusPlayer-CPU-SSE4-x86-Debug-Android'
Eric Boren4c7754c2017-04-10 08:19:10 -04001038 yield (
1039 api.test('failed_push') +
1040 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -04001041 revision='abc123',
1042 path_config='kitchen',
1043 swarm_out_dir='[SWARM_OUT_DIR]') +
1044 api.path.exists(
1045 api.path['start_dir'].join('skia'),
1046 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1047 'skimage', 'VERSION'),
1048 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1049 'skp', 'VERSION'),
1050 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1051 'svg', 'VERSION'),
1052 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
1053 ) +
1054 api.step_data('push [START_DIR]/skia/resources/* '+
1055 '/sdcard/revenge_of_the_skiabot/resources', retcode=1)
1056 )
1057
1058 builder = 'Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Debug-Android'
1059 yield (
1060 api.test('failed_pull') +
1061 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -04001062 revision='abc123',
1063 path_config='kitchen',
1064 swarm_out_dir='[SWARM_OUT_DIR]') +
1065 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 api.step_data('dm', retcode=1) +
1076 api.step_data('pull /sdcard/revenge_of_the_skiabot/dm_out '+
1077 '[CUSTOM_[SWARM_OUT_DIR]]/dm', retcode=1)
borenetbfa5b452016-10-19 10:13:32 -07001078 )