Index: build/android/pylib/utils/test_environment.py |
diff --git a/build/android/pylib/utils/test_environment.py b/build/android/pylib/utils/test_environment.py |
index 279bc4a135c6acb043712a4c3d37425029ebaf13..627c2ddf97f863d1b92d7b350d85633cdea75c6d 100644 |
--- a/build/android/pylib/utils/test_environment.py |
+++ b/build/android/pylib/utils/test_environment.py |
@@ -5,19 +5,30 @@ |
import logging |
import os |
import psutil |
+import signal |
from pylib import android_commands |
+ |
def _KillWebServers(): |
- for retry in xrange(5): |
- for server in ['lighttpd', 'web-page-replay']: |
- pids = [p.pid for p in psutil.process_iter() if server in p.name] |
- for pid in pids: |
+ for s in [signal.SIGTERM, signal.SIGINT, signal.SIGQUIT, signal.SIGKILL]: |
+ signalled = [] |
+ for server in ['lighttpd', 'webpagereplay']: |
+ for p in psutil.process_iter(): |
try: |
- logging.warning('Killing %s %s', server, pid) |
- os.kill(pid, signal.SIGQUIT) |
+ if not server in ' '.join(p.cmdline): |
+ continue |
+ logging.info('Killing %s %s %s', s, server, p.pid) |
+ p.send_signal(s) |
+ signalled.append(p) |
except Exception as e: |
- logging.warning('Failed killing %s %s %s', server, pid, e) |
+ logging.warning('Failed killing %s %s %s', server, p.pid, e) |
+ for p in signalled: |
+ try: |
+ p.wait(1) |
+ except Exception as e: |
+ logging.warning('Failed waiting for %s to die. %s', p.pid, e) |
+ |
def CleanupLeftoverProcesses(): |