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

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

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

Powered by Google App Engine
This is Rietveld 408576698