def with_catch_warnings(log): res = execute_and_trace(mytask.name, gen_unique_id(), [4], {}) self.assertIsInstance(res, ExceptionInfo) self.assertTrue(log) self.assertIn("Exception outside", log[0].message.args[0]) self.assertIn("KeyError", log[0].message.args[0])
def test_execute_safe_catches_exception(self): def _error_exec(self, *args, **kwargs): raise KeyError("baz") @task_dec def raising(): raise KeyError("baz") raising.request = None with self.assertWarnsRegex(RuntimeWarning, r"Exception raised outside"): res = execute_and_trace(raising.name, uuid(), [], {}) self.assertIsInstance(res, ExceptionInfo)
def test_execute_safe_catches_exception(self): def _error_exec(self, *args, **kwargs): raise KeyError("baz") @task_dec def raising(): raise KeyError("baz") raising.request = None with self.assertWarnsRegex(RuntimeWarning, r'Exception raised outside'): res = execute_and_trace(raising.name, uuid(), [], {}) self.assertIsInstance(res, ExceptionInfo)
def test_execute_safe_catches_exception(self): old_exec = WorkerTaskTrace.execute def _error_exec(self, *args, **kwargs): raise KeyError("baz") WorkerTaskTrace.execute = _error_exec try: with catch_warnings(record=True) as log: res = execute_and_trace(mytask.name, uuid(), [4], {}) self.assertIsInstance(res, ExceptionInfo) self.assertTrue(log) self.assertIn("Exception outside", log[0].message.args[0]) self.assertIn("KeyError", log[0].message.args[0]) finally: WorkerTaskTrace.execute = old_exec
def test_execute_safe_catches_exception(self): warnings.resetwarnings() def _error_exec(self, *args, **kwargs): raise KeyError("baz") @task_dec def raising(): raise KeyError("baz") raising.request = None with catch_warnings(record=True) as log: res = execute_and_trace(raising.name, uuid(), [], {}) self.assertIsInstance(res, ExceptionInfo) self.assertTrue(log) self.assertIn("Exception outside", log[0].message.args[0]) self.assertIn("AttributeError", log[0].message.args[0])
def test_execute_safe_catches_exception(self): from celery.worker.job import execute_and_trace, WorkerTaskTrace old_exec = WorkerTaskTrace.execute def _error_exec(self, *args, **kwargs): raise KeyError("baz") WorkerTaskTrace.execute = _error_exec try: import warnings with warnings.catch_warnings(record=True) as log: res = execute_and_trace(mytask.name, gen_unique_id(), [4], {}) self.assertTrue(isinstance(res, ExceptionInfo)) self.assertTrue(log) self.assertTrue("Exception outside" in log[0].message.args[0]) self.assertTrue("KeyError" in log[0].message.args[0]) finally: WorkerTaskTrace.execute = old_exec
def test_execute_and_trace(self): res = execute_and_trace(mytask.name, uuid(), [4], {}) self.assertEqual(res, 4 ** 4)
def test_execute_and_trace(self): res = execute_and_trace(mytask.name, uuid(), [4], {}) self.assertEqual(res, 4**4)
def test_execute_and_trace(self): from celery.worker.job import execute_and_trace res = execute_and_trace(mytask.name, gen_unique_id(), [4], {}) self.assertEqual(res, 4 ** 4)