blob: 205f9ceaf62b9a4204262aec27b0d2b3286b2f46 [file] [log] [blame]
# Copyright 2015 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.
from recipe_engine import recipe_api
from recipe_engine.recipe_api import Property
from recipe_engine.types import freeze
DEPS = [
'depot_tools/bot_update',
'chromium',
'chromium_android',
'emulator',
'depot_tools/gclient',
'recipe_engine/path',
'recipe_engine/properties',
'recipe_engine/step',
]
REPO_URL = 'https://chromium.googlesource.com/chromium/src.git'
UNITTESTS = freeze([
'android_webview_unittests',
'base_unittests',
'cc_unittests',
'components_unittests',
'events_unittests',
'gl_tests',
'ipc_tests',
'skia_unittests',
'sql_unittests',
'ui_android_unittests',
'ui_touch_selection_unittests',
])
BUILDERS = freeze({
'chromium.android.fyi':{
'x86 Emulator Tester': {
'config': 'x86_builder_mb',
'target': 'Debug',
'abi': 'x86',
'api_level': 23,
'unittests': UNITTESTS,
'sdcard_size': '500M',
'storage_size': '1024M'
}
}
})
PROPERTIES = {
'buildername': Property(),
'mastername': Property(),
}
def RunSteps(api, mastername, buildername):
builder = BUILDERS[mastername][buildername]
api.chromium_android.configure_from_properties(
builder['config'],
REPO_NAME='src',
REPO_URL=REPO_URL,
INTERNAL=False,
BUILD_CONFIG=builder['target'])
api.chromium_android.apply_config('use_devil_provision')
api.gclient.set_config('chromium')
api.gclient.apply_config('android')
api.emulator.set_config('base_config')
api.bot_update.ensure_checkout()
api.chromium.ensure_goma()
api.chromium_android.clean_local_files()
api.chromium.runhooks()
if api.chromium.c.project_generator.tool == 'mb':
api.chromium.mb_gen(mastername, buildername, use_goma=True)
targets = []
for target in builder.get('unittests', []):
# TODO(agrieve): Remove _apk suffix in favour of bin/run_${target} once GYP
# is gone. http://crbug.com/599919
targets.append(target + '_apk')
api.chromium.compile(targets=targets, use_goma_module=True)
api.emulator.install_emulator_deps(api_level=builder.get('api_level'))
provision_settings = builder.get('provision_provision_settings', {})
default_emulator_amount = 1
with api.emulator.launch_emulator(
abi=builder.get('abi'),
api_level=builder.get('api_level'),
amount=builder.get('amount', default_emulator_amount),
partition_size=builder.get('partition_size'),
sdcard_size=builder.get('sdcard_size')):
api.emulator.wait_for_emulator(builder.get('amount',
default_emulator_amount))
api.chromium_android.spawn_logcat_monitor()
api.chromium_android.provision_devices(emulators=True, **provision_settings)
try:
with api.step.defer_results():
for suite in builder.get('unittests', []):
api.chromium_android.run_test_suite(suite)
finally:
api.chromium_android.logcat_dump()
api.chromium_android.stack_tool_steps()
api.chromium_android.test_report()
def GenTests(api):
sanitize = lambda s: ''.join(c if c.isalnum() else '_' for c in s)
for mastername in BUILDERS:
master = BUILDERS[mastername]
for buildername in master:
yield (
api.test('%s_test_basic' % sanitize(buildername)) +
api.properties.generic(
buildername=buildername,
mastername=mastername))
yield (
api.test('x86_Emulator_Tester_test_fail') +
api.properties.generic(
buildername='x86 Emulator Tester',
mastername='chromium.android.fyi') +
api.step_data('android_webview_unittests', retcode=2)
)