소스 검색

Added test cases for autoretry

Dmitry Malinovsky 11 년 전
부모
커밋
852f8380e3
2개의 변경된 파일64개의 추가작업 그리고 0개의 파일을 삭제
  1. 39 0
      celery/tests/contrib/test_autoretry.py
  2. 25 0
      celery/tests/tasks/test_tasks.py

+ 39 - 0
celery/tests/contrib/test_autoretry.py

@@ -0,0 +1,39 @@
+from __future__ import absolute_import
+
+from celery.contrib.autoretry import autoretry
+
+from celery.tests.case import AppCase
+
+
+class TasksCase(AppCase):
+
+    def setup(self):
+
+        @autoretry(on=(ZeroDivisionError,))
+        @self.app.task(shared=False)
+        def autoretry_task_no_kwargs(a, b):
+            self.iterations += 1
+            return a/b
+        self.autoretry_task_no_kwargs = autoretry_task_no_kwargs
+
+        @autoretry(on=(ZeroDivisionError,), retry_kwargs={'max_retries': 5})
+        @self.app.task(shared=False)
+        def autoretry_task(a, b):
+            self.iterations += 1
+            return a/b
+        self.autoretry_task = autoretry_task
+
+
+class test_autoretry(TasksCase):
+
+    def test_autoretry_no_kwargs(self):
+        self.autoretry_task_no_kwargs.max_retries = 3
+        self.autoretry_task_no_kwargs.iterations = 0
+        self.autoretry_task_no_kwargs.apply((1, 0))
+        self.assertEqual(self.autoretry_task_no_kwargs.iterations, 4)
+
+    def test_autoretry(self):
+        self.autoretry_task_no_kwargs.max_retries = 3
+        self.autoretry_task_no_kwargs.iterations = 0
+        self.autoretry_task_no_kwargs.apply((1, 0))
+        self.assertEqual(self.autoretry_task_no_kwargs.iterations, 6)

+ 25 - 0
celery/tests/tasks/test_tasks.py

@@ -100,6 +100,19 @@ class TasksCase(AppCase):
                     raise self.retry(countdown=0, exc=exc)
         self.retry_task_customexc = retry_task_customexc
 
+        @self.app.task(on=(ZeroDivisionError,), shared=False)
+        def autoretry_task_no_kwargs(a, b):
+            self.iterations += 1
+            return a/b
+        self.autoretry_task_no_kwargs
+
+        @self.app.task(on=(ZeroDivisionError,),
+                       retry_kwargs={'max_retries': 5}, shared=False)
+        def autoretry_task(a, b):
+            self.iterations += 1
+            return a/b
+        self.autoretry_task
+
 
 class MyCustomException(Exception):
     """Random custom exception."""
@@ -193,6 +206,18 @@ class test_task_retries(TasksCase):
             result.get()
         self.assertEqual(self.retry_task.iterations, 2)
 
+    def test_autoretry_no_kwargs(self):
+        self.autoretry_task_no_kwargs.max_retries = 3
+        self.autoretry_task_no_kwargs.iterations = 0
+        self.autoretry_task_no_kwargs.apply((1, 0))
+        self.assertEqual(self.autoretry_task_no_kwargs.iterations, 4)
+
+    def test_autoretry(self):
+        self.autoretry_task_no_kwargs.max_retries = 3
+        self.autoretry_task_no_kwargs.iterations = 0
+        self.autoretry_task_no_kwargs.apply((1, 0))
+        self.assertEqual(self.autoretry_task_no_kwargs.iterations, 6)
+
 
 class test_canvas_utils(TasksCase):