blob: 01c43cf9a46885163444d5a84d55ccd4ee6f5983 [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 perf.
7
8
Eric Boren4c7754c2017-04-10 08:19:10 -04009import calendar
Kevin Lubick587afc92017-10-12 12:21:47 -040010import os
Eric Boren4c7754c2017-04-10 08:19:10 -040011
12
borenet1ed2ae42016-07-26 11:52:17 -070013DEPS = [
Eric Boren4c7754c2017-04-10 08:19:10 -040014 'core',
Eric Boren896af752017-04-24 13:22:56 -040015 'env',
16 'flavor',
Robert Iannucci8cd50412017-07-07 14:36:58 -070017 'recipe_engine/file',
Eric Boren4c7754c2017-04-10 08:19:10 -040018 'recipe_engine/json',
borenet1ed2ae42016-07-26 11:52:17 -070019 'recipe_engine/path',
20 'recipe_engine/platform',
21 'recipe_engine/properties',
22 'recipe_engine/raw_io',
Eric Boren4c7754c2017-04-10 08:19:10 -040023 'recipe_engine/step',
24 'recipe_engine/time',
25 'run',
Eric Boren4c7754c2017-04-10 08:19:10 -040026 'vars',
borenet1ed2ae42016-07-26 11:52:17 -070027]
28
29
Eric Boren89cd3572017-06-28 13:50:22 -040030def nanobench_flags(api, bot):
Eric Boren4c7754c2017-04-10 08:19:10 -040031 args = ['--pre_log']
32
33 if 'GPU' in bot:
34 args.append('--images')
35 args.extend(['--gpuStatsDump', 'true'])
36
37 if 'Android' in bot and 'GPU' in bot:
38 args.extend(['--useThermalManager', '1,1,10,1000'])
39
40 args.extend(['--scales', '1.0', '1.1'])
41
42 if 'iOS' in bot:
43 args.extend(['--skps', 'ignore_skps'])
44
Ben Wagner32fa5102017-08-10 21:25:55 -040045 configs = []
46 if api.vars.builder_cfg.get('cpu_or_gpu') == 'CPU':
47 args.append('--nogpu')
48 configs.extend(['8888', 'nonrendering'])
Eric Boren4c7754c2017-04-10 08:19:10 -040049
Ben Wagner32fa5102017-08-10 21:25:55 -040050 if '-arm-' not in bot:
51 # For Android CPU tests, these take too long and cause the task to time
52 # out.
53 configs += [ 'f16', 'srgb' ]
54 if '-GCE-' in bot:
55 configs += [ '565' ]
Eric Boren4c7754c2017-04-10 08:19:10 -040056
Ben Wagner32fa5102017-08-10 21:25:55 -040057 elif api.vars.builder_cfg.get('cpu_or_gpu') == 'GPU':
58 args.append('--nocpu')
59
60 gl_prefix = 'gl'
61 sample_count = '8'
62 if 'Android' in bot or 'iOS' in bot:
63 sample_count = '4'
64 # The NVIDIA_Shield has a regular OpenGL implementation. We bench that
65 # instead of ES.
66 if 'NVIDIA_Shield' not in bot:
67 gl_prefix = 'gles'
68 # The NP produces a long error stream when we run with MSAA.
69 # iOS crashes (skia:6399)
70 # Nexus7 (Tegra3) does not support MSAA.
71 if ('NexusPlayer' in bot or
72 'iOS' in bot or
73 'Nexus7' in bot):
74 sample_count = ''
75 elif 'Intel' in bot:
Eric Boren4c7754c2017-04-10 08:19:10 -040076 sample_count = ''
Ben Wagner32fa5102017-08-10 21:25:55 -040077 elif 'ChromeOS' in bot:
78 gl_prefix = 'gles'
Eric Boren4c7754c2017-04-10 08:19:10 -040079
Ben Wagner769faa22017-08-11 15:32:50 -040080 configs.extend([gl_prefix, gl_prefix + 'srgb'])
Eric Boren4c7754c2017-04-10 08:19:10 -040081 if sample_count is not '':
Ben Wagner32fa5102017-08-10 21:25:55 -040082 configs.append(gl_prefix + 'msaa' + sample_count)
83 if ('TegraX1' in bot or
84 'Quadro' in bot or
85 'GTX' in bot or
86 ('GT610' in bot and 'Ubuntu17' not in bot)):
87 configs.extend([gl_prefix + 'nvpr' + sample_count,
88 gl_prefix + 'nvprdit' + sample_count])
Eric Boren4c7754c2017-04-10 08:19:10 -040089
Ben Wagner32fa5102017-08-10 21:25:55 -040090 # We want to test both the OpenGL config and the GLES config on Linux Intel:
91 # GL is used by Chrome, GLES is used by ChromeOS.
92 if 'Intel' in bot and api.vars.is_linux:
Ben Wagner769faa22017-08-11 15:32:50 -040093 configs.extend(['gles', 'glessrgb'])
94
95 # The following devices do not support glessrgb.
96 if 'glessrgb' in configs:
97 if ('IntelHD405' in bot or
98 'IntelIris540' in bot or
99 'IntelIris640' in bot or
100 'IntelBayTrail' in bot or
101 'IntelHD2000' in bot or
102 'AndroidOne' in bot or
103 'Nexus7' in bot or
104 'NexusPlayer' in bot):
105 configs.remove('glessrgb')
Ben Wagner32fa5102017-08-10 21:25:55 -0400106
107 # Bench instanced rendering on a limited number of platforms
108 inst_config = gl_prefix + 'inst'
Ben Wagnercc4221b2017-08-17 17:29:04 -0400109 if 'PixelC' in bot or 'NVIDIA_Shield' in bot or 'MacMini7.1' in bot:
Ben Wagner135db052017-09-28 21:20:25 -0400110 configs.append(inst_config)
111 if sample_count:
112 configs.append(inst_config + sample_count)
Ben Wagner32fa5102017-08-10 21:25:55 -0400113
114 if 'CommandBuffer' in bot:
115 configs = ['commandbuffer']
116 if 'Vulkan' in bot:
117 configs = ['vk']
118
119 if 'ANGLE' in bot:
120 # Test only ANGLE configs.
121 configs = ['angle_d3d11_es2']
122 if sample_count is not '':
123 configs.append('angle_d3d11_es2_msaa' + sample_count)
124
125 if 'ChromeOS' in bot:
126 # Just run GLES for now - maybe add gles_msaa4 in the future
127 configs = ['gles']
Eric Boren4c7754c2017-04-10 08:19:10 -0400128
129 args.append('--config')
130 args.extend(configs)
131
Brian Osmanc49d11e2017-09-22 09:44:35 -0400132 # By default, we test with GPU threading enabled. Leave PixelC devices
133 # running without threads, just to get some coverage of that code path.
134 if 'PixelC' in bot:
135 args.extend(['--gpuThreads', '0'])
136
Eric Boren4c7754c2017-04-10 08:19:10 -0400137 if 'Valgrind' in bot:
138 # Don't care about Valgrind performance.
139 args.extend(['--loops', '1'])
140 args.extend(['--samples', '1'])
141 # Ensure that the bot framework does not think we have timed out.
142 args.extend(['--keepAlive', 'true'])
143
Ben Wagner47ac0242017-06-27 13:44:36 -0400144 # Some people don't like verbose output.
145 verbose = False
146
Eric Boren4c7754c2017-04-10 08:19:10 -0400147 match = []
148 if 'Android' in bot:
149 # Segfaults when run as GPU bench. Very large texture?
150 match.append('~blurroundrect')
151 match.append('~patch_grid') # skia:2847
152 match.append('~desk_carsvg')
153 if 'NexusPlayer' in bot:
154 match.append('~desk_unicodetable')
155 if 'Nexus5' in bot:
156 match.append('~keymobi_shop_mobileweb_ebay_com.skp') # skia:5178
157 if 'iOS' in bot:
158 match.append('~blurroundrect')
159 match.append('~patch_grid') # skia:2847
160 match.append('~desk_carsvg')
161 match.append('~keymobi')
162 match.append('~path_hairline')
163 match.append('~GLInstancedArraysBench') # skia:4714
164 if 'IntelIris540' in bot and 'ANGLE' in bot:
165 match.append('~tile_image_filter_tiled_64') # skia:6082
Ben Wagner1aa23692017-06-09 10:24:39 -0400166 if ('Vulkan' in bot and ('IntelIris540' in bot or 'IntelIris640' in bot) and
167 'Win' in bot):
Eric Boren4c7754c2017-04-10 08:19:10 -0400168 # skia:6398
169 match.append('~GM_varied_text_clipped_lcd')
170 match.append('~GM_varied_text_ignorable_clip_lcd')
Mike Reed1d2678f2017-07-05 13:10:42 -0400171 match.append('~blendmode_mask_DstATop')
172 match.append('~blendmode_mask_SrcIn')
173 match.append('~blendmode_mask_SrcOut')
174 match.append('~blendmode_mask_Src')
Eric Boren4c7754c2017-04-10 08:19:10 -0400175 match.append('~fontscaler_lcd')
176 match.append('~rotated_rects_aa_alternating_transparent_and_opaque_src')
177 match.append('~rotated_rects_aa_changing_transparent_src')
178 match.append('~rotated_rects_aa_same_transparent_src')
179 match.append('~shadermask_LCD_FF')
180 match.append('~srcmode_rects_1')
181 match.append('~text_16_LCD_88')
182 match.append('~text_16_LCD_BK')
183 match.append('~text_16_LCD_FF')
184 match.append('~text_16_LCD_WT')
Greg Daniel139eb802017-07-19 10:12:49 -0400185 # skia:6863
186 match.append('~desk_skbug6850overlay2')
Greg Daniele0996532017-08-07 14:56:26 -0400187 match.append('~desk_googlespreadsheet')
Eric Boren89cd3572017-06-28 13:50:22 -0400188 if ('Intel' in bot and api.vars.is_linux and not 'Vulkan' in bot):
Ben Wagner47ac0242017-06-27 13:44:36 -0400189 # TODO(dogben): Track down what's causing bots to die.
190 verbose = True
Eric Boren4c7754c2017-04-10 08:19:10 -0400191 if 'Vulkan' in bot and 'NexusPlayer' in bot:
Greg Daniel514e9d82017-07-06 09:25:15 -0400192 match.append('~blendmode_') # skia:6691
Ben Wagneradf17dc2017-09-12 23:41:00 -0400193 if 'float_cast_overflow' in bot and 'CPU' in bot:
194 # skia:4632
195 match.append('~^floor2int_undef$')
Eric Boren4c7754c2017-04-10 08:19:10 -0400196
197 # We do not need or want to benchmark the decodes of incomplete images.
198 # In fact, in nanobench we assert that the full image decode succeeds.
199 match.append('~inc0.gif')
200 match.append('~inc1.gif')
201 match.append('~incInterlaced.gif')
202 match.append('~inc0.jpg')
203 match.append('~incGray.jpg')
204 match.append('~inc0.wbmp')
205 match.append('~inc1.wbmp')
206 match.append('~inc0.webp')
207 match.append('~inc1.webp')
208 match.append('~inc0.ico')
209 match.append('~inc1.ico')
210 match.append('~inc0.png')
211 match.append('~inc1.png')
212 match.append('~inc2.png')
213 match.append('~inc12.png')
214 match.append('~inc13.png')
215 match.append('~inc14.png')
216 match.append('~inc0.webp')
217 match.append('~inc1.webp')
218
219 if match:
220 args.append('--match')
221 args.extend(match)
222
Ben Wagner47ac0242017-06-27 13:44:36 -0400223 if verbose:
224 args.append('--verbose')
225
Eric Boren4c7754c2017-04-10 08:19:10 -0400226 return args
227
228
229def perf_steps(api):
230 """Run Skia benchmarks."""
231 if api.vars.upload_perf_results:
232 api.flavor.create_clean_device_dir(
233 api.flavor.device_dirs.perf_data_dir)
234
235 # Run nanobench.
236 properties = [
237 '--properties',
238 'gitHash', api.vars.got_revision,
Eric Boren4c7754c2017-04-10 08:19:10 -0400239 ]
240 if api.vars.is_trybot:
241 properties.extend([
242 'issue', api.vars.issue,
243 'patchset', api.vars.patchset,
244 'patch_storage', api.vars.patch_storage,
245 ])
Eric Borenf9aa9e52017-04-10 09:56:10 -0400246 properties.extend(['swarming_bot_id', api.vars.swarming_bot_id])
247 properties.extend(['swarming_task_id', api.vars.swarming_task_id])
Eric Boren4c7754c2017-04-10 08:19:10 -0400248
249 target = 'nanobench'
250 args = [
251 target,
Eric Boren4c7754c2017-04-10 08:19:10 -0400252 '-i', api.flavor.device_dirs.resource_dir,
253 '--skps', api.flavor.device_dirs.skp_dir,
254 '--images', api.flavor.device_path_join(
255 api.flavor.device_dirs.images_dir, 'nanobench'),
256 ]
257
258 # Do not run svgs on Valgrind.
259 if 'Valgrind' not in api.vars.builder_name:
260 if ('Vulkan' not in api.vars.builder_name or
261 'NexusPlayer' not in api.vars.builder_name):
262 args.extend(['--svgs', api.flavor.device_dirs.svg_dir])
263
Eric Boren89cd3572017-06-28 13:50:22 -0400264 args.extend(nanobench_flags(api, api.vars.builder_name))
Eric Boren4c7754c2017-04-10 08:19:10 -0400265
266 if 'Chromecast' in api.vars.builder_cfg.get('os', ''):
267 # Due to limited disk space, run a watered down perf run on Chromecast.
Ben Wagner32fa5102017-08-10 21:25:55 -0400268 args = [target]
Kevin Lubickb6d09b72017-06-15 15:21:17 -0400269 if api.vars.builder_cfg.get('cpu_or_gpu') == 'CPU':
Ben Wagner32fa5102017-08-10 21:25:55 -0400270 args.extend(['--nogpu', '--config', '8888'])
Kevin Lubickb6d09b72017-06-15 15:21:17 -0400271 elif api.vars.builder_cfg.get('cpu_or_gpu') == 'GPU':
Ben Wagner32fa5102017-08-10 21:25:55 -0400272 args.extend(['--nocpu', '--config', 'gles'])
Kevin Lubickb6d09b72017-06-15 15:21:17 -0400273 args.extend([
Kevin Lubickffce0792017-05-24 15:30:35 -0400274 '-i', api.flavor.device_dirs.resource_dir,
275 '--images', api.flavor.device_path_join(
276 api.flavor.device_dirs.resource_dir, 'color_wheel.jpg'),
Kevin Lubickc78a2d72017-06-01 15:51:06 -0400277 '--skps', api.flavor.device_dirs.skp_dir,
Kevin Lubickffce0792017-05-24 15:30:35 -0400278 '--pre_log',
279 '--match', # skia:6581
280 '~matrixconvolution',
281 '~blur_image_filter',
282 '~blur_0.01',
283 '~GM_animated-image-blurs',
Brian Salomon44acb5b2017-07-18 19:59:24 -0400284 '~blendmode_mask_',
Chris Dalton035fcdf2017-11-07 15:34:22 -0700285 '~^path_text_clipped', # Bot times out; skia:7190
Kevin Lubickb6d09b72017-06-15 15:21:17 -0400286 ])
Eric Boren4c7754c2017-04-10 08:19:10 -0400287
288 if api.vars.upload_perf_results:
289 now = api.time.utcnow()
290 ts = int(calendar.timegm(now.utctimetuple()))
291 json_path = api.flavor.device_path_join(
292 api.flavor.device_dirs.perf_data_dir,
293 'nanobench_%s_%d.json' % (api.vars.got_revision, ts))
294 args.extend(['--outResultsFile', json_path])
295 args.extend(properties)
296
Kevin Lubick9ef6de72017-10-15 21:05:58 -0400297 keys_blacklist = ['configuration', 'role', 'test_filter']
Eric Boren4c7754c2017-04-10 08:19:10 -0400298 args.append('--key')
299 for k in sorted(api.vars.builder_cfg.keys()):
300 if not k in keys_blacklist:
301 args.extend([k, api.vars.builder_cfg[k]])
302
Eric Boren4c7754c2017-04-10 08:19:10 -0400303 # See skia:2789.
Ben Wagner988d15e2017-04-27 13:08:50 -0400304 extra_config_parts = api.vars.builder_cfg.get('extra_config', '').split('_')
305 if 'AbandonGpuContext' in extra_config_parts:
Ben Wagner32fa5102017-08-10 21:25:55 -0400306 args.extend(['--abandonGpuContext'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400307
Ben Wagner5655ba42017-10-02 10:48:32 -0400308 api.run(api.flavor.step, target, cmd=args,
309 abort_on_failure=False)
Eric Boren4c7754c2017-04-10 08:19:10 -0400310
311 # Copy results to swarming out dir.
312 if api.vars.upload_perf_results:
Kevin Lubick587afc92017-10-12 12:21:47 -0400313 api.file.ensure_directory('makedirs perf_dir',
314 api.path.dirname(api.vars.perf_data_dir))
Eric Boren4c7754c2017-04-10 08:19:10 -0400315 api.flavor.copy_directory_contents_to_host(
316 api.flavor.device_dirs.perf_data_dir,
317 api.vars.perf_data_dir)
318
319
borenet1ed2ae42016-07-26 11:52:17 -0700320def RunSteps(api):
Eric Boren4c7754c2017-04-10 08:19:10 -0400321 api.core.setup()
Eric Boren896af752017-04-24 13:22:56 -0400322 env = {}
Eric Boren4c7754c2017-04-10 08:19:10 -0400323 if 'iOS' in api.vars.builder_name:
324 env['IOS_BUNDLE_ID'] = 'com.google.nanobench'
Stephan Altmueller63e843d2017-04-25 11:38:38 -0400325 env['IOS_MOUNT_POINT'] = api.vars.slave_dir.join('mnt_iosdevice')
Eric Boren896af752017-04-24 13:22:56 -0400326 with api.env(env):
Eric Boren4c7754c2017-04-10 08:19:10 -0400327 try:
328 if 'Chromecast' in api.vars.builder_name:
329 api.flavor.install(resources=True, skps=True)
330 else:
331 api.flavor.install_everything()
332 perf_steps(api)
333 finally:
334 api.flavor.cleanup_steps()
335 api.run.check_failure()
336
337
Eric Borenf9aa9e52017-04-10 09:56:10 -0400338TEST_BUILDERS = [
Kevin Lubick9ef6de72017-10-15 21:05:58 -0400339 ('Perf-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-All-'
340 'Android_Vulkan'),
341 'Perf-Android-Clang-Nexus10-CPU-Exynos5250-arm-Release-All-Android',
342 'Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-All-Android',
343 'Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-All-Android',
344 'Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-All-Android',
345 'Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-All-Android_Vulkan',
346 'Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-All-Android_Skpbench',
Kevin Lubickd7af1db2017-11-02 12:03:22 -0400347 'Perf-ChromeOS-Clang-ASUSChromebookFlipC100-GPU-MaliT764-arm-Release-All',
Kevin Lubick9ef6de72017-10-15 21:05:58 -0400348 'Perf-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Debug-All',
349 'Perf-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release-All',
350 'Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-UBSAN_float_cast_overflow',
351 'Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All',
352 'Perf-Mac-Clang-MacMini7.1-CPU-AVX-x86_64-Release-All',
353 'Perf-Mac-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Release-All',
354 ('Perf-Mac-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Release-All-'
355 'CommandBuffer'),
356 'Perf-Ubuntu16-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-Vulkan',
357 'Perf-Ubuntu16-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All',
358 ('Perf-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-All-'
359 'Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41'),
360 ('Perf-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-All-'
361 'Valgrind_SK_CPU_LIMIT_SSE41'),
Ben Wagnerb2fd61a2017-10-23 16:01:44 -0400362 'Perf-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Release-All-ANGLE',
363 'Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-ANGLE',
Kevin Lubick9ef6de72017-10-15 21:05:58 -0400364 'Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-Vulkan',
Ben Wagnerb2fd61a2017-10-23 16:01:44 -0400365 'Perf-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Release-All-ANGLE',
Kevin Lubick9ef6de72017-10-15 21:05:58 -0400366 'Perf-Win2k8-MSVC-GCE-CPU-AVX2-x86_64-Debug-All',
367 'Perf-Win2k8-MSVC-GCE-CPU-AVX2-x86_64-Release-All',
368 'Perf-iOS-Clang-iPadPro-GPU-GT7800-arm64-Release-All',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400369]
borenet1ed2ae42016-07-26 11:52:17 -0700370
371
372def GenTests(api):
Eric Borenf9aa9e52017-04-10 09:56:10 -0400373 for builder in TEST_BUILDERS:
374 test = (
375 api.test(builder) +
376 api.properties(buildername=builder,
377 revision='abc123',
378 path_config='kitchen',
379 swarm_out_dir='[SWARM_OUT_DIR]') +
380 api.path.exists(
381 api.path['start_dir'].join('skia'),
382 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400383 'skimage', 'VERSION'),
Eric Borenf9aa9e52017-04-10 09:56:10 -0400384 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400385 'skp', 'VERSION'),
Eric Borenf9aa9e52017-04-10 09:56:10 -0400386 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
Ben Wagnerf835c222017-04-30 11:14:51 -0400387 ) +
388 api.step_data('get swarming bot id',
389 stdout=api.raw_io.output('skia-bot-123')) +
390 api.step_data('get swarming task id',
391 stdout=api.raw_io.output('123456'))
Eric Borenf9aa9e52017-04-10 09:56:10 -0400392 )
Eric Borenf9aa9e52017-04-10 09:56:10 -0400393 if 'Win' in builder:
394 test += api.platform('win', 64)
Eric Boren4c7754c2017-04-10 08:19:10 -0400395
Eric Borenf9aa9e52017-04-10 09:56:10 -0400396 if 'Chromecast' in builder:
397 test += api.step_data(
398 'read chromecast ip',
399 stdout=api.raw_io.output('192.168.1.2:5555'))
400
401 if 'ChromeOS' in builder:
402 test += api.step_data(
403 'read chromeos ip',
404 stdout=api.raw_io.output('{"user_ip":"foo@127.0.0.1"}'))
405
406 yield test
Eric Boren4c7754c2017-04-10 08:19:10 -0400407
Kevin Lubick9ef6de72017-10-15 21:05:58 -0400408 builder = 'Perf-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release-All'
Kevin Lubickfe079d42017-04-12 08:31:48 -0400409 yield (
410 api.test('trybot') +
411 api.properties(buildername=builder,
412 revision='abc123',
413 path_config='kitchen',
414 swarm_out_dir='[SWARM_OUT_DIR]') +
415 api.properties(patch_storage='gerrit') +
416 api.properties.tryserver(
417 buildername=builder,
418 gerrit_project='skia',
419 gerrit_url='https://skia-review.googlesource.com/',
420 )+
421 api.path.exists(
422 api.path['start_dir'].join('skia'),
423 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
424 'skimage', 'VERSION'),
425 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
426 'skp', 'VERSION'),
427 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
428 'svg', 'VERSION'),
429 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
430 )
431 )
432
Kevin Lubick9ef6de72017-10-15 21:05:58 -0400433 builder = ('Perf-Android-Clang-NexusPlayer-CPU-Moorefield-x86-Debug-All-' +
434 'Android')
Eric Boren4c7754c2017-04-10 08:19:10 -0400435 yield (
436 api.test('failed_push') +
437 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -0400438 revision='abc123',
439 path_config='kitchen',
Eric Boren5de544b2017-01-12 08:46:20 -0500440 swarm_out_dir='[SWARM_OUT_DIR]') +
borenet1ed2ae42016-07-26 11:52:17 -0700441 api.path.exists(
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500442 api.path['start_dir'].join('skia'),
443 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400444 'skimage', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500445 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400446 'skp', 'VERSION'),
447 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
448 'svg', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500449 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
Eric Boren4c7754c2017-04-10 08:19:10 -0400450 ) +
451 api.step_data('push [START_DIR]/skia/resources/* '+
452 '/sdcard/revenge_of_the_skiabot/resources', retcode=1)
borenetbfa5b452016-10-19 10:13:32 -0700453 )