| # Copyright 2018 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| from telemetry.web_perf import story_test |
| from telemetry.web_perf import timeline_based_measurement |
| |
| |
| class DualMetricMeasurement(story_test.StoryTest): |
| """Test class supporting both ad hoc measurements and trace based metrics. |
| |
| Currently only works with PressStory pages, which implement |
| GetMeasurements(). |
| """ |
| def __init__(self, tbm_options): |
| super(DualMetricMeasurement, self).__init__() |
| # Only enable tracing if metrics have been specified. |
| if tbm_options.GetTimelineBasedMetrics(): |
| self._tbm_test = timeline_based_measurement.TimelineBasedMeasurement( |
| tbm_options) |
| self._enable_tracing = True |
| else: |
| self._enable_tracing = False |
| |
| def WillRunStory(self, platform, story=None): |
| if self._enable_tracing: |
| self._tbm_test.WillRunStory(platform, story) |
| |
| def Measure(self, platform, results): |
| for value in results.current_story.GetMeasurements(): |
| results.AddMeasurement(**value) |
| if self._enable_tracing: |
| self._tbm_test.Measure(platform, results) |
| |
| def DidRunStory(self, platform, results): |
| if self._enable_tracing: |
| self._tbm_test.DidRunStory(platform, results) |