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