blob: 4c62aad396f89ceb4674872aa30b6e2c6436447d [file] [log] [blame]
# Copyright 2014 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.
# Recipe for building and running tests for WebRTC stand-alone.
DEPS = [
'archive',
'depot_tools/bot_update',
'chromium',
'chromium_android',
'depot_tools/gclient',
'depot_tools/tryserver',
'recipe_engine/file',
'recipe_engine/json',
'recipe_engine/path',
'recipe_engine/platform',
'recipe_engine/properties',
'recipe_engine/step',
'swarming',
'test_utils',
'webrtc',
]
def RunSteps(api):
webrtc = api.webrtc
webrtc.apply_bot_config(webrtc.BUILDERS, webrtc.RECIPE_CONFIGS)
# TODO(kjellander): Remove when https://bugs.webrtc.org/7413 is fixed.
if api.properties['buildername'] == 'Linux32 Release':
step_result = api.step('Disabled: see https://bugs.webrtc.org/7413',
cmd=None)
step_result.presentation.status = api.step.WARNING
return
webrtc.configure_swarming()
if api.platform.is_win:
api.chromium.taskkill()
webrtc.checkout()
if webrtc.should_download_audio_quality_tools:
webrtc.download_audio_quality_tools()
webrtc.cleanup()
if webrtc.should_build:
api.chromium.ensure_goma()
api.chromium.runhooks()
webrtc.check_swarming_version()
if webrtc.should_build:
webrtc.compile()
if webrtc.should_upload_build:
webrtc.package_build()
if webrtc.should_download_build:
webrtc.extract_build()
if webrtc.should_test:
webrtc.runtests()
webrtc.maybe_trigger()
def _sanitize_nonalpha(text):
return ''.join(c if c.isalnum() else '_' for c in text.lower())
def GenTests(api):
builders = api.webrtc.BUILDERS
def generate_builder(mastername, buildername, revision,
parent_got_revision=None, failing_test=None,
suffix=None, fail_android_archive=False):
suffix = suffix or ''
bot_config = builders[mastername]['builders'][buildername]
bot_type = bot_config.get('bot_type', 'builder_tester')
if bot_type in ('builder', 'builder_tester'):
assert bot_config.get('parent_buildername') is None, (
'Unexpected parent_buildername for builder %r on master %r.' %
(buildername, mastername))
chromium_kwargs = bot_config.get('chromium_config_kwargs', {})
test = (
api.test('%s_%s%s' % (_sanitize_nonalpha(mastername),
_sanitize_nonalpha(buildername), suffix)) +
api.properties(mastername=mastername,
buildername=buildername,
bot_id='bot_id',
path_config='kitchen',
BUILD_CONFIG=chromium_kwargs['BUILD_CONFIG']) +
api.platform(bot_config['testing']['platform'],
chromium_kwargs.get('TARGET_BITS', 64))
)
if bot_config.get('parent_buildername'):
test += api.properties(
parent_buildername=bot_config['parent_buildername'])
if revision:
test += api.properties(revision=revision,
git_revision='git' + revision,
got_revision_cp=revision)
if bot_type == 'tester':
parent_rev = parent_got_revision or revision
test += api.properties(parent_got_revision=parent_rev)
if failing_test:
test += api.step_data(failing_test, retcode=1)
if fail_android_archive:
test += api.step_data('build android archive', retcode=1)
if mastername.startswith('tryserver'):
test += api.properties.tryserver(
mastername=mastername,
buildername=buildername,
gerrit_project='src',
)
test += api.properties(buildnumber=1337)
return test
for mastername in builders.keys():
master_config = builders[mastername]
for buildername in master_config['builders'].keys():
yield generate_builder(mastername, buildername, revision='12345')
# Forced builds (not specifying any revision) and test failures.
mastername = 'client.webrtc'
buildername = 'Linux64 Debug'
yield generate_builder(mastername, buildername, revision=None,
suffix='_forced')
yield generate_builder(mastername, buildername, revision='12345',
failing_test='rtc_unittests',
suffix='_failing_test')
yield generate_builder(mastername, 'Android32 (M Nexus5X)', revision='12345',
fail_android_archive=True, suffix='_failing_archive')
mastername = 'client.webrtc.perf'
yield generate_builder(mastername, 'Android32 Builder', revision=None,
suffix='_forced')
buildername = 'Android32 Tests (L Nexus5)'
yield generate_builder(mastername, buildername, revision=None,
parent_got_revision='12345', suffix='_forced')
yield generate_builder(mastername, buildername, revision=None,
suffix='_forced_invalid')
yield generate_builder(mastername, buildername, revision='12345',
failing_test='webrtc_perf_tests',
suffix='_failing_test')