def test_attempt_delivery_suffix(self): task_func = self.mox.CreateMockAnything() self.celery.task(name='attempt_delivery_test').AndReturn(task_func) task_func.__call__(IgnoreArg()) self.relay.attempt(self.env, 0) self.mox.ReplayAll() queue = CeleryQueue(self.celery, self.relay, 'test') queue.attempt_delivery(self.env, 0)
def test_attempt_delivery_permanentrelayerror_nullsender(self): task = self.mox.CreateMockAnything() self.relay.attempt(self.bounce, 0).AndRaise(PermanentRelayError('permanent', Reply('550', 'permanent error'))) self.celery.task(IgnoreArg()).AndReturn(task) self.mox.ReplayAll() def return_bounce(envelope, reply): self.fail('Tried to generate a bounce to a NULL sender.') queue = CeleryQueue(self.celery, self.relay, bounce_factory=return_bounce) queue.attempt_delivery(self.bounce, 0)
def test_enqueue(self): task = self.mox.CreateMockAnything() subtask = self.mox.CreateMockAnything() result = self.mox.CreateMockAnything() result.id = '12345' self.celery.task(IgnoreArg()).AndReturn(task) task.s(self.env, 0).AndReturn(subtask) subtask.apply_async().AndReturn(result) self.mox.ReplayAll() queue = CeleryQueue(self.celery, self.relay) self.assertEqual([(self.env, '12345')], queue.enqueue(self.env))
def test_policies(self): self.celery.task(IgnoreArg()) p1 = self.mox.CreateMock(QueuePolicy) p2 = self.mox.CreateMock(QueuePolicy) p1.apply(self.env) p2.apply(self.env) self.mox.ReplayAll() queue = CeleryQueue(self.celery, self.relay) queue.add_policy(p1) queue.add_policy(p2) self.assertRaises(TypeError, queue.add_policy, None) queue._run_policies(self.env)
def test_attempt_delivery_permanentrelayerror(self): task = self.mox.CreateMockAnything() subtask = self.mox.CreateMockAnything() result = self.mox.CreateMockAnything() result.id = '12345' self.relay.attempt(self.env, 0).AndRaise(PermanentRelayError('permanent', Reply('550', 'permanent error'))) self.celery.task(IgnoreArg()).AndReturn(task) task.s(self.bounce, 0).AndReturn(subtask) subtask.apply_async().AndReturn(result) self.mox.ReplayAll() def return_bounce(envelope, reply): self.assertEqual(self.env, envelope) return self.bounce queue = CeleryQueue(self.celery, self.relay, bounce_factory=return_bounce) queue.attempt_delivery(self.env, 0)
def test_attempt_delivery_transientrelayerror(self): task = self.mox.CreateMockAnything() subtask = self.mox.CreateMockAnything() result = self.mox.CreateMockAnything() result.id = '12345' self.relay.attempt(self.env, 0).AndRaise(TransientRelayError('transient', Reply('450', 'transient error'))) self.celery.task(IgnoreArg()).AndReturn(task) task.s(self.env, 1).AndReturn(subtask) subtask.set(countdown=60) subtask.apply_async().AndReturn(result) self.mox.ReplayAll() def backoff(envelope, attempts): self.assertEqual(self.env, envelope) self.assertEqual(1, attempts) return 60 queue = CeleryQueue(self.celery, self.relay, backoff=backoff) queue.attempt_delivery(self.env, 0)
def test_attempt_delivery_unhandlederror(self): task = self.mox.CreateMockAnything() subtask = self.mox.CreateMockAnything() result = self.mox.CreateMockAnything() result.id = '12345' self.relay.attempt(self.env, 0).AndRaise(Exception('unhandled error')) self.celery.task(IgnoreArg()).AndReturn(task) task.s(self.bounce, 0).AndReturn(subtask) subtask.apply_async().AndReturn(result) self.mox.ReplayAll() def return_bounce(envelope, reply): self.assertEqual(self.env, envelope) self.assertEqual('4.0.0 Unhandled delivery error: unhandled error (Too many retries)', reply.message) return self.bounce def no_retry(envelope, attempts): self.assertEqual(self.env, envelope) self.assertEqual(1, attempts) return None queue = CeleryQueue(self.celery, self.relay, backoff=no_retry, bounce_factory=return_bounce) self.assertRaises(Exception, queue.attempt_delivery, self.env, 0)
def test_attempt_delivery(self): self.celery.task(IgnoreArg()) self.relay.attempt(self.env, 0) self.mox.ReplayAll() queue = CeleryQueue(self.celery, self.relay) queue.attempt_delivery(self.env, 0)
def test_kill_noop(self): self.celery.task(IgnoreArg()) self.mox.ReplayAll() queue = CeleryQueue(self.celery, self.relay) queue.kill()
def test_flush_notimplemented(self): self.celery.task(IgnoreArg()) self.mox.ReplayAll() queue = CeleryQueue(self.celery, self.relay) self.assertRaises(NotImplementedError, queue.flush)