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 telemetry.core import browser_options | 7 from telemetry.core import browser_options |
8 from telemetry.page import page_measurement_results | 8 from telemetry.page import page_measurement_results |
9 from telemetry.page import page_runner | 9 from telemetry.page import page_runner |
10 from telemetry.unittest import simple_mock | 10 from telemetry.unittest import simple_mock |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
46 self.clear_cache_calls = 0 | 46 self.clear_cache_calls = 0 |
47 def ClearCache(self, force=False): | 47 def ClearCache(self, force=False): |
48 assert force | 48 assert force |
49 self.clear_cache_calls += 1 | 49 self.clear_cache_calls += 1 |
50 def EvaluateJavaScript(self, _): | 50 def EvaluateJavaScript(self, _): |
51 return 1 | 51 return 1 |
52 def WaitForJavaScriptExpression(self, _, __): | 52 def WaitForJavaScriptExpression(self, _, __): |
53 pass | 53 pass |
54 | 54 |
55 | 55 |
56 class FakeBrowser(object): | |
57 _iteration = 0 | |
58 | |
59 @property | |
60 def cpu_stats(self): | |
61 FakeBrowser._iteration += 1 | |
62 return { | |
63 'Browser': {'CpuProcessTime': FakeBrowser._iteration, | |
64 'TotalTime': FakeBrowser._iteration * 2}, | |
65 'Renderer': {'CpuProcessTime': FakeBrowser._iteration, | |
66 'TotalTime': FakeBrowser._iteration * 3}, | |
67 'Gpu': {'CpuProcessTime': FakeBrowser._iteration, | |
68 'TotalTime': FakeBrowser._iteration * 4} | |
69 } | |
70 | |
71 | |
56 class PageCyclerUnitTest(unittest.TestCase): | 72 class PageCyclerUnitTest(unittest.TestCase): |
57 | 73 |
58 def SetUpCycler(self, args, setup_memory_module=False): | 74 def SetUpCycler(self, args, setup_memory_module=False): |
59 cycler = page_cycler.PageCycler() | 75 cycler = page_cycler.PageCycler() |
60 options = browser_options.BrowserFinderOptions() | 76 options = browser_options.BrowserFinderOptions() |
61 parser = options.CreateParser() | 77 parser = options.CreateParser() |
62 page_runner.AddCommandLineArgs(parser) | 78 page_runner.AddCommandLineArgs(parser) |
63 cycler.AddCommandLineArgs(parser) | 79 cycler.AddCommandLineArgs(parser) |
64 cycler.SetArgumentDefaults(parser) | 80 cycler.SetArgumentDefaults(parser) |
65 parser.parse_args(args) | 81 parser.parse_args(args) |
66 page_runner.ProcessCommandLineArgs(parser, options) | 82 page_runner.ProcessCommandLineArgs(parser, options) |
67 cycler.ProcessCommandLineArgs(parser, options) | 83 cycler.ProcessCommandLineArgs(parser, options) |
68 cycler.CustomizeBrowserOptions(options) | 84 cycler.CustomizeBrowserOptions(options) |
69 | 85 |
70 if setup_memory_module: | 86 if setup_memory_module: |
71 # Mock out memory metrics; the real ones require a real browser. | 87 # Mock out memory metrics; the real ones require a real browser. |
72 mock_memory_metric = MockMemoryMetric() | 88 mock_memory_metric = MockMemoryMetric() |
73 | 89 |
74 mock_memory_module = simple_mock.MockObject() | 90 mock_memory_module = simple_mock.MockObject() |
75 mock_memory_module.ExpectCall( | 91 mock_memory_module.ExpectCall( |
76 'MemoryMetric').WithArgs(simple_mock.DONT_CARE).WillReturn( | 92 'MemoryMetric').WithArgs(simple_mock.DONT_CARE).WillReturn( |
77 mock_memory_metric) | 93 mock_memory_metric) |
78 | 94 |
79 real_memory_module = page_cycler.memory | 95 real_memory_module = page_cycler.memory |
80 try: | 96 try: |
81 page_cycler.memory = mock_memory_module | 97 page_cycler.memory = mock_memory_module |
82 cycler.DidStartBrowser(None) | 98 cycler.DidStartBrowser(FakeBrowser()) |
83 finally: | 99 finally: |
84 page_cycler.memory = real_memory_module | 100 page_cycler.memory = real_memory_module |
85 | 101 |
86 return cycler | 102 return cycler |
87 | 103 |
88 def testOptionsColdLoadNoArgs(self): | 104 def testOptionsColdLoadNoArgs(self): |
89 cycler = self.SetUpCycler([]) | 105 cycler = self.SetUpCycler([]) |
90 | 106 |
91 self.assertEquals(cycler._cold_run_start_index, 5) | 107 self.assertEquals(cycler._cold_run_start_index, 5) |
92 | 108 |
(...skipping 22 matching lines...) Expand all Loading... | |
115 cycler.WillNavigateToPage(page, tab) | 131 cycler.WillNavigateToPage(page, tab) |
116 self.assertEqual(max(0, i - 2), tab.clear_cache_calls, | 132 self.assertEqual(max(0, i - 2), tab.clear_cache_calls, |
117 "Iteration %d tab.clear_cache_calls %d" % | 133 "Iteration %d tab.clear_cache_calls %d" % |
118 (i, tab.clear_cache_calls)) | 134 (i, tab.clear_cache_calls)) |
119 results.WillMeasurePage(page) | 135 results.WillMeasurePage(page) |
120 cycler.MeasurePage(page, tab, results) | 136 cycler.MeasurePage(page, tab, results) |
121 | 137 |
122 values = results.page_specific_values_for_current_page | 138 values = results.page_specific_values_for_current_page |
123 results.DidMeasurePage() | 139 results.DidMeasurePage() |
124 | 140 |
125 self.assertEqual(1, len(values)) | 141 self.assertEqual(4, len(values)) |
126 self.assertEqual(values[0].page, page) | 142 self.assertEqual(values[0].page, page) |
bulach
2014/04/23 17:11:47
please advise: note that here and the test below,
qyearsley
2014/04/23 18:13:38
My thoughts are that this CL LGTM as is. But, in t
bulach
2014/04/24 08:57:00
sgtm! I'll CQ this as is and send you a separate C
| |
143 self.assertEqual(values[1].name, | |
144 'cpu_utilization.cpu_utilization_gpu') | |
145 self.assertEqual(values[2].name, | |
146 'cpu_utilization.cpu_utilization_renderer') | |
147 self.assertEqual(values[3].name, | |
148 'cpu_utilization.cpu_utilization_browser') | |
149 | |
127 | 150 |
128 chart_name = 'cold_times' if i == 0 or i > 2 else 'warm_times' | 151 chart_name = 'cold_times' if i == 0 or i > 2 else 'warm_times' |
129 self.assertEqual(values[0].name, '%s.page_load_time' % chart_name) | 152 self.assertEqual(values[0].name, '%s.page_load_time' % chart_name) |
130 self.assertEqual(values[0].units, 'ms') | 153 self.assertEqual(values[0].units, 'ms') |
131 | 154 |
132 cycler.DidNavigateToPage(page, tab) | 155 cycler.DidNavigateToPage(page, tab) |
133 | 156 |
134 def testColdWarm(self): | 157 def testColdWarm(self): |
135 cycler = self.SetUpCycler(['--pageset-repeat=3'], True) | 158 cycler = self.SetUpCycler(['--pageset-repeat=3'], True) |
136 pages = [FakePage("http://fakepage1.com"), FakePage("http://fakepage2.com")] | 159 pages = [FakePage("http://fakepage1.com"), FakePage("http://fakepage2.com")] |
137 tab = FakeTab() | 160 tab = FakeTab() |
138 results = page_measurement_results.PageMeasurementResults() | 161 results = page_measurement_results.PageMeasurementResults() |
139 for i in range(3): | 162 for i in range(3): |
140 for page in pages: | 163 for page in pages: |
141 cycler.WillNavigateToPage(page, tab) | 164 cycler.WillNavigateToPage(page, tab) |
142 results.WillMeasurePage(page) | 165 results.WillMeasurePage(page) |
143 cycler.MeasurePage(page, tab, results) | 166 cycler.MeasurePage(page, tab, results) |
144 | 167 |
145 values = results.page_specific_values_for_current_page | 168 values = results.page_specific_values_for_current_page |
146 results.DidMeasurePage() | 169 results.DidMeasurePage() |
147 | 170 |
148 self.assertEqual(1, len(values)) | 171 self.assertEqual(4, len(values)) |
149 self.assertEqual(values[0].page, page) | 172 self.assertEqual(values[0].page, page) |
150 | 173 |
151 chart_name = 'cold_times' if i == 0 or i > 1 else 'warm_times' | 174 chart_name = 'cold_times' if i == 0 or i > 1 else 'warm_times' |
152 self.assertEqual(values[0].name, '%s.page_load_time' % chart_name) | 175 self.assertEqual(values[0].name, '%s.page_load_time' % chart_name) |
176 self.assertEqual(values[1].name, | |
177 'cpu_utilization.cpu_utilization_gpu') | |
178 self.assertEqual(values[2].name, | |
179 'cpu_utilization.cpu_utilization_renderer') | |
180 self.assertEqual(values[3].name, | |
181 'cpu_utilization.cpu_utilization_browser') | |
153 | 182 |
154 cycler.DidNavigateToPage(page, tab) | 183 cycler.DidNavigateToPage(page, tab) |
OLD | NEW |