async def test_handle_no_sig(caplog): caplog.set_level(logging.INFO) worker = Worker([foobar], handle_signals=False) worker.main_task = MagicMock() worker.tasks = {0: MagicMock(done=MagicMock(return_value=True)), 1: MagicMock(done=MagicMock(return_value=False))} assert len(caplog.records) == 0 await worker.close() assert len(caplog.records) == 1 assert caplog.records[0].message == ( 'shutdown on SIGUSR1 ◆ 0 jobs complete ◆ 0 failed ◆ 0 retries ◆ 2 ongoing to cancel' ) assert worker.main_task.cancel.call_count == 1 assert worker.tasks[0].done.call_count == 1 assert worker.tasks[0].cancel.call_count == 0 assert worker.tasks[1].done.call_count == 1 assert worker.tasks[1].cancel.call_count == 1
async def test_handle_sig(caplog): caplog.set_level(logging.INFO) worker = Worker([foobar]) worker.main_task = MagicMock() worker.tasks = [MagicMock(done=MagicMock(return_value=True)), MagicMock(done=MagicMock(return_value=False))] assert len(caplog.records) == 0 worker.handle_sig(signal.SIGINT) assert len(caplog.records) == 1 assert caplog.records[0].message == ( 'shutdown on SIGINT ◆ 0 jobs complete ◆ 0 failed ◆ 0 retries ◆ 2 ongoing to cancel' ) assert worker.main_task.cancel.call_count == 1 assert worker.tasks[0].done.call_count == 1 assert worker.tasks[0].cancel.call_count == 0 assert worker.tasks[1].done.call_count == 1 assert worker.tasks[1].cancel.call_count == 1
def create(functions=[], burst=True, poll_delay=0, max_jobs=10, **kwargs): nonlocal worker_ worker_ = Worker(functions=functions, redis_pool=arq_redis, burst=burst, poll_delay=poll_delay, max_jobs=max_jobs, **kwargs) return worker_
async def test_handle_sig(caplog, arq_redis: ArqRedis): caplog.set_level(logging.INFO) worker = Worker([foobar], redis_pool=arq_redis) worker.main_task = MagicMock() worker.tasks = {0: MagicMock(done=MagicMock(return_value=True)), 1: MagicMock(done=MagicMock(return_value=False))} assert len(caplog.records) == 0 worker.handle_sig(signal.SIGINT) assert len(caplog.records) == 1 assert caplog.records[0].message == ( 'shutdown on SIGINT ◆ 0 jobs complete ◆ 0 failed ◆ 0 retries ◆ 2 ongoing to cancel' ) assert worker.main_task.cancel.call_count == 1 assert worker.tasks[0].done.call_count == 1 assert worker.tasks[0].cancel.call_count == 0 assert worker.tasks[1].done.call_count == 1 assert worker.tasks[1].cancel.call_count == 1