| 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 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 """Adds device options to |parser|.""" | 179 """Adds device options to |parser|.""" |
| 180 group = parser.add_argument_group(title='Device Options') | 180 group = parser.add_argument_group(title='Device Options') |
| 181 group.add_argument('--tool', | 181 group.add_argument('--tool', |
| 182 dest='tool', | 182 dest='tool', |
| 183 help=('Run the test under a tool ' | 183 help=('Run the test under a tool ' |
| 184 '(use --tool help to list them)')) | 184 '(use --tool help to list them)')) |
| 185 group.add_argument('-d', '--device', dest='test_device', | 185 group.add_argument('-d', '--device', dest='test_device', |
| 186 help=('Target device for the test suite ' | 186 help=('Target device for the test suite ' |
| 187 'to run on.')) | 187 'to run on.')) |
| 188 group.add_argument('--blacklist-file', help='Device blacklist file.') | 188 group.add_argument('--blacklist-file', help='Device blacklist file.') |
| 189 group.add_argument('--enable-device-cache', action='store_true', |
| 190 help='Cache device state to disk between runs') |
| 189 | 191 |
| 190 | 192 |
| 191 def AddGTestOptions(parser): | 193 def AddGTestOptions(parser): |
| 192 """Adds gtest options to |parser|.""" | 194 """Adds gtest options to |parser|.""" |
| 193 | 195 |
| 194 group = parser.add_argument_group('GTest Options') | 196 group = parser.add_argument_group('GTest Options') |
| 195 group.add_argument('-s', '--suite', dest='suite_name', | 197 group.add_argument('-s', '--suite', dest='suite_name', |
| 196 nargs='+', metavar='SUITE_NAME', required=True, | 198 nargs='+', metavar='SUITE_NAME', required=True, |
| 197 help='Executable name of the test suite to run.') | 199 help='Executable name of the test suite to run.') |
| 198 group.add_argument('--gtest_also_run_disabled_tests', | 200 group.add_argument('--gtest_also_run_disabled_tests', |
| (...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 860 try: | 862 try: |
| 861 suite = unittest.TestSuite() | 863 suite = unittest.TestSuite() |
| 862 suite.addTests(unittest.defaultTestLoader.loadTestsFromName(m) | 864 suite.addTests(unittest.defaultTestLoader.loadTestsFromName(m) |
| 863 for m in suite_test_modules) | 865 for m in suite_test_modules) |
| 864 runner = unittest.TextTestRunner(verbosity=1+args.verbose_count) | 866 runner = unittest.TextTestRunner(verbosity=1+args.verbose_count) |
| 865 return 0 if runner.run(suite).wasSuccessful() else 1 | 867 return 0 if runner.run(suite).wasSuccessful() else 1 |
| 866 finally: | 868 finally: |
| 867 sys.path = sys.path[1:] | 869 sys.path = sys.path[1:] |
| 868 | 870 |
| 869 | 871 |
| 870 def _GetAttachedDevices(blacklist_file, test_device): | 872 def _GetAttachedDevices(blacklist_file, test_device, enable_cache): |
| 871 """Get all attached devices. | 873 """Get all attached devices. |
| 872 | 874 |
| 873 Args: | 875 Args: |
| 876 blacklist_file: Path to device blacklist. |
| 874 test_device: Name of a specific device to use. | 877 test_device: Name of a specific device to use. |
| 878 enable_cache: Whether to enable checksum caching. |
| 875 | 879 |
| 876 Returns: | 880 Returns: |
| 877 A list of attached devices. | 881 A list of attached devices. |
| 878 """ | 882 """ |
| 879 blacklist = (device_blacklist.Blacklist(blacklist_file) | 883 blacklist = (device_blacklist.Blacklist(blacklist_file) |
| 880 if blacklist_file | 884 if blacklist_file |
| 881 else None) | 885 else None) |
| 882 | 886 |
| 883 attached_devices = device_utils.DeviceUtils.HealthyDevices(blacklist) | 887 attached_devices = device_utils.DeviceUtils.HealthyDevices( |
| 888 blacklist, enable_device_files_cache=enable_cache) |
| 884 if test_device: | 889 if test_device: |
| 885 test_device = [d for d in attached_devices if d == test_device] | 890 test_device = [d for d in attached_devices if d == test_device] |
| 886 if not test_device: | 891 if not test_device: |
| 887 raise device_errors.DeviceUnreachableError( | 892 raise device_errors.DeviceUnreachableError( |
| 888 'Did not find device %s among attached device. Attached devices: %s' | 893 'Did not find device %s among attached device. Attached devices: %s' |
| 889 % (test_device, ', '.join(attached_devices))) | 894 % (test_device, ', '.join(attached_devices))) |
| 890 return test_device | 895 return test_device |
| 891 | 896 |
| 892 else: | 897 else: |
| 893 if not attached_devices: | 898 if not attached_devices: |
| (...skipping 18 matching lines...) Expand all Loading... |
| 912 command = args.command | 917 command = args.command |
| 913 | 918 |
| 914 ProcessCommonOptions(args) | 919 ProcessCommonOptions(args) |
| 915 | 920 |
| 916 if args.enable_platform_mode: | 921 if args.enable_platform_mode: |
| 917 return RunTestsInPlatformMode(args, parser) | 922 return RunTestsInPlatformMode(args, parser) |
| 918 | 923 |
| 919 if command in constants.LOCAL_MACHINE_TESTS: | 924 if command in constants.LOCAL_MACHINE_TESTS: |
| 920 devices = [] | 925 devices = [] |
| 921 else: | 926 else: |
| 922 devices = _GetAttachedDevices(args.blacklist_file, args.test_device) | 927 devices = _GetAttachedDevices(args.blacklist_file, args.test_device, |
| 928 args.enable_device_cache) |
| 923 | 929 |
| 924 forwarder.Forwarder.RemoveHostLog() | 930 forwarder.Forwarder.RemoveHostLog() |
| 925 if not ports.ResetTestServerPortAllocation(): | 931 if not ports.ResetTestServerPortAllocation(): |
| 926 raise Exception('Failed to reset test server port.') | 932 raise Exception('Failed to reset test server port.') |
| 927 | 933 |
| 928 if command == 'gtest': | 934 if command == 'gtest': |
| 929 return RunTestsInPlatformMode(args, parser) | 935 return RunTestsInPlatformMode(args, parser) |
| 930 elif command == 'linker': | 936 elif command == 'linker': |
| 931 return _RunLinkerTests(args, devices) | 937 return _RunLinkerTests(args, devices) |
| 932 elif command == 'instrumentation': | 938 elif command == 'instrumentation': |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1050 if e.is_infra_error: | 1056 if e.is_infra_error: |
| 1051 return constants.INFRA_EXIT_CODE | 1057 return constants.INFRA_EXIT_CODE |
| 1052 return constants.ERROR_EXIT_CODE | 1058 return constants.ERROR_EXIT_CODE |
| 1053 except: # pylint: disable=W0702 | 1059 except: # pylint: disable=W0702 |
| 1054 logging.exception('Unrecognized error occurred.') | 1060 logging.exception('Unrecognized error occurred.') |
| 1055 return constants.ERROR_EXIT_CODE | 1061 return constants.ERROR_EXIT_CODE |
| 1056 | 1062 |
| 1057 | 1063 |
| 1058 if __name__ == '__main__': | 1064 if __name__ == '__main__': |
| 1059 sys.exit(main()) | 1065 sys.exit(main()) |
| OLD | NEW |