def test_from_message_missing_required_fields(self): body = {} m = Message(None, body=anyjson.dumps(body), backend='foo', content_type='application/json', content_encoding='utf-8') with self.assertRaises(KeyError): TaskRequest.from_message(m, m.decode())
def test_from_message_nonexistant_task(self): body = {"task": "cu.mytask.doesnotexist", "id": uuid(), "args": [2], "kwargs": {u"æØåveéðƒeæ": "bar"}} m = Message( None, body=anyjson.dumps(body), backend="foo", content_type="application/json", content_encoding="utf-8" ) with self.assertRaises(KeyError): TaskRequest.from_message(m, m.decode())
def test_from_message_missing_required_fields(self): body = {} m = Message(None, body=anyjson.dumps(body), backend="foo", content_type="application/json", content_encoding="utf-8") with self.assertRaises(KeyError): TaskRequest.from_message(m, m.decode())
def test_from_message_missing_required_fields(self): body = {} m = Message(None, body=anyjson.serialize(body), backend="foo", content_type="application/json", content_encoding="utf-8") with self.assertRaises(InvalidTaskError): TaskRequest.from_message(m, m.decode())
def test_from_message_nonexistant_task(self): body = {"task": "cu.mytask.doesnotexist", "id": uuid(), "args": [2], "kwargs": {u"æØåveéðƒeæ": "bar"}} m = Message(None, body=anyjson.serialize(body), backend="foo", content_type="application/json", content_encoding="utf-8") with self.assertRaises(KeyError): TaskRequest.from_message(m, m.decode())
def test_from_message_nonexistant_task(self): body = {'task': 'cu.mytask.doesnotexist', 'id': uuid(), 'args': [2], 'kwargs': {u'æØåveéðƒeæ': 'bar'}} m = Message(None, body=anyjson.dumps(body), backend='foo', content_type='application/json', content_encoding='utf-8') with self.assertRaises(KeyError): TaskRequest.from_message(m, m.decode())
def test_from_message_nonexistant_task(self): body = {'task': 'cu.mytask.doesnotexist', 'id': uuid(), 'args': [2], 'kwargs': {'æØåveéðƒeæ': 'bar'}} m = Message(None, body=anyjson.dumps(body), backend='foo', content_type='application/json', content_encoding='utf-8') with self.assertRaises(KeyError): TaskRequest.from_message(m, m.decode(), app=self.app)
def test_from_message(self): us = u"æØåveéðƒeæ" body = { "task": mytask.name, "id": uuid(), "args": [2], "kwargs": { us: "bar" } } m = Message(None, body=anyjson.serialize(body), backend="foo", content_type="application/json", content_encoding="utf-8") tw = TaskRequest.from_message(m, m.decode()) self.assertIsInstance(tw, Request) self.assertEqual(tw.task_name, body["task"]) self.assertEqual(tw.task_id, body["id"]) self.assertEqual(tw.args, body["args"]) us = from_utf8(us) if sys.version_info < (2, 6): self.assertEqual(tw.kwargs.keys()[0], us) self.assertIsInstance(tw.kwargs.keys()[0], str) self.assertTrue(tw.logger)
def test_from_message_empty_args(self): body = {"task": mytask.name, "id": uuid()} m = Message(None, body=anyjson.serialize(body), backend="foo", content_type="application/json", content_encoding="utf-8") tw = TaskRequest.from_message(m, m.decode()) self.assertIsInstance(tw, TaskRequest) self.assertEquals(tw.args, []) self.assertEquals(tw.kwargs, {})
def test_process_task_raise_regular(self): worker = self.worker worker.pool = Mock() worker.pool.apply_async.side_effect = KeyError("some exception") backend = Mock() m = create_message(backend, task=foo_task.name, args=[4, 8, 10], kwargs={}) task = TaskRequest.from_message(m, m.decode()) worker.process_task(task) worker.pool.stop()
def test_process_task_raise_regular(self): worker = self.worker worker.pool = MockPool(raise_regular=True) backend = MockBackend() m = create_message(backend, task=foo_task.name, args=[4, 8, 10], kwargs={}) task = TaskRequest.from_message(m, m.decode()) worker.process_task(task) worker.pool.stop()
def test_from_message_empty_args(self): body = {"task": mytask.name, "id": uuid()} m = Message(None, body=anyjson.dumps(body), backend="foo", content_type="application/json", content_encoding="utf-8") tw = TaskRequest.from_message(m, m.decode()) self.assertIsInstance(tw, Request) self.assertEquals(tw.args, []) self.assertEquals(tw.kwargs, {})
def test_process_task(self): worker = self.worker worker.pool = Mock() backend = Mock() m = create_message(backend, task=foo_task.name, args=[4, 8, 10], kwargs={}) task = TaskRequest.from_message(m, m.decode()) worker.process_task(task) self.assertEqual(worker.pool.apply_async.call_count, 1) worker.pool.stop()
def test_from_message_empty_args(self): body = {'task': mytask.name, 'id': uuid()} m = Message(None, body=anyjson.dumps(body), backend='foo', content_type='application/json', content_encoding='utf-8') tw = TaskRequest.from_message(m, m.decode()) self.assertIsInstance(tw, Request) self.assertEquals(tw.args, []) self.assertEquals(tw.kwargs, {})
def test_from_message_empty_args(self): body = {'task': self.mytask.name, 'id': uuid()} m = Message(None, body=anyjson.dumps(body), backend='foo', content_type='application/json', content_encoding='utf-8') job = TaskRequest.from_message(m, m.decode(), app=self.app) self.assertIsInstance(job, Request) self.assertEqual(job.args, []) self.assertEqual(job.kwargs, {})
def test_process_task_raise_SystemTerminate(self): worker = self.worker worker.pool = Mock() worker.pool.apply_async.side_effect = SystemTerminate() backend = Mock() m = create_message(backend, task=foo_task.name, args=[4, 8, 10], kwargs={}) task = TaskRequest.from_message(m, m.decode()) worker.components = [] worker._state = worker.RUN self.assertRaises(SystemExit, worker.process_task, task) self.assertEqual(worker._state, worker.TERMINATE)
def test_process_task_raise_base(self): worker = self.worker worker.pool = MockPool(raise_base=True) backend = MockBackend() m = create_message(backend, task=foo_task.name, args=[4, 8, 10], kwargs={}) task = TaskRequest.from_message(m, m.decode()) worker.components = [] worker._state = worker.RUN self.assertRaises(KeyboardInterrupt, worker.process_task, task) self.assertEqual(worker._state, worker.TERMINATE)
def test_process_task_raise_base(self): worker = self.worker worker.pool = Mock() worker.pool.apply_async.side_effect = KeyboardInterrupt("Ctrl+C") backend = Mock() m = create_message(backend, task=foo_task.name, args=[4, 8, 10], kwargs={}) task = TaskRequest.from_message(m, m.decode()) worker.components = [] worker._state = worker.RUN with self.assertRaises(KeyboardInterrupt): worker.process_task(task) self.assertEqual(worker._state, worker.TERMINATE)
def test_from_message(self): body = {"task": mytask.name, "id": gen_unique_id(), "args": [2], "kwargs": {u"æØåveéðƒeæ": "bar"}} m = BaseMessage( body=simplejson.dumps(body), backend="foo", content_type="application/json", content_encoding="utf-8" ) tw = TaskRequest.from_message(m, m.decode()) self.assertIsInstance(tw, TaskRequest) self.assertEqual(tw.task_name, body["task"]) self.assertEqual(tw.task_id, body["id"]) self.assertEqual(tw.args, body["args"]) self.assertEqual(tw.kwargs.keys()[0], u"æØåveéðƒeæ".encode("utf-8")) self.assertNotIsInstance(tw.kwargs.keys()[0], unicode) self.assertTrue(tw.logger)
def test_from_message(self): body = {"task": mytask.name, "id": gen_unique_id(), "args": [2], "kwargs": {u"æØåveéðƒeæ": "bar"}} m = Message(None, body=anyjson.serialize(body), backend="foo", content_type="application/json", content_encoding="utf-8") tw = TaskRequest.from_message(m, m.decode()) self.assertIsInstance(tw, TaskRequest) self.assertEqual(tw.task_name, body["task"]) self.assertEqual(tw.task_id, body["id"]) self.assertEqual(tw.args, body["args"]) self.assertEqual(tw.kwargs.keys()[0], u"æØåveéðƒeæ".encode("utf-8")) self.assertNotIsInstance(tw.kwargs.keys()[0], unicode) self.assertTrue(tw.logger)
def test_from_message(self): us = "æØåveéðƒeæ" body = {"task": self.mytask.name, "id": uuid(), "args": [2], "kwargs": {us: "bar"}} m = Message( None, body=anyjson.dumps(body), backend="foo", content_type="application/json", content_encoding="utf-8" ) job = TaskRequest.from_message(m, m.decode(), app=self.app) self.assertIsInstance(job, Request) self.assertEqual(job.name, body["task"]) self.assertEqual(job.id, body["id"]) self.assertEqual(job.args, body["args"]) us = from_utf8(us) if sys.version_info < (2, 6): self.assertEqual(next(keys(job.kwargs)), us) self.assertIsInstance(next(keys(job.kwargs)), str)
def test_from_message(self): us = u'æØåveéðƒeæ' body = {'task': mytask.name, 'id': uuid(), 'args': [2], 'kwargs': {us: 'bar'}} m = Message(None, body=anyjson.dumps(body), backend='foo', content_type='application/json', content_encoding='utf-8') tw = TaskRequest.from_message(m, m.decode()) self.assertIsInstance(tw, Request) self.assertEqual(tw.name, body['task']) self.assertEqual(tw.id, body['id']) self.assertEqual(tw.args, body['args']) us = from_utf8(us) if sys.version_info < (2, 6): self.assertEqual(tw.kwargs.keys()[0], us) self.assertIsInstance(tw.kwargs.keys()[0], str)
def test_from_message(self): us = 'æØåveéðƒeæ' body = {'task': self.mytask.name, 'id': uuid(), 'args': [2], 'kwargs': {us: 'bar'}} m = Message(None, body=anyjson.dumps(body), backend='foo', content_type='application/json', content_encoding='utf-8') job = TaskRequest.from_message(m, m.decode(), app=self.app) self.assertIsInstance(job, Request) self.assertEqual(job.name, body['task']) self.assertEqual(job.id, body['id']) self.assertEqual(job.args, body['args']) us = from_utf8(us) if sys.version_info < (2, 6): self.assertEqual(next(keys(job.kwargs)), us) self.assertIsInstance(next(keys(job.kwargs)), str)
def test_from_message(self): us = u"æØåveéðƒeæ" body = {"task": mytask.name, "id": uuid(), "args": [2], "kwargs": {us: "bar"}} m = Message( None, body=anyjson.dumps(body), backend="foo", content_type="application/json", content_encoding="utf-8" ) tw = TaskRequest.from_message(m, m.decode()) self.assertIsInstance(tw, Request) self.assertEqual(tw.name, body["task"]) self.assertEqual(tw.id, body["id"]) self.assertEqual(tw.args, body["args"]) us = from_utf8(us) if sys.version_info < (2, 6): self.assertEqual(tw.kwargs.keys()[0], us) self.assertIsInstance(tw.kwargs.keys()[0], str) self.assertTrue(tw.logger)
def test_from_message_invalid_kwargs(self): body = dict(task=mytask.name, id=1, args=(), kwargs="foo") with self.assertRaises(InvalidTaskError): TaskRequest.from_message(None, body)
def on_message(self, message_data, message): try: task = TaskRequest.from_message(message, message_data, logger=self.logger, hostname=self.hostname) except Exception, exc: message.ack() raise