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

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

Issue 27486002: Cleanup of page_measurement_results object (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: keep on trying Created 7 years, 1 month 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
Index: tools/telemetry/telemetry/page/csv_page_measurement_results.py
diff --git a/tools/telemetry/telemetry/page/csv_page_measurement_results.py b/tools/telemetry/telemetry/page/csv_page_measurement_results.py
index 0fafbbbcba50a88d36694ddc316d727b5579732b..b57a143a647718b093975053a4973c17088e1100 100644
--- a/tools/telemetry/telemetry/page/csv_page_measurement_results.py
+++ b/tools/telemetry/telemetry/page/csv_page_measurement_results.py
@@ -4,6 +4,7 @@
import csv
from telemetry.page import page_measurement_results
+from telemetry.value import merge_values
class CsvPageMeasurementResults(
page_measurement_results.PageMeasurementResults):
@@ -16,9 +17,10 @@ class CsvPageMeasurementResults(
self._output_after_every_page = output_after_every_page
def DidMeasurePage(self):
- assert self.values_for_current_page, 'Failed to call WillMeasurePage'
+ assert self.page_specific_values_for_current_page
- if (not self.values_for_current_page.values or
+ values = self.page_specific_values_for_current_page
+ if (not values or
not self._output_after_every_page):
# Do not output if no results were added on this page or if output flag
# is not set.
@@ -30,25 +32,35 @@ class CsvPageMeasurementResults(
else:
self._ValidateOutputNamesForCurrentPage()
- self._OutputValuesForPage(self.values_for_current_page)
+ self._OutputValuesForPage(values[0].page, values)
super(CsvPageMeasurementResults, self).DidMeasurePage()
def PrintSummary(self):
- if not self._output_after_every_page:
- self._OutputHeader()
- for page_values in self.page_results:
- self._OutputValuesForPage(page_values)
+ if self._output_after_every_page:
+ super(CsvPageMeasurementResults, self).PrintSummary()
+ return
+
+ self._OutputHeader()
+
+ values = merge_values.MergeLikeValuesFromSamePage(
+ self.all_page_specific_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)
super(CsvPageMeasurementResults, self).PrintSummary()
def _ValidateOutputNamesForCurrentPage(self):
assert self._did_output_header
- current_page_measurement_names = \
- set(self.values_for_current_page.measurement_names)
+ current_page_value_names = set([
+ value.name for value in self.page_specific_values_for_current_page])
header_names_written_to_writer = \
set(self._header_names_written_to_writer)
- if header_names_written_to_writer == current_page_measurement_names:
+ if header_names_written_to_writer == current_page_value_names:
return
assert False, """To use CsvPageMeasurementResults, you must add the same
result names for every page. In this case, first page output:
@@ -61,31 +73,34 @@ output:
Change your test to produce the same thing each time, or modify
PageMeasurement.results_are_the_same_on_every_page to return False.
""" % (repr(header_names_written_to_writer),
- repr(current_page_measurement_names))
+ repr(current_page_value_names))
def _OutputHeader(self):
assert not self._did_output_header
- all_measurement_names = list(
- self.all_measurements_that_have_been_seen.keys())
- all_measurement_names.sort()
+ all_value_names = list(
+ self.all_value_names_that_have_been_seen)
+ all_value_names.sort()
self._did_output_header = True
- self._header_names_written_to_writer = list(all_measurement_names)
+ self._header_names_written_to_writer = list(all_value_names)
row = ['page_name']
- for measurement_name in all_measurement_names:
- measurement_data = \
- self.all_measurements_that_have_been_seen[measurement_name]
- row.append('%s (%s)' % (measurement_name, measurement_data['units']))
+ for value_name in all_value_names:
+ units = self.GetUnitsForValueName(value_name)
+ row.append('%s (%s)' % (value_name, units))
self._results_writer.writerow(row)
self._output_stream.flush()
- def _OutputValuesForPage(self, page_values):
- row = [page_values.page.display_name]
- for measurement_name in self._header_names_written_to_writer:
- value = page_values.FindValueByMeasurementName(measurement_name)
- if value:
- row.append('%s' % value.output_value)
+ def _OutputValuesForPage(self, page, page_values):
+ 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._header_names_written_to_writer:
+ 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()
+ self._output_stream.flush()

Powered by Google App Engine
This is Rietveld 408576698