def test_retry(): class NotCalledEnough(Exception): pass class TroublsomeFunction(object): "Function-like object which must be called >=4 times before succeeding." def __init__(self): self.tries = 0 def __call__(self, *args): self.tries += 1 if self.tries > 4: return True else: raise NotCalledEnough f = TroublsomeFunction() assert retry_apply(f, (1, 2, 3), tries=5) assert f.tries == 5 with assert_throws(NotCalledEnough): f = TroublsomeFunction() print retry_apply(f, (10, ), tries=2) def create_trouble(tries_needs, attempts): calls = [] @retry(tries=attempts, pause=0.0) def troublesome(a, kw=None): "I'm a troublesome function!" assert a == 'A' and kw == 'KW' calls.append(1) if len(calls) < tries_needs: raise NotCalledEnough else: return 'the secret' assert troublesome.__doc__ == "I'm a troublesome function!" assert troublesome.__name__ == 'troublesome' troublesome('A', kw='KW') create_trouble(4, 4) with assert_throws(NotCalledEnough): create_trouble(4, 2) @retry(tries=4, pause=0.0) def broken_function(): raise NotImplementedError with assert_throws(NotImplementedError): broken_function()
def test_retry(): class NotCalledEnough(Exception): pass class TroublsomeFunction(object): "Function-like object which must be called >=4 times before succeeding." def __init__(self): self.tries = 0 def __call__(self, *args): self.tries += 1 if self.tries > 4: return True else: raise NotCalledEnough f = TroublsomeFunction() assert retry_apply(f, (1,2,3), tries=5) assert f.tries == 5 with assert_throws(NotCalledEnough): f = TroublsomeFunction() print retry_apply(f, (10,), tries=2) def create_trouble(tries_needs, attempts): calls = [] @retry(tries=attempts, pause=0.0) def troublesome(a, kw=None): "I'm a troublesome function!" assert a == 'A' and kw == 'KW' calls.append(1) if len(calls) < tries_needs: raise NotCalledEnough else: return 'the secret' assert troublesome.__doc__ == "I'm a troublesome function!" assert troublesome.__name__ == 'troublesome' troublesome('A', kw='KW') create_trouble(4, 4) with assert_throws(NotCalledEnough): create_trouble(4, 2) @retry(tries=4, pause=0.0) def broken_function(): raise NotImplementedError with assert_throws(NotImplementedError): broken_function()
def test_timed(): @timelimit(1.0) def sleepy_function(x): time.sleep(x) with assert_throws(TimeoutError): sleepy_function(3.0) sleepy_function(0.2) @timelimit(1) def raises_errors(): return 1/0 with assert_throws(ZeroDivisionError): raises_errors()
def test_timed(): @timelimit(1.0) def sleepy_function(x): time.sleep(x) with assert_throws(TimeoutError): sleepy_function(3.0) sleepy_function(0.2) @timelimit(1) def raises_errors(): return 1 / 0 with assert_throws(ZeroDivisionError): raises_errors()