OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 import collections | 4 import collections |
5 import logging | 5 import logging |
6 from collections import defaultdict | 6 from collections import defaultdict |
7 | 7 |
8 from tracing.metrics import metric_runner | 8 from tracing.metrics import metric_runner |
9 | 9 |
10 from telemetry.timeline import chrome_trace_category_filter | 10 from telemetry.timeline import chrome_trace_category_filter |
11 from telemetry.timeline import model as model_module | 11 from telemetry.timeline import model as model_module |
12 from telemetry.timeline import tracing_config | 12 from telemetry.timeline import tracing_config |
13 from telemetry.timeline import trace_data as trace_data_module | |
14 from telemetry.value import trace | 13 from telemetry.value import trace |
15 from telemetry.value import common_value_helpers | 14 from telemetry.value import common_value_helpers |
16 from telemetry.web_perf.metrics import timeline_based_metric | 15 from telemetry.web_perf.metrics import timeline_based_metric |
17 from telemetry.web_perf.metrics import blob_timeline | 16 from telemetry.web_perf.metrics import blob_timeline |
18 from telemetry.web_perf.metrics import jitter_timeline | 17 from telemetry.web_perf.metrics import jitter_timeline |
19 from telemetry.web_perf.metrics import webrtc_rendering_timeline | 18 from telemetry.web_perf.metrics import webrtc_rendering_timeline |
20 from telemetry.web_perf.metrics import gpu_timeline | 19 from telemetry.web_perf.metrics import gpu_timeline |
21 from telemetry.web_perf.metrics import indexeddb_timeline | 20 from telemetry.web_perf.metrics import indexeddb_timeline |
22 from telemetry.web_perf.metrics import layout | 21 from telemetry.web_perf.metrics import layout |
23 from telemetry.web_perf.metrics import smoothness | 22 from telemetry.web_perf.metrics import smoothness |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
285 chrome_config.category_filter.AddIncludedCategory('blink.console') | 284 chrome_config.category_filter.AddIncludedCategory('blink.console') |
286 platform.tracing_controller.StartTracing(self._tbm_options.config) | 285 platform.tracing_controller.StartTracing(self._tbm_options.config) |
287 | 286 |
288 def Measure(self, platform, results): | 287 def Measure(self, platform, results): |
289 """Collect all possible metrics and added them to results.""" | 288 """Collect all possible metrics and added them to results.""" |
290 platform.tracing_controller.telemetry_info = results.telemetry_info | 289 platform.tracing_controller.telemetry_info = results.telemetry_info |
291 trace_result = platform.tracing_controller.StopTracing() | 290 trace_result = platform.tracing_controller.StopTracing() |
292 trace_value = trace.TraceValue(results.current_page, trace_result) | 291 trace_value = trace.TraceValue(results.current_page, trace_result) |
293 results.AddValue(trace_value) | 292 results.AddValue(trace_value) |
294 | 293 |
295 if self._tbm_options.GetTimelineBasedMetrics(): | 294 try: |
296 self._ComputeTimelineBasedMetrics(results, trace_value) | 295 if self._tbm_options.GetTimelineBasedMetrics(): |
297 # Legacy metrics can be computed, but only if explicitly specified. | 296 self._ComputeTimelineBasedMetrics(results, trace_value) |
298 if self._tbm_options.GetLegacyTimelineBasedMetrics(): | 297 # Legacy metrics can be computed, but only if explicitly specified. |
299 # Since this imports the trace model in python, it will also clean up | 298 if self._tbm_options.GetLegacyTimelineBasedMetrics(): |
300 # the trace handles for us. | 299 self._ComputeLegacyTimelineBasedMetrics(results, trace_result) |
| 300 else: |
| 301 # Run all TBMv1 metrics if no other metric is specified |
| 302 # (legacy behavior) |
| 303 if not self._tbm_options.GetLegacyTimelineBasedMetrics(): |
| 304 logging.warn('Please specify the TBMv1 metrics you are interested in ' |
| 305 'explicitly. This implicit functionality will be removed' |
| 306 ' on July 17, 2016.') |
| 307 self._tbm_options.SetLegacyTimelineBasedMetrics( |
| 308 _GetAllLegacyTimelineBasedMetrics()) |
301 self._ComputeLegacyTimelineBasedMetrics(results, trace_result) | 309 self._ComputeLegacyTimelineBasedMetrics(results, trace_result) |
302 else: | 310 finally: |
303 # Clean up the trace handles ourselves if we did not use the python | 311 trace_result.CleanUpAllTraces() |
304 # trace importer. | |
305 for data in trace_result.GetTracesFor( | |
306 trace_data_module.CHROME_TRACE_PART): | |
307 if isinstance(data, trace_data_module.TraceFileHandle): | |
308 data.Clean() | |
309 else: | |
310 # Run all TBMv1 metrics if no other metric is specified (legacy behavior) | |
311 if not self._tbm_options.GetLegacyTimelineBasedMetrics(): | |
312 logging.warn('Please specify the TBMv1 metrics you are interested in ' | |
313 'explicitly. This implicit functionality will be removed ' | |
314 'on July 17, 2016.') | |
315 self._tbm_options.SetLegacyTimelineBasedMetrics( | |
316 _GetAllLegacyTimelineBasedMetrics()) | |
317 self._ComputeLegacyTimelineBasedMetrics(results, trace_result) | |
318 | 312 |
319 def DidRunStory(self, platform): | 313 def DidRunStory(self, platform): |
320 """Clean up after running the story.""" | 314 """Clean up after running the story.""" |
321 if platform.tracing_controller.is_tracing_running: | 315 if platform.tracing_controller.is_tracing_running: |
322 platform.tracing_controller.StopTracing() | 316 platform.tracing_controller.StopTracing() |
323 | 317 |
324 def _ComputeTimelineBasedMetrics(self, results, trace_value): | 318 def _ComputeTimelineBasedMetrics(self, results, trace_value): |
325 metrics = self._tbm_options.GetTimelineBasedMetrics() | 319 metrics = self._tbm_options.GetTimelineBasedMetrics() |
326 extra_import_options = { | 320 extra_import_options = { |
327 'trackDetailedModelStats': True | 321 'trackDetailedModelStats': True |
(...skipping 28 matching lines...) Expand all Loading... |
356 | 350 |
357 for renderer_thread, interaction_records in ( | 351 for renderer_thread, interaction_records in ( |
358 threads_to_records_map.iteritems()): | 352 threads_to_records_map.iteritems()): |
359 meta_metrics = _TimelineBasedMetrics( | 353 meta_metrics = _TimelineBasedMetrics( |
360 model, renderer_thread, interaction_records, self._results_wrapper, | 354 model, renderer_thread, interaction_records, self._results_wrapper, |
361 all_metrics) | 355 all_metrics) |
362 meta_metrics.AddResults(results) | 356 meta_metrics.AddResults(results) |
363 | 357 |
364 for metric in all_metrics: | 358 for metric in all_metrics: |
365 metric.AddWholeTraceResults(model, results) | 359 metric.AddWholeTraceResults(model, results) |
OLD | NEW |