Chromium Code Reviews| Index: telemetry/telemetry/benchmark.py |
| diff --git a/telemetry/telemetry/benchmark.py b/telemetry/telemetry/benchmark.py |
| index a04d6b2f2cd14f3a2d20381772e19f6495f511f7..239c823ea1d584220e6f073dc9bb2ebca0e37840 100644 |
| --- a/telemetry/telemetry/benchmark.py |
| +++ b/telemetry/telemetry/benchmark.py |
| @@ -72,12 +72,14 @@ class Benchmark(command_line.Command): |
| self._max_failures = max_failures |
| self._has_original_tbm_options = ( |
| self.CreateTimelineBasedMeasurementOptions.__func__ == |
| - Benchmark.CreateTimelineBasedMeasurementOptions.__func__) |
| + Benchmark.CreateTimelineBasedMeasurementOptions.__func__ or |
| + self.CreateBaseTimelineBasedMeasurementOptions.__func__ == |
| + Benchmark.CreateBaseTimelineBasedMeasurementOptions.__func__) |
| has_original_create_page_test = ( |
| self.CreatePageTest.__func__ == Benchmark.CreatePageTest.__func__) |
| assert self._has_original_tbm_options or has_original_create_page_test, ( |
| 'Cannot override both CreatePageTest and ' |
| - 'CreateTimelineBasedMeasurementOptions.') |
| + 'CreateBaseTimelineBasedMeasurementOptions.') |
| # pylint: disable=unused-argument |
| @classmethod |
| @@ -228,20 +230,64 @@ class Benchmark(command_line.Command): |
| return histogram.Ownership(decorators.GetEmails(self), |
| decorators.GetComponent(self)) |
| + @decorators.Deprecated( |
| + 2017, 9, 1, 'Use CreateBaseTimelineBasedMeasurementOptions instead.') |
| def CreateTimelineBasedMeasurementOptions(self): |
| - """Return the TimelineBasedMeasurementOptions for this Benchmark. |
| + """See CreateBaseTimelineBasedMeasurementOptions.""" |
| + return self.CreateBaseTimelineBasedMeasurementOptions() |
| - Override this method to configure a TimelineBasedMeasurement benchmark. |
| - Otherwise, override CreatePageTest for PageTest tests. Do not override |
| - both methods. |
| + def CreateBaseTimelineBasedMeasurementOptions(self): |
|
charliea (OOO until 10-5)
2017/07/07 20:06:59
I think this could use clarification on what "base
|
| + """Return the base TimelineBasedMeasurementOptions for this Benchmark. |
| + |
| + Additional chrome and atrace categories can be appended when running the |
| + benchmark with the --extra-chrome-categories and --extra-atrace-categories |
| + flags. |
| + |
| + Override this method to configure a TimelineBasedMeasurement benchmark. If |
| + this is not a TimelineBasedMeasurement benchmark, override CreatePageTest |
| + for PageTest tests. Do not override both methods. |
| """ |
| return timeline_based_measurement.Options() |
| + def _GetTimelineBasedMeasurementOptions(self, options): |
| + """Return all timeline based measurements for the curren benchmark run. |
| + |
| + This includes the benchmark-configured measurements in |
| + CreateBaseTimelineBasedMeasurementOptions as well as the user-flag- |
| + configured options from --extra-chrome-categories and |
| + --extra-atrace-categories. |
| + """ |
| + # TODO(sullivan): the benchmark options should all be configured in |
| + # CreateBaseTimelineBasedMeasurementOptions. Remove references to |
| + # CreateTimelineBasedMeasurementOptions when it is fully deprecated. |
| + # In the short term, if the benchmark overrides |
| + # CreateTimelineBasedMeasurementOptions use the overridden version, |
| + # otherwise call CreateBaseTimelineBasedMeasurementOptions. |
| + # https://github.com/catapult-project/catapult/issues/3450 |
| + tbm_options = None |
| + if (self.CreateTimelineBasedMeasurementOptions.__func__ != |
| + Benchmark.CreateTimelineBasedMeasurementOptions.__func__): |
| + tbm_options = self.CreateTimelineBasedMeasurementOptions() |
| + else: |
| + tbm_options = self.CreateBaseTimelineBasedMeasurementOptions() |
| + if options.extra_chrome_categories: |
| + assert tbm_options.enable_chrome_trace, ( |
| + 'This benchmark does not support Chrome tracing.') |
|
sullivan
2017/07/07 14:58:47
Copied this from the bug comment. Big question I h
charliea (OOO until 10-5)
2017/07/07 20:06:59
One thing that jumps out to me is that it's not cl
nednguyen
2017/07/07 20:07:50
I think most benchmark that support Chrome tracing
|
| + tbm_options.chrome_trace_config.category_filter.AddFilterString( |
|
sullivan
2017/07/07 14:58:47
Also copied this from the bug comment. Any reason
charliea (OOO until 10-5)
2017/07/07 20:06:59
My understanding was that the filter string was th
nednguyen
2017/07/07 20:07:50
To avoid explosion number of flags. I think the pe
|
| + options.extra_chrome_categories) |
| + if options.extra_atrace_categories: |
| + assert tbm_options.enable_atrace_trace, ( |
| + 'This benchmark does not support atrace.') |
|
sullivan
2017/07/07 14:58:47
Same question about enabling atrace.
nednguyen
2017/07/07 20:07:50
Same as above
|
| + tbm_options.atrace_config.categories.append( |
| + options.extra_atrace_categories.split(',')) |
| + return tbm_options |
| + |
| + |
| def CreatePageTest(self, options): # pylint: disable=unused-argument |
| """Return the PageTest for this Benchmark. |
| Override this method for PageTest tests. |
| - Override, override CreateTimelineBasedMeasurementOptions to configure |
| + Override, CreateBaseTimelineBasedMeasurementOptions to configure |
| TimelineBasedMeasurement tests. Do not override both methods. |
| Args: |
| @@ -257,11 +303,11 @@ class Benchmark(command_line.Command): |
| self.test.__name__) |
| if is_page_test: |
| assert self._has_original_tbm_options, ( |
| - 'Cannot override CreateTimelineBasedMeasurementOptions ' |
| + 'Cannot override CreateBaseTimelineBasedMeasurementOptions ' |
| 'with a PageTest.') |
| return self.test() # pylint: disable=no-value-for-parameter |
| - opts = self.CreateTimelineBasedMeasurementOptions() |
| + opts = self._GetTimelineBasedMeasurementOptions(options) |
| self.SetupTraceRerunOptions(options, opts) |
| return timeline_based_measurement.TimelineBasedMeasurement(opts) |