246 lines
8.1 KiB
Python
246 lines
8.1 KiB
Python
# Copyright 2016 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.
|
|
|
|
import argparse
|
|
import json
|
|
import os
|
|
import sys
|
|
|
|
# This is the list of tests to run. It is a dictionary with the following
|
|
# fields:
|
|
#
|
|
# name (required): The name of the step, to show on the buildbot status page.
|
|
# path (required): The path to the executable which runs the tests.
|
|
# additional_args (optional): An array of optional arguments.
|
|
# uses_app_engine_sdk (optional): True if app engine SDK must be in PYTHONPATH.
|
|
# uses_sandbox_env (optional): True if CHROME_DEVEL_SANDBOX must be in
|
|
# environment.
|
|
# disabled (optional): List of platforms the test is disabled on. May contain
|
|
# 'win', 'mac', 'linux', or 'android'.
|
|
# outputs_presentation_json (optional): If True, pass in --presentation-json
|
|
# argument to the test executable to allow it to update the buildbot status
|
|
# page. More details here:
|
|
# github.com/luci/recipes-py/blob/master/recipe_modules/generator_script/api.py
|
|
_CATAPULT_TESTS = [
|
|
{
|
|
'name': 'BattOr Smoke Tests',
|
|
'path': 'common/battor/battor/battor_wrapper_devicetest.py',
|
|
'disabled': ['android'],
|
|
},
|
|
{
|
|
'name': 'BattOr Unit Tests',
|
|
'path': 'common/battor/bin/run_py_tests',
|
|
'disabled': ['android'],
|
|
},
|
|
{
|
|
'name': 'Build Python Tests',
|
|
'path': 'catapult_build/bin/run_py_tests',
|
|
'disabled': ['android'],
|
|
},
|
|
{
|
|
'name': 'Common Tests',
|
|
'path': 'common/bin/run_tests',
|
|
},
|
|
{
|
|
'name': 'Dashboard Dev Server Tests Canary',
|
|
'path': 'dashboard/bin/run_dev_server_tests',
|
|
'additional_args': [
|
|
'--no-install-hooks',
|
|
'--no-use-local-chrome',
|
|
'--channel=canary'
|
|
],
|
|
'outputs_presentation_json': True,
|
|
'disabled': ['android'],
|
|
},
|
|
{
|
|
'name': 'Dashboard Dev Server Tests Stable',
|
|
'path': 'dashboard/bin/run_dev_server_tests',
|
|
'additional_args': [
|
|
'--no-install-hooks',
|
|
'--no-use-local-chrome',
|
|
'--channel=stable',
|
|
],
|
|
'outputs_presentation_json': True,
|
|
'disabled': ['android'],
|
|
},
|
|
{
|
|
'name': 'Dashboard Python Tests',
|
|
'path': 'dashboard/bin/run_py_tests',
|
|
'additional_args': ['--no-install-hooks'],
|
|
'uses_app_engine_sdk': True,
|
|
'disabled': ['android'],
|
|
},
|
|
{
|
|
'name': 'Dependency Manager Tests',
|
|
'path': 'dependency_manager/bin/run_tests',
|
|
},
|
|
{
|
|
'name': 'Devil Device Tests',
|
|
'path': 'devil/bin/run_py_devicetests',
|
|
'disabled': ['win', 'mac', 'linux']
|
|
},
|
|
{
|
|
'name': 'Devil Python Tests',
|
|
'path': 'devil/bin/run_py_tests',
|
|
'disabled': ['mac', 'win'],
|
|
},
|
|
{
|
|
'name': 'Node Smoke Test',
|
|
'path': 'common/node_runner/bin/test_node_for_smoke',
|
|
'disabled': ['android'],
|
|
},
|
|
{
|
|
'name': 'Py-vulcanize Tests',
|
|
'path': 'third_party/py_vulcanize/bin/run_py_tests',
|
|
'additional_args': ['--no-install-hooks'],
|
|
'disabled': ['android'],
|
|
},
|
|
{
|
|
'name': 'Systrace Tests',
|
|
'path': 'systrace/bin/run_tests',
|
|
},
|
|
{
|
|
'name': 'Telemetry Tests with Stable Browser',
|
|
'path': 'telemetry/bin/run_tests',
|
|
'additional_args': [
|
|
'--browser=reference',
|
|
'--start-xvfb'
|
|
],
|
|
'uses_sandbox_env': True,
|
|
'disabled': ['android'],
|
|
},
|
|
{
|
|
'name': 'Telemetry Integration Tests with Stable Browser',
|
|
'path': 'telemetry/bin/run_browser_tests',
|
|
'additional_args': [
|
|
'SimpleBrowserTest',
|
|
'--browser=reference',
|
|
],
|
|
'uses_sandbox_env': True,
|
|
'disabled': ['android', 'linux'], # TODO(nedn): enable this on linux
|
|
},
|
|
{
|
|
'name': 'Tracing Dev Server Tests Canary',
|
|
'path': 'tracing/bin/run_dev_server_tests',
|
|
'additional_args': [
|
|
'--no-install-hooks',
|
|
'--no-use-local-chrome',
|
|
'--channel=canary'
|
|
],
|
|
'outputs_presentation_json': True,
|
|
'disabled': ['android'],
|
|
},
|
|
{
|
|
'name': 'Tracing Dev Server Tests Stable',
|
|
'path': 'tracing/bin/run_dev_server_tests',
|
|
'additional_args': [
|
|
'--no-install-hooks',
|
|
'--no-use-local-chrome',
|
|
'--channel=stable',
|
|
],
|
|
'outputs_presentation_json': True,
|
|
'disabled': ['android'],
|
|
},
|
|
{
|
|
'name': 'Tracing D8 Tests',
|
|
'path': 'tracing/bin/run_vinn_tests',
|
|
'disabled': ['android'],
|
|
},
|
|
{
|
|
'name': 'Tracing Python Tests',
|
|
'path': 'tracing/bin/run_py_tests',
|
|
'additional_args': ['--no-install-hooks'],
|
|
'disabled': ['android'],
|
|
},
|
|
{
|
|
'name': 'Vinn Tests',
|
|
'path': 'third_party/vinn/bin/run_tests',
|
|
'disabled': ['android'],
|
|
},
|
|
{
|
|
'name': 'NetLog Viewer Dev Server Tests',
|
|
'path': 'netlog_viewer/bin/run_dev_server_tests',
|
|
'additional_args': [
|
|
'--no-install-hooks',
|
|
'--no-use-local-chrome',
|
|
],
|
|
'disabled': ['android', 'win', 'mac', 'linux'],
|
|
},
|
|
]
|
|
|
|
|
|
def main(args=None):
|
|
"""Send list of test to run to recipes generator_script.
|
|
|
|
See documentation at:
|
|
github.com/luci/recipes-py/blob/master/recipe_modules/generator_script/api.py
|
|
"""
|
|
parser = argparse.ArgumentParser(description='Run catapult tests.')
|
|
parser.add_argument('--api-path-checkout', help='Path to catapult checkout')
|
|
parser.add_argument('--app-engine-sdk-pythonpath',
|
|
help='PYTHONPATH to include app engine SDK path')
|
|
parser.add_argument('--platform',
|
|
help='Platform name (linux, mac, or win)')
|
|
parser.add_argument('--output-json', help='Output for buildbot status page')
|
|
args = parser.parse_args(args)
|
|
|
|
steps = [{
|
|
# Always remove stale pyc files first. Not listed as a test above
|
|
# because it is a step and not a test, and must be first.
|
|
'name': 'Remove Stale PYC files',
|
|
'cmd': ['python',
|
|
os.path.join(args.api_path_checkout,
|
|
'catapult_build', 'remove_stale_pyc_files.py'),
|
|
args.api_path_checkout]
|
|
}]
|
|
if args.platform == 'android':
|
|
# On Android, we need to prepare the devices a bit before using them in
|
|
# tests. These steps are not listed as tests above because they aren't
|
|
# tests and because they must precede all tests.
|
|
steps.extend([
|
|
{
|
|
'name': 'Android: Recover Devices',
|
|
'cmd': ['python',
|
|
os.path.join(args.api_path_checkout, 'devil', 'devil',
|
|
'android', 'tools', 'device_recovery.py')],
|
|
},
|
|
{
|
|
'name': 'Android: Provision Devices',
|
|
'cmd': ['python',
|
|
os.path.join(args.api_path_checkout, 'devil', 'devil',
|
|
'android', 'tools', 'provision_devices.py')],
|
|
},
|
|
{
|
|
'name': 'Android: Device Status',
|
|
'cmd': ['python',
|
|
os.path.join(args.api_path_checkout, 'devil', 'devil',
|
|
'android', 'tools', 'device_status.py')],
|
|
},
|
|
])
|
|
|
|
for test in _CATAPULT_TESTS:
|
|
if args.platform in test.get('disabled', []):
|
|
continue
|
|
step = {
|
|
'name': test['name'],
|
|
'env': {}
|
|
}
|
|
step['cmd'] = ['python', os.path.join(args.api_path_checkout, test['path'])]
|
|
if step['name'] == 'Systrace Tests':
|
|
step['cmd'] += ['--device=' + args.platform]
|
|
if test.get('additional_args'):
|
|
step['cmd'] += test['additional_args']
|
|
if test.get('uses_app_engine_sdk'):
|
|
step['env']['PYTHONPATH'] = args.app_engine_sdk_pythonpath
|
|
if test.get('uses_sandbox_env'):
|
|
step['env']['CHROME_DEVEL_SANDBOX'] = '/opt/chromium/chrome_sandbox'
|
|
if test.get('outputs_presentation_json'):
|
|
step['outputs_presentation_json'] = True
|
|
steps.append(step)
|
|
with open(args.output_json, 'w') as outfile:
|
|
json.dump(steps, outfile)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main(sys.argv[1:])
|