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

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

Issue 27486002: Cleanup of page_measurement_results object (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 500d Created 7 years, 2 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
Index: tools/telemetry/telemetry/page/page_measurement_results.py
diff --git a/tools/telemetry/telemetry/page/page_measurement_results.py b/tools/telemetry/telemetry/page/page_measurement_results.py
index 02ebd2a03b48bfebecc360996074fedc6a0043c3..7db06d7f2582894327362af959d11f9b17d26c84 100644
--- a/tools/telemetry/telemetry/page/page_measurement_results.py
+++ b/tools/telemetry/telemetry/page/page_measurement_results.py
@@ -1,115 +1,90 @@
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Copyright (c) 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from telemetry.page import page_test_results
-from telemetry.page import page_measurement_value
-
-class ValuesForSinglePage(object):
- def __init__(self, page):
- self.page = page
- self.values = []
-
- def AddValue(self, value):
- self.values.append(value)
-
- @property
- def measurement_names(self):
- return [value.measurement_name for value in self.values]
-
- def FindValueByMeasurementName(self, measurement_name):
- values = [value for value in self.values
- if value.measurement_name == measurement_name]
- assert len(values) <= 1
- if len(values):
- return values[0]
- return None
-
- def __getitem__(self, trace_name):
- return self.FindValueByTraceName(trace_name)
-
- def __contains__(self, trace_name):
- return self.FindValueByTraceName(trace_name) != None
-
- def FindValueByTraceName(self, trace_name):
- values = [value for value in self.values
- if value.trace_name == trace_name]
- assert len(values) <= 1
- if len(values):
- return values[0]
- return None
+from telemetry.page import value as value_module
+from telemetry.page import value_backcompat
class PageMeasurementResults(page_test_results.PageTestResults):
def __init__(self, trace_tag=''):
super(PageMeasurementResults, self).__init__()
+ self._done = False
self._trace_tag = trace_tag
- self._page_results = []
- self._overall_results = []
- self._all_measurements_that_have_been_seen = {}
+ self._current_page = None
+ self._page_specific_values_for_current_page = None
- self._values_for_current_page = {}
+ self._representative_values_for_each_value_name = {}
- def __getitem__(self, i):
- """Shorthand for self.page_results[i]"""
- return self._page_results[i]
+ self._all_summary_values = []
+ self._all_page_specific_values = []
- def __len__(self):
- return len(self._page_results)
+ @property
+ def pages_that_succeeded(self):
+ pages = set([value.page for value in self._all_page_specific_values])
+ pages.difference_update(self.pages_that_had_errors_or_failures)
dtu 2013/11/01 00:16:31 You never use pages_that_had_errors_or_failures di
+ return pages
@property
- def values_for_current_page(self):
- return self._values_for_current_page
+ def current_page(self):
+ return self._current_page
@property
- def page_results(self):
- return self._page_results
+ def all_value_names_that_have_been_seen(self):
+ return list(self._representative_values_for_each_value_name.keys())
- def WillMeasurePage(self, page):
- self._values_for_current_page = ValuesForSinglePage(page)
+ def GetUnitsForValueName(self, value_name):
+ return self._representative_values_for_each_value_name[value_name].units
+
+ @property
+ def all_page_specific_values(self):
+ return self._all_page_specific_values
@property
- def all_measurements_that_have_been_seen(self):
- return self._all_measurements_that_have_been_seen
+ def page_specific_values_for_current_page(self):
+ assert self._current_page
+ return self._page_specific_values_for_current_page
+
+ def GetAllPageSpecificValuesForSuccessfulPages(self):
+ pages_that_had_errors_or_failures = self.pages_that_had_errors_or_failures
+ return [
+ value for value in self._all_page_specific_values
+ if value.page not in pages_that_had_errors_or_failures]
dtu 2013/11/01 00:16:31 use self.pages_that_succeeded (defined above), ins
+
+ def WillMeasurePage(self, page):
+ assert not self._current_page
+ self._current_page = page
+ self._page_specific_values_for_current_page = []
def Add(self, trace_name, units, value, chart_name=None, data_type='default'):
- value = self._GetPageMeasurementValue(trace_name, units, value, chart_name,
- data_type)
- self._values_for_current_page.AddValue(value)
+ value = value_backcompat.ConvertOldCallingConventionToValue(
+ self._current_page,
+ trace_name, units, value, chart_name, data_type)
+ self._ValidateValue(value)
+ self._page_specific_values_for_current_page.append(value)
+ self._all_page_specific_values.append(value)
def AddSummary(self, trace_name, units, value, chart_name=None,
data_type='default'):
- value = self._GetPageMeasurementValue(trace_name, units, value, chart_name,
- data_type)
- self._overall_results.append(value)
-
- def _GetPageMeasurementValue(self, trace_name, units, value, chart_name,
- data_type):
- value = page_measurement_value.PageMeasurementValue(
- trace_name, units, value, chart_name, data_type)
- measurement_name = value.measurement_name
-
- # Sanity checks.
- assert measurement_name != 'url', 'The name url cannot be used'
- if measurement_name in self._all_measurements_that_have_been_seen:
- measurement_data = \
- self._all_measurements_that_have_been_seen[measurement_name]
- last_seen_units = measurement_data['units']
- last_seen_data_type = measurement_data['type']
- assert last_seen_units == units, \
- 'Unit cannot change for a name once it has been provided'
- assert last_seen_data_type == data_type, \
- 'Unit cannot change for a name once it has been provided'
- else:
- self._all_measurements_that_have_been_seen[measurement_name] = {
- 'units': units,
- 'type': data_type}
- return value
+ value = value_backcompat.ConvertOldCallingConventionToValue(
+ None,
+ trace_name, units, value, chart_name, data_type)
+ self._ValidateValue(value)
+ self._all_summary_values.append(value)
+
+ def _ValidateValue(self, value):
+ assert isinstance(value, value_module.Value)
+
+ if value.name not in self._representative_values_for_each_value_name:
+ self._representative_values_for_each_value_name[value.name] = value
+
+ representative_value = self._representative_values_for_each_value_name[
+ value.name]
+
+ assert value.IsMergableWith(representative_value)
def DidMeasurePage(self):
- assert self._values_for_current_page, 'Failed to call WillMeasurePage'
- if not self.values_for_current_page.values:
- # Do not store to page_results list if no results were added on this page.
- return
- self._page_results.append(self._values_for_current_page)
- self._values_for_current_page = None
+ assert self._current_page, 'Failed to call WillMeasurePage'
+ self._current_page = None
+ self._page_specific_values_for_current_page = None

Powered by Google App Engine
This is Rietveld 408576698