| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # | 2 # |
| 3 # Copyright 2013 The Chromium Authors. All rights reserved. | 3 # Copyright 2013 The Chromium Authors. All rights reserved. |
| 4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
| 5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
| 6 | 6 |
| 7 """Runs all types of tests from one unified interface.""" | 7 """Runs all types of tests from one unified interface.""" |
| 8 | 8 |
| 9 import argparse | 9 import argparse |
| 10 import collections | 10 import collections |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 from devil.utils import run_tests_helper | 25 from devil.utils import run_tests_helper |
| 26 | 26 |
| 27 from pylib import constants | 27 from pylib import constants |
| 28 from pylib import forwarder | 28 from pylib import forwarder |
| 29 from pylib.base import base_test_result | 29 from pylib.base import base_test_result |
| 30 from pylib.base import environment_factory | 30 from pylib.base import environment_factory |
| 31 from pylib.base import test_dispatcher | 31 from pylib.base import test_dispatcher |
| 32 from pylib.base import test_instance_factory | 32 from pylib.base import test_instance_factory |
| 33 from pylib.base import test_run_factory | 33 from pylib.base import test_run_factory |
| 34 from pylib.gtest import gtest_config | 34 from pylib.gtest import gtest_config |
| 35 # TODO(jbudorick): Remove this once we stop selectively enabling platform mode. | |
| 36 from pylib.gtest import gtest_test_instance | |
| 37 from pylib.gtest import setup as gtest_setup | 35 from pylib.gtest import setup as gtest_setup |
| 38 from pylib.gtest import test_options as gtest_test_options | 36 from pylib.gtest import test_options as gtest_test_options |
| 39 from pylib.linker import setup as linker_setup | 37 from pylib.linker import setup as linker_setup |
| 40 from pylib.host_driven import setup as host_driven_setup | 38 from pylib.host_driven import setup as host_driven_setup |
| 41 from pylib.instrumentation import setup as instrumentation_setup | 39 from pylib.instrumentation import setup as instrumentation_setup |
| 42 from pylib.instrumentation import test_options as instrumentation_test_options | 40 from pylib.instrumentation import test_options as instrumentation_test_options |
| 43 from pylib.junit import setup as junit_setup | 41 from pylib.junit import setup as junit_setup |
| 44 from pylib.junit import test_dispatcher as junit_dispatcher | 42 from pylib.junit import test_dispatcher as junit_dispatcher |
| 45 from pylib.monkey import setup as monkey_setup | 43 from pylib.monkey import setup as monkey_setup |
| 46 from pylib.monkey import test_options as monkey_test_options | 44 from pylib.monkey import test_options as monkey_test_options |
| (...skipping 890 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 937 if command in constants.LOCAL_MACHINE_TESTS: | 935 if command in constants.LOCAL_MACHINE_TESTS: |
| 938 devices = [] | 936 devices = [] |
| 939 else: | 937 else: |
| 940 devices = _GetAttachedDevices(args.blacklist_file, args.test_device) | 938 devices = _GetAttachedDevices(args.blacklist_file, args.test_device) |
| 941 | 939 |
| 942 forwarder.Forwarder.RemoveHostLog() | 940 forwarder.Forwarder.RemoveHostLog() |
| 943 if not ports.ResetTestServerPortAllocation(): | 941 if not ports.ResetTestServerPortAllocation(): |
| 944 raise Exception('Failed to reset test server port.') | 942 raise Exception('Failed to reset test server port.') |
| 945 | 943 |
| 946 if command == 'gtest': | 944 if command == 'gtest': |
| 947 if args.suite_name[0] in gtest_test_instance.BROWSER_TEST_SUITES: | 945 return RunTestsInPlatformMode(args, parser) |
| 948 return RunTestsInPlatformMode(args, parser) | |
| 949 return _RunGTests(args, devices) | |
| 950 elif command == 'linker': | 946 elif command == 'linker': |
| 951 return _RunLinkerTests(args, devices) | 947 return _RunLinkerTests(args, devices) |
| 952 elif command == 'instrumentation': | 948 elif command == 'instrumentation': |
| 953 return _RunInstrumentationTests(args, devices) | 949 return _RunInstrumentationTests(args, devices) |
| 954 elif command == 'uiautomator': | 950 elif command == 'uiautomator': |
| 955 return _RunUIAutomatorTests(args, devices) | 951 return _RunUIAutomatorTests(args, devices) |
| 956 elif command == 'junit': | 952 elif command == 'junit': |
| 957 return _RunJUnitTests(args) | 953 return _RunJUnitTests(args) |
| 958 elif command == 'monkey': | 954 elif command == 'monkey': |
| 959 return _RunMonkeyTests(args, devices) | 955 return _RunMonkeyTests(args, devices) |
| 960 elif command == 'perf': | 956 elif command == 'perf': |
| 961 return _RunPerfTests(args, devices) | 957 return _RunPerfTests(args, devices) |
| 962 elif command == 'python': | 958 elif command == 'python': |
| 963 return _RunPythonTests(args) | 959 return _RunPythonTests(args) |
| 964 else: | 960 else: |
| 965 raise Exception('Unknown test type.') | 961 raise Exception('Unknown test type.') |
| 966 | 962 |
| 967 | 963 |
| 968 _SUPPORTED_IN_PLATFORM_MODE = [ | 964 _SUPPORTED_IN_PLATFORM_MODE = [ |
| 969 # TODO(jbudorick): Add support for more test types. | 965 # TODO(jbudorick): Add support for more test types. |
| 970 'gtest', | 966 'gtest', |
| 971 'instrumentation', | 967 'instrumentation', |
| 972 'uirobot', | 968 'uirobot', |
| 973 ] | 969 ] |
| 974 | 970 |
| 975 | 971 |
| 976 def RunTestsInPlatformMode(args, parser): | 972 def RunTestsInPlatformMode(args, parser): |
| 977 | 973 |
| 974 def infra_error(message): |
| 975 parser.exit(status=constants.INFRA_EXIT_CODE, message=message) |
| 976 |
| 978 if args.command not in _SUPPORTED_IN_PLATFORM_MODE: | 977 if args.command not in _SUPPORTED_IN_PLATFORM_MODE: |
| 979 parser.error('%s is not yet supported in platform mode' % args.command) | 978 infra_error('%s is not yet supported in platform mode' % args.command) |
| 980 | 979 |
| 981 with environment_factory.CreateEnvironment(args, parser.error) as env: | 980 with environment_factory.CreateEnvironment(args, infra_error) as env: |
| 982 with test_instance_factory.CreateTestInstance(args, parser.error) as test: | 981 with test_instance_factory.CreateTestInstance(args, infra_error) as test: |
| 983 with test_run_factory.CreateTestRun( | 982 with test_run_factory.CreateTestRun( |
| 984 args, env, test, parser.error) as test_run: | 983 args, env, test, infra_error) as test_run: |
| 985 results = test_run.RunTests() | 984 results = test_run.RunTests() |
| 986 | 985 |
| 987 if args.environment == 'remote_device' and args.trigger: | 986 if args.environment == 'remote_device' and args.trigger: |
| 988 return 0 # Not returning results, only triggering. | 987 return 0 # Not returning results, only triggering. |
| 989 | 988 |
| 990 report_results.LogFull( | 989 report_results.LogFull( |
| 991 results=results, | 990 results=results, |
| 992 test_type=test.TestType(), | 991 test_type=test.TestType(), |
| 993 test_package=test_run.TestPackage(), | 992 test_package=test_run.TestPackage(), |
| 994 annotation=getattr(args, 'annotations', None), | 993 annotation=getattr(args, 'annotations', None), |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1062 if e.is_infra_error: | 1061 if e.is_infra_error: |
| 1063 return constants.INFRA_EXIT_CODE | 1062 return constants.INFRA_EXIT_CODE |
| 1064 return constants.ERROR_EXIT_CODE | 1063 return constants.ERROR_EXIT_CODE |
| 1065 except: # pylint: disable=W0702 | 1064 except: # pylint: disable=W0702 |
| 1066 logging.exception('Unrecognized error occurred.') | 1065 logging.exception('Unrecognized error occurred.') |
| 1067 return constants.ERROR_EXIT_CODE | 1066 return constants.ERROR_EXIT_CODE |
| 1068 | 1067 |
| 1069 | 1068 |
| 1070 if __name__ == '__main__': | 1069 if __name__ == '__main__': |
| 1071 sys.exit(main()) | 1070 sys.exit(main()) |
| OLD | NEW |