OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 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 | 4 |
5 import logging | 5 import logging |
6 import psutil | 6 import psutil |
7 import signal | 7 import signal |
8 | 8 |
9 from devil.android import device_errors | 9 from devil.android import device_errors |
10 from devil.android import device_utils | 10 from devil.android import device_utils |
11 | 11 |
12 | 12 |
13 def _KillWebServers(): | 13 def _KillWebServers(): |
14 for s in [signal.SIGTERM, signal.SIGINT, signal.SIGQUIT, signal.SIGKILL]: | 14 for s in [signal.SIGTERM, signal.SIGINT, signal.SIGQUIT, signal.SIGKILL]: |
15 signalled = [] | 15 signalled = [] |
16 for server in ['lighttpd', 'webpagereplay']: | 16 for server in ['lighttpd', 'webpagereplay']: |
17 for p in psutil.process_iter(): | 17 for p in psutil.process_iter(): |
18 try: | 18 try: |
19 if not server in ' '.join(p.cmdline): | 19 if not server in ' '.join(p.cmdline): |
20 continue | 20 continue |
21 logging.info('Killing %s %s %s', s, server, p.pid) | 21 logging.info('Killing %s %s %s', s, server, p.pid) |
22 p.send_signal(s) | 22 p.send_signal(s) |
23 signalled.append(p) | 23 signalled.append(p) |
24 except Exception: | 24 except Exception: # pylint: disable=broad-except |
25 logging.exception('Failed killing %s %s', server, p.pid) | 25 logging.exception('Failed killing %s %s', server, p.pid) |
26 for p in signalled: | 26 for p in signalled: |
27 try: | 27 try: |
28 p.wait(1) | 28 p.wait(1) |
29 except Exception: | 29 except Exception: # pylint: disable=broad-except |
30 logging.exception('Failed waiting for %s to die.', p.pid) | 30 logging.exception('Failed waiting for %s to die.', p.pid) |
31 | 31 |
32 | 32 |
33 def CleanupLeftoverProcesses(devices): | 33 def CleanupLeftoverProcesses(devices): |
34 """Clean up the test environment, restarting fresh adb and HTTP daemons. | 34 """Clean up the test environment, restarting fresh adb and HTTP daemons. |
35 | 35 |
36 Args: | 36 Args: |
37 devices: The devices to clean. | 37 devices: The devices to clean. |
38 """ | 38 """ |
39 _KillWebServers() | 39 _KillWebServers() |
40 device_utils.RestartServer() | 40 device_utils.RestartServer() |
41 | 41 |
42 def cleanup_device(d): | 42 def cleanup_device(d): |
43 d.RestartAdbd() | 43 d.RestartAdbd() |
44 try: | 44 try: |
45 d.EnableRoot() | 45 d.EnableRoot() |
46 except device_errors.CommandFailedError: | 46 except device_errors.CommandFailedError: |
47 logging.exception('Failed to enable root') | 47 logging.exception('Failed to enable root') |
48 d.WaitUntilFullyBooted() | 48 d.WaitUntilFullyBooted() |
49 | 49 |
50 device_utils.DeviceUtils.parallel(devices).pMap(cleanup_device) | 50 device_utils.DeviceUtils.parallel(devices).pMap(cleanup_device) |
51 | 51 |
OLD | NEW |