| 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 961ed9120e26de4bd13871c5ed8522fe83e4c61a..11e36b1f9a930892d6eb3b48ef6703592c03ceea 100644
|
| --- a/telemetry/telemetry/web_perf/timeline_based_measurement.py
|
| +++ b/telemetry/telemetry/web_perf/timeline_based_measurement.py
|
| @@ -4,6 +4,7 @@
|
| import collections
|
| import logging
|
| from collections import defaultdict
|
| +import threading
|
|
|
| from tracing.metrics import metric_runner
|
|
|
| @@ -73,7 +74,7 @@ class ResultsWrapperInterface(object):
|
|
|
| @property
|
| def current_page(self):
|
| - return self._results.current_page
|
| + return self._results.story
|
|
|
| def AddValue(self, value):
|
| raise NotImplementedError
|
| @@ -284,31 +285,44 @@ class TimelineBasedMeasurement(story_test.StoryTest):
|
| chrome_config.category_filter.AddIncludedCategory('blink.console')
|
| platform.tracing_controller.StartTracing(self._tbm_options.config)
|
|
|
| - def Measure(self, platform, results):
|
| - """Collect all possible metrics and added them to results."""
|
| - platform.tracing_controller.telemetry_info = results.telemetry_info
|
| - trace_result = platform.tracing_controller.StopTracing()
|
| - trace_value = trace.TraceValue(results.current_page, trace_result)
|
| - results.AddValue(trace_value)
|
| + def MeasureWorker(self, page_run, trace_result):
|
| + logging.warn('Running MeasureWorker for %s' % page_run.story.display_name)
|
| +
|
| + trace_value = trace.TraceValue(page_run.story, trace_result)
|
| + page_run.AddValue(trace_value)
|
|
|
| try:
|
| if self._tbm_options.GetTimelineBasedMetrics():
|
| assert not self._tbm_options.GetLegacyTimelineBasedMetrics(), (
|
| 'Specifying both TBMv1 and TBMv2 metrics is not allowed.')
|
| - self._ComputeTimelineBasedMetrics(results, trace_value)
|
| + logging.warn('running _ComputeTimelineBasedMetrics')
|
| + self._ComputeTimelineBasedMetrics(page_run, trace_value)
|
| else:
|
| # Run all TBMv1 metrics if no other metric is specified
|
| # (legacy behavior)
|
| + logging.warn('running legacy metrics')
|
| if not self._tbm_options.GetLegacyTimelineBasedMetrics():
|
| logging.warn('Please specify the TBMv1 metrics you are interested in '
|
| 'explicitly. This implicit functionality will be removed'
|
| ' on July 17, 2016.')
|
| self._tbm_options.SetLegacyTimelineBasedMetrics(
|
| _GetAllLegacyTimelineBasedMetrics())
|
| - self._ComputeLegacyTimelineBasedMetrics(results, trace_result)
|
| + self._ComputeLegacyTimelineBasedMetrics(page_run, trace_result)
|
| finally:
|
| trace_result.CleanUpAllTraces()
|
|
|
| +
|
| + def Measure(self, platform, results):
|
| + """Collect all possible metrics and added them to results."""
|
| + platform.tracing_controller.telemetry_info = results.telemetry_info
|
| + trace_result = platform.tracing_controller.StopTracing()
|
| +
|
| + page_run = results.current_page_run
|
| + thread = threading.Thread(target=TimelineBasedMeasurement.MeasureWorker,
|
| + args=(self, page_run, trace_result,))
|
| + page_run.AddResultThread(thread)
|
| + thread.start()
|
| +
|
| def DidRunStory(self, platform):
|
| """Clean up after running the story."""
|
| if platform.tracing_controller.is_tracing_running:
|
|
|