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_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_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_get_job(self): worker = Worker(['basic']) self.resq.enqueue(Basic,"test1") job = Job.reserve('basic', self.resq) worker.working_on(job) name = "%s:%s:%s" % (os.uname()[1],os.getpid(),'basic') assert worker.job() == ResQ.decode(self.redis.get('resque:worker:%s' % name)) worker.done_working() w2 = Worker(['basic']) print w2.job() assert w2.job() == {}
def test_get_job(self): worker = Worker(['basic']) self.resq.enqueue(Basic,"test1") job = Job.reserve('basic', self.resq) worker.working_on(job) name = "%s:%s:%s" % (os.uname()[1],os.getpid(),'basic') assert worker.job() == ResQ.decode(self.redis.get('resque:worker:%s' % name)) assert worker.processing() == ResQ.decode(self.redis.get('resque:worker:%s' % name)) worker.done_working(job) w2 = Worker(['basic']) print w2.job() assert w2.job() == {}
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