def test_invoke_retry_exception_no_async(self): class Sleep(object): def __init__(self): self.times_called = 0 self.retry_seconds = [] def __call__(self, retry_seconds): self.times_called += 1 self.retry_seconds.append(retry_seconds) sleep = Sleep() with patch('zato.server.pattern.invoke_retry.sleep', sleep): target = 'target_{}'.format(rand_string()) callback = 'callback_{}'.format(rand_string()) callback_impl_name = 'callback_impl_name_{}'.format(rand_string()) cid = new_cid() expected_result = rand_string() invoking_service = DummyTargetService(callback, callback_impl_name, cid, expected_result, raise_on_invoke=True) ir = InvokeRetry(invoking_service) kwargs = { 'async_fallback': False, 'callback': callback, 'context': { rand_string(): rand_string() }, 'repeats': rand_int(1, 10), 'seconds': 0.01, 'minutes': 0, } kwargs_copy = deepcopy(kwargs) try: ir.invoke(target, 1, 2, 3, **kwargs) except ZatoException as e: expected_msg = retry_limit_reached_msg(kwargs_copy['repeats'], target, kwargs_copy['seconds'], invoking_service.cid) self.assertEquals(e.cid, cid) self.assertEquals(e.message, expected_msg) self.assertEquals(invoking_service.invoke_called_times, kwargs_copy['repeats']) self.assertEquals(sleep.times_called, kwargs_copy['repeats'] - 1) self.assertEquals(sleep.retry_seconds, [kwargs_copy['seconds']] * (kwargs_copy['repeats'] - 1)) else: self.fail('Expected a ZatoException')
def test_invoke_retry_ok(self): target = 'target_{}'.format(rand_string()) callback = 'callback_{}'.format(rand_string()) callback_impl_name = 'callback_impl_name_{}'.format(rand_string()) cid = new_cid() expected_result = rand_string() invoking_service = DummyTargetService(callback, callback_impl_name, cid, expected_result) ir = InvokeRetry(invoking_service) kwargs = { 'async_fallback': True, 'callback': callback, 'context': {rand_string():rand_string()}, 'repeats': rand_int(), 'seconds': rand_int(), 'minutes': 0, 'cid': cid, } result = ir.invoke(target, 1, 2, 3, **kwargs) self.assertEquals(expected_result, result) self.assertTrue(len(invoking_service.invoke_args), 2) self.assertEquals(invoking_service.invoke_args, (target, 1, 2, 3)) self.assertEquals(invoking_service.invoke_kwargs, {'cid':cid})
def test_invoke_retry_exception_has_async(self): target = 'target_{}'.format(rand_string()) callback = 'callback_{}'.format(rand_string()) callback_impl_name = 'callback_impl_name_{}'.format(rand_string()) cid = new_cid() expected_result = rand_string() invoking_service = DummyTargetService(callback, callback_impl_name, cid, expected_result, raise_on_invoke=True) ir = InvokeRetry(invoking_service) kwargs = { 'async_fallback': True, 'callback': callback, 'context': { rand_string(): rand_string() }, 'repeats': rand_int(1, 10), 'seconds': 0.01, 'minutes': 0, } result = ir.invoke(target, 1, 2, 3, **kwargs) self.assertEquals(result, cid)
def test_invoke_retry_ok(self): target = 'target_{}'.format(rand_string()) callback = 'callback_{}'.format(rand_string()) callback_impl_name = 'callback_impl_name_{}'.format(rand_string()) cid = new_cid() expected_result = rand_string() invoking_service = DummyTargetService(callback, callback_impl_name, cid, expected_result) ir = InvokeRetry(invoking_service) kwargs = { 'async_fallback': True, 'callback': callback, 'context': { rand_string(): rand_string() }, 'repeats': rand_int(), 'seconds': rand_int(), 'minutes': 0, 'cid': cid, } result = ir.invoke(target, 1, 2, 3, **kwargs) self.assertEquals(expected_result, result) self.assertTrue(len(invoking_service.invoke_args), 2) self.assertEquals(invoking_service.invoke_args, (target, 1, 2, 3)) self.assertEquals(invoking_service.invoke_kwargs, {'cid': cid})
def test_invoke_retry_exception_no_async(self): class Sleep(object): def __init__(self): self.times_called = 0 self.retry_seconds = [] def __call__(self, retry_seconds): self.times_called += 1 self.retry_seconds.append(retry_seconds) sleep = Sleep() with patch('zato.server.pattern.invoke_retry.sleep', sleep): target = 'target_{}'.format(rand_string()) callback = 'callback_{}'.format(rand_string()) callback_impl_name = 'callback_impl_name_{}'.format(rand_string()) cid = new_cid() expected_result = rand_string() invoking_service = DummyTargetService(callback, callback_impl_name, cid, expected_result, raise_on_invoke=True) ir = InvokeRetry(invoking_service) kwargs = { 'async_fallback': False, 'callback': callback, 'context': {rand_string():rand_string()}, 'repeats': rand_int(1, 10), 'seconds': 0.01, 'minutes': 0, } kwargs_copy = deepcopy(kwargs) try: ir.invoke(target, 1, 2, 3, **kwargs) except ZatoException, e: expected_msg = retry_limit_reached_msg(kwargs_copy['repeats'], target, kwargs_copy['seconds'], invoking_service.cid) self.assertEquals(e.cid, cid) self.assertEquals(e.message, expected_msg) self.assertEquals(invoking_service.invoke_called_times, kwargs_copy['repeats']) self.assertEquals(sleep.times_called, kwargs_copy['repeats']-1) self.assertEquals(sleep.retry_seconds, [kwargs_copy['seconds']] * (kwargs_copy['repeats']-1)) else:
def test_invoke_retry_exception_has_async(self): target = 'target_{}'.format(rand_string()) callback = 'callback_{}'.format(rand_string()) callback_impl_name = 'callback_impl_name_{}'.format(rand_string()) cid = new_cid() expected_result = rand_string() invoking_service = DummyTargetService(callback, callback_impl_name, cid, expected_result, raise_on_invoke=True) ir = InvokeRetry(invoking_service) kwargs = { 'async_fallback': True, 'callback': callback, 'context': {rand_string():rand_string()}, 'repeats': rand_int(1, 10), 'seconds': 0.01, 'minutes': 0, } result = ir.invoke(target, 1, 2, 3, **kwargs) self.assertEquals(result, cid)