Home | History | Annotate | Download | only in examples
      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 
      6 DEPS = [
      7   'flavor',
      8   'recipe_engine/properties',
      9   'recipe_engine/raw_io',
     10   'run',
     11   'vars',
     12 ]
     13 
     14 
     15 def 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 
     30 def 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 
     59 TEST_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-universal-devrel-Android_SKQP',
     65   'Build-Debian9-Clang-x86_64-Debug-Chromebook_GLES',
     66   'Build-Debian9-Clang-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE',
     67   'Build-Debian9-Clang-x86_64-Release-Fast',
     68   'Build-Debian9-Clang-x86_64-Release-Mini',
     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 and skqp_builders.
    119 defaultProps = 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 
    128 def 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 (at] 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('dump log', retcode=1)
    164   )
    165 
    166   builder = 'Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Debug-All-Android'
    167   yield (
    168       api.test('failed_read_version') +
    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('read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION',
    175                     retcode=1)
    176   )
    177 
    178   builder = 'Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Debug-All-Android'
    179   yield (
    180       api.test('retry_adb_command') +
    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('mkdir /sdcard/revenge_of_the_skiabot/resources',
    187                     retcode=1)
    188   )
    189 
    190   builder = 'Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Debug-All-Android'
    191   fail_step_name = 'mkdir /sdcard/revenge_of_the_skiabot/resources'
    192   yield (
    193       api.test('retry_adb_command_retries_exhausted') +
    194       api.properties(buildername=builder,
    195                      repository='https://skia.googlesource.com/skia.git',
    196                      revision='abc123',
    197                      path_config='kitchen',
    198                      swarm_out_dir='[SWARM_OUT_DIR]') +
    199       api.step_data(fail_step_name, retcode=1) +
    200       api.step_data(fail_step_name + ' (attempt 2)', retcode=1) +
    201       api.step_data(fail_step_name + ' (attempt 3)', retcode=1)
    202   )
    203 
    204   yield (
    205       api.test('cpu_scale_failed') +
    206       api.properties(buildername=builder,
    207                      repository='https://skia.googlesource.com/skia.git',
    208                      revision='abc123',
    209                      path_config='kitchen',
    210                      swarm_out_dir='[SWARM_OUT_DIR]') +
    211       api.step_data('Scale CPU 0 to 0.600000', retcode=1)
    212   )
    213 
    214   builder = 'Test-iOS-Clang-iPhone7-GPU-GT7600-arm64-Release-All'
    215   fail_step_name = 'install_dm'
    216   yield (
    217       api.test('retry_ios_install') +
    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   yield (
    227       api.test('retry_ios_install_retries_exhausted') +
    228       api.properties(buildername=builder,
    229                      repository='https://skia.googlesource.com/skia.git',
    230                      revision='abc123',
    231                      path_config='kitchen',
    232                      swarm_out_dir='[SWARM_OUT_DIR]') +
    233       api.step_data(fail_step_name, retcode=1) +
    234       api.step_data(fail_step_name + ' (attempt 2)', retcode=1)
    235   )
    236