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

Unified Diff: tools/telemetry/telemetry/core/browser_options.py

Issue 18261009: Have repeats understand "time" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adding regex for arg parsing and suggested changes Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698