Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(139)

Side by Side Diff: tools/perf/measurements/page_cycler_unittest.py

Issue 637153002: telemetry: Remove command line args from page test (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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_runner 8 from telemetry.page import page_runner
9 from telemetry.results import page_test_results 9 from telemetry.results import page_test_results
10 from telemetry.unittest import simple_mock 10 from telemetry.unittest import simple_mock
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 87
88 class FakePlatform(object): 88 class FakePlatform(object):
89 def GetOSName(self): 89 def GetOSName(self):
90 return 'fake' 90 return 'fake'
91 def CanMonitorPower(self): 91 def CanMonitorPower(self):
92 return False 92 return False
93 93
94 94
95 class PageCyclerUnitTest(unittest.TestCase): 95 class PageCyclerUnitTest(unittest.TestCase):
96 96
97 def SetUpCycler(self, args, setup_memory_module=False): 97 def SetUpCycler(self, page_repeat=1, pageset_repeat=10, cold_load_percent=50,
98 cycler = page_cycler.PageCycler() 98 record_v8_object_stats=False, report_speed_index=False,
99 setup_memory_module=False):
100 cycler = page_cycler.PageCycler(
101 page_repeat = page_repeat,
102 pageset_repeat = pageset_repeat,
103 cold_load_percent = cold_load_percent,
104 record_v8_object_stats = record_v8_object_stats,
105 report_speed_index = report_speed_index)
99 options = browser_options.BrowserFinderOptions() 106 options = browser_options.BrowserFinderOptions()
100 options.browser_options.platform = FakePlatform() 107 options.browser_options.platform = FakePlatform()
101 parser = options.CreateParser() 108 parser = options.CreateParser()
102 page_runner.AddCommandLineArgs(parser) 109 page_runner.AddCommandLineArgs(parser)
103 cycler.AddCommandLineArgs(parser) 110 args = ['--page-repeat=%i' % page_repeat,
104 cycler.SetArgumentDefaults(parser) 111 '--pageset-repeat=%i' % pageset_repeat]
105 parser.parse_args(args) 112 parser.parse_args(args)
106 page_runner.ProcessCommandLineArgs(parser, options) 113 page_runner.ProcessCommandLineArgs(parser, options)
107 cycler.ProcessCommandLineArgs(parser, options)
108 cycler.CustomizeBrowserOptions(options.browser_options) 114 cycler.CustomizeBrowserOptions(options.browser_options)
109 115
110 if setup_memory_module: 116 if setup_memory_module:
111 # Mock out memory metrics; the real ones require a real browser. 117 # Mock out memory metrics; the real ones require a real browser.
112 mock_memory_metric = MockMemoryMetric() 118 mock_memory_metric = MockMemoryMetric()
113 119
114 mock_memory_module = simple_mock.MockObject() 120 mock_memory_module = simple_mock.MockObject()
115 mock_memory_module.ExpectCall( 121 mock_memory_module.ExpectCall(
116 'MemoryMetric').WithArgs(simple_mock.DONT_CARE).WillReturn( 122 'MemoryMetric').WithArgs(simple_mock.DONT_CARE).WillReturn(
117 mock_memory_metric) 123 mock_memory_metric)
118 124
119 real_memory_module = page_cycler.memory 125 real_memory_module = page_cycler.memory
120 try: 126 try:
121 page_cycler.memory = mock_memory_module 127 page_cycler.memory = mock_memory_module
122 browser = FakeBrowser() 128 browser = FakeBrowser()
123 cycler.WillStartBrowser(options.browser_options.platform) 129 cycler.WillStartBrowser(options.browser_options.platform)
124 cycler.DidStartBrowser(browser) 130 cycler.DidStartBrowser(browser)
125 finally: 131 finally:
126 page_cycler.memory = real_memory_module 132 page_cycler.memory = real_memory_module
127 133
128 return cycler 134 return cycler
129 135
130 def testOptionsColdLoadNoArgs(self): 136 def testOptionsColdLoadNoArgs(self):
131 cycler = self.SetUpCycler([]) 137 cycler = self.SetUpCycler()
132 138
133 self.assertEquals(cycler._cold_run_start_index, 5) 139 self.assertEquals(cycler._cold_run_start_index, 5)
134 140
135 def testOptionsColdLoadPagesetRepeat(self): 141 def testOptionsColdLoadPagesetRepeat(self):
136 cycler = self.SetUpCycler(['--pageset-repeat=20', '--page-repeat=2']) 142 cycler = self.SetUpCycler(pageset_repeat=20, page_repeat=2)
137 143
138 self.assertEquals(cycler._cold_run_start_index, 20) 144 self.assertEquals(cycler._cold_run_start_index, 20)
139 145
140 def testOptionsColdLoadRequested(self): 146 def testOptionsColdLoadRequested(self):
141 cycler = self.SetUpCycler(['--pageset-repeat=21', '--page-repeat=2', 147 cycler = self.SetUpCycler(pageset_repeat=21, page_repeat=2,
142 '--cold-load-percent=40']) 148 cold_load_percent=40)
143 149
144 self.assertEquals(cycler._cold_run_start_index, 26) 150 self.assertEquals(cycler._cold_run_start_index, 26)
145 151
146 def testCacheHandled(self): 152 def testCacheHandled(self):
147 cycler = self.SetUpCycler(['--pageset-repeat=5', 153 cycler = self.SetUpCycler(pageset_repeat=5,
148 '--cold-load-percent=50'], 154 cold_load_percent=50,
149 True) 155 setup_memory_module=True)
150 156
151 url_name = 'http://fakepage.com' 157 url_name = 'http://fakepage.com'
152 page = FakePage(url_name) 158 page = FakePage(url_name)
153 tab = FakeTab() 159 tab = FakeTab()
154 160
155 for i in range(5): 161 for i in range(5):
156 results = page_test_results.PageTestResults() 162 results = page_test_results.PageTestResults()
157 results.WillRunPage(page) 163 results.WillRunPage(page)
158 cycler.WillNavigateToPage(page, tab) 164 cycler.WillNavigateToPage(page, tab)
159 self.assertEqual(max(0, i - 2), tab.clear_cache_calls, 165 self.assertEqual(max(0, i - 2), tab.clear_cache_calls,
160 'Iteration %d tab.clear_cache_calls %d' % 166 'Iteration %d tab.clear_cache_calls %d' %
161 (i, tab.clear_cache_calls)) 167 (i, tab.clear_cache_calls))
162 cycler.ValidateAndMeasurePage(page, tab, results) 168 cycler.ValidateAndMeasurePage(page, tab, results)
163 results.DidRunPage(page) 169 results.DidRunPage(page)
164 170
165 values = results.all_page_specific_values 171 values = results.all_page_specific_values
166 self.assertGreater(len(values), 2) 172 self.assertGreater(len(values), 2)
167 173
168 self.assertEqual(values[0].page, page) 174 self.assertEqual(values[0].page, page)
169 chart_name = 'cold_times' if i == 0 or i > 2 else 'warm_times' 175 chart_name = 'cold_times' if i == 0 or i > 2 else 'warm_times'
170 self.assertEqual(values[0].name, '%s.page_load_time' % chart_name) 176 self.assertEqual(values[0].name, '%s.page_load_time' % chart_name)
171 self.assertEqual(values[0].units, 'ms') 177 self.assertEqual(values[0].units, 'ms')
172 178
173 cycler.DidNavigateToPage(page, tab) 179 cycler.DidNavigateToPage(page, tab)
174 180
175 def testColdWarm(self): 181 def testColdWarm(self):
176 cycler = self.SetUpCycler(['--pageset-repeat=3'], True) 182 cycler = self.SetUpCycler(pageset_repeat=3, setup_memory_module=True)
177 pages = [FakePage('http://fakepage1.com'), FakePage('http://fakepage2.com')] 183 pages = [FakePage('http://fakepage1.com'), FakePage('http://fakepage2.com')]
178 tab = FakeTab() 184 tab = FakeTab()
179 for i in range(3): 185 for i in range(3):
180 for page in pages: 186 for page in pages:
181 results = page_test_results.PageTestResults() 187 results = page_test_results.PageTestResults()
182 results.WillRunPage(page) 188 results.WillRunPage(page)
183 cycler.WillNavigateToPage(page, tab) 189 cycler.WillNavigateToPage(page, tab)
184 cycler.ValidateAndMeasurePage(page, tab, results) 190 cycler.ValidateAndMeasurePage(page, tab, results)
185 results.DidRunPage(page) 191 results.DidRunPage(page)
186 192
187 values = results.all_page_specific_values 193 values = results.all_page_specific_values
188 self.assertGreater(len(values), 2) 194 self.assertGreater(len(values), 2)
189 195
190 self.assertEqual(values[0].page, page) 196 self.assertEqual(values[0].page, page)
191 197
192 chart_name = 'cold_times' if i == 0 or i > 1 else 'warm_times' 198 chart_name = 'cold_times' if i == 0 or i > 1 else 'warm_times'
193 self.assertEqual(values[0].name, '%s.page_load_time' % chart_name) 199 self.assertEqual(values[0].name, '%s.page_load_time' % chart_name)
194 self.assertEqual(values[0].units, 'ms') 200 self.assertEqual(values[0].units, 'ms')
195 201
196 cycler.DidNavigateToPage(page, tab) 202 cycler.DidNavigateToPage(page, tab)
197 203
198 def testResults(self): 204 def testResults(self):
199 cycler = self.SetUpCycler([], True) 205 cycler = self.SetUpCycler(setup_memory_module=True)
200 206
201 pages = [FakePage('http://fakepage1.com'), FakePage('http://fakepage2.com')] 207 pages = [FakePage('http://fakepage1.com'), FakePage('http://fakepage2.com')]
202 tab = FakeTab() 208 tab = FakeTab()
203 209
204 for i in range(2): 210 for i in range(2):
205 for page in pages: 211 for page in pages:
206 results = page_test_results.PageTestResults() 212 results = page_test_results.PageTestResults()
207 results.WillRunPage(page) 213 results.WillRunPage(page)
208 cycler.WillNavigateToPage(page, tab) 214 cycler.WillNavigateToPage(page, tab)
209 cycler.ValidateAndMeasurePage(page, tab, results) 215 cycler.ValidateAndMeasurePage(page, tab, results)
(...skipping 11 matching lines...) Expand all
221 self.assertEqual(value.page, page) 227 self.assertEqual(value.page, page)
222 self.assertEqual(value.name, 228 self.assertEqual(value.name,
223 'cpu_utilization.cpu_utilization_%s' % expected) 229 'cpu_utilization.cpu_utilization_%s' % expected)
224 self.assertEqual(value.units, '%') 230 self.assertEqual(value.units, '%')
225 231
226 cycler.DidNavigateToPage(page, tab) 232 cycler.DidNavigateToPage(page, tab)
227 233
228 def testLegacyPagesAvoidCrossRenderNavigation(self): 234 def testLegacyPagesAvoidCrossRenderNavigation(self):
229 # For legacy page cyclers with file URLs, verify that WillNavigateToPage 235 # For legacy page cyclers with file URLs, verify that WillNavigateToPage
230 # does an initial navigate to avoid paying for a cross-renderer navigation. 236 # does an initial navigate to avoid paying for a cross-renderer navigation.
231 cycler = self.SetUpCycler([], True) 237 cycler = self.SetUpCycler(setup_memory_module=True)
232 pages = [FakePage('file://fakepage1.com'), FakePage('file://fakepage2.com')] 238 pages = [FakePage('file://fakepage1.com'), FakePage('file://fakepage2.com')]
233 tab = FakeTab() 239 tab = FakeTab()
234 240
235 self.assertEqual([], tab.navigated_urls) 241 self.assertEqual([], tab.navigated_urls)
236 for page in pages * 2: 242 for page in pages * 2:
237 cycler.WillNavigateToPage(page, tab) 243 cycler.WillNavigateToPage(page, tab)
238 self.assertEqual( 244 self.assertEqual(
239 ['http://fakeserver:99999/nonexistent.html'], tab.navigated_urls) 245 ['http://fakeserver:99999/nonexistent.html'], tab.navigated_urls)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698