1*c8dee2aaSAndroid Build Coastguard Worker# Copyright 2018 The Chromium Authors. All rights reserved. 2*c8dee2aaSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*c8dee2aaSAndroid Build Coastguard Worker# found in the LICENSE file. 4*c8dee2aaSAndroid Build Coastguard Worker 5*c8dee2aaSAndroid Build Coastguard Worker# Recipe which runs the PathKit tests using docker 6*c8dee2aaSAndroid Build Coastguard Worker 7*c8dee2aaSAndroid Build Coastguard WorkerPYTHON_VERSION_COMPATIBILITY = "PY3" 8*c8dee2aaSAndroid Build Coastguard Worker 9*c8dee2aaSAndroid Build Coastguard WorkerDEPS = [ 10*c8dee2aaSAndroid Build Coastguard Worker 'checkout', 11*c8dee2aaSAndroid Build Coastguard Worker 'docker', 12*c8dee2aaSAndroid Build Coastguard Worker 'env', 13*c8dee2aaSAndroid Build Coastguard Worker 'infra', 14*c8dee2aaSAndroid Build Coastguard Worker 'recipe_engine/file', 15*c8dee2aaSAndroid Build Coastguard Worker 'recipe_engine/path', 16*c8dee2aaSAndroid Build Coastguard Worker 'recipe_engine/properties', 17*c8dee2aaSAndroid Build Coastguard Worker 'recipe_engine/step', 18*c8dee2aaSAndroid Build Coastguard Worker 'run', 19*c8dee2aaSAndroid Build Coastguard Worker 'vars', 20*c8dee2aaSAndroid Build Coastguard Worker] 21*c8dee2aaSAndroid Build Coastguard Worker 22*c8dee2aaSAndroid Build Coastguard Worker 23*c8dee2aaSAndroid Build Coastguard WorkerDOCKER_IMAGE = 'gcr.io/skia-public/perf-karma-chrome-tests:87.0.4280.88_v1' 24*c8dee2aaSAndroid Build Coastguard WorkerINNER_KARMA_SCRIPT = 'skia/infra/pathkit/perf_pathkit.sh' 25*c8dee2aaSAndroid Build Coastguard Worker 26*c8dee2aaSAndroid Build Coastguard Worker 27*c8dee2aaSAndroid Build Coastguard Workerdef RunSteps(api): 28*c8dee2aaSAndroid Build Coastguard Worker api.vars.setup() 29*c8dee2aaSAndroid Build Coastguard Worker checkout_root = api.path.start_dir 30*c8dee2aaSAndroid Build Coastguard Worker out_dir = api.vars.swarming_out_dir 31*c8dee2aaSAndroid Build Coastguard Worker 32*c8dee2aaSAndroid Build Coastguard Worker # Make sure this exists, otherwise Docker will make it with root permissions. 33*c8dee2aaSAndroid Build Coastguard Worker api.file.ensure_directory('mkdirs out_dir', out_dir, mode=0o777) 34*c8dee2aaSAndroid Build Coastguard Worker 35*c8dee2aaSAndroid Build Coastguard Worker # The karma script is configured to look in ./npm-(asmjs|wasm)/bin/ for 36*c8dee2aaSAndroid Build Coastguard Worker # the test files to load, so we must copy them there (see Set up for docker). 37*c8dee2aaSAndroid Build Coastguard Worker copy_dest = checkout_root.joinpath('skia', 'modules', 'pathkit', 38*c8dee2aaSAndroid Build Coastguard Worker 'npm-wasm', 'bin') 39*c8dee2aaSAndroid Build Coastguard Worker if 'asmjs' in api.vars.builder_name: 40*c8dee2aaSAndroid Build Coastguard Worker copy_dest = checkout_root.joinpath('skia', 'modules', 'pathkit', 41*c8dee2aaSAndroid Build Coastguard Worker 'npm-asmjs', 'bin') 42*c8dee2aaSAndroid Build Coastguard Worker 43*c8dee2aaSAndroid Build Coastguard Worker base_dir = api.vars.build_dir 44*c8dee2aaSAndroid Build Coastguard Worker bundle_name = 'pathkit.wasm' 45*c8dee2aaSAndroid Build Coastguard Worker if 'asmjs' in api.vars.builder_name: 46*c8dee2aaSAndroid Build Coastguard Worker bundle_name = 'pathkit.js.mem' 47*c8dee2aaSAndroid Build Coastguard Worker 48*c8dee2aaSAndroid Build Coastguard Worker copies = [ 49*c8dee2aaSAndroid Build Coastguard Worker { 50*c8dee2aaSAndroid Build Coastguard Worker 'src': base_dir.joinpath('pathkit.js'), 51*c8dee2aaSAndroid Build Coastguard Worker 'dst': copy_dest.joinpath('pathkit.js'), 52*c8dee2aaSAndroid Build Coastguard Worker }, 53*c8dee2aaSAndroid Build Coastguard Worker { 54*c8dee2aaSAndroid Build Coastguard Worker 'src': base_dir.joinpath(bundle_name), 55*c8dee2aaSAndroid Build Coastguard Worker 'dst': copy_dest.joinpath(bundle_name), 56*c8dee2aaSAndroid Build Coastguard Worker }, 57*c8dee2aaSAndroid Build Coastguard Worker ] 58*c8dee2aaSAndroid Build Coastguard Worker recursive_read = [checkout_root.joinpath('skia')] 59*c8dee2aaSAndroid Build Coastguard Worker 60*c8dee2aaSAndroid Build Coastguard Worker docker_args = None 61*c8dee2aaSAndroid Build Coastguard Worker if 'asmjs' in api.vars.builder_name: 62*c8dee2aaSAndroid Build Coastguard Worker docker_args = ['--env', 'ASM_JS=1'] 63*c8dee2aaSAndroid Build Coastguard Worker 64*c8dee2aaSAndroid Build Coastguard Worker args = [ 65*c8dee2aaSAndroid Build Coastguard Worker '--builder', api.vars.builder_name, 66*c8dee2aaSAndroid Build Coastguard Worker '--git_hash', api.properties['revision'], 67*c8dee2aaSAndroid Build Coastguard Worker '--buildbucket_build_id', api.properties.get('buildbucket_build_id', ''), 68*c8dee2aaSAndroid Build Coastguard Worker '--bot_id', api.vars.swarming_bot_id, 69*c8dee2aaSAndroid Build Coastguard Worker '--task_id', api.vars.swarming_task_id, 70*c8dee2aaSAndroid Build Coastguard Worker '--browser', 'Chrome', 71*c8dee2aaSAndroid Build Coastguard Worker '--config', api.vars.configuration, 72*c8dee2aaSAndroid Build Coastguard Worker '--source_type', 'pathkit', 73*c8dee2aaSAndroid Build Coastguard Worker ] 74*c8dee2aaSAndroid Build Coastguard Worker if 'asmjs' in api.vars.builder_name: 75*c8dee2aaSAndroid Build Coastguard Worker args.extend(['--compiled_language', 'asmjs']) # the default is wasm 76*c8dee2aaSAndroid Build Coastguard Worker if api.vars.is_trybot: 77*c8dee2aaSAndroid Build Coastguard Worker args.extend([ 78*c8dee2aaSAndroid Build Coastguard Worker '--issue', api.vars.issue, 79*c8dee2aaSAndroid Build Coastguard Worker '--patchset', api.vars.patchset, 80*c8dee2aaSAndroid Build Coastguard Worker ]) 81*c8dee2aaSAndroid Build Coastguard Worker 82*c8dee2aaSAndroid Build Coastguard Worker api.docker.run( 83*c8dee2aaSAndroid Build Coastguard Worker name='Performance tests of PathKit with Docker', 84*c8dee2aaSAndroid Build Coastguard Worker docker_image=DOCKER_IMAGE, 85*c8dee2aaSAndroid Build Coastguard Worker src_dir=checkout_root, 86*c8dee2aaSAndroid Build Coastguard Worker out_dir=out_dir, 87*c8dee2aaSAndroid Build Coastguard Worker script=checkout_root.joinpath(INNER_KARMA_SCRIPT), 88*c8dee2aaSAndroid Build Coastguard Worker args=args, 89*c8dee2aaSAndroid Build Coastguard Worker docker_args=docker_args, 90*c8dee2aaSAndroid Build Coastguard Worker copies=copies, 91*c8dee2aaSAndroid Build Coastguard Worker recursive_read=recursive_read, 92*c8dee2aaSAndroid Build Coastguard Worker attempts=3, 93*c8dee2aaSAndroid Build Coastguard Worker ) 94*c8dee2aaSAndroid Build Coastguard Worker 95*c8dee2aaSAndroid Build Coastguard Worker 96*c8dee2aaSAndroid Build Coastguard Workerdef GenTests(api): 97*c8dee2aaSAndroid Build Coastguard Worker yield ( 98*c8dee2aaSAndroid Build Coastguard Worker api.test('Perf-Debian10-EMCC-GCE-CPU-AVX2-wasm-Release-All-PathKit') + 99*c8dee2aaSAndroid Build Coastguard Worker api.properties(buildername=('Perf-Debian10-EMCC-GCE-CPU-AVX2' 100*c8dee2aaSAndroid Build Coastguard Worker '-wasm-Release-All-PathKit'), 101*c8dee2aaSAndroid Build Coastguard Worker repository='https://skia.googlesource.com/skia.git', 102*c8dee2aaSAndroid Build Coastguard Worker revision='abc123', 103*c8dee2aaSAndroid Build Coastguard Worker path_config='kitchen', 104*c8dee2aaSAndroid Build Coastguard Worker swarm_out_dir='[SWARM_OUT_DIR]') 105*c8dee2aaSAndroid Build Coastguard Worker ) 106*c8dee2aaSAndroid Build Coastguard Worker 107*c8dee2aaSAndroid Build Coastguard Worker yield ( 108*c8dee2aaSAndroid Build Coastguard Worker api.test('Perf-Debian10-EMCC-GCE-CPU-AVX2-asmjs-Release-All-PathKit') + 109*c8dee2aaSAndroid Build Coastguard Worker api.properties(buildername=('Perf-Debian10-EMCC-GCE-CPU-AVX2' 110*c8dee2aaSAndroid Build Coastguard Worker '-asmjs-Release-All-PathKit'), 111*c8dee2aaSAndroid Build Coastguard Worker repository='https://skia.googlesource.com/skia.git', 112*c8dee2aaSAndroid Build Coastguard Worker revision='abc123', 113*c8dee2aaSAndroid Build Coastguard Worker path_config='kitchen', 114*c8dee2aaSAndroid Build Coastguard Worker swarm_out_dir='[SWARM_OUT_DIR]') 115*c8dee2aaSAndroid Build Coastguard Worker ) 116*c8dee2aaSAndroid Build Coastguard Worker 117*c8dee2aaSAndroid Build Coastguard Worker yield ( 118*c8dee2aaSAndroid Build Coastguard Worker api.test('pathkit_trybot') + 119*c8dee2aaSAndroid Build Coastguard Worker api.properties(buildername=('Perf-Debian10-EMCC-GCE-CPU-AVX2' 120*c8dee2aaSAndroid Build Coastguard Worker '-wasm-Release-All-PathKit'), 121*c8dee2aaSAndroid Build Coastguard Worker repository='https://skia.googlesource.com/skia.git', 122*c8dee2aaSAndroid Build Coastguard Worker revision='abc123', 123*c8dee2aaSAndroid Build Coastguard Worker path_config='kitchen', 124*c8dee2aaSAndroid Build Coastguard Worker swarm_out_dir='[SWARM_OUT_DIR]', 125*c8dee2aaSAndroid Build Coastguard Worker patch_ref='89/456789/12', 126*c8dee2aaSAndroid Build Coastguard Worker patch_repo='https://skia.googlesource.com/skia.git', 127*c8dee2aaSAndroid Build Coastguard Worker patch_storage='gerrit', 128*c8dee2aaSAndroid Build Coastguard Worker patch_set=7, 129*c8dee2aaSAndroid Build Coastguard Worker patch_issue=1234, 130*c8dee2aaSAndroid Build Coastguard Worker gerrit_project='skia', 131*c8dee2aaSAndroid Build Coastguard Worker gerrit_url='https://skia-review.googlesource.com/') 132*c8dee2aaSAndroid Build Coastguard Worker ) 133