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 017bf080e393c75f10f2eb6a7286795a731db11d..e2616326929d46d9a750fff29842f2d106029b6f 100644 |
| --- a/tools/telemetry/telemetry/web_perf/timeline_based_measurement.py |
| +++ b/tools/telemetry/telemetry/web_perf/timeline_based_measurement.py |
| @@ -12,6 +12,7 @@ from telemetry.value import trace |
| from telemetry.web_perf import timeline_interaction_record as tir_module |
| from telemetry.web_perf.metrics import responsiveness_metric |
| from telemetry.web_perf.metrics import smoothness |
| +from telemetry.web_perf.metrics import layout |
| # TimelineBasedMeasurement considers all instrumentation as producing a single |
| # timeline. But, depending on the amount of instrumentation that is enabled, |
| @@ -27,23 +28,18 @@ ALL_OVERHEAD_LEVELS = [ |
| DEBUG_OVERHEAD_LEVEL |
| ] |
| -DEFAULT_METRICS = { |
| - tir_module.IS_SMOOTH: smoothness.SmoothnessMetric, |
| - tir_module.IS_RESPONSIVE: responsiveness_metric.ResponsivenessMetric, |
| -} |
| -class InvalidInteractions(Exception): |
| - pass |
| +def _GetAllTimelineBasedMetrics(): |
| + # TODO(nednguyen): uses discovery pattern to return all the instances of |
|
Sami
2015/03/03 17:49:49
s/uses/use/?
nednguyen
2015/03/03 17:55:08
Done.
|
| + # all TimelineBasedMetrics class in web_perf/metrics/ folder. |
| + # This cannot be done until crbug.com/460208 is fixed. |
| + return (smoothness.SmoothnessMetric(), |
| + responsiveness_metric.ResponsivenessMetric(), |
| + layout.LayoutMetric()) |
| -def _GetMetricsFromFlags(record_custom_flags): |
| - flags_set = set(record_custom_flags) |
| - unknown_flags = flags_set.difference(DEFAULT_METRICS) |
| - if unknown_flags: |
| - raise Exception("Unknown metric flags: %s" % sorted(unknown_flags)) |
| - |
| - return [metric() for flag, metric in DEFAULT_METRICS.iteritems() |
| - if flag in flags_set] |
| +class InvalidInteractions(Exception): |
| + pass |
| # TODO(nednguyen): Get rid of this results wrapper hack after we add interaction |
| @@ -86,13 +82,10 @@ def _GetRendererThreadsToInteractionRecordsMap(model): |
| class _TimelineBasedMetrics(object): |
| - def __init__(self, model, renderer_thread, interaction_records, |
| - get_metrics_from_flags_callback): |
| + def __init__(self, model, renderer_thread, interaction_records): |
| self._model = model |
| self._renderer_thread = renderer_thread |
| self._interaction_records = interaction_records |
| - self._get_metrics_from_flags_callback = \ |
| - get_metrics_from_flags_callback |
| def AddResults(self, results): |
| interactions_by_label = defaultdict(list) |
| @@ -118,8 +111,7 @@ class _TimelineBasedMetrics(object): |
| raise InvalidInteractions('Interaction records with the same logical ' |
| 'name must have the same flags.') |
| - metrics_list = self._get_metrics_from_flags_callback(records_custom_flags) |
| - for metric in metrics_list: |
| + for metric in _GetAllTimelineBasedMetrics(): |
| metric.AddResults(self._model, self._renderer_thread, |
| interactions, wrapped_results) |
| @@ -131,8 +123,7 @@ class Options(object): |
| Benchmark.CreateTimelineBasedMeasurementOptions. |
| """ |
| - def __init__(self, overhead_level=NO_OVERHEAD_LEVEL, |
| - get_metrics_from_flags_callback=_GetMetricsFromFlags): |
| + def __init__(self, overhead_level=NO_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. |
| @@ -140,9 +131,6 @@ class Options(object): |
| overhead_level: Can either be a custom TracingCategoryFilter object or |
| one of NO_OVERHEAD_LEVEL, MINIMAL_OVERHEAD_LEVEL or |
| DEBUG_OVERHEAD_LEVEL. |
| - get_metrics_from_flags_callback: Callback function which returns a |
| - a list of metrics based on timeline record flags. See the default |
| - _GetMetricsFromFlags() as an example. |
| """ |
| if (not isinstance(overhead_level, |
| tracing_category_filter.TracingCategoryFilter) and |
| @@ -153,7 +141,6 @@ class Options(object): |
| self._overhead_level = overhead_level |
| self._extra_category_filters = [] |
| - self._get_metrics_from_flags_callback = get_metrics_from_flags_callback |
| def ExtendTraceCategoryFilters(self, filters): |
| self._extra_category_filters.extend(filters) |
| @@ -166,10 +153,6 @@ class Options(object): |
| def overhead_level(self): |
| return self._overhead_level |
| - @property |
| - def get_metrics_from_flags_callback(self): |
| - return self._get_metrics_from_flags_callback |
| - |
| class TimelineBasedMeasurement(object): |
| """Collects multiple metrics based on their interaction records. |
| @@ -244,8 +227,7 @@ class TimelineBasedMeasurement(object): |
| for renderer_thread, interaction_records in ( |
| threads_to_records_map.iteritems()): |
| meta_metrics = _TimelineBasedMetrics( |
| - model, renderer_thread, interaction_records, |
| - self._tbm_options.get_metrics_from_flags_callback) |
| + model, renderer_thread, interaction_records) |
| meta_metrics.AddResults(results) |
| def DidRunUserStory(self, tracing_controller): |