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 test_page_measurement_results |
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 | 11 |
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 | 12 |
37 class LoadTimesTimelineMetric(unittest.TestCase): | 13 class LoadTimesTimelineMetric(unittest.TestCase): |
38 def GetResults(self, metric): | 14 def GetResults(self, metric): |
39 results = TestPageMeasurementResults(self) | 15 results = test_page_measurement_results.TestPageMeasurementResults(self) |
40 tab = None | 16 tab = None |
41 metric.AddResults(tab, results) | 17 metric.AddResults(tab, results) |
42 return results | 18 return results |
43 | 19 |
44 def testSanitizing(self): | 20 def testSanitizing(self): |
45 model = model_module.TimelineModel() | 21 model = model_module.TimelineModel() |
46 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) | 22 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) |
47 renderer_main.name = 'CrRendererMain' | 23 renderer_main.name = 'CrRendererMain' |
48 | 24 |
49 # [ X ] | 25 # [ X ] |
(...skipping 25 matching lines...) Expand all Loading... |
75 metric = timeline.LoadTimesTimelineMetric(model, renderer_main.parent) | 51 metric = timeline.LoadTimesTimelineMetric(model, renderer_main.parent) |
76 results = self.GetResults(metric) | 52 results = self.GetResults(metric) |
77 results.AssertHasPageSpecificScalarValue( | 53 results.AssertHasPageSpecificScalarValue( |
78 'cat_x_y', 'count', 3) | 54 'cat_x_y', 'count', 3) |
79 results.AssertHasPageSpecificScalarValue( | 55 results.AssertHasPageSpecificScalarValue( |
80 'cat_x_y_avg', 'count', 1.5) | 56 'cat_x_y_avg', 'count', 1.5) |
81 | 57 |
82 | 58 |
83 class ThreadTimesTimelineMetricUnittest(unittest.TestCase): | 59 class ThreadTimesTimelineMetricUnittest(unittest.TestCase): |
84 def GetResults(self, metric): | 60 def GetResults(self, metric): |
85 results = TestPageMeasurementResults(self) | 61 results = test_page_measurement_results.TestPageMeasurementResults(self) |
86 tab = None | 62 tab = None |
87 metric.AddResults(tab, results) | 63 metric.AddResults(tab, results) |
88 return results | 64 return results |
89 | 65 |
90 def GetActionRange(self, start, end): | 66 def GetActionRange(self, start, end): |
91 action_range = bounds.Bounds() | 67 action_range = bounds.Bounds() |
92 action_range.AddValue(start) | 68 action_range.AddValue(start) |
93 action_range.AddValue(end) | 69 action_range.AddValue(end) |
94 return action_range | 70 return action_range |
95 | 71 |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 model, renderer_main.parent, action_ranges=[self.GetActionRange(10, 30)]) | 148 model, renderer_main.parent, action_ranges=[self.GetActionRange(10, 30)]) |
173 metric.details_to_report = timeline.ReportMainThreadOnly | 149 metric.details_to_report = timeline.ReportMainThreadOnly |
174 results = self.GetResults(metric) | 150 results = self.GetResults(metric) |
175 | 151 |
176 # Test a couple specific results. | 152 # Test a couple specific results. |
177 assert_results = { | 153 assert_results = { |
178 timeline.ThreadCpuTimeResultName('renderer_main') : 9.0, | 154 timeline.ThreadCpuTimeResultName('renderer_main') : 9.0, |
179 } | 155 } |
180 for name, value in assert_results.iteritems(): | 156 for name, value in assert_results.iteritems(): |
181 results.AssertHasPageSpecificScalarValue(name, 'ms', value) | 157 results.AssertHasPageSpecificScalarValue(name, 'ms', value) |
OLD | NEW |