| Index: telemetry/telemetry/web_perf/timeline_based_measurement.py
|
| diff --git a/telemetry/telemetry/web_perf/timeline_based_measurement.py b/telemetry/telemetry/web_perf/timeline_based_measurement.py
|
| index 1482656d29d74cbf280b9cc3fb67ee6442c0e8dc..0334438bc34eb120e318bedfc32f3f137f83cb56 100644
|
| --- a/telemetry/telemetry/web_perf/timeline_based_measurement.py
|
| +++ b/telemetry/telemetry/web_perf/timeline_based_measurement.py
|
| @@ -7,8 +7,8 @@ from collections import defaultdict
|
|
|
| from tracing.metrics import metric_runner
|
|
|
| +from telemetry.timeline import chrome_trace_category_filter
|
| from telemetry.timeline import model as model_module
|
| -from telemetry.timeline import tracing_category_filter
|
| from telemetry.timeline import tracing_config
|
| from telemetry.value import trace
|
| from telemetry.value import common_value_helpers
|
| @@ -30,14 +30,14 @@ from telemetry.web_perf import timeline_interaction_record as tir_module
|
| # timeline. But, depending on the amount of instrumentation that is enabled,
|
| # overhead increases. The user of the measurement must therefore chose between
|
| # a few levels of instrumentation.
|
| -NO_OVERHEAD_LEVEL = 'no-overhead'
|
| -MINIMAL_OVERHEAD_LEVEL = 'minimal-overhead'
|
| +LOW_OVERHEAD_LEVEL = 'low-overhead'
|
| +DEFAULT_OVERHEAD_LEVEL = 'default-overhead'
|
| DEBUG_OVERHEAD_LEVEL = 'debug-overhead'
|
|
|
| ALL_OVERHEAD_LEVELS = [
|
| - NO_OVERHEAD_LEVEL,
|
| - MINIMAL_OVERHEAD_LEVEL,
|
| - DEBUG_OVERHEAD_LEVEL
|
| + LOW_OVERHEAD_LEVEL,
|
| + DEFAULT_OVERHEAD_LEVEL,
|
| + DEBUG_OVERHEAD_LEVEL,
|
| ]
|
|
|
|
|
| @@ -159,16 +159,16 @@ class Options(object):
|
|
|
| By default, all the timeline based metrics in telemetry/web_perf/metrics are
|
| used (see _GetAllLegacyTimelineBasedMetrics above).
|
| - To customize your metric needs, use SetTimelineBasedMetric().
|
| + To customize your metric needs, use SetTimelineBasedMetrics().
|
| """
|
|
|
| - def __init__(self, overhead_level=NO_OVERHEAD_LEVEL):
|
| + def __init__(self, overhead_level=LOW_OVERHEAD_LEVEL):
|
| """As the amount of instrumentation increases, so does the overhead.
|
| The user of the measurement chooses the overhead level that is appropriate,
|
| and the tracing is filtered accordingly.
|
|
|
| - overhead_level: Can either be a custom TracingCategoryFilter object or
|
| - one of NO_OVERHEAD_LEVEL, MINIMAL_OVERHEAD_LEVEL or
|
| + overhead_level: Can either be a custom ChromeTraceCategoryFilter object or
|
| + one of LOW_OVERHEAD_LEVEL, DEFAULT_OVERHEAD_LEVEL or
|
| DEBUG_OVERHEAD_LEVEL.
|
| """
|
| self._config = tracing_config.TracingConfig()
|
| @@ -176,52 +176,55 @@ class Options(object):
|
| self._config.enable_platform_display_trace = False
|
|
|
| if isinstance(overhead_level,
|
| - tracing_category_filter.TracingCategoryFilter):
|
| - self._config.chrome_trace_config.SetTracingCategoryFilter(overhead_level)
|
| + chrome_trace_category_filter.ChromeTraceCategoryFilter):
|
| + self._config.chrome_trace_config.SetCategoryFilter(overhead_level)
|
| elif overhead_level in ALL_OVERHEAD_LEVELS:
|
| - if overhead_level == NO_OVERHEAD_LEVEL:
|
| - self._config.chrome_trace_config.SetNoOverheadFilter()
|
| - elif overhead_level == MINIMAL_OVERHEAD_LEVEL:
|
| - self._config.chrome_trace_config.SetMinimalOverheadFilter()
|
| + if overhead_level == LOW_OVERHEAD_LEVEL:
|
| + self._config.chrome_trace_config.SetLowOverheadFilter()
|
| + elif overhead_level == DEFAULT_OVERHEAD_LEVEL:
|
| + self._config.chrome_trace_config.SetDefaultOverheadFilter()
|
| else:
|
| self._config.chrome_trace_config.SetDebugOverheadFilter()
|
| else:
|
| - raise Exception("Overhead level must be a TracingCategoryFilter object"
|
| - " or valid overhead level string."
|
| - " Given overhead level: %s" % overhead_level)
|
| + raise Exception("Overhead level must be a ChromeTraceCategoryFilter "
|
| + "object or valid overhead level string. Given overhead "
|
| + "level: %s" % overhead_level)
|
|
|
| - self._timeline_based_metric = None
|
| + self._timeline_based_metrics = None
|
| self._legacy_timeline_based_metrics = []
|
|
|
|
|
| def ExtendTraceCategoryFilter(self, filters):
|
| - category_filter = self._config.chrome_trace_config.tracing_category_filter
|
| + category_filter = self._config.chrome_trace_config.category_filter
|
| for new_category_filter in filters:
|
| category_filter.AddIncludedCategory(new_category_filter)
|
|
|
| @property
|
| def category_filter(self):
|
| - return self._config.chrome_trace_config.tracing_category_filter
|
| + return self._config.chrome_trace_config.category_filter
|
|
|
| @property
|
| def config(self):
|
| return self._config
|
|
|
| - def SetTimelineBasedMetric(self, metric):
|
| - """Sets the new-style (TBMv2) metric to run.
|
| + def SetTimelineBasedMetrics(self, metrics):
|
| + """Sets the new-style (TBMv2) metrics to run.
|
|
|
| - Metrics are assumed to live in //tracing/tracing/metrics, so the path
|
| - should be relative to that. For example, to specify sample_metric.html,
|
| - you would pass 'sample_metric.html'.
|
| + Metrics are assumed to live in //tracing/tracing/metrics, so the path you
|
| + pass in should be relative to that. For example, to specify
|
| + sample_metric.html, you should pass in ['sample_metric.html'].
|
|
|
| Args:
|
| - metric: A string metric path under //tracing/tracing/metrics.
|
| + metrics: A list of strings giving metric paths under
|
| + //tracing/tracing/metrics.
|
| """
|
| - assert isinstance(metric, basestring)
|
| - self._timeline_based_metric = metric
|
| + assert isinstance(metrics, list)
|
| + for metric in metrics:
|
| + assert isinstance(metric, basestring)
|
| + self._timeline_based_metrics = metrics
|
|
|
| - def GetTimelineBasedMetric(self):
|
| - return self._timeline_based_metric
|
| + def GetTimelineBasedMetrics(self):
|
| + return self._timeline_based_metrics
|
|
|
| def SetLegacyTimelineBasedMetrics(self, metrics):
|
| assert isinstance(metrics, collections.Iterable)
|
| @@ -279,8 +282,8 @@ class TimelineBasedMeasurement(story_test.StoryTest):
|
| trace_value = trace.TraceValue(results.current_page, trace_result)
|
| results.AddValue(trace_value)
|
|
|
| - if self._tbm_options.GetTimelineBasedMetric():
|
| - self._ComputeTimelineBasedMetric(results, trace_value)
|
| + if self._tbm_options.GetTimelineBasedMetrics():
|
| + self._ComputeTimelineBasedMetrics(results, trace_value)
|
| # Legacy metrics can be computed, but only if explicitly specified.
|
| if self._tbm_options.GetLegacyTimelineBasedMetrics():
|
| self._ComputeLegacyTimelineBasedMetrics(results, trace_result)
|
| @@ -299,14 +302,14 @@ class TimelineBasedMeasurement(story_test.StoryTest):
|
| if platform.tracing_controller.is_tracing_running:
|
| platform.tracing_controller.StopTracing()
|
|
|
| - def _ComputeTimelineBasedMetric(self, results, trace_value):
|
| - metric = self._tbm_options.GetTimelineBasedMetric()
|
| + def _ComputeTimelineBasedMetrics(self, results, trace_value):
|
| + metrics = self._tbm_options.GetTimelineBasedMetrics()
|
| extra_import_options = {
|
| 'trackDetailedModelStats': True
|
| }
|
|
|
| mre_result = metric_runner.RunMetric(
|
| - trace_value.filename, metric, extra_import_options)
|
| + trace_value.filename, metrics, extra_import_options)
|
| page = results.current_page
|
|
|
| failure_dicts = mre_result.failures
|
|
|