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

Side by Side Diff: tools/telemetry/telemetry/page_runner.py

Issue 11428107: Telemetry: extends Platform abstraction. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 8 years 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 | Annotate | Revision Log
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 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 import logging 4 import logging
5 import os 5 import os
6 import time 6 import time
7 import traceback 7 import traceback
8 import urlparse 8 import urlparse
9 import random 9 import random
10 10
11 from telemetry import browser_gone_exception 11 from telemetry import browser_gone_exception
12 from telemetry import page_test 12 from telemetry import page_test
13 from telemetry import tab_crash_exception 13 from telemetry import tab_crash_exception
14 from telemetry import util 14 from telemetry import util
15 from telemetry import wpr_modes 15 from telemetry import wpr_modes
16 16
17 class PageState(object): 17 class PageState(object):
18 def __init__(self): 18 def __init__(self):
19 self.did_login = False 19 self.did_login = False
20 20
21 class _RunState(object): 21 class _RunState(object):
22 def __init__(self): 22 def __init__(self):
23 self.first_browser = True 23 self.first_browser = True
24 self.browser = None 24 self.browser = None
25 self.tab = None 25 self.tab = None
26 self.trace_tab = None 26 self.trace_tab = None
27 self.performance_test = False
27 28
28 def Close(self): 29 def Close(self):
29 if self.trace_tab: 30 if self.trace_tab:
30 self.trace_tab.Disconnect() 31 self.trace_tab.Disconnect()
31 self.trace_tab = None 32 self.trace_tab = None
32 33
33 if self.tab: 34 if self.tab:
34 self.tab.Disconnect() 35 self.tab.Disconnect()
35 self.tab = None 36 self.tab = None
36 37
37 if self.browser: 38 if self.browser:
39 if self.performance_test:
40 self.browser.platform.SetFullPerformanceModeEnabled(False)
38 self.browser.Close() 41 self.browser.Close()
39 self.browser = None 42 self.browser = None
40 43
44
41 def _ShufflePageSet(page_set, options): 45 def _ShufflePageSet(page_set, options):
42 if options.test_shuffle_order_file and not options.test_shuffle: 46 if options.test_shuffle_order_file and not options.test_shuffle:
43 raise Exception('--test-shuffle-order-file requires --test-shuffle.') 47 raise Exception('--test-shuffle-order-file requires --test-shuffle.')
44 48
45 if options.test_shuffle_order_file: 49 if options.test_shuffle_order_file:
46 return page_set.ReorderPageSet(options.test_shuffle_order_file) 50 return page_set.ReorderPageSet(options.test_shuffle_order_file)
47 51
48 pages = page_set.pages[:] 52 pages = page_set.pages[:]
49 if options.test_shuffle: 53 if options.test_shuffle:
50 random.Random().shuffle(pages) 54 random.Random().shuffle(pages)
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 self._RunPage(options, page, state.tab, test, results) 132 self._RunPage(options, page, state.tab, test, results)
129 except tab_crash_exception.TabCrashException: 133 except tab_crash_exception.TabCrashException:
130 # Close the crashed tab. We'll open another before the next run. 134 # Close the crashed tab. We'll open another before the next run.
131 if state.browser.supports_tab_control: 135 if state.browser.supports_tab_control:
132 state.tab.Close() 136 state.tab.Close()
133 state.tab = None 137 state.tab = None
134 # If we don't support tab control, just restart the browser. 138 # If we don't support tab control, just restart the browser.
135 else: 139 else:
136 state.Close() 140 state.Close()
137 141
142 if (state.browser.platform.CanMonitorThermalThrottling() and
143 state.browser.platform.IsThermallyThrottled()):
aberent 2013/01/29 14:03:36 See my other comments on thermal throttling. This
bulach 2013/02/22 11:54:25 good point, added a check for "IsThrottled" at the
144 raise Exception('Device was thermally throttled during '
145 'performance tests.')
tonyg 2013/02/21 18:07:08 I'm on the fence about whether this should really
bulach 2013/02/22 11:54:25 agree. done as just messages for now.
146
138 if options.trace_dir and state.trace_tab: 147 if options.trace_dir and state.trace_tab:
139 self._EndTracing(state, options, page) 148 self._EndTracing(state, options, page)
140 break 149 break
141 except browser_gone_exception.BrowserGoneException: 150 except browser_gone_exception.BrowserGoneException:
142 logging.warning('Lost connection to browser. Retrying.') 151 logging.warning('Lost connection to browser. Retrying.')
143 state.Close() 152 state.Close()
144 tries -= 1 153 tries -= 1
145 if not tries: 154 if not tries:
146 logging.error('Lost connection to browser 3 times. Failing.') 155 logging.error('Lost connection to browser 3 times. Failing.')
147 raise 156 raise
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 def IsPageLoaded(): 221 def IsPageLoaded():
213 return tab.runtime.Evaluate(expression) 222 return tab.runtime.Evaluate(expression)
214 223
215 # Wait until the form is submitted and the page completes loading. 224 # Wait until the form is submitted and the page completes loading.
216 util.WaitFor(IsPageLoaded, 60) 225 util.WaitFor(IsPageLoaded, 60)
217 226
218 def _SetupBrowser(self, state, test, possible_browser, credentials_path, 227 def _SetupBrowser(self, state, test, possible_browser, credentials_path,
219 archive_path): 228 archive_path):
220 assert not state.tab 229 assert not state.tab
221 state.browser = possible_browser.Create() 230 state.browser = possible_browser.Create()
231
232 if possible_browser.options.performance_test:
233 state.performance_test = True
234 state.browser.platform.SetFullPerformanceModeEnabled(True)
tonyg 2013/02/21 18:07:08 I wonder if it would be more robust to call SetFul
bulach 2013/02/22 11:54:25 Done.
235
222 state.browser.credentials.credentials_path = credentials_path 236 state.browser.credentials.credentials_path = credentials_path
223 test.SetUpBrowser(state.browser) 237 test.SetUpBrowser(state.browser)
224 238
225 if state.first_browser: 239 if state.first_browser:
226 state.browser.credentials.WarnIfMissingCredentials(self.page_set) 240 state.browser.credentials.WarnIfMissingCredentials(self.page_set)
227 state.first_browser = False 241 state.first_browser = False
228 242
229 state.browser.SetReplayArchivePath(archive_path) 243 state.browser.SetReplayArchivePath(archive_path)
230 244
231 def _SetupTracingTab(self, state): 245 def _SetupTracingTab(self, state):
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 return True 325 return True
312 326
313 def _CleanUpPage(self, page, tab, page_state): # pylint: disable=R0201 327 def _CleanUpPage(self, page, tab, page_state): # pylint: disable=R0201
314 if page.credentials and page_state.did_login: 328 if page.credentials and page_state.did_login:
315 tab.browser.credentials.LoginNoLongerNeeded(tab, page.credentials) 329 tab.browser.credentials.LoginNoLongerNeeded(tab, page.credentials)
316 try: 330 try:
317 tab.runtime.Evaluate("""window.chrome && chrome.benchmarking && 331 tab.runtime.Evaluate("""window.chrome && chrome.benchmarking &&
318 chrome.benchmarking.closeConnections()""") 332 chrome.benchmarking.closeConnections()""")
319 except Exception: 333 except Exception:
320 pass 334 pass
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698