Index: chrome/test/pyautolib/policy_base.py |
diff --git a/chrome/test/pyautolib/policy_base.py b/chrome/test/pyautolib/policy_base.py |
index 24c5c4c82fdd99f9994e77001b866700010378d1..b118cb7dae1a7e6c57c13c6bcfbc5cac6410a3a6 100644 |
--- a/chrome/test/pyautolib/policy_base.py |
+++ b/chrome/test/pyautolib/policy_base.py |
@@ -102,6 +102,9 @@ class PolicyTestBase(pyauto.PyUITest): |
device_id = string.upper(str(uuid.uuid4())) |
machine_id = 'CROSTEST' |
+ _auth_server = None |
+ _dns_server = None |
+ |
@staticmethod |
def _Call(command, check=False): |
"""Invokes a subprocess and optionally asserts the return value is zero.""" |
@@ -321,7 +324,8 @@ class PolicyTestBase(pyauto.PyUITest): |
cros_ui.stop(allow_fail=True) |
# Stop mock GAIA server. |
- self._auth_server.stop() |
+ if self._auth_server: |
+ self._auth_server.stop() |
# Reenable TPM if present. |
if os.path.exists(TPM_SYSFS_PATH): |
@@ -331,7 +335,8 @@ class PolicyTestBase(pyauto.PyUITest): |
self._ClearInstallAttributesOnChromeOS() |
# Stop mock DNS server. |
- self._dns_server.stop() |
+ if self._dns_server: |
+ self._dns_server.stop() |
# Stop mock DMServer. |
self.StopHTTPServer(self._http_server) |
@@ -357,8 +362,16 @@ class PolicyTestBase(pyauto.PyUITest): |
""" |
if self.IsChromeOS(): |
# Perform the remainder of the setup with the device manager stopped. |
- self.WaitForSessionManagerRestart( |
- self._SetUpWithSessionManagerStopped) |
+ try: |
+ self.WaitForSessionManagerRestart( |
+ self._SetUpWithSessionManagerStopped) |
+ except: |
+ # Destroy the non re-entrant services. |
+ if self._auth_server: |
+ self._auth_server.stop() |
+ if self._dns_server: |
+ self._dns_server.stop() |
+ raise |
pyauto.PyUITest.setUp(self) |
self._branding = self.GetBrowserInfo()['properties']['branding'] |