1 # 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 9 DEPS = [ 10 'core', 11 'env', 12 'flavor', 13 'recipe_engine/context', 14 'recipe_engine/file', 15 'recipe_engine/json', 16 'recipe_engine/path', 17 'recipe_engine/platform', 18 'recipe_engine/properties', 19 'recipe_engine/python', 20 'recipe_engine/raw_io', 21 'recipe_engine/step', 22 'run', 23 'vars', 24 ] 25 26 27 def dm_flags(api, bot): 28 args = [] 29 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]) 38 39 # 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 43 # This enables non-deterministic random seeding of the GPU FP optimization 44 # test. 45 # Not Android due to: 46 # - https://skia.googlesource.com/skia/+/ 47 # 5910ed347a638ded8cd4c06dbfda086695df1112/BUILD.gn#160 48 # - https://skia.googlesource.com/skia/+/ 49 # ce06e261e68848ae21cac1052abc16bc07b961bf/tests/ProcessorTest.cpp#307 50 # 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: 55 args.append('--randomProcessorTest') 56 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: 60 args.extend(['--threads', '4']) 61 62 # Nexus7 runs out of memory due to having 4 cores and only 1G RAM. 63 if 'CPU' in bot and 'Nexus7' in bot: 64 args.extend(['--threads', '2']) 65 66 if 'Chromecast' in bot: 67 args.extend(['--threads', '0']) 68 69 # Avoid issues with dynamically exceeding resource cache limits. 70 if 'Test' in bot and 'DISCARDABLE' in bot: 71 args.extend(['--threads', '0']) 72 73 # See if staying on the main thread helps skia:6748. 74 if 'Test-iOS' in bot: 75 args.extend(['--threads', '0']) 76 77 # Android's kernel will occasionally attempt to kill our process, using 78 # SIGINT, in an effort to free up resources. If requested, that signal 79 # is ignored and dm will keep attempting to proceed until we actually 80 # exhaust the available resources. 81 if ('NexusPlayer' in bot or 82 'PixelC' in bot or 83 'Chromecast' in bot): 84 args.append('--ignoreSigInt') 85 86 if api.vars.builder_cfg.get('cpu_or_gpu') == 'CPU': 87 args.append('--nogpu') 88 89 # These are the canonical configs that we would ideally run on all bots. We 90 # may opt out or substitute some below for specific bots 91 configs.extend(['8888', 'srgb', 'pdf']) 92 93 # Runs out of memory on Android bots. Everyone else seems fine. 94 if 'Android' in bot: 95 configs.remove('pdf') 96 97 if '-GCE-' in bot: 98 configs.extend(['g8']) 99 configs.extend(['565']) 100 configs.extend(['f16']) 101 configs.extend(['lite-8888']) # Experimental display list. 102 configs.extend(['gbr-8888']) 103 104 configs.extend(mode + '-8888' for mode in ['serialize', 'tiles_rt', 'pic']) 105 106 # This bot only differs from vanilla CPU bots in 8888 config. 107 if 'SK_FORCE_RASTER_PIPELINE_BLITTER' in bot: 108 configs = ['8888', 'srgb'] 109 110 if 'FSAA' in bot or 'FAAA' in bot or 'FDAA' in bot: 111 # Scan converters shouldn't really be sensitive to different color 112 # configurations. 113 configs = ['8888', 'tiles_rt-8888'] 114 115 if 'NativeFonts' in bot: 116 configs = ['8888'] 117 118 # Just do the basic config on Chromecast to avoid OOM. 119 if 'Chromecast' in bot: 120 configs = ['8888'] 121 122 elif api.vars.builder_cfg.get('cpu_or_gpu') == 'GPU': 123 args.append('--nocpu') 124 125 # Add in either gles or gl configs to the canonical set based on OS 126 sample_count = '8' 127 gl_prefix = 'gl' 128 if 'Android' in bot or 'iOS' in bot: 129 sample_count = '4' 130 # We want to test the OpenGL config not the GLES config on the Shield 131 if 'NVIDIA_Shield' not in bot: 132 gl_prefix = 'gles' 133 elif 'Intel' in bot: 134 sample_count = '' 135 elif 'ChromeOS' in bot: 136 gl_prefix = 'gles' 137 138 if 'NativeFonts' in bot: 139 configs.append(gl_prefix) 140 else: 141 configs.extend([gl_prefix, gl_prefix + 'dft', gl_prefix + 'srgb']) 142 if sample_count is not '': 143 configs.append(gl_prefix + 'msaa' + sample_count) 144 145 # The NP produces a long error stream when we run with MSAA. The Tegra3 just 146 # doesn't support it. 147 if ('NexusPlayer' in bot or 148 'Tegra3' in bot or 149 # We aren't interested in fixing msaa bugs on current iOS devices. 150 'iPad4' in bot or 151 'iPadPro' in bot or 152 'iPhone6' in bot or 153 'iPhone7' in bot or 154 # skia:5792 155 'IntelHD530' in bot or 156 'IntelIris540' in bot): 157 configs = [x for x in configs if 'msaa' not in x] 158 159 # The NP produces different images for dft on every run. 160 if 'NexusPlayer' in bot: 161 configs = [x for x in configs if 'dft' not in x] 162 163 # We want to test both the OpenGL config and the GLES config on Linux Intel: 164 # GL is used by Chrome, GLES is used by ChromeOS. 165 # Also do the Ganesh threading verification test (render with and without 166 # worker threads, using only the SW path renderer, and compare the results). 167 if 'Intel' in bot and api.vars.is_linux: 168 configs.extend(['gles', 'glesdft', 'glessrgb', 'gltestthreading']) 169 # skbug.com/6333, skbug.com/6419, skbug.com/6702 170 blacklist('gltestthreading gm _ lcdblendmodes') 171 blacklist('gltestthreading gm _ lcdoverlap') 172 blacklist('gltestthreading gm _ textbloblooper') 173 # All of these GMs are flaky, too: 174 blacklist('gltestthreading gm _ bleed_alpha_bmp') 175 blacklist('gltestthreading gm _ bleed_alpha_bmp_shader') 176 blacklist('gltestthreading gm _ bleed_alpha_image') 177 blacklist('gltestthreading gm _ bleed_alpha_image_shader') 178 blacklist('gltestthreading gm _ savelayer_with_backdrop') 179 blacklist('gltestthreading gm _ persp_shaders_bw') 180 blacklist('gltestthreading gm _ dftext_blob_persp') 181 182 # The following devices do not support glessrgb. 183 if 'glessrgb' in configs: 184 if ('IntelHD405' in bot or 185 'IntelIris640' in bot or 186 'IntelBayTrail' in bot or 187 'IntelHD2000' in bot or 188 'AndroidOne' in bot or 189 'Nexus7' in bot or 190 'NexusPlayer' in bot): 191 configs.remove('glessrgb') 192 193 # Test SkColorSpaceXformCanvas on a few bots 194 if 'GTX1070' in bot: 195 configs.append('gbr-gl') 196 197 # CommandBuffer bot *only* runs the command_buffer config. 198 if 'CommandBuffer' in bot: 199 configs = ['commandbuffer'] 200 201 # ANGLE bot *only* runs the angle configs 202 if 'ANGLE' in bot: 203 configs = ['angle_d3d11_es2', 204 'angle_d3d9_es2', 205 'angle_gl_es2', 206 'angle_d3d11_es3'] 207 if sample_count is not '': 208 configs.append('angle_d3d11_es2_msaa' + sample_count) 209 configs.append('angle_d3d11_es3_msaa' + sample_count) 210 211 # Vulkan bot *only* runs the vk config. 212 if 'Vulkan' in bot: 213 configs = ['vk'] 214 215 # Test 1010102 on our Linux/NVIDIA bots 216 if 'QuadroP400' in bot and api.vars.is_linux: 217 if 'Vulkan' in bot: 218 configs.append('vk1010102') 219 # Decoding transparent images to 1010102 just looks bad 220 blacklist('vk1010102 image _ _') 221 else: 222 configs.append('gl1010102') 223 # Decoding transparent images to 1010102 just looks bad 224 blacklist('gl1010102 image _ _') 225 226 if 'ChromeOS' in bot: 227 # Just run GLES for now - maybe add gles_msaa4 in the future 228 configs = ['gles'] 229 230 if 'Chromecast' in bot: 231 configs = ['gles'] 232 233 # Test coverage counting path renderer. 234 if 'CCPR' in bot: 235 configs = [c for c in configs if c == 'gl' or c == 'gles'] 236 args.extend(['--pr', 'ccpr', '--cachePathMasks', 'false']) 237 238 tf = api.vars.builder_cfg.get('test_filter') 239 if 'All' != tf: 240 # Expected format: shard_XX_YY 241 parts = tf.split('_') 242 if len(parts) == 3: 243 args.extend(['--shard', parts[1]]) 244 args.extend(['--shards', parts[2]]) 245 else: 246 raise Exception('Invalid task name - bad shards') #pragma: nocover 247 248 args.append('--config') 249 args.extend(configs) 250 251 # Run tests, gms, and image decoding tests everywhere. 252 args.extend('--src tests gm image colorImage svg'.split(' ')) 253 if api.vars.builder_cfg.get('cpu_or_gpu') == 'GPU': 254 # Don't run the 'svgparse_*' svgs on GPU. 255 blacklist('_ svg _ svgparse_') 256 elif bot == 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ASAN': 257 # Only run the CPU SVGs on 8888. 258 blacklist('~8888 svg _ _') 259 else: 260 # On CPU SVGs we only care about parsing. Only run them on the above bot. 261 args.remove('svg') 262 263 # Eventually I'd like these to pass, but for now just skip 'em. 264 if 'SK_FORCE_RASTER_PIPELINE_BLITTER' in bot: 265 args.remove('tests') 266 267 if 'NativeFonts' in bot: # images won't exercise native font integration :) 268 args.remove('image') 269 args.remove('colorImage') 270 271 # TODO: ??? 272 blacklist('f16 _ _ dstreadshuffle') 273 blacklist('glsrgb image _ _') 274 blacklist('glessrgb image _ _') 275 276 # Not any point to running these. 277 blacklist('gbr-8888 image _ _') 278 blacklist('gbr-8888 colorImage _ _') 279 280 # --src image --config g8 means "decode into Gray8", which isn't supported. 281 blacklist('g8 image _ _') 282 blacklist('g8 colorImage _ _') 283 284 if 'Valgrind' in bot: 285 # These take 18+ hours to run. 286 blacklist('pdf gm _ fontmgr_iter') 287 blacklist('pdf _ _ PANO_20121023_214540.jpg') 288 blacklist('pdf skp _ worldjournal') 289 blacklist('pdf skp _ desk_baidu.skp') 290 blacklist('pdf skp _ desk_wikipedia.skp') 291 blacklist('_ svg _ _') 292 293 if 'iOS' in bot: 294 blacklist(gl_prefix + ' skp _ _') 295 296 if 'Mac' in bot or 'iOS' in bot: 297 # CG fails on questionable bmps 298 blacklist('_ image gen_platf rgba32abf.bmp') 299 blacklist('_ image gen_platf rgb24prof.bmp') 300 blacklist('_ image gen_platf rgb24lprof.bmp') 301 blacklist('_ image gen_platf 8bpp-pixeldata-cropped.bmp') 302 blacklist('_ image gen_platf 4bpp-pixeldata-cropped.bmp') 303 blacklist('_ image gen_platf 32bpp-pixeldata-cropped.bmp') 304 blacklist('_ image gen_platf 24bpp-pixeldata-cropped.bmp') 305 306 # CG has unpredictable behavior on this questionable gif 307 # It's probably using uninitialized memory 308 blacklist('_ image gen_platf frame_larger_than_image.gif') 309 310 # CG has unpredictable behavior on incomplete pngs 311 # skbug.com/5774 312 blacklist('_ image gen_platf inc0.png') 313 blacklist('_ image gen_platf inc1.png') 314 blacklist('_ image gen_platf inc2.png') 315 blacklist('_ image gen_platf inc3.png') 316 blacklist('_ image gen_platf inc4.png') 317 blacklist('_ image gen_platf inc5.png') 318 blacklist('_ image gen_platf inc6.png') 319 blacklist('_ image gen_platf inc7.png') 320 blacklist('_ image gen_platf inc8.png') 321 blacklist('_ image gen_platf inc9.png') 322 blacklist('_ image gen_platf inc10.png') 323 blacklist('_ image gen_platf inc11.png') 324 blacklist('_ image gen_platf inc12.png') 325 blacklist('_ image gen_platf inc13.png') 326 blacklist('_ image gen_platf inc14.png') 327 328 # These images fail after Mac 10.13.1 upgrade. 329 blacklist('_ image gen_platf incInterlaced.gif') 330 blacklist('_ image gen_platf inc1.gif') 331 blacklist('_ image gen_platf inc0.gif') 332 blacklist('_ image gen_platf butterfly.gif') 333 334 # WIC fails on questionable bmps 335 if 'Win' in bot: 336 blacklist('_ image gen_platf pal8os2v2.bmp') 337 blacklist('_ image gen_platf pal8os2v2-16.bmp') 338 blacklist('_ image gen_platf rgba32abf.bmp') 339 blacklist('_ image gen_platf rgb24prof.bmp') 340 blacklist('_ image gen_platf rgb24lprof.bmp') 341 blacklist('_ image gen_platf 8bpp-pixeldata-cropped.bmp') 342 blacklist('_ image gen_platf 4bpp-pixeldata-cropped.bmp') 343 blacklist('_ image gen_platf 32bpp-pixeldata-cropped.bmp') 344 blacklist('_ image gen_platf 24bpp-pixeldata-cropped.bmp') 345 if 'x86_64' in bot and 'CPU' in bot: 346 # This GM triggers a SkSmallAllocator assert. 347 blacklist('_ gm _ composeshader_bitmap') 348 349 if 'Win' in bot or 'Mac' in bot: 350 # WIC and CG fail on arithmetic jpegs 351 blacklist('_ image gen_platf testimgari.jpg') 352 # More questionable bmps that fail on Mac, too. skbug.com/6984 353 blacklist('_ image gen_platf rle8-height-negative.bmp') 354 blacklist('_ image gen_platf rle4-height-negative.bmp') 355 356 if 'Android' in bot or 'iOS' in bot or 'Chromecast' in bot: 357 # This test crashes the N9 (perhaps because of large malloc/frees). It also 358 # is fairly slow and not platform-specific. So we just disable it on all of 359 # Android and iOS. skia:5438 360 blacklist('_ test _ GrShape') 361 362 if api.vars.internal_hardware_label == 1: 363 # skia:7046 364 blacklist('_ test _ WritePixelsNonTexture_Gpu') 365 blacklist('_ test _ WritePixelsNonTextureMSAA_Gpu') 366 blacklist('_ test _ WritePixels_Gpu') 367 blacklist('_ test _ WritePixelsMSAA_Gpu') 368 blacklist('_ test _ GrSurfaceRenderability') 369 blacklist('_ test _ ES2BlendWithNoTexture') 370 371 if api.vars.internal_hardware_label == 2: 372 # skia:7160 373 blacklist('_ test _ SRGBReadWritePixels') 374 blacklist('_ test _ SRGBMipMap') 375 376 377 # skia:4095 378 bad_serialize_gms = ['bleed_image', 379 'c_gms', 380 'colortype', 381 'colortype_xfermodes', 382 'drawfilter', 383 'fontmgr_bounds_0.75_0', 384 'fontmgr_bounds_1_-0.25', 385 'fontmgr_bounds', 386 'fontmgr_match', 387 'fontmgr_iter', 388 'imagemasksubset'] 389 390 # skia:5589 391 bad_serialize_gms.extend(['bitmapfilters', 392 'bitmapshaders', 393 'bleed', 394 'bleed_alpha_bmp', 395 'bleed_alpha_bmp_shader', 396 'convex_poly_clip', 397 'extractalpha', 398 'filterbitmap_checkerboard_32_32_g8', 399 'filterbitmap_image_mandrill_64', 400 'shadows', 401 'simpleaaclip_aaclip']) 402 # skia:5595 403 bad_serialize_gms.extend(['composeshader_bitmap', 404 'scaled_tilemodes_npot', 405 'scaled_tilemodes']) 406 407 # skia:5778 408 bad_serialize_gms.append('typefacerendering_pfaMac') 409 # skia:5942 410 bad_serialize_gms.append('parsedpaths') 411 412 # these use a custom image generator which doesn't serialize 413 bad_serialize_gms.append('ImageGeneratorExternal_rect') 414 bad_serialize_gms.append('ImageGeneratorExternal_shader') 415 416 # skia:6189 417 bad_serialize_gms.append('shadow_utils') 418 419 # Not expected to round trip encoding/decoding. 420 bad_serialize_gms.append('all_bitmap_configs') 421 bad_serialize_gms.append('makecolorspace') 422 423 # This GM forces a path to be convex. That property doesn't survive 424 # serialization. 425 bad_serialize_gms.append('analytic_antialias_convex') 426 427 for test in bad_serialize_gms: 428 blacklist(['serialize-8888', 'gm', '_', test]) 429 430 if 'Mac' not in bot: 431 for test in ['bleed_alpha_image', 'bleed_alpha_image_shader']: 432 blacklist(['serialize-8888', 'gm', '_', test]) 433 # It looks like we skip these only for out-of-memory concerns. 434 if 'Win' in bot or 'Android' in bot: 435 for test in ['verylargebitmap', 'verylarge_picture_image']: 436 blacklist(['serialize-8888', 'gm', '_', test]) 437 if 'Mac' in bot and 'CPU' in bot: 438 # skia:6992 439 blacklist(['pic-8888', 'gm', '_', 'encode-platform']) 440 blacklist(['serialize-8888', 'gm', '_', 'encode-platform']) 441 442 # skia:4769 443 for test in ['drawfilter']: 444 blacklist([ 'pic-8888', 'gm', '_', test]) 445 blacklist([ 'lite-8888', 'gm', '_', test]) 446 # skia:4703 447 for test in ['image-cacherator-from-picture', 448 'image-cacherator-from-raster', 449 'image-cacherator-from-ctable']: 450 blacklist([ 'pic-8888', 'gm', '_', test]) 451 blacklist(['serialize-8888', 'gm', '_', test]) 452 453 # GM that requires raster-backed canvas 454 for test in ['gamut', 'complexclip4_bw', 'complexclip4_aa']: 455 blacklist([ 'pic-8888', 'gm', '_', test]) 456 blacklist([ 'lite-8888', 'gm', '_', test]) 457 blacklist(['serialize-8888', 'gm', '_', test]) 458 459 # GM that not support tiles_rt 460 for test in ['complexclip4_bw', 'complexclip4_aa']: 461 blacklist([ 'tiles_rt-8888', 'gm', '_', test]) 462 463 # Extensions for RAW images 464 r = ['arw', 'cr2', 'dng', 'nef', 'nrw', 'orf', 'raf', 'rw2', 'pef', 'srw', 465 'ARW', 'CR2', 'DNG', 'NEF', 'NRW', 'ORF', 'RAF', 'RW2', 'PEF', 'SRW'] 466 467 # skbug.com/4888 468 # Blacklist RAW images (and a few large PNGs) on GPU bots 469 # until we can resolve failures. 470 if 'GPU' in bot: 471 blacklist('_ image _ interlaced1.png') 472 blacklist('_ image _ interlaced2.png') 473 blacklist('_ image _ interlaced3.png') 474 for raw_ext in r: 475 blacklist('_ image _ .%s' % raw_ext) 476 477 # Blacklist memory intensive tests on 32-bit bots. 478 if ('Win8' in bot or 'Win2016' in bot) and 'x86-' in bot: 479 blacklist('_ image f16 _') 480 blacklist('_ image _ abnormal.wbmp') 481 blacklist('_ image _ interlaced1.png') 482 blacklist('_ image _ interlaced2.png') 483 blacklist('_ image _ interlaced3.png') 484 for raw_ext in r: 485 blacklist('_ image _ .%s' % raw_ext) 486 487 if 'IntelHD405' in bot and 'Ubuntu16' in bot: 488 # skia:6331 489 blacklist(['glmsaa8', 'image', 'gen_codec_gpu', 'abnormal.wbmp']) 490 blacklist(['glesmsaa4', 'image', 'gen_codec_gpu', 'abnormal.wbmp']) 491 492 if 'Nexus5' in bot and 'GPU' in bot: 493 # skia:5876 494 blacklist(['_', 'gm', '_', 'encode-platform']) 495 496 if 'AndroidOne-GPU' in bot: # skia:4697, skia:4704, skia:4694, skia:4705 497 blacklist(['_', 'gm', '_', 'bigblurs']) 498 blacklist(['_', 'gm', '_', 'bleed']) 499 blacklist(['_', 'gm', '_', 'bleed_alpha_bmp']) 500 blacklist(['_', 'gm', '_', 'bleed_alpha_bmp_shader']) 501 blacklist(['_', 'gm', '_', 'bleed_alpha_image']) 502 blacklist(['_', 'gm', '_', 'bleed_alpha_image_shader']) 503 blacklist(['_', 'gm', '_', 'bleed_image']) 504 blacklist(['_', 'gm', '_', 'dropshadowimagefilter']) 505 blacklist(['_', 'gm', '_', 'filterfastbounds']) 506 blacklist([gl_prefix, 'gm', '_', 'imageblurtiled']) 507 blacklist(['_', 'gm', '_', 'imagefiltersclipped']) 508 blacklist(['_', 'gm', '_', 'imagefiltersscaled']) 509 blacklist(['_', 'gm', '_', 'imageresizetiled']) 510 blacklist(['_', 'gm', '_', 'matrixconvolution']) 511 blacklist(['_', 'gm', '_', 'strokedlines']) 512 if sample_count is not '': 513 gl_msaa_config = gl_prefix + 'msaa' + sample_count 514 blacklist([gl_msaa_config, 'gm', '_', 'imageblurtiled']) 515 blacklist([gl_msaa_config, 'gm', '_', 'imagefiltersbase']) 516 517 match = [] 518 if 'Valgrind' in bot: # skia:3021 519 match.append('~Threaded') 520 521 if 'Valgrind' in bot and 'PreAbandonGpuContext' in bot: 522 # skia:6575 523 match.append('~multipicturedraw_') 524 525 if 'CommandBuffer' in bot: 526 # https://crbug.com/697030 527 match.append('~HalfFloatAlphaTextureTest') 528 529 if 'AndroidOne' in bot: 530 match.append('~WritePixels') # skia:4711 531 match.append('~PremulAlphaRoundTrip_Gpu') # skia:7501 532 533 if 'Chromecast' in bot: 534 if 'GPU' in bot: 535 # skia:6687 536 match.append('~animated-image-blurs') 537 match.append('~blur_0.01') 538 match.append('~blur_image_filter') 539 match.append('~imageblur2') 540 match.append('~lighting') 541 match.append('~longpathdash') 542 match.append('~matrixconvolution') 543 match.append('~textblobmixedsizes_df') 544 match.append('~textblobrandomfont') 545 # Blacklisted to avoid OOM (we see DM just end with "broken pipe") 546 match.append('~bigbitmaprect_') 547 match.append('~DrawBitmapRect') 548 match.append('~drawbitmaprect') 549 match.append('~GM_animated-image-blurs') 550 match.append('~ImageFilterBlurLargeImage') 551 match.append('~savelayer_clipmask') 552 match.append('~TextBlobCache') 553 match.append('~verylarge') 554 555 if 'GalaxyS6' in bot: 556 match.append('~SpecialImage') # skia:6338 557 match.append('~skbug6653') # skia:6653 558 559 if 'GalaxyS7_G930A' in bot: 560 match.append('~WritePixels') # skia:6427 561 562 if 'MSAN' in bot: 563 match.extend(['~Once', '~Shared']) # Not sure what's up with these tests. 564 565 if 'TSAN' in bot: 566 match.extend(['~ReadWriteAlpha']) # Flaky on TSAN-covered on nvidia bots. 567 match.extend(['~RGBA4444TextureTest', # Flakier than they are important. 568 '~RGB565TextureTest']) 569 570 # By default, we test with GPU threading enabled, unless specifically 571 # disabled. 572 if 'NoGPUThreads' in bot: 573 args.extend(['--gpuThreads', '0']) 574 575 if 'Vulkan' in bot and 'Adreno530' in bot: 576 # skia:5777 577 match.extend(['~CopySurface']) 578 579 if 'Vulkan' in bot and 'Adreno' in bot: 580 # skia:7663 581 match.extend(['~WritePixelsNonTextureMSAA_Gpu']) 582 match.extend(['~WritePixelsMSAA_Gpu']) 583 584 if 'Vulkan' in bot and 'NexusPlayer' in bot: 585 # skia:6132 586 match.append('~^tilemodes$') 587 match.append('~tilemodes_npot$') 588 match.append('~scaled_tilemodes$') 589 match.append('~emboss') 590 match.append('~^bitmapfilters$') 591 match.append('~^shadertext$') 592 match.append('~^FullScreenClearWithLayers$') #skia:7191 593 match.append('~^GrDefaultPathRendererTest$') #skia:7244 594 match.append('~^GrMSAAPathRendererTest$') #skia:7244 595 # skia:7018 596 match.extend(['~^ClearOp$', 597 '~^ComposedImageFilterBounds_Gpu$', 598 '~^ImageEncode_Gpu$', 599 '~^ImageFilterFailAffectsTransparentBlack_Gpu$', 600 '~^ImageFilterZeroBlurSigma_Gpu$', 601 '~^ImageNewShader_GPU$', 602 '~^ImageReadPixels_Gpu$', 603 '~^ImageScalePixels_Gpu$', 604 '~^ReadWriteAlpha$', 605 '~^SpecialImage_DeferredGpu$', 606 '~^SpecialImage_Gpu$', 607 '~^SurfaceSemaphores$']) 608 609 if 'Vulkan' in bot and api.vars.is_linux and 'IntelIris640' in bot: 610 match.extend(['~VkHeapTests']) # skia:6245 611 612 if 'Vulkan' in bot and api.vars.is_linux and 'IntelHD405' in bot: 613 # skia:7322 614 blacklist(['vk', 'gm', '_', 'skbug_257']) 615 match.append('~^ClearOp$') 616 match.append('~^CopySurface$') 617 match.append('~^ImageNewShader_GPU$') 618 match.append('~^InitialTextureClear$') 619 match.append('~^PinnedImageTest$') 620 match.append('~^ReadPixels_Gpu$') 621 match.append('~^ReadPixels_Texture$') 622 match.append('~^SRGBReadWritePixels$') 623 match.append('~^VkUploadPixelsTests$') 624 match.append('~^WritePixelsNonTexture_Gpu$') 625 match.append('~^WritePixelsNonTextureMSAA_Gpu$') 626 match.append('~^WritePixels_Gpu$') 627 match.append('~^WritePixelsMSAA_Gpu$') 628 match.append('~^skbug6653$') 629 630 if 'Vulkan' in bot and 'IntelIris540' in bot and 'Win' in bot: 631 # skia:6398 632 blacklist(['vk', 'gm', '_', 'aarectmodes']) 633 blacklist(['vk', 'gm', '_', 'aaxfermodes']) 634 blacklist(['vk', 'gm', '_', 'arithmode']) 635 blacklist(['vk', 'gm', '_', 'composeshader']) 636 blacklist(['vk', 'gm', '_', 'composeshader_alpha']) 637 blacklist(['vk', 'gm', '_', 'composeshader_bitmap']) 638 blacklist(['vk', 'gm', '_', 'composeshader_bitmap2']) 639 blacklist(['vk', 'gm', '_', 'dont_clip_to_layer']) 640 blacklist(['vk', 'gm', '_', 'dftext']) 641 blacklist(['vk', 'gm', '_', 'drawregionmodes']) 642 blacklist(['vk', 'gm', '_', 'filterfastbounds']) 643 blacklist(['vk', 'gm', '_', 'fontcache']) 644 blacklist(['vk', 'gm', '_', 'fontmgr_iter']) 645 blacklist(['vk', 'gm', '_', 'fontmgr_iter_factory']) 646 blacklist(['vk', 'gm', '_', 'fontmgr_match']) 647 blacklist(['vk', 'gm', '_', 'fontscaler']) 648 blacklist(['vk', 'gm', '_', 'fontscalerdistortable']) 649 blacklist(['vk', 'gm', '_', 'gammagradienttext']) 650 blacklist(['vk', 'gm', '_', 'gammatext']) 651 blacklist(['vk', 'gm', '_', 'gradtext']) 652 blacklist(['vk', 'gm', '_', 'hairmodes']) 653 blacklist(['vk', 'gm', '_', 'imagefilters_xfermodes']) 654 blacklist(['vk', 'gm', '_', 'imagefiltersclipped']) 655 blacklist(['vk', 'gm', '_', 'imagefiltersgraph']) 656 blacklist(['vk', 'gm', '_', 'imagefiltersscaled']) 657 blacklist(['vk', 'gm', '_', 'imagefiltersstroked']) 658 blacklist(['vk', 'gm', '_', 'imagefilterstransformed']) 659 blacklist(['vk', 'gm', '_', 'imageresizetiled']) 660 blacklist(['vk', 'gm', '_', 'lcdblendmodes']) 661 blacklist(['vk', 'gm', '_', 'lcdoverlap']) 662 blacklist(['vk', 'gm', '_', 'lcdtext']) 663 blacklist(['vk', 'gm', '_', 'lcdtextsize']) 664 blacklist(['vk', 'gm', '_', 'matriximagefilter']) 665 blacklist(['vk', 'gm', '_', 'mixedtextblobs']) 666 blacklist(['vk', 'gm', '_', 'mixershader']) 667 blacklist(['vk', 'gm', '_', 'pictureimagefilter']) 668 blacklist(['vk', 'gm', '_', 'resizeimagefilter']) 669 blacklist(['vk', 'gm', '_', 'rotate_imagefilter']) 670 blacklist(['vk', 'gm', '_', 'savelayer_lcdtext']) 671 blacklist(['vk', 'gm', '_', 'shadermaskfilter_image']) 672 blacklist(['vk', 'gm', '_', 'srcmode']) 673 blacklist(['vk', 'gm', '_', 'surfaceprops']) 674 blacklist(['vk', 'gm', '_', 'textblobgeometrychange']) 675 blacklist(['vk', 'gm', '_', 'textbloblooper']) 676 blacklist(['vk', 'gm', '_', 'textblobmixedsizes']) 677 blacklist(['vk', 'gm', '_', 'textblobmixedsizes_df']) 678 blacklist(['vk', 'gm', '_', 'textblobrandomfont']) 679 blacklist(['vk', 'gm', '_', 'textfilter_color']) 680 blacklist(['vk', 'gm', '_', 'textfilter_image']) 681 blacklist(['vk', 'gm', '_', 'typefacerendering']) 682 blacklist(['vk', 'gm', '_', 'varied_text_clipped_lcd']) 683 blacklist(['vk', 'gm', '_', 'varied_text_ignorable_clip_lcd']) 684 blacklist(['vk', 'gm', '_', 'xfermodeimagefilter']) 685 match.append('~ApplyGamma') 686 match.append('~ComposedImageFilterBounds_Gpu') 687 match.append('~GrMeshTest') 688 match.append('~ImageFilterFailAffectsTransparentBlack_Gpu') 689 match.append('~ImageFilterZeroBlurSigma_Gpu') 690 match.append('~ImageNewShader_GPU') 691 match.append('~NewTextureFromPixmap') 692 match.append('~ReadPixels_Gpu') 693 match.append('~ReadPixels_Texture') 694 match.append('~ReadWriteAlpha') 695 match.append('~skbug6653') 696 match.append('~SRGBReadWritePixels') 697 match.append('~SpecialImage_DeferredGpu') 698 match.append('~SpecialImage_Gpu') 699 match.append('~WritePixels_Gpu') 700 match.append('~WritePixelsMSAA_Gpu') 701 match.append('~WritePixelsNonTexture_Gpu') 702 match.append('~WritePixelsNonTextureMSAA_Gpu') 703 match.append('~XfermodeImageFilterCroppedInput_Gpu') 704 match.append('~GrDefaultPathRendererTest') #skia:7244 705 match.append('~GrMSAAPathRendererTest') #skia:7244 706 match.append('~SkImage_makeNonTextureImage') 707 708 if (('RadeonR9M470X' in bot or 'RadeonHD7770' in bot) and 'ANGLE' in bot): 709 # skia:7096 710 match.append('~PinnedImageTest') 711 712 if 'IntelIris540' in bot and 'ANGLE' in bot: 713 for config in ['angle_d3d9_es2', 'angle_d3d11_es2', 'angle_gl_es2']: 714 # skia:6103 715 blacklist([config, 'gm', '_', 'multipicturedraw_invpathclip_simple']) 716 blacklist([config, 'gm', '_', 'multipicturedraw_noclip_simple']) 717 blacklist([config, 'gm', '_', 'multipicturedraw_pathclip_simple']) 718 blacklist([config, 'gm', '_', 'multipicturedraw_rectclip_simple']) 719 blacklist([config, 'gm', '_', 'multipicturedraw_rrectclip_simple']) 720 # skia:6141 721 blacklist([config, 'gm', '_', 'discard']) 722 723 if ('IntelIris6100' in bot or 'IntelHD4400' in bot) and 'ANGLE' in bot: 724 # skia:6857 725 blacklist(['angle_d3d9_es2', 'gm', '_', 'lighting']) 726 727 if 'PowerVRGX6250' in bot: 728 match.append('~gradients_view_perspective_nodither') #skia:6972 729 730 if '-arm-' in bot and 'ASAN' in bot: 731 # TODO: can we run with env allocator_may_return_null=1 instead? 732 match.append('~BadImage') 733 734 if 'Mac' in bot and 'IntelHD6000' in bot: 735 # skia:7574 736 match.append('~^ProcessorCloneTest$') 737 match.append('~^GrMeshTest$') 738 739 if 'Mac' in bot and 'IntelHD615' in bot: 740 # skia:7603 741 match.append('~^GrMeshTest$') 742 743 if blacklisted: 744 args.append('--blacklist') 745 args.extend(blacklisted) 746 747 if match: 748 args.append('--match') 749 args.extend(match) 750 751 # These bots run out of memory running RAW codec tests. Do not run them in 752 # parallel 753 if 'NexusPlayer' in bot or 'Nexus5' in bot or 'Nexus9' in bot: 754 args.append('--noRAW_threading') 755 756 if 'FSAA' in bot: 757 args.extend(['--analyticAA', 'false', '--deltaAA', 'false']) 758 if 'FAAA' in bot: 759 args.extend(['--deltaAA', 'false', '--forceAnalyticAA']) 760 if 'FDAA' in bot: 761 args.extend(['--deltaAA', '--forceDeltaAA']) 762 763 if 'NativeFonts' not in bot: 764 args.append('--nonativeFonts') 765 766 if 'GDI' in bot: 767 args.append('--gdi') 768 769 # Let's make all bots produce verbose output by default. 770 args.append('--verbose') 771 772 return args 773 774 775 def key_params(api): 776 """Build a unique key from the builder name (as a list). 777 778 E.g. arch x86 gpu GeForce320M mode MacMini4.1 os Mac10.6 779 """ 780 # Don't bother to include role, which is always Test. 781 blacklist = ['role', 'test_filter'] 782 783 flat = [] 784 for k in sorted(api.vars.builder_cfg.keys()): 785 if k not in blacklist: 786 flat.append(k) 787 flat.append(api.vars.builder_cfg[k]) 788 return flat 789 790 791 def test_steps(api): 792 """Run the DM test.""" 793 use_hash_file = False 794 if api.vars.upload_dm_results: 795 host_dm_dir = str(api.vars.dm_dir) 796 device_dm_dir = str(api.flavor.device_dirs.dm_dir) 797 if host_dm_dir != device_dm_dir: 798 api.flavor.create_clean_device_dir(device_dm_dir) 799 800 # Obtain the list of already-generated hashes. 801 hash_filename = 'uninteresting_hashes.txt' 802 803 # Ensure that the tmp_dir exists. 804 api.run.run_once(api.file.ensure_directory, 805 'makedirs tmp_dir', 806 api.vars.tmp_dir) 807 808 host_hashes_file = api.vars.tmp_dir.join(hash_filename) 809 hashes_file = api.flavor.device_path_join( 810 api.flavor.device_dirs.tmp_dir, hash_filename) 811 api.run( 812 api.python.inline, 813 'get uninteresting hashes', 814 program=""" 815 import contextlib 816 import math 817 import socket 818 import sys 819 import time 820 import urllib2 821 822 HASHES_URL = 'https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt' 823 RETRIES = 5 824 TIMEOUT = 60 825 WAIT_BASE = 15 826 827 socket.setdefaulttimeout(TIMEOUT) 828 for retry in range(RETRIES): 829 try: 830 with contextlib.closing( 831 urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w: 832 hashes = w.read() 833 with open(sys.argv[1], 'w') as f: 834 f.write(hashes) 835 break 836 except Exception as e: 837 print 'Failed to get uninteresting hashes from %s:' % HASHES_URL 838 print e 839 if retry == RETRIES: 840 raise 841 waittime = WAIT_BASE * math.pow(2, retry) 842 print 'Retry in %d seconds.' % waittime 843 time.sleep(waittime) 844 """, 845 args=[host_hashes_file], 846 abort_on_failure=False, 847 fail_build_on_failure=False, 848 infra_step=True) 849 850 if api.path.exists(host_hashes_file): 851 api.flavor.copy_file_to_device(host_hashes_file, hashes_file) 852 use_hash_file = True 853 854 # Run DM. 855 properties = [ 856 'gitHash', api.vars.got_revision, 857 'builder', api.vars.builder_name, 858 'buildbucket_build_id', api.properties.get('buildbucket_build_id', ''), 859 ] 860 if api.vars.is_trybot: 861 properties.extend([ 862 'issue', api.vars.issue, 863 'patchset', api.vars.patchset, 864 'patch_storage', api.vars.patch_storage, 865 ]) 866 properties.extend(['swarming_bot_id', api.vars.swarming_bot_id]) 867 properties.extend(['swarming_task_id', api.vars.swarming_task_id]) 868 869 if 'Chromecast' in api.vars.builder_cfg.get('os', ''): 870 # Due to limited disk space, we only deal with skps and one image. 871 args = [ 872 'dm', 873 '--resourcePath', api.flavor.device_dirs.resource_dir, 874 '--skps', api.flavor.device_dirs.skp_dir, 875 '--images', api.flavor.device_path_join( 876 api.flavor.device_dirs.resource_dir, 'images', 'color_wheel.jpg'), 877 '--nameByHash', 878 '--properties' 879 ] + properties 880 else: 881 args = [ 882 'dm', 883 '--resourcePath', api.flavor.device_dirs.resource_dir, 884 '--skps', api.flavor.device_dirs.skp_dir, 885 '--images', api.flavor.device_path_join( 886 api.flavor.device_dirs.images_dir, 'dm'), 887 '--colorImages', api.flavor.device_path_join( 888 api.flavor.device_dirs.images_dir, 'colorspace'), 889 '--nameByHash', 890 '--properties' 891 ] + properties 892 893 args.extend(['--svgs', api.flavor.device_dirs.svg_dir]) 894 895 args.append('--key') 896 args.extend(key_params(api)) 897 898 if use_hash_file: 899 args.extend(['--uninterestingHashesFile', hashes_file]) 900 if api.vars.upload_dm_results: 901 args.extend(['--writePath', api.flavor.device_dirs.dm_dir]) 902 903 args.extend(dm_flags(api, api.vars.builder_name)) 904 905 # See skia:2789. 906 if 'AbandonGpuContext' in api.vars.extra_tokens: 907 args.append('--abandonGpuContext') 908 if 'PreAbandonGpuContext' in api.vars.extra_tokens: 909 args.append('--preAbandonGpuContext') 910 if 'ReleaseAndAbandonGpuContext' in api.vars.extra_tokens: 911 args.append('--releaseAndAbandonGpuContext') 912 913 api.run(api.flavor.step, 'dm', cmd=args, abort_on_failure=False) 914 915 if api.vars.upload_dm_results: 916 # Copy images and JSON to host machine if needed. 917 api.flavor.copy_directory_contents_to_host( 918 api.flavor.device_dirs.dm_dir, api.vars.dm_dir) 919 920 921 def RunSteps(api): 922 api.core.setup() 923 env = {} 924 if 'iOS' in api.vars.builder_name: 925 env['IOS_BUNDLE_ID'] = 'com.google.dm' 926 env['IOS_MOUNT_POINT'] = api.vars.slave_dir.join('mnt_iosdevice') 927 with api.context(env=env): 928 try: 929 if 'Chromecast' in api.vars.builder_name: 930 api.flavor.install(resources=True, skps=True) 931 else: 932 api.flavor.install_everything() 933 test_steps(api) 934 finally: 935 api.flavor.cleanup_steps() 936 api.run.check_failure() 937 938 939 TEST_BUILDERS = [ 940 'Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android', 941 'Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-All-Android', 942 'Test-Android-Clang-GalaxyS7_G930A-GPU-Adreno530-arm64-Debug-All-Android', 943 'Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-All-Android', 944 'Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-All-Android_CCPR', 945 'Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-All-Android', 946 'Test-Android-Clang-Nexus5x-GPU-Adreno418-arm-Debug-All-Android_ASAN', 947 'Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android_ASAN', 948 ('Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All' 949 '-Android_NoGPUThreads'), 950 'Test-Android-Clang-Nexus7-CPU-Tegra3-arm-Release-All-Android', 951 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-All-Android', 952 'Test-Android-Clang-NexusPlayer-CPU-Moorefield-x86-Release-All-Android', 953 'Test-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-All-Android_Vulkan', 954 'Test-Android-Clang-Pixel-GPU-Adreno530-arm64-Debug-All-Android_CCPR', 955 'Test-Android-Clang-Pixel-GPU-Adreno530-arm64-Debug-All-Android_Vulkan', 956 'Test-ChromeOS-Clang-ASUSChromebookFlipC100-GPU-MaliT764-arm-Debug-All', 957 ('Test-ChromeOS-Clang-AcerChromebookR13Convertible-GPU-PowerVRGX6250-' 958 'arm-Debug-All'), 959 'Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release-All', 960 'Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release-All', 961 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ASAN', 962 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-shard_00_10-Coverage', 963 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-MSAN', 964 ('Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All' 965 '-SK_USE_DISCARDABLE_SCALEDIMAGECACHE'), 966 ('Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All' 967 '-SK_FORCE_RASTER_PIPELINE_BLITTER'), 968 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-TSAN', 969 'Test-Debian9-GCC-GCE-CPU-AVX2-x86-Debug-All', 970 'Test-Debian9-GCC-GCE-CPU-AVX2-x86_64-Debug-All', 971 'Test-Mac-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Debug-All', 972 'Test-Mac-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All', 973 'Test-Mac-Clang-MacMini7.1-CPU-AVX-x86_64-Release-All', 974 'Test-Mac-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Debug-All-CommandBuffer', 975 'Test-Mac-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Release-All-NativeFonts', 976 'Test-Ubuntu16-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug-All', 977 'Test-Ubuntu16-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Release-All-Vulkan', 978 'Test-Ubuntu16-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-Vulkan', 979 'Test-Ubuntu16-Clang-NUCDE3815TYKHE-GPU-IntelBayTrail-x86_64-Debug-All', 980 'Test-Ubuntu17-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Vulkan_Coverage', 981 ('Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-All' 982 '-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41'), 983 ('Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-All' 984 '-Valgrind_PreAbandonGpuContext_SK_CPU_LIMIT_SSE41'), 985 ('Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-All' 986 '-Valgrind_SK_CPU_LIMIT_SSE41'), 987 'Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE', 988 'Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-Vulkan', 989 ('Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All' 990 '-ReleaseAndAbandonGpuContext'), 991 'Test-Win10-Clang-NUC5i7RYH-CPU-AVX2-x86_64-Debug-All-NativeFonts', 992 'Test-Win10-Clang-NUC5i7RYH-CPU-AVX2-x86_64-Debug-All-NativeFonts_GDI', 993 'Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE', 994 'Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-Vulkan', 995 'Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release-All-ANGLE', 996 'Test-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-Debug-All-Vulkan', 997 'Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE', 998 'Test-Win10-Clang-ZBOX-GPU-GTX1070-x86_64-Debug-All', 999 'Test-Win10-Clang-ZBOX-GPU-GTX1070-x86_64-Debug-All-Vulkan', 1000 'Test-Win2016-Clang-GCE-CPU-AVX2-x86_64-Debug-All-FAAA', 1001 'Test-Win2016-Clang-GCE-CPU-AVX2-x86_64-Debug-All-FDAA', 1002 'Test-Win2016-Clang-GCE-CPU-AVX2-x86_64-Debug-All-FSAA', 1003 'Test-Win8-MSVC-Golo-CPU-AVX-x86-Debug-All', 1004 'Test-iOS-Clang-iPadPro-GPU-GT7800-arm64-Release-All', 1005 ] 1006 1007 1008 def GenTests(api): 1009 for builder in TEST_BUILDERS: 1010 test = ( 1011 api.test(builder) + 1012 api.properties(buildername=builder, 1013 buildbucket_build_id='123454321', 1014 revision='abc123', 1015 path_config='kitchen', 1016 swarm_out_dir='[SWARM_OUT_DIR]') + 1017 api.path.exists( 1018 api.path['start_dir'].join('skia'), 1019 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1020 'skimage', 'VERSION'), 1021 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1022 'skp', 'VERSION'), 1023 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1024 'svg', 'VERSION'), 1025 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt') 1026 ) + 1027 api.step_data('get swarming bot id', 1028 stdout=api.raw_io.output('skia-bot-123')) + 1029 api.step_data('get swarming task id', 1030 stdout=api.raw_io.output('123456')) 1031 ) 1032 if 'Win' in builder: 1033 test += api.platform('win', 64) 1034 1035 if 'Chromecast' in builder: 1036 test += api.step_data( 1037 'read chromecast ip', 1038 stdout=api.raw_io.output('192.168.1.2:5555')) 1039 1040 if 'ChromeOS' in builder: 1041 test += api.step_data( 1042 'read chromeos ip', 1043 stdout=api.raw_io.output('{"user_ip":"foo (at] 127.0.0.1"}')) 1044 1045 yield test 1046 1047 builder = 'Test-Win2k8-MSVC-GCE-CPU-AVX2-x86_64-Release-All' 1048 yield ( 1049 api.test('trybot') + 1050 api.properties(buildername=builder, 1051 buildbucket_build_id='123454321', 1052 revision='abc123', 1053 path_config='kitchen', 1054 swarm_out_dir='[SWARM_OUT_DIR]') + 1055 api.properties(patch_storage='gerrit') + 1056 api.properties.tryserver( 1057 buildername=builder, 1058 gerrit_project='skia', 1059 gerrit_url='https://skia-review.googlesource.com/', 1060 )+ 1061 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 ) 1072 1073 builder = 'Test-Debian9-GCC-GCE-CPU-AVX2-x86_64-Debug-All' 1074 yield ( 1075 api.test('failed_dm') + 1076 api.properties(buildername=builder, 1077 buildbucket_build_id='123454321', 1078 revision='abc123', 1079 path_config='kitchen', 1080 swarm_out_dir='[SWARM_OUT_DIR]') + 1081 api.path.exists( 1082 api.path['start_dir'].join('skia'), 1083 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1084 'skimage', 'VERSION'), 1085 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1086 'skp', 'VERSION'), 1087 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1088 'svg', 'VERSION'), 1089 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt') 1090 ) + 1091 api.step_data('symbolized dm', retcode=1) 1092 ) 1093 1094 builder = 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-All-Android' 1095 yield ( 1096 api.test('failed_get_hashes') + 1097 api.properties(buildername=builder, 1098 buildbucket_build_id='123454321', 1099 revision='abc123', 1100 path_config='kitchen', 1101 swarm_out_dir='[SWARM_OUT_DIR]') + 1102 api.path.exists( 1103 api.path['start_dir'].join('skia'), 1104 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1105 'skimage', 'VERSION'), 1106 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1107 'skp', 'VERSION'), 1108 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1109 'svg', 'VERSION'), 1110 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt') 1111 ) + 1112 api.step_data('get uninteresting hashes', retcode=1) 1113 ) 1114 1115 builder = ('Test-Android-Clang-NexusPlayer-CPU-Moorefield-x86-' 1116 'Debug-All-Android') 1117 yield ( 1118 api.test('failed_push') + 1119 api.properties(buildername=builder, 1120 buildbucket_build_id='123454321', 1121 revision='abc123', 1122 path_config='kitchen', 1123 swarm_out_dir='[SWARM_OUT_DIR]') + 1124 api.path.exists( 1125 api.path['start_dir'].join('skia'), 1126 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1127 'skimage', 'VERSION'), 1128 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1129 'skp', 'VERSION'), 1130 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1131 'svg', 'VERSION'), 1132 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt') 1133 ) + 1134 api.step_data('get swarming bot id', 1135 stdout=api.raw_io.output('build123-m2--device5')) + 1136 api.step_data('push [START_DIR]/skia/resources/* '+ 1137 '/sdcard/revenge_of_the_skiabot/resources', retcode=1) 1138 ) 1139 1140 builder = 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-All-Android' 1141 yield ( 1142 api.test('failed_pull') + 1143 api.properties(buildername=builder, 1144 buildbucket_build_id='123454321', 1145 revision='abc123', 1146 path_config='kitchen', 1147 swarm_out_dir='[SWARM_OUT_DIR]') + 1148 api.path.exists( 1149 api.path['start_dir'].join('skia'), 1150 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1151 'skimage', 'VERSION'), 1152 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1153 'skp', 'VERSION'), 1154 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1155 'svg', 'VERSION'), 1156 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt') 1157 ) + 1158 api.step_data('dm', retcode=1) + 1159 api.step_data('pull /sdcard/revenge_of_the_skiabot/dm_out '+ 1160 '[CUSTOM_[SWARM_OUT_DIR]]/dm', retcode=1) 1161 ) 1162 1163 yield ( 1164 api.test('internal_bot_1') + 1165 api.properties(buildername=builder, 1166 buildbucket_build_id='123454321', 1167 revision='abc123', 1168 path_config='kitchen', 1169 swarm_out_dir='[SWARM_OUT_DIR]', 1170 internal_hardware_label=1) + 1171 api.path.exists( 1172 api.path['start_dir'].join('skia'), 1173 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1174 'skimage', 'VERSION'), 1175 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1176 'skp', 'VERSION'), 1177 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1178 'svg', 'VERSION'), 1179 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt') 1180 ) 1181 ) 1182 1183 yield ( 1184 api.test('internal_bot_2') + 1185 api.properties(buildername=builder, 1186 buildbucket_build_id='123454321', 1187 revision='abc123', 1188 path_config='kitchen', 1189 swarm_out_dir='[SWARM_OUT_DIR]', 1190 internal_hardware_label=2) + 1191 api.path.exists( 1192 api.path['start_dir'].join('skia'), 1193 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1194 'skimage', 'VERSION'), 1195 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1196 'skp', 'VERSION'), 1197 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets', 1198 'svg', 'VERSION'), 1199 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt') 1200 ) 1201 ) 1202