| 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()
|
|
|