Index: tools/telemetry/telemetry/results/csv_page_measurement_results.py |
diff --git a/tools/telemetry/telemetry/results/csv_page_measurement_results.py b/tools/telemetry/telemetry/results/csv_page_measurement_results.py |
index 0f9872ff8bd514d473c0bee5aebaf22c89c44ae0..595b651dc10cb09585e424b94cc1152575330f11 100644 |
--- a/tools/telemetry/telemetry/results/csv_page_measurement_results.py |
+++ b/tools/telemetry/telemetry/results/csv_page_measurement_results.py |
@@ -27,7 +27,7 @@ class CsvPageMeasurementResults( |
return |
if not self._did_output_header: |
- self._OutputHeader() |
+ self._OutputHeader(values) |
else: |
self._ValidateOutputNamesForCurrentPage() |
self._OutputValuesForPage(values[0].page, values) |
@@ -39,9 +39,9 @@ class CsvPageMeasurementResults( |
if self._output_after_every_page: |
return |
- self._OutputHeader() |
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: |
@@ -61,17 +61,32 @@ added: |
%s |
""" % (current_page_value_names - header_names_written_to_writer) |
- def _OutputHeader(self): |
+ def _OutputHeader(self, values): |
+ """Output the header rows. |
+ |
+ This will retrieve the header string from the given values. As a |
+ results, you would typically pass it all of the recorded values at |
+ the end of the entire telemetry run. In cases where each page |
+ produces the same set of value names, you may call this method |
+ with that set of values. |
+ |
+ Args: |
+ values: A set of values from which to extract the header string, |
+ which is the value name and the units. |
+ """ |
assert not self._did_output_header |
- all_value_names = list( |
- self.all_value_names_that_have_been_seen) |
- all_value_names.sort() |
+ representative_value_names = {} |
+ for value in values: |
+ if value.name not in representative_value_names: |
+ representative_value_names[value.name] = value |
self._did_output_header = True |
- self._header_names_written_to_writer = list(all_value_names) |
+ self._header_names_written_to_writer = list( |
+ representative_value_names.keys()) |
+ self._header_names_written_to_writer.sort() |
row = ['page_name'] |
- for value_name in all_value_names: |
- units = self.GetUnitsForValueName(value_name) |
+ for value_name in self._header_names_written_to_writer: |
+ units = representative_value_names[value_name].units |
row.append('%s (%s)' % (value_name, units)) |
self._results_writer.writerow(row) |
self._output_stream.flush() |