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

Side by Side Diff: chrome/test/pyautolib/pyauto.py

Issue 7108023: Fix flakiness in pyauto test on ChromeOS: ntp.NTPTest.testThumbnailPersistence. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | 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 #!/usr/bin/python 1 #!/usr/bin/python
2 2
3 # Copyright (c) 2011 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """PyAuto: Python Interface to Chromium's Automation Proxy. 7 """PyAuto: Python Interface to Chromium's Automation Proxy.
8 8
9 PyAuto uses swig to expose Automation Proxy interfaces to Python. 9 PyAuto uses swig to expose Automation Proxy interfaces to Python.
10 For complete documentation on the functionality available, 10 For complete documentation on the functionality available,
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 self.UseNamedChannelID(named_channel_id) 164 self.UseNamedChannelID(named_channel_id)
165 self.SetUp() # Fire browser 165 self.SetUp() # Fire browser
166 166
167 # TODO(dtu): Remove this after crosbug.com/4558 is fixed. 167 # TODO(dtu): Remove this after crosbug.com/4558 is fixed.
168 if self.IsChromeOS(): 168 if self.IsChromeOS():
169 self.WaitUntil(lambda: not self.GetNetworkInfo()['offline_mode']) 169 self.WaitUntil(lambda: not self.GetNetworkInfo()['offline_mode'])
170 170
171 def tearDown(self): 171 def tearDown(self):
172 self.TearDown() # Destroy browser 172 self.TearDown() # Destroy browser
173 173
174 @staticmethod 174 def CloseChromeOnChromeOS(self):
175 def CloseChromeOnChromeOS():
176 """Gracefully exit chrome on ChromeOS.""" 175 """Gracefully exit chrome on ChromeOS."""
176
177 def _GetListOfChromePids():
178 """Retrieves the list of currently-running Chrome process IDs.
179
180 Returns:
181 A list of strings, where each string represents a currently-running
182 'chrome' process ID.
183 """
184 proc = subprocess.Popen(['ps', '-C', 'chrome'], stdout=subprocess.PIPE)
Nirnimesh 2011/06/08 18:32:22 'prep chrome' will be easier to parse
dennis_jeffrey 2011/06/08 21:50:31 Awesome! Thanks!
185 output, _ = proc.communicate()
Nirnimesh 2011/06/08 18:32:22 output = proc.communicate()[0]
dennis_jeffrey 2011/06/08 21:50:31 This line has since been removed.
186 pids = []
187 for line in output.split('\n'):
188 line = line.strip()
189 if line.find('chrome') >= 0:
190 pids.append(line[:line.find(' ')])
191 return pids
192
193 orig_pids = _GetListOfChromePids()
177 subprocess.call(['pkill', 'chrome']) 194 subprocess.call(['pkill', 'chrome'])
178 195
196 def _DoesOldChromeProcessStillExist():
Nirnimesh 2011/06/08 18:32:22 take orig_pids as arg
dennis_jeffrey 2011/06/08 21:50:31 Done.
197 """Determines whether an originally-running 'chrome' process exists.
198
199 Returns:
200 True, if an originally-running 'chrome' process still exists, or
201 False otherwise.
202 """
203 new_pids = _GetListOfChromePids()
204 for new_pid in new_pids:
Nirnimesh 2011/06/08 18:32:22 merge with previous line
dennis_jeffrey 2011/06/08 21:50:31 Done.
205 if new_pid in orig_pids:
206 return True
207 return False
208
209 self.WaitUntil(lambda: not _DoesOldChromeProcessStillExist())
Nirnimesh 2011/06/08 18:32:22 pass orig_pids as arg
Nirnimesh 2011/06/08 18:32:22 Why the negation? Just invert the function -- lamb
dennis_jeffrey 2011/06/08 21:50:31 Done.
dennis_jeffrey 2011/06/08 21:50:31 Done.
210
179 def EnableChromeTestingOnChromeOS(self): 211 def EnableChromeTestingOnChromeOS(self):
180 """Enables the named automation interface on chromeos. 212 """Enables the named automation interface on chromeos.
181 213
182 Restarts chrome so that you get a fresh instance. 214 Restarts chrome so that you get a fresh instance.
183 Also sets some testing-friendly flags for chrome. 215 Also sets some testing-friendly flags for chrome.
184 216
185 Expects suid python to be present in the same dir as pyautolib.py 217 Expects suid python to be present in the same dir as pyautolib.py
186 """ 218 """
187 def _IsRootSuid(path): 219 def _IsRootSuid(path):
188 return os.path.isfile(path) and (os.stat(path).st_mode & stat.S_ISUID) 220 return os.path.isfile(path) and (os.stat(path).st_mode & stat.S_ISUID)
(...skipping 3435 matching lines...) Expand 10 before | Expand all | Expand 10 after
3624 if self._options.verbose: 3656 if self._options.verbose:
3625 verbosity = 2 3657 verbosity = 2
3626 result = PyAutoTextTestRuner(verbosity=verbosity).run(pyauto_suite) 3658 result = PyAutoTextTestRuner(verbosity=verbosity).run(pyauto_suite)
3627 del loaded_tests # Need to destroy test cases before the suite 3659 del loaded_tests # Need to destroy test cases before the suite
3628 del pyauto_suite 3660 del pyauto_suite
3629 sys.exit(not result.wasSuccessful()) 3661 sys.exit(not result.wasSuccessful())
3630 3662
3631 3663
3632 if __name__ == '__main__': 3664 if __name__ == '__main__':
3633 Main() 3665 Main()
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698