OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 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 | 4 |
5 import unittest | 5 import unittest |
6 | 6 |
| 7 from metrics import metric_unittest |
7 from metrics import timeline | 8 from metrics import timeline |
8 from telemetry.core.timeline import bounds | 9 from telemetry.core.timeline import bounds |
9 from telemetry.core.timeline import model as model_module | 10 from telemetry.core.timeline import model as model_module |
10 from telemetry.page import page as page_module | |
11 from telemetry.page import page_measurement_results | |
12 from telemetry.value import scalar | |
13 | |
14 class TestPageMeasurementResults( | |
15 page_measurement_results.PageMeasurementResults): | |
16 def __init__(self, test): | |
17 super(TestPageMeasurementResults, self).__init__() | |
18 self.test = test | |
19 page = page_module.Page("http://www.google.com", {}) | |
20 self.WillMeasurePage(page) | |
21 | |
22 def GetPageSpecificValueNamed(self, name): | |
23 values = [value for value in self.all_page_specific_values | |
24 if value.name == name] | |
25 assert len(values) == 1, 'Could not find value named %s' % name | |
26 return values[0] | |
27 | |
28 def AssertHasPageSpecificScalarValue(self, name, units, expected_value): | |
29 value = self.GetPageSpecificValueNamed(name) | |
30 self.test.assertEquals(units, value.units) | |
31 self.test.assertTrue(isinstance(value, scalar.ScalarValue)) | |
32 self.test.assertEquals(expected_value, value.value) | |
33 | |
34 def __str__(self): | |
35 return '\n'.join([repr(x) for x in self.all_page_specific_values]) | |
36 | 11 |
37 class LoadTimesTimelineMetric(unittest.TestCase): | 12 class LoadTimesTimelineMetric(unittest.TestCase): |
38 def GetResultsForModel(self, metric, model): | 13 def GetResultsForModel(self, metric, model): |
39 metric.model = model | 14 metric.model = model |
40 results = TestPageMeasurementResults(self) | 15 results = metric_unittest.TestPageMeasurementResults(self) |
41 tab = None | 16 tab = None |
42 metric.AddResults(tab, results) | 17 metric.AddResults(tab, results) |
43 return results | 18 return results |
44 | 19 |
45 def testSanitizing(self): | 20 def testSanitizing(self): |
46 model = model_module.TimelineModel() | 21 model = model_module.TimelineModel() |
47 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) | 22 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) |
48 renderer_main.name = 'CrRendererMain' | 23 renderer_main.name = 'CrRendererMain' |
49 | 24 |
50 # [ X ] | 25 # [ X ] |
(...skipping 28 matching lines...) Expand all Loading... |
79 results = self.GetResultsForModel(metric, model) | 54 results = self.GetResultsForModel(metric, model) |
80 results.AssertHasPageSpecificScalarValue( | 55 results.AssertHasPageSpecificScalarValue( |
81 'cat_x_y', 'count', 3) | 56 'cat_x_y', 'count', 3) |
82 results.AssertHasPageSpecificScalarValue( | 57 results.AssertHasPageSpecificScalarValue( |
83 'cat_x_y_avg', 'count', 1.5) | 58 'cat_x_y_avg', 'count', 1.5) |
84 | 59 |
85 | 60 |
86 class ThreadTimesTimelineMetricUnittest(unittest.TestCase): | 61 class ThreadTimesTimelineMetricUnittest(unittest.TestCase): |
87 def GetResultsForModel(self, metric, model): | 62 def GetResultsForModel(self, metric, model): |
88 metric.model = model | 63 metric.model = model |
89 results = TestPageMeasurementResults(self) | 64 results = metric_unittest.TestPageMeasurementResults(self) |
90 tab = None | 65 tab = None |
91 metric.AddResults(tab, results) | 66 metric.AddResults(tab, results) |
92 return results | 67 return results |
93 | 68 |
94 def GetActionRange(self, start, end): | 69 def GetActionRange(self, start, end): |
95 action_range = bounds.Bounds() | 70 action_range = bounds.Bounds() |
96 action_range.AddValue(start) | 71 action_range.AddValue(start) |
97 action_range.AddValue(end) | 72 action_range.AddValue(end) |
98 return action_range | 73 return action_range |
99 | 74 |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 metric._action_ranges = [self.GetActionRange(10, 30)] | 151 metric._action_ranges = [self.GetActionRange(10, 30)] |
177 metric.details_to_report = timeline.ReportMainThreadOnly | 152 metric.details_to_report = timeline.ReportMainThreadOnly |
178 results = self.GetResultsForModel(metric, model) | 153 results = self.GetResultsForModel(metric, model) |
179 | 154 |
180 # Test a couple specific results. | 155 # Test a couple specific results. |
181 assert_results = { | 156 assert_results = { |
182 timeline.ThreadCpuTimeResultName('renderer_main') : 9.0, | 157 timeline.ThreadCpuTimeResultName('renderer_main') : 9.0, |
183 } | 158 } |
184 for name, value in assert_results.iteritems(): | 159 for name, value in assert_results.iteritems(): |
185 results.AssertHasPageSpecificScalarValue(name, 'ms', value) | 160 results.AssertHasPageSpecificScalarValue(name, 'ms', value) |
OLD | NEW |