Index: tools/telemetry/telemetry/core/browser_options.py |
diff --git a/tools/telemetry/telemetry/core/browser_options.py b/tools/telemetry/telemetry/core/browser_options.py |
index f27f93499ca313a7c5da46c687db82af71ce5d06..cdef0942e43c9152f17ad5fe974670e1d5cfe667 100644 |
--- a/tools/telemetry/telemetry/core/browser_options.py |
+++ b/tools/telemetry/telemetry/core/browser_options.py |
@@ -1,11 +1,12 @@ |
# Copyright (c) 2012 The Chromium Authors. All rights reserved. |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
+import copy |
+import logging |
import optparse |
-import sys |
+import re |
import shlex |
-import logging |
-import copy |
+import sys |
from telemetry.core import browser_finder |
from telemetry.core import profile_types |
@@ -49,6 +50,11 @@ class BrowserOptions(optparse.Values): |
self.no_proxy_server = False |
+ self.page_repeat_secs = 0 |
+ self.pageset_repeat_secs = 0 |
+ self.page_repeat_iters = 1 |
+ self.pageset_repeat_iters = 1 |
dtu
2013/07/11 17:28:38
I'd prefer if they were all None
edmundyan
2013/07/11 18:55:01
Done, but I can't think of a clean way for _iters.
|
+ |
def Copy(self): |
return copy.deepcopy(self) |
@@ -113,12 +119,17 @@ class BrowserOptions(optparse.Values): |
# Page set options |
group = optparse.OptionGroup(parser, 'Page set options') |
- group.add_option('--page-repeat', dest='page_repeat', default=1, |
- help='Number of times to repeat each individual ' + |
- 'page in the pageset before proceeding.') |
- group.add_option('--pageset-repeat', dest='pageset_repeat', default=1, |
- help='Number of times to repeat the entire pageset ' + |
- 'before finishing.') |
+ group.add_option('--page-repeat', dest='page_repeat', default='1', |
+ help='Number of iterations or length of time to repeat each ' |
+ 'individual page in the pageset before proceeding. Append ' |
+ 'an \'s\' to specify length of time in seconds. e.g., \'10\' ' |
+ 'to repeat for 10 iterations, or \'30s\' to repeat for 30 ' |
+ 'seconds.') |
+ group.add_option('--pageset-repeat', dest='pageset_repeat', default='1', |
+ help='Number of iterations or length of time to repeat the entire ' |
+ 'pageset before finishing. Append an \'s\' to specify length ' |
+ 'of time in seconds. e.g., \'10\' to repeat for 10 iterations, ' |
+ 'or \'30s\' to repeat for 30 seconds.') |
group.add_option('--pageset-shuffle', action='store_true', |
dest='pageset_shuffle', |
help='Shuffle the order of pages within a pageset.') |
@@ -215,6 +226,41 @@ class BrowserOptions(optparse.Values): |
delattr(self, 'extra_wpr_args_as_string') |
if self.profile_type == 'default': |
self.dont_override_profile = True |
+ |
+ pattern = re.compile('([0-9]+)([sS]?)$') |
+ |
+ # page_repeat |
+ match = pattern.match(self.page_repeat) |
+ if match: |
+ if match.group(1): |
dtu
2013/07/11 17:28:38
match.group(2)
edmundyan
2013/07/11 18:55:01
Done.
|
+ self.page_repeat_secs = float(match.group(1)) |
+ else: |
+ self.page_repeat_iters = int(match.group(1)) |
+ delattr(self, "page_repeat") |
dtu
2013/07/11 17:28:38
Single quotes.
edmundyan
2013/07/11 18:55:01
Done.
|
+ else: |
+ sys.stderr.write('Usage: --page-repeat only accepts an int ' + |
dtu
2013/07/11 17:28:38
No +
edmundyan
2013/07/11 18:55:01
Done.
|
+ 'followed by only an \'s\' if using time. ' + |
+ 'e.g. \'10\' or \'10s\'\n') |
+ sys.exit(1) |
+ |
+ # pageset_repeat |
+ match = pattern.match(self.pageset_repeat) |
+ if match: |
+ if match.group(1): |
+ self.pageset_repeat_secs = float(match.group(1)) |
+ else: |
+ self.pageset_repeat_iters = int(match.group(1)) |
+ delattr(self, "pageset_repeat") |
+ else: |
+ sys.stderr.write('Usage: --pageset-repeat only accepts an int ' + |
+ 'followed by only an \'s\' if using time. ' + |
+ 'e.g. \'10\' or \'10s\'\n') |
+ sys.exit(1) |
+ if ((self.page_repeat_iters != 1 or self.pageset_repeat_iters != 1 ) and |
+ (self.page_repeat_secs or self.pageset_repeat_secs)): |
+ sys.stderr.write('Cannot interchange repeat options. Use only ' + |
+ 'iterations or time.\n') |
+ sys.exit(1) |
self.profile_dir = profile_types.GetProfileDir(self.profile_type) |
return ret |
parser.parse_args = ParseArgs |