def test_WorkerPool_sigterm(url): with tempdir() as tmp: logpath = join(tmp, 'output.log') proc = run_in_subprocess(worker_pool, url, WorkerPool_sigterm_init, (tmp, logpath), workers=3) with printlog(logpath), force_kill_on_exit(proc): q = get_queue(url) q.func('text') eventually(reader(tmp, 'func.started'), '') proc.terminate() # signal pool shutdown touch(join(tmp, 'func.unlock')) # allow func to proceed eventually(reader(tmp, 'func.out'), 'text') eventually(verify_shutdown(proc), True, timeout=WAIT)
def test_WorkerPool_sigterm(url): with tempdir() as tmp: logpath = join(tmp, 'output.log') proc = run_in_subprocess(worker_pool, url, WorkerPool_sigterm_init, (tmp, logpath), workers=3) with printlog(logpath), force_kill_on_exit(proc): q = get_queue(url) q.func('text') eventually(reader(tmp, 'func.started'), '') proc.terminate() # signal pool shutdown touch(join(tmp, 'func.unlock')) # allow func to proceed eventually(reader(tmp, 'func.out'), 'text') eventually(verify_shutdown(proc), True, timeout=WAIT)
def test_WorkerPool_worker_shutdown_on_parent_die(url): with tempdir() as tmp: logpath = join(tmp, 'output.log') proc = run_in_subprocess(worker_pool, url, WorkerPool_worker_shutdown_on_parent_die_init, (tmp, logpath)) with printlog(logpath), force_kill_on_exit(proc): res = get_queue(url).getpid() assert res.wait(WAIT), repr(res) os.kill(proc.pid, signal.SIGKILL) # force kill pool master eventually(proc.is_alive, False, timeout=WAIT) try: eventually(pid_running(res.value), False, timeout=WAIT, poll_interval=0.1) except Exception: os.kill(res.value, signal.SIGTERM) # clean up raise
def test_WorkerPool_worker_shutdown_on_parent_die(url): with tempdir() as tmp: logpath = join(tmp, 'output.log') proc = run_in_subprocess(worker_pool, url, WorkerPool_worker_shutdown_on_parent_die_init, (tmp, logpath)) with printlog(logpath), force_kill_on_exit(proc): res = get_queue(url).getpid() assert res.wait(WAIT), repr(res) os.kill(proc.pid, signal.SIGKILL) # force kill pool master eventually(proc.is_alive, False, timeout=WAIT) try: eventually(pid_running(res.value), False, timeout=WAIT, poll_interval=0.1) except Exception: os.kill(res.value, signal.SIGTERM) # clean up raise