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

Side by Side Diff: tools/telemetry/telemetry/browser_options.py

Issue 12278015: [Telemetry] Reorganize everything. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Re-add shebangs. Created 7 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4 import optparse
5 import sys
6 import shlex
7 import logging
8 import copy
9
10 from telemetry import browser_finder
11 from telemetry import wpr_modes
12
13 class BrowserOptions(optparse.Values):
14 """Options to be used for discovering and launching a browser."""
15
16 def __init__(self, browser_type=None):
17 optparse.Values.__init__(self)
18
19 self.browser_type = browser_type
20 self.browser_executable = None
21 self.chrome_root = None
22 self.android_device = None
23 self.cros_ssh_identity = None
24
25 self.dont_override_profile = False
26 self.extra_browser_args = []
27 self.extra_wpr_args = []
28 self.show_stdout = False
29 self.extensions_to_load = []
30
31 self.cros_remote = None
32 self.wpr_mode = wpr_modes.WPR_OFF
33 self.wpr_make_javascript_deterministic = True
34
35 self.browser_user_agent_type = None
36
37 self.trace_dir = None
38 self.verbosity = 0
39
40 self.page_filter = None
41 self.page_filter_exclude = None
42
43 def Copy(self):
44 return copy.deepcopy(self)
45
46 def CreateParser(self, *args, **kwargs):
47 parser = optparse.OptionParser(*args, **kwargs)
48
49 # Selection group
50 group = optparse.OptionGroup(parser, 'Which browser to use')
51 group.add_option('--browser',
52 dest='browser_type',
53 default=None,
54 help='Browser type to run, '
55 'in order of priority. Supported values: list,%s' %
56 browser_finder.ALL_BROWSER_TYPES)
57 group.add_option('--browser-executable',
58 dest='browser_executable',
59 help='The exact browser to run.')
60 group.add_option('--chrome-root',
61 dest='chrome_root',
62 help='Where to look for chrome builds.'
63 'Defaults to searching parent dirs by default.')
64 group.add_option('--device',
65 dest='android_device',
66 help='The android device ID to use'
67 'If not specified, only 0 or 1 connected devcies are supported.')
68 group.add_option('--keep_test_server_ports', action='store_true',
69 help='Indicates the test server ports must be '
70 'kept. When this is run via a sharder '
71 'the test server ports should be kept and '
72 'should not be reset.')
73 group.add_option(
74 '--remote',
75 dest='cros_remote',
76 help='The IP address of a remote ChromeOS device to use.')
77 group.add_option('--identity',
78 dest='cros_ssh_identity',
79 default=None,
80 help='The identity file to use when ssh\'ing into the ChromeOS device')
81 parser.add_option_group(group)
82
83 # Browser options
84 group = optparse.OptionGroup(parser, 'Browser options')
85 group.add_option('--dont-override-profile', action='store_true',
86 dest='dont_override_profile',
87 help='Uses the regular user profile instead of a clean one')
88 group.add_option('--extra-browser-args',
89 dest='extra_browser_args_as_string',
90 help='Additional arguments to pass to the browser when it starts')
91 group.add_option('--extra-wpr-args',
92 dest='extra_wpr_args_as_string',
93 help=('Additional arguments to pass to Web Page Replay. '
94 'See third_party/webpagereplay/replay.py for usage.'))
95 group.add_option('--show-stdout',
96 action='store_true',
97 help='When possible, will display the stdout of the process')
98 parser.add_option_group(group)
99
100 # Page set options
101 group = optparse.OptionGroup(parser, 'Page set options')
102 group.add_option('--page-repeat', dest='page_repeat', default=1,
103 help='Number of times to repeat each individual ' +
104 'page in the pageset before proceeding.')
105 group.add_option('--pageset-repeat', dest='pageset_repeat', default=1,
106 help='Number of times to repeat the entire pageset ' +
107 'before finishing.')
108 group.add_option('--pageset-shuffle', action='store_true',
109 dest='pageset_shuffle',
110 help='Shuffle the order of pages within a pageset.')
111 group.add_option('--pageset-shuffle-order-file',
112 dest='pageset_shuffle_order_file', default=None,
113 help='Filename of an output of a previously run test on the current ' +
114 'pageset. The tests will run in the same order again, overriding ' +
115 'what is specified by --page-repeat and --pageset-repeat.')
116 parser.add_option_group(group)
117
118 # Debugging options
119 group = optparse.OptionGroup(parser, 'When things go wrong')
120 group.add_option(
121 '--trace-dir', dest='trace_dir', default=None,
122 help='Record traces and store them in this directory.')
123 group.add_option(
124 '-v', '--verbose', action='count', dest='verbosity',
125 help='Increase verbosity level (repeat as needed)')
126 parser.add_option_group(group)
127
128 real_parse = parser.parse_args
129 def ParseArgs(args=None):
130 defaults = parser.get_default_values()
131 for k, v in defaults.__dict__.items():
132 if k in self.__dict__ and self.__dict__[k] != None:
133 continue
134 self.__dict__[k] = v
135 ret = real_parse(args, self) # pylint: disable=E1121
136
137 if self.verbosity >= 2:
138 logging.basicConfig(level=logging.DEBUG)
139 elif self.verbosity:
140 logging.basicConfig(level=logging.INFO)
141 else:
142 logging.basicConfig(level=logging.WARNING)
143
144 if self.browser_executable and not self.browser_type:
145 self.browser_type = 'exact'
146 if not self.browser_executable and not self.browser_type:
147 sys.stderr.write('Must provide --browser=<type>. ' +
148 'Use --browser=list for valid options.\n')
149 sys.exit(1)
150 if self.browser_type == 'list':
151 types = browser_finder.GetAllAvailableBrowserTypes(self)
152 sys.stderr.write('Available browsers:\n')
153 sys.stdout.write(' %s\n' % '\n '.join(types))
154 sys.exit(1)
155 if self.extra_browser_args_as_string: # pylint: disable=E1101
156 tmp = shlex.split(
157 self.extra_browser_args_as_string) # pylint: disable=E1101
158 self.extra_browser_args.extend(tmp)
159 delattr(self, 'extra_browser_args_as_string')
160 if self.extra_wpr_args_as_string: # pylint: disable=E1101
161 tmp = shlex.split(
162 self.extra_wpr_args_as_string) # pylint: disable=E1101
163 self.extra_wpr_args.extend(tmp)
164 delattr(self, 'extra_wpr_args_as_string')
165 return ret
166 parser.parse_args = ParseArgs
167 return parser
168
169 def AppendExtraBrowserArg(self, arg):
170 if arg not in self.extra_browser_args:
171 self.extra_browser_args.append(arg)
OLDNEW
« no previous file with comments | « tools/telemetry/telemetry/browser_gone_exception.py ('k') | tools/telemetry/telemetry/browser_options_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698