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

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

Issue 543243002: Drop DidStartHTTPServer to simplify object interactions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix spell-o Created 6 years, 3 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
« no previous file with comments | « tools/perf/measurements/page_cycler.py ('k') | tools/telemetry/telemetry/page/page_runner.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 20 matching lines...) Expand all
31 pass 31 pass
32 32
33 def AddSummaryResults(self, tab, results): 33 def AddSummaryResults(self, tab, results):
34 pass 34 pass
35 35
36 36
37 class FakePage(object): 37 class FakePage(object):
38 """Used to mock loading a page.""" 38 """Used to mock loading a page."""
39 def __init__(self, url): 39 def __init__(self, url):
40 self.url = url 40 self.url = url
41 self.is_file = url.startswith('file://')
41 42
42 43
43 class FakeTab(object): 44 class FakeTab(object):
44 """Used to mock a browser tab.""" 45 """Used to mock a browser tab."""
45 def __init__(self): 46 def __init__(self):
46 self.clear_cache_calls = 0 47 self.clear_cache_calls = 0
48 self.navigated_urls = []
47 def ClearCache(self, force=False): 49 def ClearCache(self, force=False):
48 assert force 50 assert force
49 self.clear_cache_calls += 1 51 self.clear_cache_calls += 1
50 def EvaluateJavaScript(self, _): 52 def EvaluateJavaScript(self, _):
51 return 1 53 return 1
54 def Navigate(self, url):
55 self.navigated_urls.append(url)
52 def WaitForJavaScriptExpression(self, _, __): 56 def WaitForJavaScriptExpression(self, _, __):
53 pass 57 pass
54 @property 58 @property
55 def browser(self): 59 def browser(self):
56 return FakeBrowser() 60 return FakeBrowser()
57 61
58 class FakeBrowser(object): 62 class FakeBrowser(object):
59 _iteration = 0 63 _iteration = 0
60 64
61 @property 65 @property
62 def cpu_stats(self): 66 def cpu_stats(self):
63 FakeBrowser._iteration += 1 67 FakeBrowser._iteration += 1
64 return { 68 return {
65 'Browser': {'CpuProcessTime': FakeBrowser._iteration, 69 'Browser': {'CpuProcessTime': FakeBrowser._iteration,
66 'TotalTime': FakeBrowser._iteration * 2}, 70 'TotalTime': FakeBrowser._iteration * 2},
67 'Renderer': {'CpuProcessTime': FakeBrowser._iteration, 71 'Renderer': {'CpuProcessTime': FakeBrowser._iteration,
68 'TotalTime': FakeBrowser._iteration * 3}, 72 'TotalTime': FakeBrowser._iteration * 3},
69 'Gpu': {'CpuProcessTime': FakeBrowser._iteration, 73 'Gpu': {'CpuProcessTime': FakeBrowser._iteration,
70 'TotalTime': FakeBrowser._iteration * 4} 74 'TotalTime': FakeBrowser._iteration * 4}
71 } 75 }
72 @property 76 @property
73 def platform(self): 77 def platform(self):
74 return FakePlatform() 78 return FakePlatform()
75 79
80 @property
81 def http_server(self):
82 class FakeHttpServer(object):
83 def UrlOf(self, url_path):
84 return 'http://fakeserver:99999/%s' % url_path
85 return FakeHttpServer()
86
76 87
77 class FakePlatform(object): 88 class FakePlatform(object):
78 def GetOSName(self): 89 def GetOSName(self):
79 return 'fake' 90 return 'fake'
80 def CanMonitorPower(self): 91 def CanMonitorPower(self):
81 return False 92 return False
82 93
83 94
84 class PageCyclerUnitTest(unittest.TestCase): 95 class PageCyclerUnitTest(unittest.TestCase):
85 96
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 self.assertEqual(values[0].name, '%s.page_load_time' % chart_name) 217 self.assertEqual(values[0].name, '%s.page_load_time' % chart_name)
207 self.assertEqual(values[0].units, 'ms') 218 self.assertEqual(values[0].units, 'ms')
208 219
209 for value, expected in zip(values[1:], ['gpu', 'renderer', 'browser']): 220 for value, expected in zip(values[1:], ['gpu', 'renderer', 'browser']):
210 self.assertEqual(value.page, page) 221 self.assertEqual(value.page, page)
211 self.assertEqual(value.name, 222 self.assertEqual(value.name,
212 'cpu_utilization.cpu_utilization_%s' % expected) 223 'cpu_utilization.cpu_utilization_%s' % expected)
213 self.assertEqual(value.units, '%') 224 self.assertEqual(value.units, '%')
214 225
215 cycler.DidNavigateToPage(page, tab) 226 cycler.DidNavigateToPage(page, tab)
227
228 def testLegacyPagesAvoidCrossRenderNavigation(self):
229 # For legacy page cyclers with file URLs, verify that WillNavigateToPage
230 # does an initial navigate to avoid paying for a cross-renderer navigation.
231 cycler = self.SetUpCycler([], True)
232 pages = [FakePage('file://fakepage1.com'), FakePage('file://fakepage2.com')]
233 tab = FakeTab()
234
235 self.assertEqual([], tab.navigated_urls)
236 for page in pages * 2:
237 cycler.WillNavigateToPage(page, tab)
238 self.assertEqual(
239 ['http://fakeserver:99999/nonexistent.html'], tab.navigated_urls)
OLDNEW
« no previous file with comments | « tools/perf/measurements/page_cycler.py ('k') | tools/telemetry/telemetry/page/page_runner.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698