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

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

Issue 745793002: Add AMP support to test runner. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments on previous patch set Created 6 years 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
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 collections 9 import collections
10 import logging 10 import logging
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 constants.SetAdbPath(options.adb_path) 109 constants.SetAdbPath(options.adb_path)
110 # Some things such as Forwarder require ADB to be in the environment path. 110 # Some things such as Forwarder require ADB to be in the environment path.
111 adb_dir = os.path.dirname(constants.GetAdbPath()) 111 adb_dir = os.path.dirname(constants.GetAdbPath())
112 if adb_dir and adb_dir not in os.environ['PATH'].split(os.pathsep): 112 if adb_dir and adb_dir not in os.environ['PATH'].split(os.pathsep):
113 os.environ['PATH'] = adb_dir + os.pathsep + os.environ['PATH'] 113 os.environ['PATH'] = adb_dir + os.pathsep + os.environ['PATH']
114 if options.environment not in constants.VALID_ENVIRONMENTS: 114 if options.environment not in constants.VALID_ENVIRONMENTS:
115 error_func('--environment must be one of: %s' % 115 error_func('--environment must be one of: %s' %
116 ', '.join(constants.VALID_ENVIRONMENTS)) 116 ', '.join(constants.VALID_ENVIRONMENTS))
117 117
118 118
119 def AddRemoteDeviceOptions(option_parser):
120 group = optparse.OptionGroup(option_parser, 'Remote Device Options')
121 group.add_option('--remote-device', default='Nexus 5', type='string',
122 help=('Device type to run test on.'))
123 group.add_option('--remote-device-os', default='4.4.2', type='string',
124 help=('OS to have on the device.'))
125 group.add_option('--api-key', default='', type='string',
126 help=('API key for remote devices. Overrides api-key-file'))
127 group.add_option('--api-secret', default='', type='string',
128 help=('API secret for remote devices. '
129 'Overrides api-secret-file'))
130 group.add_option('--api-key-file', default='', type='string',
131 help=('Path to file that contains API key.'))
132 group.add_option('--api-secret-file', default='', type='string',
133 help=('Path to file that contains API secret.'))
134 group.add_option('--results-path', default='', type='string',
135 help=('File path to download results to.'))
136 group.add_option('--api-protocol', default='http', type='string',
137 help=('HTTP protocol to use. (http or https)'))
138 group.add_option('--api-address', default='172.22.21.180', type='string',
139 help=('Address to send HTTP requests.'))
140 group.add_option('--runner-type', default='', type='string',
141 help=('Type of test to run as.'))
142 group.add_option('--runner-package', default='', type='string',
143 help=('Package name of test.'))
144 group.add_option('--apk-under-test', default='apks/Chrome.apk', type='string',
145 help=('APK to run tests on.'))
146 option_parser.add_option_group(group)
147
148
119 def AddDeviceOptions(option_parser): 149 def AddDeviceOptions(option_parser):
120 group = optparse.OptionGroup(option_parser, 'Device Options') 150 group = optparse.OptionGroup(option_parser, 'Device Options')
121 group.add_option('-c', dest='cleanup_test_files', 151 group.add_option('-c', dest='cleanup_test_files',
122 help='Cleanup test files on the device after run', 152 help='Cleanup test files on the device after run',
123 action='store_true') 153 action='store_true')
124 group.add_option('--tool', 154 group.add_option('--tool',
125 dest='tool', 155 dest='tool',
126 help=('Run the test under a tool ' 156 help=('Run the test under a tool '
127 '(use --tool help to list them)')) 157 '(use --tool help to list them)'))
128 group.add_option('-d', '--device', dest='test_device', 158 group.add_option('-d', '--device', dest='test_device',
(...skipping 29 matching lines...) Expand all
158 default=60) 188 default=60)
159 option_parser.add_option('--isolate_file_path', 189 option_parser.add_option('--isolate_file_path',
160 '--isolate-file-path', 190 '--isolate-file-path',
161 dest='isolate_file_path', 191 dest='isolate_file_path',
162 help='.isolate file path to override the default ' 192 help='.isolate file path to override the default '
163 'path') 193 'path')
164 # TODO(gkanwar): Move these to Common Options once we have the plumbing 194 # TODO(gkanwar): Move these to Common Options once we have the plumbing
165 # in our other test types to handle these commands 195 # in our other test types to handle these commands
166 AddCommonOptions(option_parser) 196 AddCommonOptions(option_parser)
167 AddDeviceOptions(option_parser) 197 AddDeviceOptions(option_parser)
198 AddRemoteDeviceOptions(option_parser)
168 199
169 200
170 def AddLinkerTestOptions(option_parser): 201 def AddLinkerTestOptions(option_parser):
171 option_parser.usage = '%prog linker' 202 option_parser.usage = '%prog linker'
172 option_parser.commands_dict = {} 203 option_parser.commands_dict = {}
173 option_parser.example = '%prog linker' 204 option_parser.example = '%prog linker'
174 205
175 option_parser.add_option('-f', '--gtest-filter', dest='test_filter', 206 option_parser.add_option('-f', '--gtest-filter', dest='test_filter',
176 help='googletest-style filter string.') 207 help='googletest-style filter string.')
177 AddCommonOptions(option_parser) 208 AddCommonOptions(option_parser)
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 return monkey_test_options.MonkeyOptions( 544 return monkey_test_options.MonkeyOptions(
514 options.verbose_count, 545 options.verbose_count,
515 options.package, 546 options.package,
516 options.event_count, 547 options.event_count,
517 category, 548 category,
518 options.throttle, 549 options.throttle,
519 options.seed, 550 options.seed,
520 options.extra_args) 551 options.extra_args)
521 552
522 553
554 def AddUirobotTestOptions(option_parser):
555 """Adds uirobot test options to |option_parser|."""
556
557 option_parser.usage = '%prog uirobot [options]'
558 option_parser.commands_dict = {}
559 option_parser.example = (
560 '%prog monkey --minutes=1')
561
562 option_parser.add_option(
563 '--minutes', default=5, type='string',
564 help='Number of minutes to run uirobot test [default: %default].')
565
566 AddCommonOptions(option_parser)
567 AddDeviceOptions(option_parser)
568 AddRemoteDeviceOptions(option_parser)
569
523 def AddPerfTestOptions(option_parser): 570 def AddPerfTestOptions(option_parser):
524 """Adds perf test options to |option_parser|.""" 571 """Adds perf test options to |option_parser|."""
525 572
526 option_parser.usage = '%prog perf [options]' 573 option_parser.usage = '%prog perf [options]'
527 option_parser.commands_dict = {} 574 option_parser.commands_dict = {}
528 option_parser.example = ('%prog perf ' 575 option_parser.example = ('%prog perf '
529 '[--single-step -- command args] or ' 576 '[--single-step -- command args] or '
530 '[--steps perf_steps.json] or ' 577 '[--steps perf_steps.json] or '
531 '[--print-step step]') 578 '[--print-step step]')
532 579
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
908 elif command == 'perf': 955 elif command == 'perf':
909 return _RunPerfTests(options, args, option_parser.error) 956 return _RunPerfTests(options, args, option_parser.error)
910 elif command == 'python': 957 elif command == 'python':
911 return _RunPythonTests(options, option_parser.error) 958 return _RunPythonTests(options, option_parser.error)
912 else: 959 else:
913 raise Exception('Unknown test type.') 960 raise Exception('Unknown test type.')
914 961
915 962
916 _SUPPORTED_IN_PLATFORM_MODE = [ 963 _SUPPORTED_IN_PLATFORM_MODE = [
917 # TODO(jbudorick): Add support for more test types. 964 # TODO(jbudorick): Add support for more test types.
918 'gtest', 965 'gtest', 'uirobot',
919 ] 966 ]
920 967
921 968
922 def RunTestsInPlatformMode(command, options, option_parser): 969 def RunTestsInPlatformMode(command, options, option_parser):
923 970
924 if command not in _SUPPORTED_IN_PLATFORM_MODE: 971 if command not in _SUPPORTED_IN_PLATFORM_MODE:
925 option_parser.error('%s is not yet supported in platform mode' % command) 972 option_parser.error('%s is not yet supported in platform mode' % command)
926 973
927 with environment_factory.CreateEnvironment( 974 with environment_factory.CreateEnvironment(
928 command, options, option_parser.error) as env: 975 command, options, option_parser.error) as env:
929 with test_instance_factory.CreateTestInstance( 976 with test_instance_factory.CreateTestInstance(
930 command, options, option_parser.error) as test: 977 command, options, option_parser.error) as test:
931 with test_run_factory.CreateTestRun( 978 with test_run_factory.CreateTestRun(
932 options, env, test, option_parser.error) as test_run: 979 options, env, test, option_parser.error) as test_run:
933 results = test_run.RunTests() 980 results = test_run.RunTest()
934 981
935 report_results.LogFull( 982 report_results.LogFull(
936 results=results, 983 results=results,
937 test_type=test.TestType(), 984 test_type=test.TestType(),
938 test_package=test_run.TestPackage(), 985 test_package=test_run.TestPackage(),
939 annotation=options.annotations, 986 annotation=options.annotations,
940 flakiness_server=options.flakiness_dashboard_server) 987 flakiness_server=options.flakiness_dashboard_server)
941 988
942 return results 989 return results
943 990
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
997 'junit': CommandFunctionTuple( 1044 'junit': CommandFunctionTuple(
998 AddJUnitTestOptions, RunTestsCommand), 1045 AddJUnitTestOptions, RunTestsCommand),
999 'monkey': CommandFunctionTuple( 1046 'monkey': CommandFunctionTuple(
1000 AddMonkeyTestOptions, RunTestsCommand), 1047 AddMonkeyTestOptions, RunTestsCommand),
1001 'perf': CommandFunctionTuple( 1048 'perf': CommandFunctionTuple(
1002 AddPerfTestOptions, RunTestsCommand), 1049 AddPerfTestOptions, RunTestsCommand),
1003 'python': CommandFunctionTuple( 1050 'python': CommandFunctionTuple(
1004 AddPythonTestOptions, RunTestsCommand), 1051 AddPythonTestOptions, RunTestsCommand),
1005 'linker': CommandFunctionTuple( 1052 'linker': CommandFunctionTuple(
1006 AddLinkerTestOptions, RunTestsCommand), 1053 AddLinkerTestOptions, RunTestsCommand),
1054 'uirobot': CommandFunctionTuple(
1055 AddUirobotTestOptions, RunTestsCommand),
1007 'help': CommandFunctionTuple(lambda option_parser: None, HelpCommand) 1056 'help': CommandFunctionTuple(lambda option_parser: None, HelpCommand)
1008 } 1057 }
1009 1058
1010 1059
1011 def DumpThreadStacks(_signal, _frame): 1060 def DumpThreadStacks(_signal, _frame):
1012 for thread in threading.enumerate(): 1061 for thread in threading.enumerate():
1013 reraiser_thread.LogThreadStack(thread) 1062 reraiser_thread.LogThreadStack(thread)
1014 1063
1015 1064
1016 def main(): 1065 def main():
1017 signal.signal(signal.SIGUSR1, DumpThreadStacks) 1066 signal.signal(signal.SIGUSR1, DumpThreadStacks)
1018 option_parser = command_option_parser.CommandOptionParser( 1067 option_parser = command_option_parser.CommandOptionParser(
1019 commands_dict=VALID_COMMANDS) 1068 commands_dict=VALID_COMMANDS)
1020 return command_option_parser.ParseAndExecute(option_parser) 1069 return command_option_parser.ParseAndExecute(option_parser)
1021 1070
1022 1071
1023 if __name__ == '__main__': 1072 if __name__ == '__main__':
1024 sys.exit(main()) 1073 sys.exit(main())
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698