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 all(v in builder for v in ['Perf', 'Android', 'CPU']): 58 api.flavor.install(skps=True, images=True, svgs=True, 59 resources=True, texttraces=True) 60 else: 61 api.flavor.install(skps=True, images=True, lotties=False, 62 svgs=True, resources=True) 63 if 'Test' in builder: 64 api.flavor.step('dm', ['dm', '--some-flag']) 65 api.flavor.copy_directory_contents_to_host( 66 api.flavor.device_dirs.dm_dir, api.flavor.host_dirs.dm_dir) 67 elif 'Perf' in builder: 68 if 'SkottieTracing' in builder: 69 api.flavor.step('dm', ['dm', '--some-flag']) 70 else: 71 api.flavor.step('nanobench', ['nanobench', '--some-flag']) 72 api.flavor.copy_directory_contents_to_host( 73 api.flavor.device_dirs.perf_data_dir, 74 api.flavor.host_dirs.perf_data_dir) 75 finally: 76 api.flavor.cleanup_steps() 77 api.run.check_failure() 78 79 80TEST_BUILDERS = [ 81 'Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing', 82 'Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_Vulkan', 83 'Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android', 84 'Perf-Android-Clang-MokeyGo32-CPU-Cortex-arm-Release-All-Android', 85 'Perf-Android-Clang-MotoG73-GPU-BXM_8_256-arm64-Release-All-Android', 86 'Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android', 87 'Perf-Android-Clang-Pixel6-GPU-Adreno620-arm64-Release-All-Android', 88 'Perf-ChromeOS-Clang-SamsungChromebookPlus-GPU-MaliT860-arm-Release-All', 89 'Perf-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-MSAN', 90 'Perf-Debian10-Clang-GCE-CPU-AVX2-x86_64-Release-All-ASAN', 91 'Perf-Win2019-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ASAN', 92 'Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android', 93 'Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android', 94 'Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android', 95 'Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_ASAN', 96 'Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android_Vulkan', 97 'Test-ChromeOS-Clang-SamsungChromebookPlus-GPU-MaliT860-arm-Release-All', 98 'Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-Coverage', 99 'Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Release-All-Lottie', 100 'Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Release-All-TSAN', 101 'Test-Debian10-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader', 102 'Test-Debian10-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-Vulkan', 103 'Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Debug-All-ASAN', 104 ('Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All' 105 '-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41'), 106 'Test-Debian10-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-ASAN_Vulkan', 107 'Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All', 108 'Test-Win10-Clang-NUC5i7RYH-CPU-AVX2-x86_64-Debug-All-NativeFonts_DWriteCore', 109] 110 111# Default properties used for TEST_BUILDERS. 112defaultProps = lambda buildername: dict( 113 buildername=buildername, 114 repository='https://skia.googlesource.com/skia.git', 115 revision='abc123', 116 path_config='kitchen', 117 patch_set=2, 118 swarm_out_dir='[SWARM_OUT_DIR]' 119) 120 121def GenTests(api): 122 for buildername in TEST_BUILDERS: 123 test = ( 124 api.test(buildername) + 125 api.properties(**defaultProps(buildername)) 126 ) 127 if 'Win' in buildername: 128 test += api.platform('win', 64) 129 yield test 130 131 builder = 'Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Release-All' 132 yield ( 133 api.test('exceptions') + 134 api.properties(buildername=builder, 135 repository='https://skia.googlesource.com/skia.git', 136 revision='abc123', 137 path_config='kitchen', 138 swarm_out_dir='[SWARM_OUT_DIR]', 139 is_testing_exceptions='True') 140 ) 141 142 builder = ('Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All' 143 '-Android') 144 yield ( 145 api.test('failed_infra_step') + 146 api.properties(buildername=builder, 147 repository='https://skia.googlesource.com/skia.git', 148 revision='abc123', 149 path_config='kitchen', 150 swarm_out_dir='[SWARM_OUT_DIR]') + 151 api.step_data('get swarming bot id', 152 stdout=api.raw_io.output('build123-m2--device5')) + 153 api.step_data('dump log', retcode=1) 154 ) 155 156 yield ( 157 api.test('failed_read_version') + 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('read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION', 164 retcode=1) 165 ) 166 167 yield ( 168 api.test('retry_adb_command') + 169 api.properties(buildername=builder, 170 repository='https://skia.googlesource.com/skia.git', 171 revision='abc123', 172 path_config='kitchen', 173 swarm_out_dir='[SWARM_OUT_DIR]') + 174 api.step_data('mkdir /sdcard/revenge_of_the_skiabot/resources', 175 retcode=1) 176 ) 177 178 fail_step_name = 'mkdir /sdcard/revenge_of_the_skiabot/resources' 179 yield ( 180 api.test('retry_adb_command_retries_exhausted') + 181 api.properties(buildername=builder, 182 repository='https://skia.googlesource.com/skia.git', 183 revision='abc123', 184 path_config='kitchen', 185 swarm_out_dir='[SWARM_OUT_DIR]') + 186 api.step_data('get swarming bot id', 187 stdout=api.raw_io.output('build123-m2--device5')) + 188 api.step_data(fail_step_name, retcode=1) + 189 api.step_data(fail_step_name + ' (attempt 2)', retcode=1) + 190 api.step_data(fail_step_name + ' (attempt 3)', retcode=1) 191 ) 192 193 builder = 'Test-iOS-Clang-iPhone7-GPU-PowerVRGT7600-arm64-Release-All' 194 fail_step_name = 'install dm' 195 yield ( 196 api.test('retry_ios_install') + 197 api.properties(buildername=builder, 198 repository='https://skia.googlesource.com/skia.git', 199 revision='abc123', 200 path_config='kitchen', 201 swarm_out_dir='[SWARM_OUT_DIR]') + 202 api.step_data(fail_step_name, retcode=1) 203 ) 204 205 yield ( 206 api.test('retry_ios_install_retries_exhausted') + 207 api.properties(buildername=builder, 208 repository='https://skia.googlesource.com/skia.git', 209 revision='abc123', 210 path_config='kitchen', 211 swarm_out_dir='[SWARM_OUT_DIR]') + 212 api.step_data(fail_step_name, retcode=1) + 213 api.step_data(fail_step_name + ' (attempt 2)', retcode=1) 214 ) 215 fail_step_name = 'dm' 216 yield ( 217 api.test('ios_rerun_with_debug') + 218 api.properties(buildername=builder, 219 repository='https://skia.googlesource.com/skia.git', 220 revision='abc123', 221 path_config='kitchen', 222 swarm_out_dir='[SWARM_OUT_DIR]') + 223 api.step_data(fail_step_name, retcode=1) 224 ) 225 226 builder = ('Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All' 227 '-Android') 228 yield ( 229 api.test('cpu_scale_failed_once') + 230 api.properties(buildername=builder, 231 revision='abc123', 232 path_config='kitchen', 233 swarm_out_dir='[SWARM_OUT_DIR]') + 234 api.step_data('Scale CPU 4 to 0.600000', retcode=1) 235 ) 236 237 yield ( 238 api.test('cpu_scale_failed') + 239 api.properties(buildername=builder, 240 revision='abc123', 241 path_config='kitchen', 242 swarm_out_dir='[SWARM_OUT_DIR]') + 243 api.step_data('get swarming bot id', 244 stdout=api.raw_io.output('skia-rpi-022')) + 245 api.step_data('Scale CPU 4 to 0.600000', retcode=1)+ 246 api.step_data('Scale CPU 4 to 0.600000 (attempt 2)', retcode=1)+ 247 api.step_data('Scale CPU 4 to 0.600000 (attempt 3)', retcode=1) 248 ) 249 250 builder = ('Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release' 251 '-All-Android') 252 yield ( 253 api.test('cpu_scale_failed_golo') + 254 api.properties(buildername=builder, 255 revision='abc123', 256 path_config='kitchen', 257 swarm_out_dir='[SWARM_OUT_DIR]') + 258 api.step_data('get swarming bot id', 259 stdout=api.raw_io.output('build123-m2--device5')) + 260 api.step_data('Scale CPU 4 to 0.600000', retcode=1)+ 261 api.step_data('Scale CPU 4 to 0.600000 (attempt 2)', retcode=1)+ 262 api.step_data('Scale CPU 4 to 0.600000 (attempt 3)', retcode=1) 263 ) 264