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

Unified Diff: tools/telemetry/telemetry/results/csv_output_formatter.py

Issue 416993008: Introduce OutputFormatter interface and wire it through PageTestResults. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase, address review comments. Created 6 years, 5 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/results/csv_output_formatter_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/results/csv_output_formatter.py
diff --git a/tools/telemetry/telemetry/results/csv_page_measurement_results.py b/tools/telemetry/telemetry/results/csv_output_formatter.py
similarity index 51%
rename from tools/telemetry/telemetry/results/csv_page_measurement_results.py
rename to tools/telemetry/telemetry/results/csv_output_formatter.py
index 8d396354423704e09df5d9fdbac4db241c5e6c66..3c10657adc4d7599eeeb0e046d5f2e93764e2e38 100644
--- a/tools/telemetry/telemetry/results/csv_page_measurement_results.py
+++ b/tools/telemetry/telemetry/results/csv_output_formatter.py
@@ -4,30 +4,27 @@
import csv
-from telemetry.results import page_measurement_results
+from telemetry.results import output_formatter
from telemetry.value import merge_values
-class CsvPageMeasurementResults(
- page_measurement_results.PageMeasurementResults):
+class CsvOutputFormatter(output_formatter.OutputFormatter):
def __init__(self, output_stream):
- super(CsvPageMeasurementResults, self).__init__(output_stream)
- self._results_writer = csv.writer(self._output_stream)
- self._representative_value_names = None
+ super(CsvOutputFormatter, self).__init__(output_stream)
- def PrintSummary(self):
- try:
- values = merge_values.MergeLikeValuesFromSamePage(
- self.all_page_specific_values)
- self._OutputHeader(values)
- value_groups_by_page = merge_values.GroupStably(
- values, lambda value: value.page.url)
- for values_for_page in value_groups_by_page:
- self._OutputValuesForPage(values_for_page[0].page, values_for_page)
- finally:
- super(CsvPageMeasurementResults, self).PrintSummary()
+ def Format(self, page_test_results):
+ values = merge_values.MergeLikeValuesFromSamePage(
+ page_test_results.all_page_specific_values)
+ writer = csv.writer(self.output_stream)
+ header_value_names = self._OutputHeader(values, writer)
+ value_groups_by_page = merge_values.GroupStably(
+ values, lambda value: value.page.url)
+ for values_for_page in value_groups_by_page:
+ self._OutputValuesForPage(
+ header_value_names, values_for_page[0].page, values_for_page,
+ writer)
- def _OutputHeader(self, values):
+ def _OutputHeader(self, values, csv_writer):
"""Output the header rows.
This will retrieve the header string from the given values. As a
@@ -39,33 +36,39 @@ class CsvPageMeasurementResults(
Args:
values: A set of values from which to extract the header string,
which is the value name and the units.
+ writer: A csv.writer instance.
+
+ Returns:
+ The value names being output on the header, in the order of
+ output.
"""
representative_values = {}
for value in values:
if value.name not in representative_values:
representative_values[value.name] = value
- self._representative_value_names = list(
- representative_values.keys())
- self._representative_value_names.sort()
+ header_value_names = list(representative_values.keys())
+ header_value_names.sort()
row = ['page_name']
- for value_name in self._representative_value_names:
+ for value_name in header_value_names:
units = representative_values[value_name].units
row.append('%s (%s)' % (value_name, units))
- self._results_writer.writerow(row)
- self._output_stream.flush()
+ csv_writer.writerow(row)
+ self.output_stream.flush()
+ return header_value_names
- def _OutputValuesForPage(self, page, page_values):
+ def _OutputValuesForPage(self, header_value_names, page, page_values,
+ csv_writer):
row = [page.display_name]
values_by_value_name = {}
for value in page_values:
values_by_value_name[value.name] = value
- for value_name in self._representative_value_names:
+ for value_name in header_value_names:
value = values_by_value_name.get(value_name, None)
if value and value.GetRepresentativeNumber():
row.append('%s' % value.GetRepresentativeNumber())
else:
row.append('-')
- self._results_writer.writerow(row)
- self._output_stream.flush()
+ csv_writer.writerow(row)
+ self.output_stream.flush()
« no previous file with comments | « no previous file | tools/telemetry/telemetry/results/csv_output_formatter_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698