skia2/infra/bots/recipe_modules/flavor/examples/full.py
Ben Wagner 7a6db4cbf4 [infra] Move app installation to install method
This generally makes things tidier (e.g. perf_skottietrace.py no longer
needs special logic so that the app is only installed once), and it
means iOS can install only the app that's going to be run instead of
installing everything.

Change-Id: Ic07c56e724d0379255c8da5f204d9d6379b646ec
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/273002
Commit-Queue: Ben Wagner aka dogben <benjaminwagner@google.com>
Auto-Submit: Ben Wagner aka dogben <benjaminwagner@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2020-02-25 17:34:21 +00:00

266 lines
10 KiB
Python

# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
DEPS = [
'flavor',
'recipe_engine/platform',
'recipe_engine/properties',
'recipe_engine/raw_io',
'run',
'vars',
]
def test_exceptions(api):
try:
api.flavor.copy_directory_contents_to_device('src', 'dst')
except ValueError:
pass
try:
api.flavor.copy_directory_contents_to_host('src', 'dst')
except ValueError:
pass
try:
api.flavor.copy_file_to_device('src', 'dst')
except ValueError:
pass
def RunSteps(api):
api.vars.setup()
api.flavor.setup()
if api.properties.get('is_testing_exceptions') == 'True':
return test_exceptions(api)
builder = api.properties['buildername']
if 'Build' not in builder:
try:
api.flavor.copy_file_to_device('file.txt', 'file.txt')
api.flavor.read_file_on_device('file.txt')
api.flavor.remove_file_on_device('file.txt')
api.flavor.create_clean_host_dir('results_dir')
api.flavor.create_clean_device_dir('device_results_dir')
app = None
if 'SkottieTracing' in builder:
app = None
elif 'Test' in builder:
app = 'dm'
elif 'Perf' in builder:
app = 'nanobench'
if 'Lottie' in builder:
api.flavor.install(app, lotties=True)
elif 'Mskp' in builder:
api.flavor.install(app, mskps=True)
elif all(v in builder for v in ['Perf', 'Android', 'CPU']):
api.flavor.install(app, skps=True, images=True, svgs=True,
resources=True, texttraces=True)
else:
api.flavor.install(app, skps=True, images=True, lotties=False,
svgs=True, resources=True)
if 'Test' in builder:
api.flavor.step('dm', ['dm', '--some-flag'])
api.flavor.copy_directory_contents_to_host(
api.flavor.device_dirs.dm_dir, api.flavor.host_dirs.dm_dir)
elif 'Perf' in builder:
if 'SkottieTracing' in builder:
api.flavor.step('dm', ['dm', '--some-flag'])
else:
api.flavor.step('nanobench', ['nanobench', '--some-flag'])
api.flavor.copy_directory_contents_to_host(
api.flavor.device_dirs.perf_data_dir,
api.flavor.host_dirs.perf_data_dir)
finally:
api.flavor.cleanup_steps()
api.run.check_failure()
TEST_BUILDERS = [
'Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing',
'Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android',
'Perf-Android-Clang-NVIDIA_Shield-CPU-TegraX1-arm64-Release-All-Android',
'Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android',
'Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_Skpbench_Mskp',
'Perf-ChromeOS-Clang-SamsungChromebookPlus-GPU-MaliT860-arm-Release-All',
'Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-MSAN',
'Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-ASAN',
'Perf-Win2019-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ASAN',
'Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android',
'Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android',
'Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android',
'Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_ASAN',
'Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android_Vulkan',
'Test-ChromeOS-Clang-SamsungChromebookPlus-GPU-MaliT860-arm-Release-All',
'Test-Debian10-GCC-GCE-CPU-AVX2-x86-Debug-All-Docker',
'Test-Debian10-GCC-GCE-CPU-AVX2-x86_64-Debug-All-Docker',
'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-Coverage',
'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-Lottie',
'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-TSAN',
'Test-Debian9-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader',
'Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-OpenCL',
'Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-Vulkan',
'Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Debug-All-ASAN',
('Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All'
'-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41'),
'Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan_ProcDump',
'Test-Win10-MSVC-LenovoYogaC630-GPU-Adreno630-arm64-Debug-All-ANGLE',
]
# Default properties used for TEST_BUILDERS.
defaultProps = lambda buildername: dict(
buildername=buildername,
repository='https://skia.googlesource.com/skia.git',
revision='abc123',
path_config='kitchen',
patch_set=2,
swarm_out_dir='[SWARM_OUT_DIR]'
)
def GenTests(api):
for buildername in TEST_BUILDERS:
test = (
api.test(buildername) +
api.properties(**defaultProps(buildername))
)
if 'Win' in buildername and not 'LenovoYogaC630' in buildername:
test += api.platform('win', 64)
yield test
builder = 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All'
yield (
api.test('exceptions') +
api.properties(buildername=builder,
repository='https://skia.googlesource.com/skia.git',
revision='abc123',
path_config='kitchen',
swarm_out_dir='[SWARM_OUT_DIR]',
is_testing_exceptions='True')
)
builder = ('Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All'
'-Android')
yield (
api.test('failed_infra_step') +
api.properties(buildername=builder,
repository='https://skia.googlesource.com/skia.git',
revision='abc123',
path_config='kitchen',
swarm_out_dir='[SWARM_OUT_DIR]') +
api.step_data('get swarming bot id',
stdout=api.raw_io.output('build123-m2--device5')) +
api.step_data('dump log', retcode=1)
)
yield (
api.test('failed_read_version') +
api.properties(buildername=builder,
repository='https://skia.googlesource.com/skia.git',
revision='abc123',
path_config='kitchen',
swarm_out_dir='[SWARM_OUT_DIR]') +
api.step_data('read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION',
retcode=1)
)
yield (
api.test('retry_adb_command') +
api.properties(buildername=builder,
repository='https://skia.googlesource.com/skia.git',
revision='abc123',
path_config='kitchen',
swarm_out_dir='[SWARM_OUT_DIR]') +
api.step_data('mkdir /sdcard/revenge_of_the_skiabot/resources',
retcode=1)
)
fail_step_name = 'mkdir /sdcard/revenge_of_the_skiabot/resources'
yield (
api.test('retry_adb_command_retries_exhausted') +
api.properties(buildername=builder,
repository='https://skia.googlesource.com/skia.git',
revision='abc123',
path_config='kitchen',
swarm_out_dir='[SWARM_OUT_DIR]') +
api.step_data('get swarming bot id',
stdout=api.raw_io.output('build123-m2--device5')) +
api.step_data(fail_step_name, retcode=1) +
api.step_data(fail_step_name + ' (attempt 2)', retcode=1) +
api.step_data(fail_step_name + ' (attempt 3)', retcode=1)
)
builder = 'Test-iOS-Clang-iPhone7-GPU-PowerVRGT7600-arm64-Release-All'
fail_step_name = 'install dm'
yield (
api.test('retry_ios_install') +
api.properties(buildername=builder,
repository='https://skia.googlesource.com/skia.git',
revision='abc123',
path_config='kitchen',
swarm_out_dir='[SWARM_OUT_DIR]') +
api.step_data(fail_step_name, retcode=1)
)
yield (
api.test('retry_ios_install_retries_exhausted') +
api.properties(buildername=builder,
repository='https://skia.googlesource.com/skia.git',
revision='abc123',
path_config='kitchen',
swarm_out_dir='[SWARM_OUT_DIR]') +
api.step_data(fail_step_name, retcode=1) +
api.step_data(fail_step_name + ' (attempt 2)', retcode=1)
)
fail_step_name = 'dm'
yield (
api.test('ios_rerun_with_debug') +
api.properties(buildername=builder,
repository='https://skia.googlesource.com/skia.git',
revision='abc123',
path_config='kitchen',
swarm_out_dir='[SWARM_OUT_DIR]') +
api.step_data(fail_step_name, retcode=1)
)
builder = ('Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All'
'-Android')
yield (
api.test('cpu_scale_failed_once') +
api.properties(buildername=builder,
revision='abc123',
path_config='kitchen',
swarm_out_dir='[SWARM_OUT_DIR]') +
api.step_data('Scale CPU 4 to 0.600000', retcode=1)
)
yield (
api.test('cpu_scale_failed') +
api.properties(buildername=builder,
revision='abc123',
path_config='kitchen',
swarm_out_dir='[SWARM_OUT_DIR]') +
api.step_data('get swarming bot id',
stdout=api.raw_io.output('skia-rpi-022')) +
api.step_data('Scale CPU 4 to 0.600000', retcode=1)+
api.step_data('Scale CPU 4 to 0.600000 (attempt 2)', retcode=1)+
api.step_data('Scale CPU 4 to 0.600000 (attempt 3)', retcode=1)
)
builder = ('Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release'
'-All-Android')
yield (
api.test('cpu_scale_failed_golo') +
api.properties(buildername=builder,
revision='abc123',
path_config='kitchen',
swarm_out_dir='[SWARM_OUT_DIR]') +
api.step_data('get swarming bot id',
stdout=api.raw_io.output('build123-m2--device5')) +
api.step_data('Scale CPU 4 to 0.600000', retcode=1)+
api.step_data('Scale CPU 4 to 0.600000 (attempt 2)', retcode=1)+
api.step_data('Scale CPU 4 to 0.600000 (attempt 3)', retcode=1)
)