| Index: tools/telemetry/telemetry/core/repeat_options.py
|
| diff --git a/tools/telemetry/telemetry/core/repeat_options.py b/tools/telemetry/telemetry/core/repeat_options.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d11c3ec63938a8cce02644b388dc265f3ec4376d
|
| --- /dev/null
|
| +++ b/tools/telemetry/telemetry/core/repeat_options.py
|
| @@ -0,0 +1,61 @@
|
| +# Copyright (c) 2013 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 optparse
|
| +import re
|
| +
|
| +
|
| +class RepeatOptions(object):
|
| + def __init__(self, page_repeat_secs=None, pageset_repeat_secs=None,
|
| + page_repeat_iters=None, pageset_repeat_iters=None):
|
| + self.page_repeat_secs = page_repeat_secs
|
| + self.pageset_repeat_secs = pageset_repeat_secs
|
| + self.page_repeat_iters = page_repeat_iters
|
| + self.pageset_repeat_iters = pageset_repeat_iters
|
| +
|
| + def __deepcopy__(self, _):
|
| + return RepeatOptions(self.page_repeat_secs, self.pageset_repeat_secs,
|
| + self.page_repeat_iters, self.pageset_repeat_iters)
|
| +
|
| + @staticmethod
|
| + def AddCommandLineOptions(parser):
|
| + group = optparse.OptionGroup(parser, 'Repeat options')
|
| + 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.')
|
| + parser.add_option_group(group)
|
| +
|
| + def _ParseRepeatOption(self, browser_options, input_str, parser):
|
| + match = re.match('([0-9]+)([sS]?)$', str(getattr(browser_options,
|
| + input_str, '')))
|
| + if match:
|
| + if match.group(2):
|
| + setattr(self, input_str + '_secs', float(match.group(1)))
|
| + # Set _iters to the default value
|
| + setattr(self, input_str + '_iters', 1)
|
| + else:
|
| + setattr(self, input_str + '_iters', int(match.group(1)))
|
| + delattr(browser_options, input_str)
|
| + else:
|
| + parser.error('Usage: --%s only accepts an int '
|
| + 'followed by only an \'s\' if using time. '
|
| + 'e.g. \'10\' or \'10s\'\n' % input_str.replace('_','-'))
|
| +
|
| + def UpdateFromParseResults(self, browser_options, parser):
|
| + self._ParseRepeatOption(browser_options, 'page_repeat', parser)
|
| + self._ParseRepeatOption(browser_options, 'pageset_repeat', parser)
|
| +
|
| + def IsRepeating(self):
|
| + """Returns True if we will be repeating pages or pagesets."""
|
| + return (self.page_repeat_iters != 1 or self.pageset_repeat_iters != 1 or
|
| + self.page_repeat_secs or self.pageset_repeat_secs)
|
|
|