From 513deef052e5b7b1539f70033dfd64320da92ead Mon Sep 17 00:00:00 2001 From: Leif Johansson Date: Tue, 9 Sep 2014 00:11:26 +0200 Subject: [PATCH] cleanup and testcase for retry --- src/pyff/decorators.py | 8 ++++---- src/pyff/test/test_decorators.py | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 src/pyff/test/test_decorators.py diff --git a/src/pyff/decorators.py b/src/pyff/decorators.py index d89b9d59..1f5c3d08 100644 --- a/src/pyff/decorators.py +++ b/src/pyff/decorators.py @@ -10,15 +10,15 @@ from pyff.logs import log -def retry(ExceptionToCheck, tries=4, delay=3, backoff=2, logger=log): +def retry(ex, tries=4, delay=3, backoff=2, logger=log): """Retry calling the decorated function using exponential backoff based on * http://www.saltycrane.com/blog/2009/11/trying-out-retry-decorator-python/ * http://wiki.python.org/moin/PythonDecoratorLibrary#Retry - :param ExceptionToCheck: the exception to check. may be a tuple of + :param ex: the exception to check. may be a tuple of excpetions to check - :type ExceptionToCheck: Exception or tuple + :type ex: Exception or tuple :param tries: number of times to try (not retry) before giving up :type tries: int :param delay: initial delay between retries in seconds @@ -37,7 +37,7 @@ def f_retry(*args, **kwargs): while mtries > 1: try: return f(*args, **kwargs) - except ExceptionToCheck, e: + except ex, e: msg = "%s, Retrying in %d seconds..." % (str(e), mdelay) if log: log.warn(msg) diff --git a/src/pyff/test/test_decorators.py b/src/pyff/test/test_decorators.py new file mode 100644 index 00000000..77689732 --- /dev/null +++ b/src/pyff/test/test_decorators.py @@ -0,0 +1,27 @@ +from unittest import TestCase +from pyff.decorators import retry + + +class TestRetry(TestCase): + + def test_retry_nop(self): + status = [False] + + @retry(None, delay=1, backoff=1) + def runs_ok(): + status[0] = True + runs_ok() + assert(status[0]) + + def test_retry_fail(self): + status = [False] + @retry(ValueError, delay=1, backoff=1) + def fails(): + raise ValueError("nope") + + try: + fails() + assert False + except ValueError, ex: + pass + assert(not status[0])