OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 from collections import defaultdict | 4 from collections import defaultdict |
5 from telemetry.page_test import PageTestResults | 5 |
6 from telemetry.perf_tests_helper import PrintPerfResult | 6 from telemetry.page import page_test |
7 from telemetry.page_benchmark_value import PageBenchmarkValue | 7 from telemetry.page import perf_tests_helper |
| 8 from telemetry.page import page_benchmark_value |
8 | 9 |
9 class ValuesForSinglePage(object): | 10 class ValuesForSinglePage(object): |
10 def __init__(self, page): | 11 def __init__(self, page): |
11 self.page = page | 12 self.page = page |
12 self.values = [] | 13 self.values = [] |
13 | 14 |
14 def AddValue(self, value): | 15 def AddValue(self, value): |
15 self.values.append(value) | 16 self.values.append(value) |
16 | 17 |
17 @property | 18 @property |
(...skipping 15 matching lines...) Expand all Loading... |
33 return self.FindValueByTraceName(trace_name) != None | 34 return self.FindValueByTraceName(trace_name) != None |
34 | 35 |
35 def FindValueByTraceName(self, trace_name): | 36 def FindValueByTraceName(self, trace_name): |
36 values = [value for value in self.values | 37 values = [value for value in self.values |
37 if value.trace_name == trace_name] | 38 if value.trace_name == trace_name] |
38 assert len(values) <= 1 | 39 assert len(values) <= 1 |
39 if len(values): | 40 if len(values): |
40 return values[0] | 41 return values[0] |
41 return None | 42 return None |
42 | 43 |
43 class PageBenchmarkResults(PageTestResults): | 44 class PageBenchmarkResults(page_test.PageTestResults): |
44 def __init__(self): | 45 def __init__(self): |
45 super(PageBenchmarkResults, self).__init__() | 46 super(PageBenchmarkResults, self).__init__() |
46 self._page_results = [] | 47 self._page_results = [] |
47 | 48 |
48 self._all_measurements_that_have_been_seen = {} | 49 self._all_measurements_that_have_been_seen = {} |
49 | 50 |
50 self._values_for_current_page = {} | 51 self._values_for_current_page = {} |
51 | 52 |
52 def __getitem__(self, i): | 53 def __getitem__(self, i): |
53 """Shorthand for self.page_results[i]""" | 54 """Shorthand for self.page_results[i]""" |
(...skipping 11 matching lines...) Expand all Loading... |
65 return self._page_results | 66 return self._page_results |
66 | 67 |
67 def WillMeasurePage(self, page): | 68 def WillMeasurePage(self, page): |
68 self._values_for_current_page = ValuesForSinglePage(page) | 69 self._values_for_current_page = ValuesForSinglePage(page) |
69 | 70 |
70 @property | 71 @property |
71 def all_measurements_that_have_been_seen(self): | 72 def all_measurements_that_have_been_seen(self): |
72 return self._all_measurements_that_have_been_seen | 73 return self._all_measurements_that_have_been_seen |
73 | 74 |
74 def Add(self, trace_name, units, value, chart_name=None, data_type='default'): | 75 def Add(self, trace_name, units, value, chart_name=None, data_type='default'): |
75 value = PageBenchmarkValue(trace_name, units, value, chart_name, data_type) | 76 value = page_benchmark_value.PageBenchmarkValue( |
| 77 trace_name, units, value, chart_name, data_type) |
76 measurement_name = value.measurement_name | 78 measurement_name = value.measurement_name |
77 | 79 |
78 # Sanity checks. | 80 # Sanity checks. |
79 assert measurement_name != 'url', 'The name url cannot be used' | 81 assert measurement_name != 'url', 'The name url cannot be used' |
80 if measurement_name in self._all_measurements_that_have_been_seen: | 82 if measurement_name in self._all_measurements_that_have_been_seen: |
81 measurement_data = \ | 83 measurement_data = \ |
82 self._all_measurements_that_have_been_seen[measurement_name] | 84 self._all_measurements_that_have_been_seen[measurement_name] |
83 last_seen_units = measurement_data['units'] | 85 last_seen_units = measurement_data['units'] |
84 last_seen_data_type = measurement_data['type'] | 86 last_seen_data_type = measurement_data['type'] |
85 assert last_seen_units == units, \ | 87 assert last_seen_units == units, \ |
86 'Unit cannot change for a name once it has been provided' | 88 'Unit cannot change for a name once it has been provided' |
87 assert last_seen_data_type == data_type, \ | 89 assert last_seen_data_type == data_type, \ |
88 'Unit cannot change for a name once it has been provided' | 90 'Unit cannot change for a name once it has been provided' |
89 else: | 91 else: |
90 self._all_measurements_that_have_been_seen[measurement_name] = { | 92 self._all_measurements_that_have_been_seen[measurement_name] = { |
91 'units': units, | 93 'units': units, |
92 'type': data_type} | 94 'type': data_type} |
93 | 95 |
94 self._values_for_current_page.AddValue(value) | 96 self._values_for_current_page.AddValue(value) |
95 | 97 |
96 def DidMeasurePage(self): | 98 def DidMeasurePage(self): |
97 assert self._values_for_current_page, 'Failed to call WillMeasurePage' | 99 assert self._values_for_current_page, 'Failed to call WillMeasurePage' |
98 self._page_results.append(self._values_for_current_page) | 100 self._page_results.append(self._values_for_current_page) |
99 self._values_for_current_page = None | 101 self._values_for_current_page = None |
100 | 102 |
101 def _PrintPerfResult(self, measurement, trace, values, units, | 103 def _PrintPerfResult(self, measurement, trace, values, units, |
102 result_type='default'): | 104 result_type='default'): |
103 PrintPerfResult(measurement, trace, values, units, result_type) | 105 perf_tests_helper.PrintPerfResult( |
| 106 measurement, trace, values, units, result_type) |
104 | 107 |
105 def PrintSummary(self, trace_tag): | 108 def PrintSummary(self, trace_tag): |
106 if self.page_failures: | 109 if self.page_failures: |
107 return | 110 return |
108 | 111 |
109 # Build the results summary. | 112 # Build the results summary. |
110 results_summary = defaultdict(list) | 113 results_summary = defaultdict(list) |
111 for measurement_name in \ | 114 for measurement_name in \ |
112 self._all_measurements_that_have_been_seen.iterkeys(): | 115 self._all_measurements_that_have_been_seen.iterkeys(): |
113 for page_values in self._page_results: | 116 for page_values in self._page_results: |
(...skipping 28 matching lines...) Expand all Loading... |
142 | 145 |
143 if not trace_tag: | 146 if not trace_tag: |
144 for value, url in value_url_list: | 147 for value, url in value_url_list: |
145 self._PrintPerfResult(measurement + '_by_url', url, [value], units, | 148 self._PrintPerfResult(measurement + '_by_url', url, [value], units, |
146 by_url_data_type) | 149 by_url_data_type) |
147 | 150 |
148 # For histograms, we don't print the average data, only the _by_url. | 151 # For histograms, we don't print the average data, only the _by_url. |
149 if not data_type == 'histogram': | 152 if not data_type == 'histogram': |
150 values = [i[0] for i in value_url_list] | 153 values = [i[0] for i in value_url_list] |
151 self._PrintPerfResult(measurement, trace, values, units, data_type) | 154 self._PrintPerfResult(measurement, trace, values, units, data_type) |
OLD | NEW |