Chromium Code Reviews| 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 |