| Index: tools/telemetry/telemetry/benchmark.py
|
| diff --git a/tools/telemetry/telemetry/benchmark.py b/tools/telemetry/telemetry/benchmark.py
|
| index f32a1fd69477081d54ef0df3566d43c0c5173e81..c018acc81b9480df4a3181174e9fd4aa536c66f5 100644
|
| --- a/tools/telemetry/telemetry/benchmark.py
|
| +++ b/tools/telemetry/telemetry/benchmark.py
|
| @@ -33,9 +33,10 @@ class InvalidOptionsError(Exception):
|
|
|
|
|
| class BenchmarkMetadata(object):
|
| - def __init__(self, name, description=''):
|
| + def __init__(self, name, description='', rerun_options=None):
|
| self._name = name
|
| self._description = description
|
| + self._rerun_options = rerun_options
|
|
|
| @property
|
| def name(self):
|
| @@ -45,6 +46,10 @@ class BenchmarkMetadata(object):
|
| def description(self):
|
| return self._description
|
|
|
| + @property
|
| + def rerun_options(self):
|
| + return self._rerun_options
|
| +
|
|
|
| class Benchmark(command_line.Command):
|
| """Base class for a Telemetry benchmark.
|
| @@ -86,12 +91,45 @@ class Benchmark(command_line.Command):
|
|
|
| @classmethod
|
| def AddCommandLineArgs(cls, parser):
|
| + group = optparse.OptionGroup(parser, '%s test options' % cls.Name())
|
| if hasattr(cls, 'AddBenchmarkCommandLineArgs'):
|
| - group = optparse.OptionGroup(parser, '%s test options' % cls.Name())
|
| cls.AddBenchmarkCommandLineArgs(group)
|
| +
|
| + if cls.HasTraceRerunDebugOption():
|
| + group.add_option(
|
| + '--rerun-with-debug-trace',
|
| + action='store_true',
|
| + help='Rerun option that enables more extensive tracing.')
|
| +
|
| + if group.option_list:
|
| parser.add_option_group(group)
|
|
|
| @classmethod
|
| + def HasTraceRerunDebugOption(cls):
|
| + if hasattr(cls, 'HasBenchmarkTraceRerunDebugOption'):
|
| + if cls.HasBenchmarkTraceRerunDebugOption():
|
| + return True
|
| + return False
|
| +
|
| + def GetTraceRerunCommands(self):
|
| + if self.HasTraceRerunDebugOption():
|
| + return [['Debug Trace', '--rerun-with-debug-trace']]
|
| + return []
|
| +
|
| + def SetupTraceRerunOptions(self, browser_options, tbm_options):
|
| + if self.HasTraceRerunDebugOption():
|
| + if browser_options.rerun_with_debug_trace:
|
| + self.SetupBenchmarkDebugTraceRerunOptions(tbm_options)
|
| + else:
|
| + self.SetupBenchmarkDefaultTraceRerunOptions(tbm_options)
|
| +
|
| + def SetupBenchmarkDefaultTraceRerunOptions(self, tbm_options):
|
| + """Setup tracing categories associated with default trace option."""
|
| +
|
| + def SetupBenchmarkDebugTraceRerunOptions(self, tbm_options):
|
| + """Setup tracing categories associated with debug trace option."""
|
| +
|
| + @classmethod
|
| def SetArgumentDefaults(cls, parser):
|
| default_values = parser.get_default_values()
|
| invalid_options = [
|
| @@ -109,7 +147,8 @@ class Benchmark(command_line.Command):
|
| """Add browser options that are required by this benchmark."""
|
|
|
| def GetMetadata(self):
|
| - return BenchmarkMetadata(self.Name(), self.__doc__)
|
| + return BenchmarkMetadata(
|
| + self.Name(), self.__doc__, self.GetTraceRerunCommands())
|
|
|
| def Run(self, finder_options):
|
| """Run this test with the given options.
|
| @@ -253,8 +292,10 @@ class Benchmark(command_line.Command):
|
| 'Cannot override CreateTimelineBasedMeasurementOptions '
|
| 'with a PageTest.')
|
| return self.test() # pylint: disable=no-value-for-parameter
|
| - return timeline_based_measurement.TimelineBasedMeasurement(
|
| - self.CreateTimelineBasedMeasurementOptions())
|
| +
|
| + opts = self.CreateTimelineBasedMeasurementOptions()
|
| + self.SetupTraceRerunOptions(options, opts)
|
| + return timeline_based_measurement.TimelineBasedMeasurement(opts)
|
|
|
| def CreatePageSet(self, options): # pylint: disable=unused-argument
|
| """Get the page set this test will run on.
|
|
|