Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(313)

Side by Side Diff: build/android/test_runner.py

Issue 1666983002: test_runner.py Fix error message being intertwined with log messages (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 895 matching lines...) Expand 10 before | Expand all | Expand 10 after
906 'Did not find device %s among attached device. Attached devices: %s' 906 'Did not find device %s among attached device. Attached devices: %s'
907 % (test_device, ', '.join(attached_devices))) 907 % (test_device, ', '.join(attached_devices)))
908 return test_device 908 return test_device
909 909
910 else: 910 else:
911 if not attached_devices: 911 if not attached_devices:
912 raise device_errors.NoDevicesError() 912 raise device_errors.NoDevicesError()
913 return sorted(attached_devices) 913 return sorted(attached_devices)
914 914
915 915
916 def RunTestsCommand(args, parser): # pylint: disable=too-many-return-statements 916 def RunTestsCommand(args): # pylint: disable=too-many-return-statements
917 """Checks test type and dispatches to the appropriate function. 917 """Checks test type and dispatches to the appropriate function.
918 918
919 Args: 919 Args:
920 args: argparse.Namespace object. 920 args: argparse.Namespace object.
921 parser: argparse.ArgumentParser object.
922 921
923 Returns: 922 Returns:
924 Integer indicated exit code. 923 Integer indicated exit code.
925 924
926 Raises: 925 Raises:
927 Exception: Unknown command name passed in, or an exception from an 926 Exception: Unknown command name passed in, or an exception from an
928 individual test runner. 927 individual test runner.
929 """ 928 """
930 command = args.command 929 command = args.command
931 930
932 ProcessCommonOptions(args) 931 ProcessCommonOptions(args)
933 932
934 if args.enable_platform_mode: 933 if args.enable_platform_mode:
935 return RunTestsInPlatformMode(args, parser) 934 return RunTestsInPlatformMode(args)
936 935
937 forwarder.Forwarder.RemoveHostLog() 936 forwarder.Forwarder.RemoveHostLog()
938 if not ports.ResetTestServerPortAllocation(): 937 if not ports.ResetTestServerPortAllocation():
939 raise Exception('Failed to reset test server port.') 938 raise Exception('Failed to reset test server port.')
940 939
941 def get_devices(): 940 def get_devices():
942 return _GetAttachedDevices(args.blacklist_file, args.test_device, 941 return _GetAttachedDevices(args.blacklist_file, args.test_device,
943 args.enable_device_cache) 942 args.enable_device_cache)
944 943
945 if command == 'gtest': 944 if command == 'gtest':
946 return RunTestsInPlatformMode(args, parser) 945 return RunTestsInPlatformMode(args)
947 elif command == 'linker': 946 elif command == 'linker':
948 return _RunLinkerTests(args, get_devices()) 947 return _RunLinkerTests(args, get_devices())
949 elif command == 'instrumentation': 948 elif command == 'instrumentation':
950 return _RunInstrumentationTests(args, get_devices()) 949 return _RunInstrumentationTests(args, get_devices())
951 elif command == 'junit': 950 elif command == 'junit':
952 return _RunJUnitTests(args) 951 return _RunJUnitTests(args)
953 elif command == 'monkey': 952 elif command == 'monkey':
954 return _RunMonkeyTests(args, get_devices()) 953 return _RunMonkeyTests(args, get_devices())
955 elif command == 'perf': 954 elif command == 'perf':
956 return _RunPerfTests(args, get_devices()) 955 return _RunPerfTests(args, get_devices())
957 elif command == 'python': 956 elif command == 'python':
958 return _RunPythonTests(args) 957 return _RunPythonTests(args)
959 else: 958 else:
960 raise Exception('Unknown test type.') 959 raise Exception('Unknown test type.')
961 960
962 961
963 _SUPPORTED_IN_PLATFORM_MODE = [ 962 _SUPPORTED_IN_PLATFORM_MODE = [
964 # TODO(jbudorick): Add support for more test types. 963 # TODO(jbudorick): Add support for more test types.
965 'gtest', 964 'gtest',
966 'instrumentation', 965 'instrumentation',
967 'uirobot', 966 'uirobot',
968 ] 967 ]
969 968
970 969
971 def RunTestsInPlatformMode(args, parser): 970 def RunTestsInPlatformMode(args):
972 971
973 def infra_error(message): 972 def infra_error(message):
974 parser.exit(status=constants.INFRA_EXIT_CODE, message=message) 973 logging.fatal(message)
974 sys.exit(constants.INFRA_EXIT_CODE)
975 975
976 if args.command not in _SUPPORTED_IN_PLATFORM_MODE: 976 if args.command not in _SUPPORTED_IN_PLATFORM_MODE:
977 infra_error('%s is not yet supported in platform mode' % args.command) 977 infra_error('%s is not yet supported in platform mode' % args.command)
978 978
979 with environment_factory.CreateEnvironment(args, infra_error) as env: 979 with environment_factory.CreateEnvironment(args, infra_error) as env:
980 with test_instance_factory.CreateTestInstance(args, infra_error) as test: 980 with test_instance_factory.CreateTestInstance(args, infra_error) as test:
981 with test_run_factory.CreateTestRun( 981 with test_run_factory.CreateTestRun(
982 args, env, test, infra_error) as test_run: 982 args, env, test, infra_error) as test_run:
983 results = [] 983 results = []
984 repetitions = (xrange(args.repeat + 1) if args.repeat >= 0 984 repetitions = (xrange(args.repeat + 1) if args.repeat >= 0
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
1081 1081
1082 for test_type, config in sorted(VALID_COMMANDS.iteritems(), 1082 for test_type, config in sorted(VALID_COMMANDS.iteritems(),
1083 key=lambda x: x[0]): 1083 key=lambda x: x[0]):
1084 subparser = command_parsers.add_parser( 1084 subparser = command_parsers.add_parser(
1085 test_type, usage='%(prog)s [options]', help=config.help_txt) 1085 test_type, usage='%(prog)s [options]', help=config.help_txt)
1086 config.add_options_func(subparser) 1086 config.add_options_func(subparser)
1087 1087
1088 args = parser.parse_args() 1088 args = parser.parse_args()
1089 1089
1090 try: 1090 try:
1091 return RunTestsCommand(args, parser) 1091 return RunTestsCommand(args)
1092 except base_error.BaseError as e: 1092 except base_error.BaseError as e:
1093 logging.exception('Error occurred.') 1093 logging.exception('Error occurred.')
1094 if e.is_infra_error: 1094 if e.is_infra_error:
1095 return constants.INFRA_EXIT_CODE 1095 return constants.INFRA_EXIT_CODE
1096 return constants.ERROR_EXIT_CODE 1096 return constants.ERROR_EXIT_CODE
1097 except: # pylint: disable=W0702 1097 except: # pylint: disable=W0702
1098 logging.exception('Unrecognized error occurred.') 1098 logging.exception('Unrecognized error occurred.')
1099 return constants.ERROR_EXIT_CODE 1099 return constants.ERROR_EXIT_CODE
1100 1100
1101 1101
1102 if __name__ == '__main__': 1102 if __name__ == '__main__':
1103 sys.exit(main()) 1103 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698