• 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
5
6DEPS = [
7  'flavor',
8  'recipe_engine/properties',
9  'recipe_engine/raw_io',
10  'run',
11  'vars',
12]
13
14
15def test_exceptions(api):
16  try:
17    api.flavor.copy_directory_contents_to_device('src', 'dst')
18  except ValueError:
19    pass
20  try:
21    api.flavor.copy_directory_contents_to_host('src', 'dst')
22  except ValueError:
23    pass
24  try:
25    api.flavor.copy_file_to_device('src', 'dst')
26  except ValueError:
27    pass
28
29
30def RunSteps(api):
31  api.vars.setup()
32  api.flavor.setup()
33
34  if api.properties.get('is_testing_exceptions') == 'True':
35    return test_exceptions(api)
36
37  api.flavor.compile('dm')
38  api.flavor.copy_extra_build_products(api.vars.swarming_out_dir)
39  assert str(api.flavor.out_dir) != ''
40  if 'Build' not in api.properties['buildername']:
41    try:
42      api.flavor.copy_file_to_device('file.txt', 'file.txt')
43      api.flavor.create_clean_host_dir('results_dir')
44      api.flavor.create_clean_device_dir('device_results_dir')
45      api.flavor.install_everything()
46      if 'Test' in api.properties['buildername']:
47        api.flavor.step('dm', ['dm', '--some-flag'])
48        api.flavor.copy_directory_contents_to_host(
49            api.flavor.device_dirs.dm_dir, api.vars.dm_dir)
50      elif 'Perf' in api.properties['buildername']:
51        api.flavor.step('nanobench', ['nanobench', '--some-flag'])
52        api.flavor.copy_directory_contents_to_host(
53            api.flavor.device_dirs.perf_data_dir, api.vars.perf_data_dir)
54    finally:
55      api.flavor.cleanup_steps()
56  api.run.check_failure()
57
58
59TEST_BUILDERS = [
60  'Build-Debian9-Clang-arm-Release-Android_API26',
61  'Build-Debian9-Clang-arm-Release-Chromebook_GLES',
62  'Build-Debian9-Clang-arm-Release-Android_ASAN',
63  'Build-Debian9-Clang-arm64-Release-Android_ASAN',
64  'Build-Debian9-Clang-x86_64-Debug-Chromebook_GLES',
65  'Build-Debian9-Clang-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE',
66  'Build-Debian9-Clang-x86_64-Release-Fast',
67  'Build-Debian9-Clang-x86_64-Release-Mini',
68  'Build-Debian9-Clang-x86_64-Release-NoDEPS',
69  'Build-Debian9-Clang-x86_64-Release-Vulkan',
70  'Build-Debian9-EMCC-wasm-Release',
71  'Build-Debian9-GCC-x86_64-Debug-EmbededResouces',
72  'Build-Debian9-GCC-x86_64-Release-ANGLE',
73  'Build-Debian9-GCC-x86_64-Release-Flutter_Android',
74  'Build-Debian9-GCC-x86_64-Release-NoGPU',
75  'Build-Debian9-GCC-x86_64-Release-PDFium',
76  'Build-Debian9-GCC-x86_64-Release-PDFium_SkiaPaths',
77  'Build-Debian9-GCC-x86_64-Release-Shared',
78  'Build-Mac-Clang-arm64-Debug-Android_Vulkan',
79  'Build-Mac-Clang-arm64-Debug-iOS',
80  'Build-Mac-Clang-x86_64-Debug-CommandBuffer',
81  'Build-Mac-Clang-x86_64-Debug-Metal',
82  'Build-Win-Clang-arm64-Release-Android',
83  'Build-Win-Clang-x86_64-Debug-GDI',
84  'Build-Win-Clang-x86_64-Debug-GomaNoFallback',
85  'Build-Win-Clang-x86_64-Release',
86  'Build-Win-Clang-x86_64-Release-ANGLE_Goma',
87  'Build-Win-Clang-x86_64-Release-Goma',
88  'Build-Win-Clang-x86_64-Release-Vulkan',
89  'Build-Win-MSVC-x86-Debug-Exceptions',
90  'Housekeeper-PerCommit-CheckGeneratedFiles',
91  'Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android',
92  'Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android',
93  'Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Debug-All-Android',
94  'Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Debug-All-Android',
95  'Perf-ChromeOS-Clang-SamsungChromebookPlus-GPU-MaliT860-arm-Release-All',
96  'Perf-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release-All',
97  'Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-MSAN',
98  'Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-ASAN',
99  'Perf-Ubuntu14-GCC-GCE-CPU-AVX2-x86_64-Release-All-CT_BENCH_1k_SKPs',
100  'Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android',
101  'Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android',
102  'Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android',
103  'Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_ASAN',
104  'Test-Android-Clang-Nexus7-CPU-Tegra3-arm-Release-All-Android',
105  'Test-Android-Clang-Pixel-GPU-Adreno530-arm64-Debug-All-Android',
106  'Test-ChromeOS-Clang-SamsungChromebookPlus-GPU-MaliT860-arm-Release-All',
107  'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-Coverage',
108  'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-TSAN',
109  'Test-Debian9-GCC-GCE-CPU-AVX2-x86_64-Release-All',
110  'Test-Ubuntu16-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-Vulkan',
111  ('Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-All'
112   '-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41'),
113  'Test-Win10-MSVC-ShuttleA-GPU-GTX660-x86_64-Debug-All',
114  'Test-iOS-Clang-iPadPro-GPU-GT7800-arm64-Debug-All',
115  'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack',
116]
117
118# Default properties used for TEST_BUILDERS.
119defaultProps = lambda buildername: dict(
120  buildername=buildername,
121  repository='https://skia.googlesource.com/skia.git',
122  revision='abc123',
123  path_config='kitchen',
124  patch_set=2,
125  swarm_out_dir='[SWARM_OUT_DIR]'
126)
127
128def GenTests(api):
129  for buildername in TEST_BUILDERS:
130    test = (
131      api.test(buildername) +
132      api.properties(**defaultProps(buildername))
133    )
134    if 'Chromebook' in buildername and not 'Build' in buildername:
135      test += api.step_data(
136          'read chromeos ip',
137          stdout=api.raw_io.output('{"user_ip":"foo@127.0.0.1"}'))
138    if 'Chromecast' in buildername:
139      test += api.step_data(
140          'read chromecast ip',
141          stdout=api.raw_io.output('192.168.1.2:5555'))
142    yield test
143
144  builder = 'Test-Debian9-GCC-GCE-CPU-AVX2-x86_64-Release-All'
145  yield (
146      api.test('exceptions') +
147      api.properties(buildername=builder,
148                     repository='https://skia.googlesource.com/skia.git',
149                     revision='abc123',
150                     path_config='kitchen',
151                     swarm_out_dir='[SWARM_OUT_DIR]',
152                     is_testing_exceptions='True')
153  )
154
155  builder = 'Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Debug-All-Android'
156  yield (
157      api.test('failed_infra_step') +
158      api.properties(buildername=builder,
159                     repository='https://skia.googlesource.com/skia.git',
160                     revision='abc123',
161                     path_config='kitchen',
162                     swarm_out_dir='[SWARM_OUT_DIR]') +
163      api.step_data('get swarming bot id',
164                    stdout=api.raw_io.output('build123-m2--device5')) +
165      api.step_data('dump log', retcode=1)
166  )
167
168  builder = 'Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Debug-All-Android'
169  yield (
170      api.test('failed_read_version') +
171      api.properties(buildername=builder,
172                     repository='https://skia.googlesource.com/skia.git',
173                     revision='abc123',
174                     path_config='kitchen',
175                     swarm_out_dir='[SWARM_OUT_DIR]') +
176      api.step_data('read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION',
177                    retcode=1)
178  )
179
180  builder = 'Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Debug-All-Android'
181  yield (
182      api.test('retry_adb_command') +
183      api.properties(buildername=builder,
184                     repository='https://skia.googlesource.com/skia.git',
185                     revision='abc123',
186                     path_config='kitchen',
187                     swarm_out_dir='[SWARM_OUT_DIR]') +
188      api.step_data('mkdir /sdcard/revenge_of_the_skiabot/resources',
189                    retcode=1)
190  )
191
192  builder = 'Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Debug-All-Android'
193  fail_step_name = 'mkdir /sdcard/revenge_of_the_skiabot/resources'
194  yield (
195      api.test('retry_adb_command_retries_exhausted') +
196      api.properties(buildername=builder,
197                     repository='https://skia.googlesource.com/skia.git',
198                     revision='abc123',
199                     path_config='kitchen',
200                     swarm_out_dir='[SWARM_OUT_DIR]') +
201      api.step_data('get swarming bot id',
202                    stdout=api.raw_io.output('build123-m2--device5')) +
203      api.step_data(fail_step_name, retcode=1) +
204      api.step_data(fail_step_name + ' (attempt 2)', retcode=1) +
205      api.step_data(fail_step_name + ' (attempt 3)', retcode=1)
206  )
207
208  yield (
209      api.test('cpu_scale_failed') +
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('Scale CPU 0 to 0.600000', retcode=1)
216  )
217
218  builder = 'Test-iOS-Clang-iPhone7-GPU-GT7600-arm64-Release-All'
219  fail_step_name = 'install_dm'
220  yield (
221      api.test('retry_ios_install') +
222      api.properties(buildername=builder,
223                     repository='https://skia.googlesource.com/skia.git',
224                     revision='abc123',
225                     path_config='kitchen',
226                     swarm_out_dir='[SWARM_OUT_DIR]') +
227      api.step_data(fail_step_name, retcode=1)
228  )
229
230  yield (
231      api.test('retry_ios_install_retries_exhausted') +
232      api.properties(buildername=builder,
233                     repository='https://skia.googlesource.com/skia.git',
234                     revision='abc123',
235                     path_config='kitchen',
236                     swarm_out_dir='[SWARM_OUT_DIR]') +
237      api.step_data(fail_step_name, retcode=1) +
238      api.step_data(fail_step_name + ' (attempt 2)', retcode=1)
239  )
240