1cb93a386Sopenharmony_ci# Copyright 2018 The Chromium Authors. All rights reserved.
2cb93a386Sopenharmony_ci# Use of this source code is governed by a BSD-style license that can be
3cb93a386Sopenharmony_ci# found in the LICENSE file.
4cb93a386Sopenharmony_ci
5cb93a386Sopenharmony_ci# Recipe which runs the PathKit tests using docker
6cb93a386Sopenharmony_ci
7cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY = "PY2+3"
8cb93a386Sopenharmony_ci
9cb93a386Sopenharmony_ciDEPS = [
10cb93a386Sopenharmony_ci  'checkout',
11cb93a386Sopenharmony_ci  'docker',
12cb93a386Sopenharmony_ci  'env',
13cb93a386Sopenharmony_ci  'flavor',
14cb93a386Sopenharmony_ci  'gold_upload',
15cb93a386Sopenharmony_ci  'infra',
16cb93a386Sopenharmony_ci  'recipe_engine/file',
17cb93a386Sopenharmony_ci  'recipe_engine/path',
18cb93a386Sopenharmony_ci  'recipe_engine/properties',
19cb93a386Sopenharmony_ci  'recipe_engine/python',
20cb93a386Sopenharmony_ci  'recipe_engine/step',
21cb93a386Sopenharmony_ci  'run',
22cb93a386Sopenharmony_ci  'vars',
23cb93a386Sopenharmony_ci]
24cb93a386Sopenharmony_ci
25cb93a386Sopenharmony_ci
26cb93a386Sopenharmony_ciDOCKER_IMAGE = 'gcr.io/skia-public/gold-karma-chrome-tests:87.0.4280.88_v2'
27cb93a386Sopenharmony_ciINNER_KARMA_SCRIPT = 'skia/infra/pathkit/test_pathkit.sh'
28cb93a386Sopenharmony_ci
29cb93a386Sopenharmony_ci
30cb93a386Sopenharmony_cidef RunSteps(api):
31cb93a386Sopenharmony_ci  api.vars.setup()
32cb93a386Sopenharmony_ci  api.flavor.setup("dm")
33cb93a386Sopenharmony_ci  checkout_root = api.path['start_dir']
34cb93a386Sopenharmony_ci  out_dir = api.vars.swarming_out_dir
35cb93a386Sopenharmony_ci
36cb93a386Sopenharmony_ci  # The karma script is configured to look in ./npm-(asmjs|wasm)/bin/test/ for
37cb93a386Sopenharmony_ci  # the test files to load, so we must copy them there (see Set up for docker).
38cb93a386Sopenharmony_ci  copy_dest = checkout_root.join('skia', 'modules', 'pathkit',
39cb93a386Sopenharmony_ci                                 'npm-wasm', 'bin', 'test')
40cb93a386Sopenharmony_ci  if 'asmjs' in api.vars.builder_name:
41cb93a386Sopenharmony_ci    copy_dest = checkout_root.join('skia', 'modules', 'pathkit',
42cb93a386Sopenharmony_ci                                   'npm-asmjs', 'bin', 'test')
43cb93a386Sopenharmony_ci
44cb93a386Sopenharmony_ci  base_dir = api.vars.build_dir
45cb93a386Sopenharmony_ci  bundle_name = 'pathkit.wasm'
46cb93a386Sopenharmony_ci  if 'asmjs' in api.vars.builder_name:
47cb93a386Sopenharmony_ci    # release mode has a .js.mem file that needs to come with.
48cb93a386Sopenharmony_ci    # debug mode has an optional .map file, but we can omit that for tests
49cb93a386Sopenharmony_ci    if 'Debug' in api.vars.builder_name:
50cb93a386Sopenharmony_ci      bundle_name = ''
51cb93a386Sopenharmony_ci    else:
52cb93a386Sopenharmony_ci      bundle_name = 'pathkit.js.mem'
53cb93a386Sopenharmony_ci
54cb93a386Sopenharmony_ci  copies = [{
55cb93a386Sopenharmony_ci    'src': base_dir.join('pathkit.js'),
56cb93a386Sopenharmony_ci    'dst': copy_dest.join('pathkit.js'),
57cb93a386Sopenharmony_ci  }]
58cb93a386Sopenharmony_ci  if bundle_name:
59cb93a386Sopenharmony_ci    copies.append({
60cb93a386Sopenharmony_ci      'src': base_dir.join(bundle_name),
61cb93a386Sopenharmony_ci      'dst': copy_dest.join(bundle_name),
62cb93a386Sopenharmony_ci    })
63cb93a386Sopenharmony_ci  recursive_read = [checkout_root.join('skia')]
64cb93a386Sopenharmony_ci
65cb93a386Sopenharmony_ci  docker_args = None
66cb93a386Sopenharmony_ci  if 'asmjs' in api.vars.builder_name:
67cb93a386Sopenharmony_ci    docker_args = ['--env', 'ASM_JS=1']
68cb93a386Sopenharmony_ci
69cb93a386Sopenharmony_ci  args = [
70cb93a386Sopenharmony_ci    '--builder',              api.vars.builder_name,
71cb93a386Sopenharmony_ci    '--git_hash',             api.properties['revision'],
72cb93a386Sopenharmony_ci    '--buildbucket_build_id', api.properties.get('buildbucket_build_id', ''),
73cb93a386Sopenharmony_ci    '--browser',              'Chrome',
74cb93a386Sopenharmony_ci    '--config',               api.vars.configuration,
75cb93a386Sopenharmony_ci    '--source_type',          'pathkit',
76cb93a386Sopenharmony_ci  ]
77cb93a386Sopenharmony_ci  if 'asmjs' in api.vars.builder_name:
78cb93a386Sopenharmony_ci    args.extend(['--compiled_language', 'asmjs']) # the default is wasm
79cb93a386Sopenharmony_ci  if api.vars.is_trybot:
80cb93a386Sopenharmony_ci    args.extend([
81cb93a386Sopenharmony_ci      '--issue',         api.vars.issue,
82cb93a386Sopenharmony_ci      '--patchset',      api.vars.patchset,
83cb93a386Sopenharmony_ci    ])
84cb93a386Sopenharmony_ci
85cb93a386Sopenharmony_ci  api.docker.run(
86cb93a386Sopenharmony_ci      name='Test PathKit with Docker',
87cb93a386Sopenharmony_ci      docker_image=DOCKER_IMAGE,
88cb93a386Sopenharmony_ci      src_dir=checkout_root,
89cb93a386Sopenharmony_ci      out_dir=out_dir,
90cb93a386Sopenharmony_ci      script=checkout_root.join(INNER_KARMA_SCRIPT),
91cb93a386Sopenharmony_ci      args=args,
92cb93a386Sopenharmony_ci      docker_args=docker_args,
93cb93a386Sopenharmony_ci      copies=copies,
94cb93a386Sopenharmony_ci      recursive_read=recursive_read,
95cb93a386Sopenharmony_ci      attempts=3,
96cb93a386Sopenharmony_ci  )
97cb93a386Sopenharmony_ci
98cb93a386Sopenharmony_ci  api.gold_upload.upload()
99cb93a386Sopenharmony_ci
100cb93a386Sopenharmony_ci
101cb93a386Sopenharmony_cidef GenTests(api):
102cb93a386Sopenharmony_ci  yield (
103cb93a386Sopenharmony_ci      api.test('Test-Debian10-EMCC-GCE-CPU-AVX2-wasm-Debug-All-PathKit') +
104cb93a386Sopenharmony_ci      api.properties(buildername=('Test-Debian10-EMCC-GCE-CPU-AVX2'
105cb93a386Sopenharmony_ci                                  '-wasm-Debug-All-PathKit'),
106cb93a386Sopenharmony_ci                     repository='https://skia.googlesource.com/skia.git',
107cb93a386Sopenharmony_ci                     revision='abc123',
108cb93a386Sopenharmony_ci                     gs_bucket='skia-infra-gm',
109cb93a386Sopenharmony_ci                     path_config='kitchen',
110cb93a386Sopenharmony_ci                     swarm_out_dir='[SWARM_OUT_DIR]')
111cb93a386Sopenharmony_ci  )
112cb93a386Sopenharmony_ci
113cb93a386Sopenharmony_ci  yield (
114cb93a386Sopenharmony_ci      api.test('Test-Debian10-EMCC-GCE-CPU-AVX2-asmjs-Debug-All-PathKit') +
115cb93a386Sopenharmony_ci      api.properties(buildername=('Test-Debian10-EMCC-GCE-CPU-AVX2'
116cb93a386Sopenharmony_ci                                  '-asmjs-Debug-All-PathKit'),
117cb93a386Sopenharmony_ci                     repository='https://skia.googlesource.com/skia.git',
118cb93a386Sopenharmony_ci                     revision='abc123',
119cb93a386Sopenharmony_ci                     gs_bucket='skia-infra-gm',
120cb93a386Sopenharmony_ci                     path_config='kitchen',
121cb93a386Sopenharmony_ci                     swarm_out_dir='[SWARM_OUT_DIR]')
122cb93a386Sopenharmony_ci  )
123cb93a386Sopenharmony_ci
124cb93a386Sopenharmony_ci  yield (
125cb93a386Sopenharmony_ci      api.test('Test-Debian10-EMCC-GCE-CPU-AVX2-asmjs-Release-All-PathKit') +
126cb93a386Sopenharmony_ci      api.properties(buildername=('Test-Debian10-EMCC-GCE-CPU-AVX2'
127cb93a386Sopenharmony_ci                                  '-asmjs-Release-All-PathKit'),
128cb93a386Sopenharmony_ci                     repository='https://skia.googlesource.com/skia.git',
129cb93a386Sopenharmony_ci                     revision='abc123',
130cb93a386Sopenharmony_ci                     gs_bucket='skia-infra-gm',
131cb93a386Sopenharmony_ci                     path_config='kitchen',
132cb93a386Sopenharmony_ci                     swarm_out_dir='[SWARM_OUT_DIR]')
133cb93a386Sopenharmony_ci  )
134cb93a386Sopenharmony_ci
135cb93a386Sopenharmony_ci  yield (
136cb93a386Sopenharmony_ci      api.test('pathkit_trybot') +
137cb93a386Sopenharmony_ci      api.properties(buildername=('Test-Debian10-EMCC-GCE-CPU-AVX2'
138cb93a386Sopenharmony_ci                                  '-wasm-Debug-All-PathKit'),
139cb93a386Sopenharmony_ci                     repository='https://skia.googlesource.com/skia.git',
140cb93a386Sopenharmony_ci                     revision='abc123',
141cb93a386Sopenharmony_ci                     gs_bucket='skia-infra-gm',
142cb93a386Sopenharmony_ci                     path_config='kitchen',
143cb93a386Sopenharmony_ci                     swarm_out_dir='[SWARM_OUT_DIR]',
144cb93a386Sopenharmony_ci                     patch_ref='89/456789/12',
145cb93a386Sopenharmony_ci                     patch_repo='https://skia.googlesource.com/skia.git',
146cb93a386Sopenharmony_ci                     patch_storage='gerrit',
147cb93a386Sopenharmony_ci                     patch_set=7,
148cb93a386Sopenharmony_ci                     patch_issue=1234,
149cb93a386Sopenharmony_ci                     gerrit_project='skia',
150cb93a386Sopenharmony_ci                     gerrit_url='https://skia-review.googlesource.com/')
151cb93a386Sopenharmony_ci  )
152