Chromium Code Reviews| Index: tools/telemetry/telemetry/web_perf/timeline_based_measurement.py |
| diff --git a/tools/telemetry/telemetry/web_perf/timeline_based_measurement.py b/tools/telemetry/telemetry/web_perf/timeline_based_measurement.py |
| index 03a90ad239a26c3e7f10723add0b54810d25d582..0740ef46227a39fe8cd534aa6aa49a30ff599dc1 100644 |
| --- a/tools/telemetry/telemetry/web_perf/timeline_based_measurement.py |
| +++ b/tools/telemetry/telemetry/web_perf/timeline_based_measurement.py |
| @@ -127,7 +127,8 @@ class Options(object): |
| Benchmark.CreateTimelineBasedMeasurementOptions. |
| """ |
| - def __init__(self, overhead_level=NO_OVERHEAD_LEVEL): |
| + def __init__(self, overhead_level=NO_OVERHEAD_LEVEL, |
| + get_metric_from_metric_type_callback=_GetMetricFromMetricType): |
| """Save the overhead level. |
| As the amount of instrumentation increases, so does the overhead. |
| @@ -137,9 +138,18 @@ class Options(object): |
| overhead_level: one of NO_OVERHEAD_LEVEL, V8_OVERHEAD_LEVEL, |
| MINIMAL_OVERHEAD_LEVEL, or DEBUG_OVERHEAD_LEVEL. |
| The v8 overhead level is a temporary solution that may be removed. |
| + metrics: Metrics class to use when measuring pages. |
|
nednguyen
2015/01/23 23:58:13
Documentation doesn't match.
David Yen
2015/01/24 00:22:33
Done.
|
| """ |
| self._overhead_level = overhead_level |
| + self._get_metric_from_metric_type = get_metric_from_metric_type_callback |
| + @property |
| + def overhead_level(self): |
| + return self._overhead_level |
| + |
| + @property |
| + def get_metric_from_metric_type_callback(self): |
| + return self._get_metric_from_metric_type |
| class TimelineBasedMeasurement(object): |
| """Collects multiple metrics based on their interaction records. |
| @@ -164,7 +174,7 @@ class TimelineBasedMeasurement(object): |
| perf.metrics.timeline_interaction_record module. |
| """ |
| def __init__(self, options): |
| - self._overhead_level = options._overhead_level |
| + self._tbm_options = options |
| def WillRunUserStory(self, tracing_controller, |
| synthetic_delay_categories=None): |
| @@ -179,25 +189,35 @@ class TimelineBasedMeasurement(object): |
| """ |
| if not tracing_controller.IsChromeTracingSupported(): |
| raise Exception('Not supported') |
| - assert self._overhead_level in ALL_OVERHEAD_LEVELS |
| - if self._overhead_level == NO_OVERHEAD_LEVEL: |
| - category_filter = tracing_category_filter.CreateNoOverheadFilter() |
| - # TODO(ernstm): Remove this overhead level when benchmark relevant v8 events |
| - # become available in the 'benchmark' category. |
| - elif self._overhead_level == V8_OVERHEAD_LEVEL: |
| - category_filter = tracing_category_filter.CreateNoOverheadFilter() |
| - category_filter.AddIncludedCategory('v8') |
| - elif self._overhead_level == MINIMAL_OVERHEAD_LEVEL: |
| - category_filter = tracing_category_filter.CreateMinimalOverheadFilter() |
| + |
| + if isinstance(self._tbm_options.overhead_level, |
| + tracing_category_filter.TracingCategoryFilter): |
| + category_filter = self._tbm_options.overhead_level |
| else: |
| - category_filter = tracing_category_filter.CreateDebugOverheadFilter() |
| + assert self._tbm_options.overhead_level in ALL_OVERHEAD_LEVELS |
| + if self._tbm_options.overhead_level == NO_OVERHEAD_LEVEL: |
| + category_filter = tracing_category_filter.CreateNoOverheadFilter() |
| + # TODO(ernstm): Remove this overhead level when benchmark relevant v8 |
| + # events become available in the 'benchmark' category. |
| + elif self._tbm_options.overhead_level == V8_OVERHEAD_LEVEL: |
| + category_filter = tracing_category_filter.CreateNoOverheadFilter() |
| + category_filter.AddIncludedCategory('v8') |
| + elif self._tbm_options.overhead_level == MINIMAL_OVERHEAD_LEVEL: |
| + category_filter = tracing_category_filter.CreateMinimalOverheadFilter() |
| + else: |
| + category_filter = tracing_category_filter.CreateDebugOverheadFilter() |
| # TODO(slamm): Move synthetic_delay_categories to the TBM options. |
| for delay in synthetic_delay_categories or []: |
| category_filter.AddSyntheticDelay(delay) |
| options = tracing_options.TracingOptions() |
| options.enable_chrome_trace = True |
| - options.enable_platform_display_trace = True |
| + try: |
| + if tracing_controller.IsDisplayTracingSupported(): |
|
nednguyen
2015/01/23 23:58:13
Why is this change? I think I removed this recentl
David Yen
2015/01/24 00:22:33
Looks like bad merge, this is fixed now.
|
| + options.enable_platform_display_trace = True |
| + except AttributeError: |
| + pass |
| + |
| tracing_controller.Start(options, category_filter) |
| def Measure(self, tracing_controller, results): |
| @@ -209,7 +229,8 @@ class TimelineBasedMeasurement(object): |
| for renderer_thread, interaction_records in ( |
| threads_to_records_map.iteritems()): |
| meta_metrics = _TimelineBasedMetrics( |
| - model, renderer_thread, interaction_records, _GetMetricFromMetricType) |
| + model, renderer_thread, interaction_records, |
| + self._tbm_options.get_metric_from_metric_type_callback) |
| meta_metrics.AddResults(results) |
| def DidRunUserStory(self, tracing_controller): |