Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(180)

Unified Diff: tools/telemetry/telemetry/page/page_benchmark_results.py

Issue 14172017: [Telemetry] Print summaries for individual passing pages if failed pages exist. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed first round of review comments. Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/telemetry/telemetry/page/page_benchmark_results_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/page/page_benchmark_results.py
diff --git a/tools/telemetry/telemetry/page/page_benchmark_results.py b/tools/telemetry/telemetry/page/page_benchmark_results.py
index 32eab68a49905a5d8f0a3ebabcbcb7480e0c0f3b..c6c14bba3e262722ba51f9e052766a1f536c1f83 100644
--- a/tools/telemetry/telemetry/page/page_benchmark_results.py
+++ b/tools/telemetry/telemetry/page/page_benchmark_results.py
@@ -120,12 +120,21 @@ class PageBenchmarkResults(page_test.PageTestResults):
measurement, trace, values, units, result_type)
def PrintSummary(self, trace_tag):
- if self.page_failures:
- return
+ """Print summary data in a format expected by buildbot for perf dashboards.
+
+ If any failed pages exist, only output individual page results for
+ non-failing pages, and do not output any average data.
+
+ Args:
+ trace_tag: a string tag to append to the key for a result trace.
+ """
+ failed_pages = [p['page'] for p in self.page_failures]
+ success_page_results = [r for r in self._page_results
+ if r.page not in failed_pages]
# Print out the list of unique pages.
unique_page_urls = []
- for page_values in self._page_results:
+ for page_values in success_page_results:
url = page_values.page.display_url
if unique_page_urls and unique_page_urls[0] == url:
break
@@ -136,7 +145,7 @@ class PageBenchmarkResults(page_test.PageTestResults):
results_summary = defaultdict(list)
for measurement_name in \
self._all_measurements_that_have_been_seen.iterkeys():
- for page_values in self._page_results:
+ for page_values in success_page_results:
value = page_values.FindValueByMeasurementName(measurement_name)
if not value:
continue
@@ -161,7 +170,10 @@ class PageBenchmarkResults(page_test.PageTestResults):
else:
trace = measurement + (trace_tag or '')
- if not trace_tag and len(value_url_list) > 1:
+ # Print individual _by_url results if there's more than 1 successful page,
+ # or if there's exactly 1 successful page but a failure exists.
+ if not trace_tag and (len(value_url_list) > 1 or
+ (self.page_failures and len(value_url_list) == 1)):
url_value_map = defaultdict(list)
for value, url in value_url_list:
if 'histogram' in data_type and url_value_map[url]:
@@ -174,21 +186,25 @@ class PageBenchmarkResults(page_test.PageTestResults):
self._PrintPerfResult(measurement + '_by_url', url,
url_value_map[url], units, by_url_data_type)
+ # If there were no page failures, print the average data.
# For histograms, we don't print the average data, only the _by_url,
# unless there is only 1 page in which case the _by_urls are omitted.
- if 'histogram' not in data_type or len(value_url_list) == 1:
- values = [i[0] for i in value_url_list]
- if isinstance(values[0], list):
- values = list(chain.from_iterable(values))
- self._PrintPerfResult(measurement, trace, values, units, data_type)
-
- # Output the overall results (results not associated with a page).
- for value in self._overall_results:
- values = value.value
- if not isinstance(values, list):
- values = [values]
- measurement_name = value.chart_name
- if not measurement_name:
- measurement_name = value.trace_name
- self._PrintPerfResult(measurement_name, value.trace_name,
- values, value.units, value.data_type)
+ if not self.page_failures:
+ if 'histogram' not in data_type or len(value_url_list) == 1:
+ values = [i[0] for i in value_url_list]
+ if isinstance(values[0], list):
+ values = list(chain.from_iterable(values))
+ self._PrintPerfResult(measurement, trace, values, units, data_type)
+
+ # If there were no failed pages, output the overall results (results not
+ # associated with a page).
+ if not self.page_failures:
+ for value in self._overall_results:
+ values = value.value
+ if not isinstance(values, list):
+ values = [values]
+ measurement_name = value.chart_name
+ if not measurement_name:
+ measurement_name = value.trace_name
+ self._PrintPerfResult(measurement_name, value.trace_name,
+ values, value.units, value.data_type)
« no previous file with comments | « no previous file | tools/telemetry/telemetry/page/page_benchmark_results_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698