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

Side by Side Diff: tools/telemetry/telemetry/page/page_test.py

Issue 33303002: Telemetry: early exit from page runner (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Telemetry: early exit from page runner Created 7 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
« no previous file with comments | « tools/telemetry/telemetry/page/page_runner.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 5
6 from telemetry.page import test_expectations 6 from telemetry.page import test_expectations
7 from telemetry.page.actions import all_page_actions 7 from telemetry.page.actions import all_page_actions
8 from telemetry.page.actions import navigate 8 from telemetry.page.actions import navigate
9 from telemetry.page.actions import page_action 9 from telemetry.page.actions import page_action
10 10
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 test_method_name, 52 test_method_name,
53 action_name_to_run='', 53 action_name_to_run='',
54 needs_browser_restart_after_each_run=False, 54 needs_browser_restart_after_each_run=False,
55 discard_first_result=False, 55 discard_first_result=False,
56 clear_cache_before_each_run=False): 56 clear_cache_before_each_run=False):
57 self.options = None 57 self.options = None
58 try: 58 try:
59 self._test_method = getattr(self, test_method_name) 59 self._test_method = getattr(self, test_method_name)
60 except AttributeError: 60 except AttributeError:
61 raise ValueError, 'No such method %s.%s' % ( 61 raise ValueError, 'No such method %s.%s' % (
62 self.__class_, test_method_name) # pylint: disable=E1101 62 self.__class_, test_method_name) # pylint: disable=E1101
63 self._action_name_to_run = action_name_to_run 63 self._action_name_to_run = action_name_to_run
64 self._needs_browser_restart_after_each_run = ( 64 self._needs_browser_restart_after_each_run = (
65 needs_browser_restart_after_each_run) 65 needs_browser_restart_after_each_run)
66 self._discard_first_result = discard_first_result 66 self._discard_first_result = discard_first_result
67 self._clear_cache_before_each_run = clear_cache_before_each_run 67 self._clear_cache_before_each_run = clear_cache_before_each_run
68 self._close_tabs_before_run = True 68 self._close_tabs_before_run = True
69 # If the test overrides the TabForPage method, it is considered a multi-tab 69 # If the test overrides the TabForPage method, it is considered a multi-tab
70 # test. The main difference between this and a single-tab test is that we 70 # test. The main difference between this and a single-tab test is that we
71 # do not attempt recovery for the former if a tab or the browser crashes, 71 # do not attempt recovery for the former if a tab or the browser crashes,
72 # because we don't know the current state of tabs (how many are open, etc.) 72 # because we don't know the current state of tabs (how many are open, etc.)
73 self.is_multi_tab_test = (self.__class__ is not PageTest and 73 self.is_multi_tab_test = (self.__class__ is not PageTest and
74 self.TabForPage.__func__ is not 74 self.TabForPage.__func__ is not
75 self.__class__.__bases__[0].TabForPage.__func__) 75 self.__class__.__bases__[0].TabForPage.__func__)
76 # _exit_requested is set to true when the test requests an early exit.
77 self._exit_requested = False
76 78
77 @property 79 @property
78 def discard_first_result(self): 80 def discard_first_result(self):
79 """When set to True, the first run of the test is discarded. This is 81 """When set to True, the first run of the test is discarded. This is
80 useful for cases where it's desirable to have some test resource cached so 82 useful for cases where it's desirable to have some test resource cached so
81 the first run of the test can warm things up. """ 83 the first run of the test can warm things up. """
82 return self._discard_first_result 84 return self._discard_first_result
83 85
84 @discard_first_result.setter 86 @discard_first_result.setter
85 def discard_first_result(self, discard): 87 def discard_first_result(self, discard):
86 self._discard_first_result = discard 88 self._discard_first_result = discard
87 89
88 @property 90 @property
89 def clear_cache_before_each_run(self): 91 def clear_cache_before_each_run(self):
90 """When set to True, the browser's disk and memory cache will be cleared 92 """When set to True, the browser's disk and memory cache will be cleared
91 before each run.""" 93 before each run."""
92 return self._clear_cache_before_each_run 94 return self._clear_cache_before_each_run
93 95
94 @property 96 @property
95 def close_tabs_before_run(self): 97 def close_tabs_before_run(self):
96 """When set to True, all tabs are closed before running the test for the 98 """When set to True, all tabs are closed before running the test for the
97 first time.""" 99 first time."""
98 return self._close_tabs_before_run 100 return self._close_tabs_before_run
99 101
100 @close_tabs_before_run.setter 102 @close_tabs_before_run.setter
101 def close_tabs_before_run(self, close_tabs): 103 def close_tabs_before_run(self, close_tabs):
102 self._close_tabs_before_run = close_tabs 104 self._close_tabs_before_run = close_tabs
103 105
104 def NeedsBrowserRestartAfterEachRun(self, tab): # pylint: disable=W0613 106 def NeedsBrowserRestartAfterEachRun(self, tab): # pylint: disable=W0613
105 """Override to specify browser restart after each run.""" 107 """Override to specify browser restart after each run."""
106 return self._needs_browser_restart_after_each_run 108 return self._needs_browser_restart_after_each_run
107 109
108 def AddCommandLineOptions(self, parser): 110 def AddCommandLineOptions(self, parser):
109 """Override to expose command-line options for this test. 111 """Override to expose command-line options for this test.
110 112
111 The provided parser is an optparse.OptionParser instance and accepts all 113 The provided parser is an optparse.OptionParser instance and accepts all
112 normal results. The parsed options are available in Run as 114 normal results. The parsed options are available in Run as
113 self.options.""" 115 self.options."""
114 pass 116 pass
(...skipping 10 matching lines...) Expand all
125 action.CustomizeBrowserOptions(options) 127 action.CustomizeBrowserOptions(options)
126 128
127 def WillStartBrowser(self, browser): 129 def WillStartBrowser(self, browser):
128 """Override to manipulate the browser environment before it launches.""" 130 """Override to manipulate the browser environment before it launches."""
129 pass 131 pass
130 132
131 def DidStartBrowser(self, browser): 133 def DidStartBrowser(self, browser):
132 """Override to customize the browser right after it has launched.""" 134 """Override to customize the browser right after it has launched."""
133 pass 135 pass
134 136
135 def CanRunForPage(self, page): #pylint: disable=W0613 137 def CanRunForPage(self, page): # pylint: disable=W0613
136 """Override to customize if the test can be ran for the given page.""" 138 """Override to customize if the test can be ran for the given page."""
137 return True 139 return True
138 140
139 def WillRunTest(self, tab): 141 def WillRunTest(self, tab):
140 """Override to do operations before the page set(s) are navigated.""" 142 """Override to do operations before the page set(s) are navigated."""
141 pass 143 pass
142 144
143 def DidRunTest(self, tab, results): 145 def DidRunTest(self, tab, results):
144 """Override to do operations after all page set(s) are completed. 146 """Override to do operations after all page set(s) are completed.
145 147
(...skipping 27 matching lines...) Expand all
173 pass 175 pass
174 176
175 def WillRunAction(self, page, tab, action): 177 def WillRunAction(self, page, tab, action):
176 """Override to do operations before running the action on the page.""" 178 """Override to do operations before running the action on the page."""
177 pass 179 pass
178 180
179 def DidRunAction(self, page, tab, action): 181 def DidRunAction(self, page, tab, action):
180 """Override to do operations after running the action on the page.""" 182 """Override to do operations after running the action on the page."""
181 pass 183 pass
182 184
183 def CreatePageSet(self, args, options): # pylint: disable=W0613 185 def CreatePageSet(self, args, options): # pylint: disable=W0613
184 """Override to make this test generate its own page set instead of 186 """Override to make this test generate its own page set instead of
185 allowing arbitrary page sets entered from the command-line.""" 187 allowing arbitrary page sets entered from the command-line."""
186 return None 188 return None
187 189
188 def CreateExpectations(self, page_set): # pylint: disable=W0613 190 def CreateExpectations(self, page_set): # pylint: disable=W0613
189 """Override to make this test generate its own expectations instead of 191 """Override to make this test generate its own expectations instead of
190 any that may have been defined in the page set.""" 192 any that may have been defined in the page set."""
191 return test_expectations.TestExpectations() 193 return test_expectations.TestExpectations()
192 194
193 def TabForPage(self, page, tab): # pylint: disable=W0613 195 def TabForPage(self, page, tab): # pylint: disable=W0613
194 """Override to select a different tab for the page. For instance, to 196 """Override to select a different tab for the page. For instance, to
195 create a new tab for every page, return tab.browser.tabs.New().""" 197 create a new tab for every page, return tab.browser.tabs.New()."""
196 return tab 198 return tab
197 199
198 def ValidatePageSet(self, page_set): 200 def ValidatePageSet(self, page_set):
199 """Override to examine the page set before the test run. Useful for 201 """Override to examine the page set before the test run. Useful for
200 example to validate that the pageset can be used with the test.""" 202 example to validate that the pageset can be used with the test."""
201 pass 203 pass
202 204
203 def Run(self, options, page, tab, results): 205 def Run(self, options, page, tab, results):
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 Runs the 'navigate_steps' page attribute as a compound action. 242 Runs the 'navigate_steps' page attribute as a compound action.
241 """ 243 """
242 navigate_actions = GetCompoundActionFromPage(page, 'navigate_steps') 244 navigate_actions = GetCompoundActionFromPage(page, 'navigate_steps')
243 if not any(isinstance(action, navigate.NavigateAction) 245 if not any(isinstance(action, navigate.NavigateAction)
244 for action in navigate_actions): 246 for action in navigate_actions):
245 raise page_action.PageActionFailed( 247 raise page_action.PageActionFailed(
246 'No NavigateAction in navigate_steps') 248 'No NavigateAction in navigate_steps')
247 249
248 self._RunCompoundAction(page, tab, navigate_actions, False) 250 self._RunCompoundAction(page, tab, navigate_actions, False)
249 251
252 def IsExiting(self):
253 return self._exit_requested
254
255 def RequestExit(self):
256 self._exit_requested = True
257
250 @property 258 @property
251 def action_name_to_run(self): 259 def action_name_to_run(self):
252 return self._action_name_to_run 260 return self._action_name_to_run
OLDNEW
« no previous file with comments | « tools/telemetry/telemetry/page/page_runner.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698