diff options
author | jrg@google.com <jrg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-07 22:57:52 +0000 |
---|---|---|
committer | jrg@google.com <jrg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-07 22:57:52 +0000 |
commit | f166cbf3487d927c011ab26d4de3cd54ee277154 (patch) | |
tree | 8972b8d1cfa34a261de8707488137ae89ba9abdf /build | |
parent | 872caf56ebb67c01a01d0c8c612e171fd4332624 (diff) | |
download | chromium_src-f166cbf3487d927c011ab26d4de3cd54ee277154.zip chromium_src-f166cbf3487d927c011ab26d4de3cd54ee277154.tar.gz chromium_src-f166cbf3487d927c011ab26d4de3cd54ee277154.tar.bz2 |
Use -wipe-data on emulator launch to improve android bot reliability.
BUG=None
TEST=
Review URL: http://codereview.chromium.org/8863003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@113492 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'build')
-rwxr-xr-x | build/android/emulator.py | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/build/android/emulator.py b/build/android/emulator.py index 681a3c1..a4b6167 100755 --- a/build/android/emulator.py +++ b/build/android/emulator.py @@ -90,7 +90,7 @@ class Emulator(object): _WAITFORDEVICE_TIMEOUT = 5 # Time to wait for a "wait for boot complete" (property set on device). - _WAITFORBOOT_TIMEOUT = 120 + _WAITFORBOOT_TIMEOUT = 300 def __init__(self): try: @@ -115,21 +115,27 @@ class Emulator(object): """ _KillAllEmulators() # just to be sure (self.device, port) = self._DeviceName() - self.popen = subprocess.Popen(args=[ + emulator_command = [ self.emulator, # Speed up emulator launch by 40%. Really. '-no-boot-anim', # The default /data size is 64M. # That's not enough for 4 unit test bundles and their data. '-partition-size', '256', + # ALWAYS wipe the data. We've seen cases where an emulator + # gets 'stuck' if we don't do this (every thousand runs or + # so). + '-wipe-data', # Use a familiar name and port. '-avd', 'buildbot', - '-port', str(port)], - stderr=subprocess.STDOUT) + '-port', str(port)] + logging.info('Emulator launch command: %s', ' '.join(emulator_command)) + self.popen = subprocess.Popen(args=emulator_command, + stderr=subprocess.STDOUT) self._InstallKillHandler() self._ConfirmLaunch() - def _ConfirmLaunch(self): + def _ConfirmLaunch(self, wait_for_boot=False): """Confirm the emulator launched properly. Loop on a wait-for-device with a very small timeout. On each @@ -159,10 +165,14 @@ class Emulator(object): if seconds_waited >= self._LAUNCH_TIMEOUT: raise EmulatorLaunchException('TIMEOUT with wait-for-device') logging.info('Seconds waited on wait-for-device: %d', seconds_waited) - # Now that we checked for obvious problems, wait for a boot complete. - # Waiting for the package manager has been problematic. - a.Adb().SetTargetSerial(self.device) - a.Adb().WaitForBootComplete(self._WAITFORBOOT_TIMEOUT) + if wait_for_boot: + # Now that we checked for obvious problems, wait for a boot complete. + # Waiting for the package manager is sometimes problematic. + # TODO(jrg): for reasons I don't understand, sometimes this + # gives an "error: device not found" which is only fixed with an + # 'adb kill-server' command. Fix. + a.Adb().SetTargetSerial(self.device) + a.Adb().WaitForBootComplete(self._WAITFORBOOT_TIMEOUT) def Shutdown(self): """Shuts down the process started by launch.""" |