• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2017 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
5PYTHON_VERSION_COMPATIBILITY = "PY3"
6
7DEPS = [
8  'flavor',
9  'recipe_engine/platform',
10  'recipe_engine/properties',
11  'recipe_engine/raw_io',
12  'run',
13  'vars',
14]
15
16
17def test_exceptions(api):
18  try:
19    api.flavor.copy_directory_contents_to_device('src', 'dst')
20  except ValueError:
21    pass
22  try:
23    api.flavor.copy_directory_contents_to_host('src', 'dst')
24  except ValueError:
25    pass
26  try:
27    api.flavor.copy_file_to_device('src', 'dst')
28  except ValueError:
29    pass
30
31
32def RunSteps(api):
33  api.vars.setup()
34
35  builder = api.properties['buildername']
36  app = None
37  if 'SkottieTracing' in builder:
38    app = None
39  elif 'Test' in builder:
40    app = 'dm'
41  elif 'Perf' in builder:
42    app = 'nanobench'
43  api.flavor.setup(app)
44
45  if api.properties.get('is_testing_exceptions') == 'True':
46    return test_exceptions(api)
47
48  try:
49    api.flavor.copy_file_to_device('file.txt', 'file.txt')
50    api.flavor.read_file_on_device('file.txt')
51    api.flavor.remove_file_on_device('file.txt')
52    api.flavor.create_clean_host_dir('results_dir')
53    api.flavor.create_clean_device_dir('device_results_dir')
54
55    if 'Lottie' in builder:
56      api.flavor.install(lotties=True)
57    elif 'Mskp' in builder:
58      api.flavor.install(mskps=True)
59    elif all(v in builder for v in ['Perf', 'Android', 'CPU']):
60      api.flavor.install(skps=True, images=True, svgs=True,
61                         resources=True, texttraces=True)
62    else:
63      api.flavor.install(skps=True, images=True, lotties=False,
64                         svgs=True, resources=True)
65    if 'Test' in builder:
66      api.flavor.step('dm', ['dm', '--some-flag'])
67      api.flavor.copy_directory_contents_to_host(
68          api.flavor.device_dirs.dm_dir, api.flavor.host_dirs.dm_dir)
69    elif 'Perf' in builder:
70      if 'SkottieTracing' in builder:
71        api.flavor.step('dm', ['dm', '--some-flag'])
72      else:
73        api.flavor.step('nanobench', ['nanobench', '--some-flag'])
74      api.flavor.copy_directory_contents_to_host(
75          api.flavor.device_dirs.perf_data_dir,
76          api.flavor.host_dirs.perf_data_dir)
77  finally:
78    api.flavor.cleanup_steps()
79  api.run.check_failure()
80
81
82TEST_BUILDERS = [
83  'Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing',
84  'Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android',
85  'Perf-Android-Clang-NVIDIA_Shield-CPU-TegraX1-arm64-Release-All-Android',
86  'Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android',
87  'Perf-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android_Skpbench_Mskp',
88  'Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_Vulkan',
89  'Perf-Android-Clang-Pixel6-GPU-Adreno620-arm64-Release-All-Android',
90  'Perf-ChromeOS-Clang-SamsungChromebookPlus-GPU-MaliT860-arm-Release-All',
91  'Perf-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-MSAN',
92  'Perf-Debian10-Clang-GCE-CPU-AVX2-x86_64-Release-All-ASAN',
93  'Perf-Win2019-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ASAN',
94  'Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android',
95  'Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android',
96  'Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android',
97  'Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_ASAN',
98  'Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android_Vulkan',
99  'Test-ChromeOS-Clang-SamsungChromebookPlus-GPU-MaliT860-arm-Release-All',
100  'Test-Debian10-GCC-GCE-CPU-AVX2-x86-Debug-All-Docker',
101  'Test-Debian10-GCC-GCE-CPU-AVX2-x86_64-Debug-All-Docker',
102  'Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-Coverage',
103  'Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Release-All-Lottie',
104  'Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Release-All-TSAN',
105  'Test-Debian10-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader',
106  'Test-Debian10-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-Vulkan',
107  'Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Debug-All-ASAN',
108  ('Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All'
109   '-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41'),
110  'Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan_ProcDump',
111  'Test-Debian10-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-ASAN_Vulkan',
112]
113
114# Default properties used for TEST_BUILDERS.
115defaultProps = lambda buildername: dict(
116  buildername=buildername,
117  repository='https://skia.googlesource.com/skia.git',
118  revision='abc123',
119  path_config='kitchen',
120  patch_set=2,
121  swarm_out_dir='[SWARM_OUT_DIR]'
122)
123
124def GenTests(api):
125  for buildername in TEST_BUILDERS:
126    test = (
127      api.test(buildername) +
128      api.properties(**defaultProps(buildername))
129    )
130    if 'Win' in buildername:
131      test += api.platform('win', 64)
132    yield test
133
134  builder = 'Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Release-All'
135  yield (
136      api.test('exceptions') +
137      api.properties(buildername=builder,
138                     repository='https://skia.googlesource.com/skia.git',
139                     revision='abc123',
140                     path_config='kitchen',
141                     swarm_out_dir='[SWARM_OUT_DIR]',
142                     is_testing_exceptions='True')
143  )
144
145  builder = ('Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All'
146             '-Android')
147  yield (
148      api.test('failed_infra_step') +
149      api.properties(buildername=builder,
150                     repository='https://skia.googlesource.com/skia.git',
151                     revision='abc123',
152                     path_config='kitchen',
153                     swarm_out_dir='[SWARM_OUT_DIR]') +
154      api.step_data('get swarming bot id',
155                    stdout=api.raw_io.output('build123-m2--device5')) +
156      api.step_data('dump log', retcode=1)
157  )
158
159  yield (
160      api.test('failed_read_version') +
161      api.properties(buildername=builder,
162                     repository='https://skia.googlesource.com/skia.git',
163                     revision='abc123',
164                     path_config='kitchen',
165                     swarm_out_dir='[SWARM_OUT_DIR]') +
166      api.step_data('read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION',
167                    retcode=1)
168  )
169
170  yield (
171      api.test('retry_adb_command') +
172      api.properties(buildername=builder,
173                     repository='https://skia.googlesource.com/skia.git',
174                     revision='abc123',
175                     path_config='kitchen',
176                     swarm_out_dir='[SWARM_OUT_DIR]') +
177      api.step_data('mkdir /sdcard/revenge_of_the_skiabot/resources',
178                    retcode=1)
179  )
180
181  fail_step_name = 'mkdir /sdcard/revenge_of_the_skiabot/resources'
182  yield (
183      api.test('retry_adb_command_retries_exhausted') +
184      api.properties(buildername=builder,
185                     repository='https://skia.googlesource.com/skia.git',
186                     revision='abc123',
187                     path_config='kitchen',
188                     swarm_out_dir='[SWARM_OUT_DIR]') +
189      api.step_data('get swarming bot id',
190                    stdout=api.raw_io.output('build123-m2--device5')) +
191      api.step_data(fail_step_name, retcode=1) +
192      api.step_data(fail_step_name + ' (attempt 2)', retcode=1) +
193      api.step_data(fail_step_name + ' (attempt 3)', retcode=1)
194  )
195
196  builder = 'Test-iOS-Clang-iPhone7-GPU-PowerVRGT7600-arm64-Release-All'
197  fail_step_name = 'install dm'
198  yield (
199      api.test('retry_ios_install') +
200      api.properties(buildername=builder,
201                     repository='https://skia.googlesource.com/skia.git',
202                     revision='abc123',
203                     path_config='kitchen',
204                     swarm_out_dir='[SWARM_OUT_DIR]') +
205      api.step_data(fail_step_name, retcode=1)
206  )
207
208  yield (
209      api.test('retry_ios_install_retries_exhausted') +
210      api.properties(buildername=builder,
211                     repository='https://skia.googlesource.com/skia.git',
212                     revision='abc123',
213                     path_config='kitchen',
214                     swarm_out_dir='[SWARM_OUT_DIR]') +
215      api.step_data(fail_step_name, retcode=1) +
216      api.step_data(fail_step_name + ' (attempt 2)', retcode=1)
217  )
218  fail_step_name = 'dm'
219  yield (
220      api.test('ios_rerun_with_debug') +
221      api.properties(buildername=builder,
222                     repository='https://skia.googlesource.com/skia.git',
223                     revision='abc123',
224                     path_config='kitchen',
225                     swarm_out_dir='[SWARM_OUT_DIR]') +
226      api.step_data(fail_step_name, retcode=1)
227  )
228
229  builder = ('Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All'
230             '-Android')
231  yield (
232    api.test('cpu_scale_failed_once') +
233    api.properties(buildername=builder,
234                   revision='abc123',
235                   path_config='kitchen',
236                   swarm_out_dir='[SWARM_OUT_DIR]') +
237    api.step_data('Scale CPU 4 to 0.600000', retcode=1)
238  )
239
240  yield (
241    api.test('cpu_scale_failed') +
242    api.properties(buildername=builder,
243                   revision='abc123',
244                   path_config='kitchen',
245                   swarm_out_dir='[SWARM_OUT_DIR]') +
246    api.step_data('get swarming bot id',
247                  stdout=api.raw_io.output('skia-rpi-022')) +
248    api.step_data('Scale CPU 4 to 0.600000', retcode=1)+
249    api.step_data('Scale CPU 4 to 0.600000 (attempt 2)', retcode=1)+
250    api.step_data('Scale CPU 4 to 0.600000 (attempt 3)', retcode=1)
251  )
252
253  builder = ('Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release'
254             '-All-Android')
255  yield (
256    api.test('cpu_scale_failed_golo') +
257    api.properties(buildername=builder,
258                   revision='abc123',
259                   path_config='kitchen',
260                   swarm_out_dir='[SWARM_OUT_DIR]') +
261    api.step_data('get swarming bot id',
262                  stdout=api.raw_io.output('build123-m2--device5')) +
263    api.step_data('Scale CPU 4 to 0.600000', retcode=1)+
264    api.step_data('Scale CPU 4 to 0.600000 (attempt 2)', retcode=1)+
265    api.step_data('Scale CPU 4 to 0.600000 (attempt 3)', retcode=1)
266  )
267