def fork_waitfor_timed(tmp, pid, timeout): """ Waits for pid until it terminates or timeout expires. If timeout expires, test subprocess is killed. """ timer_expired = True poll_time = 2 time_passed = 0 while time_passed < timeout: time.sleep(poll_time) (child_pid, status) = os.waitpid(pid, os.WNOHANG) if (child_pid, status) == (0, 0): time_passed = time_passed + poll_time else: timer_expired = False break if timer_expired: logging.info('Timer expired (%d sec.), nuking pid %d', timeout, pid) utils.nuke_pid(pid) (child_pid, status) = os.waitpid(pid, 0) raise error.TestError("Test timeout expired, rc=%d" % (status)) else: _check_for_subprocess_exception(tmp, pid) if status: raise error.TestError("Test subprocess failed rc=%d" % (status))
def fork_waitfor(self, timeout=None): if not timeout: return self.wait() else: end_time = time.time() + timeout while time.time() <= end_time: returncode = self.poll() if returncode is not None: return returncode time.sleep(1) utils.nuke_pid(self.pid) print("subcommand failed pid %d" % self.pid) print("%s" % (self.func,)) print("timeout after %ds" % timeout) print() return None
def fork_waitfor(self, timeout=None): if not timeout: return self.wait() else: end_time = time.time() + timeout while time.time() <= end_time: returncode = self.poll() if returncode is not None: return returncode time.sleep(1) utils.nuke_pid(self.pid) print "subcommand failed pid %d" % self.pid print "%s" % (self.func,) print "timeout after %ds" % timeout print return None
def fork_nuke_subprocess(tmp, pid): utils.nuke_pid(pid) _check_for_subprocess_exception(tmp, pid)
def kill_process(self, process): signal_queue = (signal.SIGCONT, signal.SIGTERM, signal.SIGKILL) utils.nuke_pid(process.pid, signal_queue=signal_queue)
def stop(self, test): utils.nuke_pid(self.pid)
def kill_watchdog(self): logging.debug('harness: Killing watchdog, pid: %d', self.watchdog_pid) utils.nuke_pid(self.watchdog_pid) self.watchdog_pid = None