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): |