Index: telemetry/telemetry/internal/results/page_test_results.py |
diff --git a/telemetry/telemetry/internal/results/page_test_results.py b/telemetry/telemetry/internal/results/page_test_results.py |
index aee0d95fc6ebb23d0d49d01b4649bc765f5343f6..1e89af7d01b69d7756d4d627c105c044e6793419 100644 |
--- a/telemetry/telemetry/internal/results/page_test_results.py |
+++ b/telemetry/telemetry/internal/results/page_test_results.py |
@@ -21,6 +21,92 @@ from telemetry.value import skip |
from telemetry.value import trace |
+class IterationInfo(object): |
+ def __init__(self): |
+ self._benchmark_name = None |
+ self._benchmark_start_ms = None |
+ self._label = None |
+ self._story_display_name = '' |
+ self._story_grouping_keys = {} |
+ self._story_repeat_counter = 0 |
+ self._story_url = '' |
+ self._storyset_repeat_counter = 0 |
+ |
+ @property |
+ def benchmark_name(self): |
+ return self._benchmark_name |
+ |
+ @benchmark_name.setter |
+ def benchmark_name(self, benchmark_name): |
+ assert self.benchmark_name is None, ( |
+ 'benchmark_name must be set exactly once') |
+ self._benchmark_name = benchmark_name |
+ |
+ @property |
+ def benchmark_start_ms(self): |
+ return self._benchmark_start_ms |
+ |
+ @benchmark_start_ms.setter |
+ def benchmark_start_ms(self, benchmark_start_ms): |
+ assert self.benchmark_start_ms is None, ( |
+ 'benchmark_start_ms must be set exactly once') |
+ self._benchmark_start_ms = benchmark_start_ms |
+ |
+ @property |
+ def label(self): |
+ return self._label |
+ |
+ @label.setter |
+ def label(self, label): |
+ assert self.label is None, 'label cannot be set more than once' |
+ self._label = label |
+ |
+ @property |
+ def story_display_name(self): |
+ return self._story_display_name |
+ |
+ @property |
+ def story_url(self): |
+ return self._story_url |
+ |
+ @property |
+ def story_grouping_keys(self): |
+ return self._story_grouping_keys |
+ |
+ @property |
+ def storyset_repeat_counter(self): |
+ return self._storyset_repeat_counter |
+ |
+ @property |
+ def story_repeat_counter(self): |
+ return self._story_repeat_counter |
+ |
+ def WillRunStory(self, story, storyset_repeat_counter, story_repeat_counter): |
+ self._story_display_name = story.display_name |
+ self._story_url = story.url |
+ if story.grouping_keys: |
+ self._story_grouping_keys = story.grouping_keys |
+ self._storyset_repeat_counter = storyset_repeat_counter |
+ self._story_repeat_counter = story_repeat_counter |
+ |
+ def AsDict(self): |
+ assert self.benchmark_name is not None, ( |
+ 'benchmark_name must be set exactly once') |
+ assert self.benchmark_start_ms is not None, ( |
+ 'benchmark_start_ms must be set exactly once') |
+ d = {} |
+ d['benchmarkName'] = self.benchmark_name |
+ d['benchmarkStartMs'] = self.benchmark_start_ms |
+ if self.label: |
+ d['label'] = self.label |
+ d['storyDisplayName'] = self.story_display_name |
+ d['storyGroupingKeys'] = self.story_grouping_keys |
+ d['storyRepeatCounter'] = self.story_repeat_counter |
+ d['storyUrl'] = self.story_url |
+ d['storysetRepeatCounter'] = self.storyset_repeat_counter |
+ return d |
+ |
+ |
class PageTestResults(object): |
def __init__(self, output_formatters=None, |
progress_reporter=None, trace_tag='', output_dir=None, |
@@ -68,6 +154,12 @@ class PageTestResults(object): |
# actually need set-ness in python. |
self._value_set = [] |
+ self._iteration_info = IterationInfo() |
+ |
+ @property |
+ def iteration_info(self): |
+ return self._iteration_info |
+ |
@property |
def value_set(self): |
return self._value_set |
@@ -163,10 +255,13 @@ class PageTestResults(object): |
def __exit__(self, _, __, ___): |
self.CleanUp() |
- def WillRunPage(self, page): |
+ def WillRunPage(self, page, storyset_repeat_counter=0, |
+ story_repeat_counter=0): |
assert not self._current_page_run, 'Did not call DidRunPage.' |
self._current_page_run = story_run.StoryRun(page) |
self._progress_reporter.WillRunPage(self) |
+ self.iteration_info.WillRunStory( |
+ page, storyset_repeat_counter, story_repeat_counter) |
def DidRunPage(self, page): # pylint: disable=unused-argument |
""" |