def test_kills_stale_workers_after_timeout(self): timeout = 1 worker = Worker(['basic'], timeout=timeout) self.resq.enqueue(TimeoutJob, timeout + 1) assert worker.get_failed() == 0 worker.fork_worker(worker.reserve()) assert worker.get_failed() == 1
def test_detect_code_0_os_exit_as_success(self): worker = Worker(['basic']) self.resq.enqueue(PrematureHardExitJob, 0) assert worker.job() == {} assert worker.get_failed() == 0 worker.fork_worker(worker.reserve()) assert worker.job() == {} assert worker.get_failed() == 0
def test_detect_non_0_sys_exit_as_failure(self): worker = Worker(['basic']) self.resq.enqueue(PrematureExitJob, 9) assert worker.job() == {} assert worker.get_failed() == 0 worker.fork_worker(worker.reserve()) assert worker.job() == {} assert worker.get_failed() == 1
def test_detect_crashed_workers_as_failures(self): worker = Worker(['basic']) self.resq.enqueue(CrashJob) assert worker.job() == {} assert worker.get_failed() == 0 worker.fork_worker(worker.reserve()) assert worker.job() == {} assert worker.get_failed() == 1
def test_sigterm_worker_gets_requeued(self): worker = Worker(['basic']) self.resq.enqueue(SigtermJob, 'string argument') assert worker.job() == {} assert worker.get_failed() == 0 job = worker.reserve() worker.fork_worker(job) # our last job should land back in the queue job2 = worker.reserve() assert str(job2) == str(job) # didn't run job2, so there shouldn't be more jobs assert worker.reserve(timeout=1) == None assert worker.job() == {} assert worker.get_failed() == 0