def end(self): """ Kill all child processes on exit since we don't want to leave them as orphaned. """ pids_to_kill = self.get_all_pids() if pids_to_kill: kill_child_processes_by_pids(pids_to_kill)
def test_should_kill_process(self): before_num_process = subprocess.check_output(["ps", "-ax", "-o", "pid="]).decode().count("\n") process = multiprocessing.Process(target=my_sleep_subprocess, args=()) process.start() sleep(0) num_process = subprocess.check_output(["ps", "-ax", "-o", "pid="]).decode().count("\n") self.assertEqual(before_num_process + 1, num_process) process_utils.kill_child_processes_by_pids([process.pid]) num_process = subprocess.check_output(["ps", "-ax", "-o", "pid="]).decode().count("\n") self.assertEqual(before_num_process, num_process)
def test_should_force_kill_process(self): before_num_process = subprocess.check_output(["ps", "-ax", "-o", "pid="]).decode().count("\n") process = multiprocessing.Process(target=my_sleep_subprocess_with_signals, args=()) process.start() sleep(0) num_process = subprocess.check_output(["ps", "-ax", "-o", "pid="]).decode().count("\n") self.assertEqual(before_num_process + 1, num_process) with self.assertLogs(process_utils.log) as cm: process_utils.kill_child_processes_by_pids([process.pid], timeout=0) self.assertTrue(any("Killing child PID" in line for line in cm.output)) num_process = subprocess.check_output(["ps", "-ax", "-o", "pid="]).decode().count("\n") self.assertEqual(before_num_process, num_process)
def test_should_force_kill_process(self): process = multiprocessing.Process( target=my_sleep_subprocess_with_signals, args=()) process.start() sleep(0) all_processes = subprocess.check_output(["ps", "-ax", "-o", "pid=" ]).decode().splitlines() assert str(process.pid) in map(lambda x: x.strip(), all_processes) with self.assertLogs(process_utils.log) as cm: process_utils.kill_child_processes_by_pids([process.pid], timeout=0) assert any("Killing child PID" in line for line in cm.output) sleep(0) all_processes = subprocess.check_output(["ps", "-ax", "-o", "pid=" ]).decode().splitlines() assert str(process.pid) not in map(lambda x: x.strip(), all_processes)