# Copyright 2013 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import logging import os import psutil import signal from pylib import android_commands def _KillWebServers(): for s in [signal.SIGTERM, signal.SIGINT, signal.SIGQUIT, signal.SIGKILL]: signalled = [] for server in ['lighttpd', 'webpagereplay']: for p in psutil.process_iter(): try: 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, 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(): """Clean up the test environment, restarting fresh adb and HTTP daemons.""" _KillWebServers() did_restart_host_adb = False for device in android_commands.GetAttachedDevices(): adb = android_commands.AndroidCommands(device, api_strict_mode=True) # Make sure we restart the host adb server only once. if not did_restart_host_adb: adb.RestartAdbServer() did_restart_host_adb = True adb.RestartAdbdOnDevice() adb.EnableAdbRoot() adb.WaitForDevicePm()