blob: dfe9833beb1683c8a7c53a8cb960ed8f2e2b9dd3 [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 Salomonc203e652017-09-23 08:31:08 -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']
230 args.extend(['--pr', 'ccpr'])
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
342
Eric Boren4c7754c2017-04-10 08:19:10 -0400343 # skia:4095
Mike Reedfb499092017-06-26 13:53:32 +0000344 bad_serialize_gms = ['bleed_image',
Eric Boren4c7754c2017-04-10 08:19:10 -0400345 'c_gms',
346 'colortype',
347 'colortype_xfermodes',
348 'drawfilter',
349 'fontmgr_bounds_0.75_0',
350 'fontmgr_bounds_1_-0.25',
351 'fontmgr_bounds',
352 'fontmgr_match',
353 'fontmgr_iter',
354 'imagemasksubset']
355
356 # skia:5589
357 bad_serialize_gms.extend(['bitmapfilters',
358 'bitmapshaders',
359 'bleed',
360 'bleed_alpha_bmp',
361 'bleed_alpha_bmp_shader',
362 'convex_poly_clip',
363 'extractalpha',
364 'filterbitmap_checkerboard_32_32_g8',
365 'filterbitmap_image_mandrill_64',
366 'shadows',
367 'simpleaaclip_aaclip'])
368 # skia:5595
369 bad_serialize_gms.extend(['composeshader_bitmap',
370 'scaled_tilemodes_npot',
371 'scaled_tilemodes'])
372
373 # skia:5778
374 bad_serialize_gms.append('typefacerendering_pfaMac')
375 # skia:5942
376 bad_serialize_gms.append('parsedpaths')
377
378 # these use a custom image generator which doesn't serialize
379 bad_serialize_gms.append('ImageGeneratorExternal_rect')
380 bad_serialize_gms.append('ImageGeneratorExternal_shader')
381
382 # skia:6189
383 bad_serialize_gms.append('shadow_utils')
384
Matt Sarett9f3dcb32017-05-04 08:53:32 -0400385 # Not expected to round trip encoding/decoding.
386 bad_serialize_gms.append('makecolorspace')
387
Eric Boren4c7754c2017-04-10 08:19:10 -0400388 for test in bad_serialize_gms:
389 blacklist(['serialize-8888', 'gm', '_', test])
390
391 if 'Mac' not in bot:
392 for test in ['bleed_alpha_image', 'bleed_alpha_image_shader']:
393 blacklist(['serialize-8888', 'gm', '_', test])
394 # It looks like we skip these only for out-of-memory concerns.
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400395 if 'Win' in bot or 'Android' in bot or 'Chromecast' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400396 for test in ['verylargebitmap', 'verylarge_picture_image']:
397 blacklist(['serialize-8888', 'gm', '_', test])
Ben Wagner2e4e73f2017-09-08 15:21:44 -0400398 if 'Mac' in bot and 'CPU' in bot:
Ben Wagner38db79f2017-08-23 15:05:50 -0400399 # skia:6992
Ben Wagner6f98bc62017-09-05 16:02:28 -0400400 blacklist(['pic-8888', 'gm', '_', 'encode-platform'])
Ben Wagner38db79f2017-08-23 15:05:50 -0400401 blacklist(['serialize-8888', 'gm', '_', 'encode-platform'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400402
403 # skia:4769
404 for test in ['drawfilter']:
405 blacklist([ 'sp-8888', 'gm', '_', test])
406 blacklist([ 'pic-8888', 'gm', '_', test])
407 blacklist(['2ndpic-8888', 'gm', '_', test])
408 blacklist([ 'lite-8888', 'gm', '_', test])
409 # skia:4703
410 for test in ['image-cacherator-from-picture',
411 'image-cacherator-from-raster',
412 'image-cacherator-from-ctable']:
413 blacklist([ 'sp-8888', 'gm', '_', test])
414 blacklist([ 'pic-8888', 'gm', '_', test])
415 blacklist([ '2ndpic-8888', 'gm', '_', test])
416 blacklist(['serialize-8888', 'gm', '_', test])
417
418 # GM that requires raster-backed canvas
419 for test in ['gamut', 'complexclip4_bw', 'complexclip4_aa']:
420 blacklist([ 'sp-8888', 'gm', '_', test])
421 blacklist([ 'pic-8888', 'gm', '_', test])
422 blacklist([ 'lite-8888', 'gm', '_', test])
423 blacklist([ '2ndpic-8888', 'gm', '_', test])
424 blacklist(['serialize-8888', 'gm', '_', test])
425
426 # GM that not support tiles_rt
427 for test in ['complexclip4_bw', 'complexclip4_aa']:
428 blacklist([ 'tiles_rt-8888', 'gm', '_', test])
429
430 # Extensions for RAW images
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400431 r = ['arw', 'cr2', 'dng', 'nef', 'nrw', 'orf', 'raf', 'rw2', 'pef', 'srw',
432 'ARW', 'CR2', 'DNG', 'NEF', 'NRW', 'ORF', 'RAF', 'RW2', 'PEF', 'SRW']
Eric Boren4c7754c2017-04-10 08:19:10 -0400433
434 # skbug.com/4888
435 # Blacklist RAW images (and a few large PNGs) on GPU bots
436 # until we can resolve failures.
Matt Sarett929bfeb2017-05-22 10:34:41 -0400437 if 'GPU' in bot:
438 blacklist('_ image _ interlaced1.png')
439 blacklist('_ image _ interlaced2.png')
440 blacklist('_ image _ interlaced3.png')
441 for raw_ext in r:
442 blacklist('_ image _ .%s' % raw_ext)
443
444 # Blacklist memory intensive tests on 32-bit bots.
445 if ('Win2k8' in bot or 'Win8' in bot) and 'x86-' in bot:
446 blacklist('_ image f16 _')
Matt Sarett112565e2017-05-22 13:45:15 -0400447 blacklist('_ image _ abnormal.wbmp')
Eric Boren4c7754c2017-04-10 08:19:10 -0400448 blacklist('_ image _ interlaced1.png')
449 blacklist('_ image _ interlaced2.png')
450 blacklist('_ image _ interlaced3.png')
451 for raw_ext in r:
452 blacklist('_ image _ .%s' % raw_ext)
453
Eric Boren4c7754c2017-04-10 08:19:10 -0400454 if 'IntelHD405' in bot and 'Ubuntu16' in bot:
455 # skia:6331
456 blacklist(['glmsaa8', 'image', 'gen_codec_gpu', 'abnormal.wbmp'])
457 blacklist(['glesmsaa4', 'image', 'gen_codec_gpu', 'abnormal.wbmp'])
458
459 if 'Nexus5' in bot:
460 # skia:5876
461 blacklist(['_', 'gm', '_', 'encode-platform'])
462
463 if 'AndroidOne-GPU' in bot: # skia:4697, skia:4704, skia:4694, skia:4705
464 blacklist(['_', 'gm', '_', 'bigblurs'])
465 blacklist(['_', 'gm', '_', 'bleed'])
466 blacklist(['_', 'gm', '_', 'bleed_alpha_bmp'])
467 blacklist(['_', 'gm', '_', 'bleed_alpha_bmp_shader'])
468 blacklist(['_', 'gm', '_', 'bleed_alpha_image'])
469 blacklist(['_', 'gm', '_', 'bleed_alpha_image_shader'])
470 blacklist(['_', 'gm', '_', 'bleed_image'])
471 blacklist(['_', 'gm', '_', 'dropshadowimagefilter'])
472 blacklist(['_', 'gm', '_', 'filterfastbounds'])
473 blacklist([gl_prefix, 'gm', '_', 'imageblurtiled'])
474 blacklist(['_', 'gm', '_', 'imagefiltersclipped'])
475 blacklist(['_', 'gm', '_', 'imagefiltersscaled'])
476 blacklist(['_', 'gm', '_', 'imageresizetiled'])
477 blacklist(['_', 'gm', '_', 'matrixconvolution'])
478 blacklist(['_', 'gm', '_', 'strokedlines'])
479 if sample_count is not '':
480 gl_msaa_config = gl_prefix + 'msaa' + sample_count
481 blacklist([gl_msaa_config, 'gm', '_', 'imageblurtiled'])
482 blacklist([gl_msaa_config, 'gm', '_', 'imagefiltersbase'])
483
484 match = []
485 if 'Valgrind' in bot: # skia:3021
486 match.append('~Threaded')
487
Ben Wagner6c126422017-06-19 12:45:54 -0400488 if 'Valgrind' in bot and 'PreAbandonGpuContext' in bot:
489 # skia:6575
490 match.append('~multipicturedraw_')
491
Ben Wagnerbb3e7ff2017-04-28 15:28:32 -0400492 if 'CommandBuffer' in bot:
493 # https://crbug.com/697030
494 match.append('~HalfFloatAlphaTextureTest')
495
Eric Boren4c7754c2017-04-10 08:19:10 -0400496 if 'AndroidOne' in bot: # skia:4711
497 match.append('~WritePixels')
498
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400499 if 'Chromecast' in bot: # skia:6581
500 match.append('~matrixconvolution')
501 match.append('~blur_image_filter')
502 match.append('~blur_0.01')
503 match.append('~GM_animated-image-blurs')
504
Eric Boren4c7754c2017-04-10 08:19:10 -0400505 if 'NexusPlayer' in bot:
506 match.append('~ResourceCache')
507
508 if 'Nexus10' in bot:
509 match.append('~CopySurface') # skia:5509
510 match.append('~SRGBReadWritePixels') # skia:6097
511
Eric Boren4c7754c2017-04-10 08:19:10 -0400512 if 'GalaxyS6' in bot:
513 match.append('~SpecialImage') # skia:6338
Brian Osmaneee3c092017-06-15 13:25:10 -0400514 match.append('~skbug6653') # skia:6653
Eric Boren4c7754c2017-04-10 08:19:10 -0400515
516 if 'GalaxyS7_G930A' in bot:
517 match.append('~WritePixels') # skia:6427
518
Eric Boren4c7754c2017-04-10 08:19:10 -0400519 if 'MSAN' in bot:
520 match.extend(['~Once', '~Shared']) # Not sure what's up with these tests.
521
522 if 'TSAN' in bot:
523 match.extend(['~ReadWriteAlpha']) # Flaky on TSAN-covered on nvidia bots.
524 match.extend(['~RGBA4444TextureTest', # Flakier than they are important.
525 '~RGB565TextureTest'])
526
Brian Osmanc49d11e2017-09-22 09:44:35 -0400527 # By default, we test with GPU threading enabled. Leave PixelC devices
528 # running without threads, just to get some coverage of that code path.
529 if 'PixelC' in bot:
530 args.extend(['--gpuThreads', '0'])
531
Ben Wagneradf17dc2017-09-12 23:41:00 -0400532 if 'float_cast_overflow' in bot and 'CPU' in bot:
533 # skia:4632
534 for config in ['565', '8888', 'f16', 'srgb']:
Ben Wagneradf17dc2017-09-12 23:41:00 -0400535 blacklist([config, 'gm', '_', 'clippedcubic2'])
Ben Wagneradf17dc2017-09-12 23:41:00 -0400536 match.append('~^PathOpsCubicIntersection$')
537 match.append('~^PathOpsCubicLineIntersection$')
Ben Wagneradf17dc2017-09-12 23:41:00 -0400538 match.append('~^PathOpsOpCubicsThreaded$')
539 match.append('~^PathOpsOpLoopsThreaded$')
Ben Wagneradf17dc2017-09-12 23:41:00 -0400540
Greg Daniela86385d2017-06-05 11:34:29 -0400541 if 'Vulkan' in bot and 'Adreno530' in bot:
542 # skia:5777
543 match.extend(['~CopySurface'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400544
545 if 'Vulkan' in bot and 'NexusPlayer' in bot:
Ben Wagner407a3b72017-09-07 22:14:07 -0400546 # skia:6132
547 match.extend(['~gradients_no_texture$',
548 '~tilemodes',
549 '~shadertext$',
550 '~bitmapfilters'])
551 match.append('~GrContextFactory_abandon') #skia:6209
552 # skia:7018
553 match.extend(['~ClearOp',
554 '~ComposedImageFilterBounds_Gpu',
555 '~ImageEncode_Gpu',
556 '~ImageFilterFailAffectsTransparentBlack_Gpu',
557 '~ImageFilterZeroBlurSigma_Gpu',
558 '~ImageNewShader_GPU',
559 '~ImageReadPixels_Gpu',
560 '~ImageScalePixels_Gpu',
561 '~OverdrawSurface_Gpu',
562 '~ReadWriteAlpha',
563 '~SpecialImage_DeferredGpu',
564 '~SpecialImage_Gpu',
565 '~SurfaceSemaphores'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400566
Ben Wagnerbe8ad452017-08-11 15:18:03 -0400567 if ('Vulkan' in bot and api.vars.is_linux and
568 ('IntelIris540' in bot or 'IntelIris640' in bot)):
Eric Boren4c7754c2017-04-10 08:19:10 -0400569 match.extend(['~VkHeapTests']) # skia:6245
570
Ben Wagnerf1debdf2017-06-13 13:37:05 -0400571 if 'Vulkan' in bot and 'IntelIris540' in bot and 'Win' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400572 # skia:6398
573 blacklist(['vk', 'gm', '_', 'aarectmodes'])
574 blacklist(['vk', 'gm', '_', 'aaxfermodes'])
575 blacklist(['vk', 'gm', '_', 'arithmode'])
576 blacklist(['vk', 'gm', '_', 'composeshader_bitmap'])
577 blacklist(['vk', 'gm', '_', 'composeshader_bitmap2'])
578 blacklist(['vk', 'gm', '_', 'dftextCOLR'])
579 blacklist(['vk', 'gm', '_', 'drawregionmodes'])
580 blacklist(['vk', 'gm', '_', 'filterfastbounds'])
581 blacklist(['vk', 'gm', '_', 'fontcache'])
582 blacklist(['vk', 'gm', '_', 'fontmgr_iterWin10'])
583 blacklist(['vk', 'gm', '_', 'fontmgr_iter_factoryWin10'])
584 blacklist(['vk', 'gm', '_', 'fontmgr_matchWin10'])
585 blacklist(['vk', 'gm', '_', 'fontscalerWin'])
586 blacklist(['vk', 'gm', '_', 'fontscalerdistortable'])
587 blacklist(['vk', 'gm', '_', 'gammagradienttext'])
588 blacklist(['vk', 'gm', '_', 'gammatextWin'])
589 blacklist(['vk', 'gm', '_', 'gradtext'])
590 blacklist(['vk', 'gm', '_', 'hairmodes'])
591 blacklist(['vk', 'gm', '_', 'imagefilters_xfermodes'])
592 blacklist(['vk', 'gm', '_', 'imagefiltersclipped'])
593 blacklist(['vk', 'gm', '_', 'imagefiltersgraph'])
594 blacklist(['vk', 'gm', '_', 'imagefiltersscaled'])
595 blacklist(['vk', 'gm', '_', 'imagefiltersstroked'])
596 blacklist(['vk', 'gm', '_', 'imagefilterstransformed'])
597 blacklist(['vk', 'gm', '_', 'imageresizetiled'])
598 blacklist(['vk', 'gm', '_', 'lcdblendmodes'])
599 blacklist(['vk', 'gm', '_', 'lcdoverlap'])
600 blacklist(['vk', 'gm', '_', 'lcdtextWin'])
601 blacklist(['vk', 'gm', '_', 'lcdtextsize'])
602 blacklist(['vk', 'gm', '_', 'matriximagefilter'])
603 blacklist(['vk', 'gm', '_', 'mixedtextblobsCOLR'])
Greg Daniel744d3c52017-06-09 13:50:20 -0400604 blacklist(['vk', 'gm', '_', 'mixershader'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400605 blacklist(['vk', 'gm', '_', 'pictureimagefilter'])
606 blacklist(['vk', 'gm', '_', 'resizeimagefilter'])
607 blacklist(['vk', 'gm', '_', 'rotate_imagefilter'])
608 blacklist(['vk', 'gm', '_', 'savelayer_lcdtext'])
609 blacklist(['vk', 'gm', '_', 'srcmode'])
610 blacklist(['vk', 'gm', '_', 'surfaceprops'])
611 blacklist(['vk', 'gm', '_', 'textblobgeometrychange'])
612 blacklist(['vk', 'gm', '_', 'textbloblooper'])
613 blacklist(['vk', 'gm', '_', 'textblobmixedsizes'])
614 blacklist(['vk', 'gm', '_', 'textblobmixedsizes_df'])
615 blacklist(['vk', 'gm', '_', 'textblobrandomfont'])
616 blacklist(['vk', 'gm', '_', 'textfilter_color'])
617 blacklist(['vk', 'gm', '_', 'textfilter_image'])
618 blacklist(['vk', 'gm', '_', 'typefacerenderingWin'])
619 blacklist(['vk', 'gm', '_', 'varied_text_clipped_lcd'])
620 blacklist(['vk', 'gm', '_', 'varied_text_ignorable_clip_lcd'])
621 blacklist(['vk', 'gm', '_', 'xfermodeimagefilter'])
622 match.append('~ApplyGamma')
623 match.append('~ComposedImageFilterBounds_Gpu')
Matt Sarett77443972017-04-11 11:25:37 -0400624 match.append('~DeferredTextureImage')
Chris Dalton114a3c02017-05-26 15:17:19 -0600625 match.append('~GrMeshTest')
Eric Boren4c7754c2017-04-10 08:19:10 -0400626 match.append('~ImageFilterFailAffectsTransparentBlack_Gpu')
627 match.append('~ImageFilterZeroBlurSigma_Gpu')
628 match.append('~ImageNewShader_GPU')
629 match.append('~NewTextureFromPixmap')
630 match.append('~ReadPixels_Gpu')
631 match.append('~ReadPixels_Texture')
632 match.append('~ReadWriteAlpha')
Brian Osmane18ceb12017-06-15 16:04:45 -0400633 match.append('~skbug6653')
Eric Boren4c7754c2017-04-10 08:19:10 -0400634 match.append('~SRGBReadWritePixels')
635 match.append('~SpecialImage_DeferredGpu')
636 match.append('~SpecialImage_Gpu')
637 match.append('~WritePixels_Gpu')
Brian Osman33ea1362017-04-19 10:51:39 -0400638 match.append('~WritePixelsNonTexture_Gpu')
Eric Boren4c7754c2017-04-10 08:19:10 -0400639 match.append('~XfermodeImageFilterCroppedInput_Gpu')
640
Robert Phillips435db422017-10-04 09:38:11 -0400641 if 'AlphaR2' in bot and 'ANGLE' in bot:
642 # skia:7096
643 match.append('~PinnedImageTest')
644
Eric Boren4c7754c2017-04-10 08:19:10 -0400645 if 'IntelIris540' in bot and 'ANGLE' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -0400646 for config in ['angle_d3d9_es2', 'angle_d3d11_es2', 'angle_gl_es2']:
Brian Salomon6e554e32017-06-23 12:08:10 -0400647 # skia:6103
Eric Boren4c7754c2017-04-10 08:19:10 -0400648 blacklist([config, 'gm', '_', 'multipicturedraw_invpathclip_simple'])
649 blacklist([config, 'gm', '_', 'multipicturedraw_noclip_simple'])
650 blacklist([config, 'gm', '_', 'multipicturedraw_pathclip_simple'])
651 blacklist([config, 'gm', '_', 'multipicturedraw_rectclip_simple'])
652 blacklist([config, 'gm', '_', 'multipicturedraw_rrectclip_simple'])
Brian Salomon6e554e32017-06-23 12:08:10 -0400653 # skia:6141
654 blacklist([config, 'gm', '_', 'discard'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400655
Ben Wagnerc6b2e6b2017-10-07 18:57:25 -0400656 if ('IntelIris6100' in bot or 'IntelHD4400' in bot) and 'ANGLE' in bot:
657 # skia:6857
658 blacklist(['angle_d3d9_es2', 'gm', '_', 'lighting'])
659
Eric Boren89cd3572017-06-28 13:50:22 -0400660 if 'IntelBayTrail' in bot and api.vars.is_linux:
Eric Boren4c7754c2017-04-10 08:19:10 -0400661 match.append('~ImageStorageLoad') # skia:6358
662
Kevin Lubickc14e5a72017-08-15 13:22:19 -0400663 if 'PowerVRGX6250' in bot:
664 match.append('~gradients_view_perspective_nodither') #skia:6972
665
Eric Boren4c7754c2017-04-10 08:19:10 -0400666 if blacklisted:
667 args.append('--blacklist')
668 args.extend(blacklisted)
669
670 if match:
671 args.append('--match')
672 args.extend(match)
673
674 # These bots run out of memory running RAW codec tests. Do not run them in
675 # parallel
676 if ('NexusPlayer' in bot or 'Nexus5' in bot or 'Nexus9' in bot
677 or 'Win8-MSVC-ShuttleB' in bot):
678 args.append('--noRAW_threading')
679
Stephan Altmueller74dac542017-09-11 15:32:21 -0400680 # Let's make all bots produce verbose output by default.
681 args.append('--verbose')
Mike Kleinc9089062017-06-26 09:09:32 -0400682
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 Boren4c7754c2017-04-10 08:19:10 -0400818 # See skia:2789.
Ben Wagner988d15e2017-04-27 13:08:50 -0400819 extra_config_parts = api.vars.builder_cfg.get('extra_config', '').split('_')
820 if 'AbandonGpuContext' in extra_config_parts:
Eric Boren4c7754c2017-04-10 08:19:10 -0400821 args.append('--abandonGpuContext')
Ben Wagner988d15e2017-04-27 13:08:50 -0400822 if 'PreAbandonGpuContext' in extra_config_parts:
Eric Boren4c7754c2017-04-10 08:19:10 -0400823 args.append('--preAbandonGpuContext')
Ben Wagner988d15e2017-04-27 13:08:50 -0400824 if 'ReleaseAndAbandonGpuContext' in extra_config_parts:
Eric Boren6ec17e32017-04-26 14:25:29 -0400825 args.append('--releaseAndAbandonGpuContext')
Eric Boren4c7754c2017-04-10 08:19:10 -0400826
Ben Wagner5655ba42017-10-02 10:48:32 -0400827 api.run(api.flavor.step, 'dm', cmd=args, abort_on_failure=False)
Eric Boren4c7754c2017-04-10 08:19:10 -0400828
829 if api.vars.upload_dm_results:
830 # Copy images and JSON to host machine if needed.
831 api.flavor.copy_directory_contents_to_host(
832 api.flavor.device_dirs.dm_dir, api.vars.dm_dir)
833
834
borenet1ed2ae42016-07-26 11:52:17 -0700835def RunSteps(api):
Eric Boren4c7754c2017-04-10 08:19:10 -0400836 api.core.setup()
Robert Iannucci297a7ef2017-05-12 19:09:38 -0700837 env = {}
Eric Boren4c7754c2017-04-10 08:19:10 -0400838 if 'iOS' in api.vars.builder_name:
839 env['IOS_BUNDLE_ID'] = 'com.google.dm'
Stephan Altmueller63e843d2017-04-25 11:38:38 -0400840 env['IOS_MOUNT_POINT'] = api.vars.slave_dir.join('mnt_iosdevice')
Robert Iannucci297a7ef2017-05-12 19:09:38 -0700841 with api.context(env=env):
Eric Boren4c7754c2017-04-10 08:19:10 -0400842 try:
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400843 if 'Chromecast' in api.vars.builder_name:
844 api.flavor.install(resources=True, skps=True)
845 else:
846 api.flavor.install_everything()
Eric Boren4c7754c2017-04-10 08:19:10 -0400847 test_steps(api)
848 finally:
849 api.flavor.cleanup_steps()
850 api.run.check_failure()
851
852
Eric Borenf9aa9e52017-04-10 09:56:10 -0400853TEST_BUILDERS = [
Kevin Lubickfe079d42017-04-12 08:31:48 -0400854 'Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-Android',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400855 'Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-Android',
856 'Test-Android-Clang-GalaxyS7_G930A-GPU-Adreno530-arm64-Debug-Android',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400857 'Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-Android',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400858 'Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-Android_CCPR',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400859 'Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Release-Android',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400860 'Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-Android',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400861 'Test-Android-Clang-Nexus6p-GPU-Adreno430-arm64-Debug-Android_Vulkan',
862 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-Android',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400863 'Test-Android-Clang-NexusPlayer-CPU-Moorefield-x86-Release-Android',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400864 'Test-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-Android_Vulkan',
865 'Test-Android-Clang-PixelC-CPU-TegraX1-arm64-Debug-Android',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400866 'Test-Android-Clang-PixelXL-GPU-Adreno530-arm64-Debug-Android_CCPR',
867 'Test-Android-Clang-PixelXL-GPU-Adreno530-arm64-Debug-Android_Vulkan',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400868 'Test-ChromeOS-Clang-Chromebook_C100p-GPU-MaliT764-arm-Debug',
Kevin Lubickc14e5a72017-08-15 13:22:19 -0400869 'Test-ChromeOS-Clang-Chromebook_CB5_312T-GPU-PowerVRGX6250-arm-Debug',
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400870 'Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400871 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN',
872 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-MSAN',
Ben Wagner9fb285e2017-10-02 16:53:07 -0400873 ('Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug'
874 '-SK_USE_DISCARDABLE_SCALEDIMAGECACHE'),
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400875 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-UBSAN_float_cast_overflow',
876 ('Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release'
877 '-SK_FORCE_RASTER_PIPELINE_BLITTER'),
878 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-TSAN',
879 'Test-Debian9-GCC-GCE-CPU-AVX2-x86-Debug',
880 'Test-Debian9-GCC-GCE-CPU-AVX2-x86_64-Debug',
Ben Wagner38db79f2017-08-23 15:05:50 -0400881 'Test-Mac-Clang-MacMini7.1-CPU-AVX-x86_64-Release',
Ben Wagnercc4221b2017-08-17 17:29:04 -0400882 'Test-Mac-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Debug-CommandBuffer',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400883 'Test-Ubuntu16-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug',
884 'Test-Ubuntu16-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-Vulkan',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400885 'Test-Ubuntu16-Clang-NUCDE3815TYKHE-GPU-IntelBayTrail-x86_64-Debug',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400886 ('Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release'
887 '-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41'),
888 ('Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release'
889 '-Valgrind_PreAbandonGpuContext_SK_CPU_LIMIT_SSE41'),
890 ('Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release'
891 '-Valgrind_SK_CPU_LIMIT_SSE41'),
Ben Wagner9fb285e2017-10-02 16:53:07 -0400892 ('Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Release'
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400893 '-ReleaseAndAbandonGpuContext'),
Robert Phillips435db422017-10-04 09:38:11 -0400894 'Test-Win10-MSVC-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-ANGLE',
Ben Wagner9fb285e2017-10-02 16:53:07 -0400895 'Test-Win10-MSVC-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-Vulkan',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400896 'Test-Win10-MSVC-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-ANGLE',
897 'Test-Win10-MSVC-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-Vulkan',
Ben Wagnerc6b2e6b2017-10-07 18:57:25 -0400898 'Test-Win10-MSVC-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release-ANGLE',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400899 'Test-Win10-MSVC-ShuttleA-GPU-GTX660-x86_64-Debug-Vulkan',
900 'Test-Win10-MSVC-ShuttleC-GPU-GTX960-x86_64-Debug-ANGLE',
901 'Test-Win10-MSVC-ZBOX-GPU-GTX1070-x86_64-Debug-Vulkan',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400902 'Test-Win8-MSVC-Golo-CPU-AVX-x86-Debug',
903 'Test-iOS-Clang-iPadPro-GPU-GT7800-arm64-Release',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400904]
borenet1ed2ae42016-07-26 11:52:17 -0700905
906
907def GenTests(api):
Eric Borenf9aa9e52017-04-10 09:56:10 -0400908 for builder in TEST_BUILDERS:
909 test = (
910 api.test(builder) +
911 api.properties(buildername=builder,
912 revision='abc123',
913 path_config='kitchen',
914 swarm_out_dir='[SWARM_OUT_DIR]') +
915 api.path.exists(
916 api.path['start_dir'].join('skia'),
917 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
918 'skimage', 'VERSION'),
919 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
920 'skp', 'VERSION'),
921 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
922 'svg', 'VERSION'),
923 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
Ben Wagnerf835c222017-04-30 11:14:51 -0400924 ) +
925 api.step_data('get swarming bot id',
926 stdout=api.raw_io.output('skia-bot-123')) +
927 api.step_data('get swarming task id',
928 stdout=api.raw_io.output('123456'))
Eric Borenf9aa9e52017-04-10 09:56:10 -0400929 )
Eric Borenf9aa9e52017-04-10 09:56:10 -0400930 if 'Win' in builder:
931 test += api.platform('win', 64)
Eric Boren4c7754c2017-04-10 08:19:10 -0400932
Kevin Lubick2dafbd72017-08-31 10:39:05 -0400933 if 'Chromecast' in builder:
934 test += api.step_data(
935 'read chromecast ip',
936 stdout=api.raw_io.output('192.168.1.2:5555'))
937
Eric Borenf9aa9e52017-04-10 09:56:10 -0400938 if 'ChromeOS' in builder:
939 test += api.step_data(
940 'read chromeos ip',
941 stdout=api.raw_io.output('{"user_ip":"foo@127.0.0.1"}'))
Eric Boren4c7754c2017-04-10 08:19:10 -0400942
943
Eric Borenf9aa9e52017-04-10 09:56:10 -0400944 yield test
Eric Boren4c7754c2017-04-10 08:19:10 -0400945
Kevin Lubickfe079d42017-04-12 08:31:48 -0400946 builder = 'Test-Win2k8-MSVC-GCE-CPU-AVX2-x86_64-Release'
947 yield (
948 api.test('trybot') +
949 api.properties(buildername=builder,
950 revision='abc123',
951 path_config='kitchen',
952 swarm_out_dir='[SWARM_OUT_DIR]') +
953 api.properties(patch_storage='gerrit') +
954 api.properties.tryserver(
955 buildername=builder,
956 gerrit_project='skia',
957 gerrit_url='https://skia-review.googlesource.com/',
958 )+
959 api.path.exists(
960 api.path['start_dir'].join('skia'),
961 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
962 'skimage', 'VERSION'),
963 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
964 'skp', 'VERSION'),
965 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
966 'svg', 'VERSION'),
967 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
968 )
969 )
970
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400971 builder = 'Test-Debian9-GCC-GCE-CPU-AVX2-x86_64-Debug'
borenet1ed2ae42016-07-26 11:52:17 -0700972 yield (
Eric Boren4c7754c2017-04-10 08:19:10 -0400973 api.test('failed_dm') +
974 api.properties(buildername=builder,
borenet1ed2ae42016-07-26 11:52:17 -0700975 revision='abc123',
976 path_config='kitchen',
977 swarm_out_dir='[SWARM_OUT_DIR]') +
978 api.path.exists(
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500979 api.path['start_dir'].join('skia'),
980 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400981 'skimage', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500982 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400983 'skp', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500984 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400985 'svg', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500986 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
Eric Boren4c7754c2017-04-10 08:19:10 -0400987 ) +
988 api.step_data('symbolized dm', retcode=1)
989 )
990
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400991 builder = 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-Android'
Eric Boren4c7754c2017-04-10 08:19:10 -0400992 yield (
993 api.test('failed_get_hashes') +
994 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -0400995 revision='abc123',
996 path_config='kitchen',
997 swarm_out_dir='[SWARM_OUT_DIR]') +
998 api.path.exists(
999 api.path['start_dir'].join('skia'),
1000 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1001 'skimage', 'VERSION'),
1002 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1003 'skp', 'VERSION'),
1004 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1005 'svg', 'VERSION'),
1006 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
1007 ) +
1008 api.step_data('get uninteresting hashes', retcode=1)
1009 )
1010
Ben Wagner6e0a6b32017-09-26 14:11:15 -04001011 builder = 'Test-Android-Clang-NexusPlayer-CPU-Moorefield-x86-Debug-Android'
Eric Boren4c7754c2017-04-10 08:19:10 -04001012 yield (
1013 api.test('failed_push') +
1014 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -04001015 revision='abc123',
1016 path_config='kitchen',
1017 swarm_out_dir='[SWARM_OUT_DIR]') +
1018 api.path.exists(
1019 api.path['start_dir'].join('skia'),
1020 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1021 'skimage', 'VERSION'),
1022 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1023 'skp', 'VERSION'),
1024 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1025 'svg', 'VERSION'),
1026 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
1027 ) +
1028 api.step_data('push [START_DIR]/skia/resources/* '+
1029 '/sdcard/revenge_of_the_skiabot/resources', retcode=1)
1030 )
1031
1032 builder = 'Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Debug-Android'
1033 yield (
1034 api.test('failed_pull') +
1035 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -04001036 revision='abc123',
1037 path_config='kitchen',
1038 swarm_out_dir='[SWARM_OUT_DIR]') +
1039 api.path.exists(
1040 api.path['start_dir'].join('skia'),
1041 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1042 'skimage', 'VERSION'),
1043 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1044 'skp', 'VERSION'),
1045 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1046 'svg', 'VERSION'),
1047 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
1048 ) +
1049 api.step_data('dm', retcode=1) +
1050 api.step_data('pull /sdcard/revenge_of_the_skiabot/dm_out '+
1051 '[CUSTOM_[SWARM_OUT_DIR]]/dm', retcode=1)
borenetbfa5b452016-10-19 10:13:32 -07001052 )
Eric Boren053d7a42017-09-15 08:35:31 -04001053
1054 yield (
Kevin Lubick451b7432017-09-15 14:44:12 -04001055 api.test('internal_bot_1') +
Eric Boren053d7a42017-09-15 08:35:31 -04001056 api.properties(buildername=builder,
1057 revision='abc123',
1058 path_config='kitchen',
1059 swarm_out_dir='[SWARM_OUT_DIR]',
Kevin Lubick451b7432017-09-15 14:44:12 -04001060 internal_hardware_label=1) +
Eric Boren053d7a42017-09-15 08:35:31 -04001061 api.path.exists(
1062 api.path['start_dir'].join('skia'),
1063 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1064 'skimage', 'VERSION'),
1065 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1066 'skp', 'VERSION'),
1067 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
1068 'svg', 'VERSION'),
1069 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
1070 )
1071 )