blob: dd91e8ce639d8bd9df65b7f176a121ebda693016 [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_',
Kevin Lubickb6d09b72017-06-15 15:21:17 -0400285 ])
Eric Boren4c7754c2017-04-10 08:19:10 -0400286
287 if api.vars.upload_perf_results:
288 now = api.time.utcnow()
289 ts = int(calendar.timegm(now.utctimetuple()))
290 json_path = api.flavor.device_path_join(
291 api.flavor.device_dirs.perf_data_dir,
292 'nanobench_%s_%d.json' % (api.vars.got_revision, ts))
293 args.extend(['--outResultsFile', json_path])
294 args.extend(properties)
295
296 keys_blacklist = ['configuration', 'role', 'is_trybot']
297 args.append('--key')
298 for k in sorted(api.vars.builder_cfg.keys()):
299 if not k in keys_blacklist:
300 args.extend([k, api.vars.builder_cfg[k]])
301
Eric Boren4c7754c2017-04-10 08:19:10 -0400302 # See skia:2789.
Ben Wagner988d15e2017-04-27 13:08:50 -0400303 extra_config_parts = api.vars.builder_cfg.get('extra_config', '').split('_')
304 if 'AbandonGpuContext' in extra_config_parts:
Ben Wagner32fa5102017-08-10 21:25:55 -0400305 args.extend(['--abandonGpuContext'])
Eric Boren4c7754c2017-04-10 08:19:10 -0400306
Ben Wagner5655ba42017-10-02 10:48:32 -0400307 api.run(api.flavor.step, target, cmd=args,
308 abort_on_failure=False)
Eric Boren4c7754c2017-04-10 08:19:10 -0400309
310 # Copy results to swarming out dir.
311 if api.vars.upload_perf_results:
Kevin Lubick587afc92017-10-12 12:21:47 -0400312 api.file.ensure_directory('makedirs perf_dir',
313 api.path.dirname(api.vars.perf_data_dir))
Eric Boren4c7754c2017-04-10 08:19:10 -0400314 api.flavor.copy_directory_contents_to_host(
315 api.flavor.device_dirs.perf_data_dir,
316 api.vars.perf_data_dir)
317
318
borenet1ed2ae42016-07-26 11:52:17 -0700319def RunSteps(api):
Eric Boren4c7754c2017-04-10 08:19:10 -0400320 api.core.setup()
Eric Boren896af752017-04-24 13:22:56 -0400321 env = {}
Eric Boren4c7754c2017-04-10 08:19:10 -0400322 if 'iOS' in api.vars.builder_name:
323 env['IOS_BUNDLE_ID'] = 'com.google.nanobench'
Stephan Altmueller63e843d2017-04-25 11:38:38 -0400324 env['IOS_MOUNT_POINT'] = api.vars.slave_dir.join('mnt_iosdevice')
Eric Boren896af752017-04-24 13:22:56 -0400325 with api.env(env):
Eric Boren4c7754c2017-04-10 08:19:10 -0400326 try:
327 if 'Chromecast' in api.vars.builder_name:
328 api.flavor.install(resources=True, skps=True)
329 else:
330 api.flavor.install_everything()
331 perf_steps(api)
332 finally:
333 api.flavor.cleanup_steps()
334 api.run.check_failure()
335
336
Eric Borenf9aa9e52017-04-10 09:56:10 -0400337TEST_BUILDERS = [
Kevin Lubickfe079d42017-04-12 08:31:48 -0400338 'Perf-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-Android_Vulkan',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400339 'Perf-Android-Clang-Nexus10-CPU-Exynos5250-arm-Release-Android',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400340 'Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-Android',
341 'Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-Android',
342 'Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-Android',
343 'Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-Android_Vulkan',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400344 'Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-Android_Skpbench',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400345 'Perf-ChromeOS-Clang-Chromebook_C100p-GPU-MaliT764-arm-Release',
Kevin Lubickb6d09b72017-06-15 15:21:17 -0400346 'Perf-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Debug',
Kevin Lubickc78a2d72017-06-01 15:51:06 -0400347 'Perf-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release',
Ben Wagneradf17dc2017-09-12 23:41:00 -0400348 'Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-UBSAN_float_cast_overflow',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400349 'Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release',
Ben Wagnercc4221b2017-08-17 17:29:04 -0400350 'Perf-Mac-Clang-MacMini7.1-CPU-AVX-x86_64-Release',
Ben Wagner135db052017-09-28 21:20:25 -0400351 'Perf-Mac-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Release',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400352 'Perf-Mac-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Release-CommandBuffer',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400353 'Perf-Ubuntu16-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-Vulkan',
354 'Perf-Ubuntu16-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400355 ('Perf-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release'
356 '-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41'),
357 ('Perf-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release'
358 '-Valgrind_SK_CPU_LIMIT_SSE41'),
Ben Wagnera317a992017-10-11 00:23:58 -0400359 'Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-Vulkan',
Brian Osman6a1a5f72017-04-21 15:38:27 -0400360 'Perf-Win10-MSVC-AlphaR2-GPU-RadeonR9M470X-x86_64-Release-ANGLE',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400361 'Perf-Win10-MSVC-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-ANGLE',
Ben Wagner38a56012017-04-28 17:13:32 -0400362 'Perf-Win10-MSVC-ShuttleC-GPU-GTX960-x86_64-Release-ANGLE',
Kevin Lubickfe079d42017-04-12 08:31:48 -0400363 'Perf-Win2k8-MSVC-GCE-CPU-AVX2-x86_64-Debug',
364 'Perf-Win2k8-MSVC-GCE-CPU-AVX2-x86_64-Release',
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400365 'Perf-iOS-Clang-iPadPro-GPU-GT7800-arm64-Release',
Eric Borenf9aa9e52017-04-10 09:56:10 -0400366]
borenet1ed2ae42016-07-26 11:52:17 -0700367
368
369def GenTests(api):
Eric Borenf9aa9e52017-04-10 09:56:10 -0400370 for builder in TEST_BUILDERS:
371 test = (
372 api.test(builder) +
373 api.properties(buildername=builder,
374 revision='abc123',
375 path_config='kitchen',
376 swarm_out_dir='[SWARM_OUT_DIR]') +
377 api.path.exists(
378 api.path['start_dir'].join('skia'),
379 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400380 'skimage', 'VERSION'),
Eric Borenf9aa9e52017-04-10 09:56:10 -0400381 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400382 'skp', 'VERSION'),
Eric Borenf9aa9e52017-04-10 09:56:10 -0400383 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
Ben Wagnerf835c222017-04-30 11:14:51 -0400384 ) +
385 api.step_data('get swarming bot id',
386 stdout=api.raw_io.output('skia-bot-123')) +
387 api.step_data('get swarming task id',
388 stdout=api.raw_io.output('123456'))
Eric Borenf9aa9e52017-04-10 09:56:10 -0400389 )
Eric Borenf9aa9e52017-04-10 09:56:10 -0400390 if 'Win' in builder:
391 test += api.platform('win', 64)
Eric Boren4c7754c2017-04-10 08:19:10 -0400392
Eric Borenf9aa9e52017-04-10 09:56:10 -0400393 if 'Chromecast' in builder:
394 test += api.step_data(
395 'read chromecast ip',
396 stdout=api.raw_io.output('192.168.1.2:5555'))
397
398 if 'ChromeOS' in builder:
399 test += api.step_data(
400 'read chromeos ip',
401 stdout=api.raw_io.output('{"user_ip":"foo@127.0.0.1"}'))
402
403 yield test
Eric Boren4c7754c2017-04-10 08:19:10 -0400404
Ben Wagner7cf2fd62017-10-09 14:27:26 -0400405 builder = 'Perf-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release'
Kevin Lubickfe079d42017-04-12 08:31:48 -0400406 yield (
407 api.test('trybot') +
408 api.properties(buildername=builder,
409 revision='abc123',
410 path_config='kitchen',
411 swarm_out_dir='[SWARM_OUT_DIR]') +
412 api.properties(patch_storage='gerrit') +
413 api.properties.tryserver(
414 buildername=builder,
415 gerrit_project='skia',
416 gerrit_url='https://skia-review.googlesource.com/',
417 )+
418 api.path.exists(
419 api.path['start_dir'].join('skia'),
420 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
421 'skimage', 'VERSION'),
422 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
423 'skp', 'VERSION'),
424 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
425 'svg', 'VERSION'),
426 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
427 )
428 )
429
Ben Wagner6e0a6b32017-09-26 14:11:15 -0400430 builder = 'Perf-Android-Clang-NexusPlayer-CPU-Moorefield-x86-Debug-Android'
Eric Boren4c7754c2017-04-10 08:19:10 -0400431 yield (
432 api.test('failed_push') +
433 api.properties(buildername=builder,
Eric Boren4c7754c2017-04-10 08:19:10 -0400434 revision='abc123',
435 path_config='kitchen',
Eric Boren5de544b2017-01-12 08:46:20 -0500436 swarm_out_dir='[SWARM_OUT_DIR]') +
borenet1ed2ae42016-07-26 11:52:17 -0700437 api.path.exists(
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500438 api.path['start_dir'].join('skia'),
439 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400440 'skimage', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500441 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
Eric Boren4c7754c2017-04-10 08:19:10 -0400442 'skp', 'VERSION'),
443 api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
444 'svg', 'VERSION'),
Ravi Mistry9bcca6a2016-11-21 16:06:19 -0500445 api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
Eric Boren4c7754c2017-04-10 08:19:10 -0400446 ) +
447 api.step_data('push [START_DIR]/skia/resources/* '+
448 '/sdcard/revenge_of_the_skiabot/resources', retcode=1)
borenetbfa5b452016-10-19 10:13:32 -0700449 )