Index: tools/telemetry/telemetry/results/page_test_results.py |
diff --git a/tools/telemetry/telemetry/results/page_test_results.py b/tools/telemetry/telemetry/results/page_test_results.py |
index 497a3aea9d0b5cce7fb7157abbbd1e6cad7b7af9..38b62e448bfdfdc43a322f4df8f9e66d7aa0b540 100644 |
--- a/tools/telemetry/telemetry/results/page_test_results.py |
+++ b/tools/telemetry/telemetry/results/page_test_results.py |
@@ -23,7 +23,7 @@ from telemetry.value import trace |
class PageTestResults(object): |
def __init__(self, output_stream=None, output_formatters=None, |
progress_reporter=None, trace_tag='', output_dir=None, |
- value_can_be_added_predicate=lambda v: True): |
+ value_can_be_added_predicate=lambda v, is_first: True): |
""" |
Args: |
output_stream: The output stream to use to write test results. |
@@ -36,9 +36,10 @@ class PageTestResults(object): |
used for buildbot. |
output_dir: A string specified the directory where to store the test |
artifacts, e.g: trace, videos,... |
- value_can_be_added_predicate: A function that takes an value.Value |
- instance as input. It returns True if the value can be added to the |
- test results and False otherwise. |
+ value_can_be_added_predicate: A function that takes two arguments: |
+ a value.Value instance and a boolean (True when the value is part |
+ of the first result for the user story). It returns True if the value |
+ can be added to the test results and False otherwise. |
""" |
# TODO(chrishenry): Figure out if trace_tag is still necessary. |
@@ -55,6 +56,7 @@ class PageTestResults(object): |
self._current_page_run = None |
self._all_page_runs = [] |
+ self._all_user_stories = set() |
self._representative_value_for_each_value_name = {} |
self._all_summary_values = [] |
self._serialized_trace_file_ids_to_paths = {} |
@@ -153,23 +155,23 @@ class PageTestResults(object): |
self._current_page_run = user_story_run.UserStoryRun(page) |
self._progress_reporter.WillRunPage(self) |
- def DidRunPage(self, page, discard_run=False): # pylint: disable=W0613 |
+ def DidRunPage(self, page): # pylint: disable=W0613 |
""" |
Args: |
page: The current page under test. |
- discard_run: Whether to discard the entire run and all of its |
- associated results. |
""" |
assert self._current_page_run, 'Did not call WillRunPage.' |
self._progress_reporter.DidRunPage(self) |
- if not discard_run: |
- self._all_page_runs.append(self._current_page_run) |
+ self._all_page_runs.append(self._current_page_run) |
+ self._all_user_stories.add(self._current_page_run.user_story) |
self._current_page_run = None |
def AddValue(self, value): |
assert self._current_page_run, 'Not currently running test.' |
self._ValidateValue(value) |
- if not self._value_can_be_added_predicate(value): |
+ is_first_result = ( |
+ self._current_page_run.user_story not in self._all_user_stories) |
+ if not self._value_can_be_added_predicate(value, is_first_result): |
return |
# TODO(eakuefner/chrishenry): Add only one skip per pagerun assert here |
self._current_page_run.AddValue(value) |