def test_give_up_after_third_try(self): self.__expect_post().andReturn("i") self.action.expect.response_class.andReturn("j") exception1 = _exn.ProvisionedThroughputExceededException() self.responder.expect("j", "i").andRaise(exception1) self.retry_policy.expect.retry(self.action.object, [exception1]).andReturn(0) self.__expect_post().andReturn("k") self.action.expect.response_class.andReturn("l") exception2 = _exn.ProvisionedThroughputExceededException() self.responder.expect("l", "k").andRaise(exception2) self.retry_policy.expect.retry(self.action.object, [exception1, exception2]).andReturn(0) self.__expect_post().andReturn("m") self.action.expect.response_class.andReturn("n") exception3 = _exn.ProvisionedThroughputExceededException() self.responder.expect("n", "m").andRaise(exception3) self.retry_policy.expect.retry( self.action.object, [exception1, exception2, exception3]).andReturn(None) with self.assertRaises( _exn.ProvisionedThroughputExceededException) as catcher: self.connection(self.action.object) self.assertIs(catcher.exception, exception3)
def test_success_on_fourth_try(self): self.__expect_post().andReturn("i") self.action.expect.response_class.andReturn("j") exception1 = _exn.ProvisionedThroughputExceededException() self.responder.expect("j", "i").andRaise(exception1) self.retry_policy.expect.retry(self.action.object, [exception1]).andReturn(0) self.__expect_post().andReturn("k") self.action.expect.response_class.andReturn("l") exception2 = _exn.ProvisionedThroughputExceededException() self.responder.expect("l", "k").andRaise(exception2) self.retry_policy.expect.retry(self.action.object, [exception1, exception2]).andReturn(0) self.__expect_post().andReturn("m") self.action.expect.response_class.andReturn("n") exception3 = _exn.ProvisionedThroughputExceededException() self.responder.expect("n", "m").andRaise(exception3) self.retry_policy.expect.retry( self.action.object, [exception1, exception2, exception3]).andReturn(0) self.__expect_post().andReturn("o") self.action.expect.response_class.andReturn("p") self.responder.expect("p", "o").andReturn("q") self.assertEqual(self.connection(self.action.object), "q")
def test_success_after_network_error_during_credentials(self): exception = _exn.NetworkError() self.credentials.expect.get().andRaise(exception) self.retry_policy.expect.retry(self.action.object, [exception]).andReturn(0) self.__expect_post().andReturn("k") self.action.expect.response_class.andReturn("l") exception2 = _exn.ProvisionedThroughputExceededException() self.responder.expect("l", "k").andReturn("m") self.assertEqual(self.connection(self.action.object), "m")
def test_success_after_network_error(self): exception = requests.exceptions.RequestException() self.__expect_post().andRaise(exception) self.retry_policy.expect.retry.withArguments( lambda args, kwds: args[0] is self.action.object and isinstance( args[1][0], _exn.NetworkError)).andReturn(0) self.__expect_post().andReturn("k") self.action.expect.response_class.andReturn("l") exception2 = _exn.ProvisionedThroughputExceededException() self.responder.expect("l", "k").andReturn("m") self.assertEqual(self.connection(self.action.object), "m")
def test_failure_on_second_try(self): self.__expect_post().andReturn("i") self.action.expect.response_class.andReturn("j") exception1 = _exn.ProvisionedThroughputExceededException() self.responder.expect("j", "i").andRaise(exception1) self.retry_policy.expect.retry(self.action.object, [exception1]).andReturn(0) self.__expect_post().andReturn("k") self.action.expect.response_class.andReturn("l") exception2 = _exn.UnknownClientError() self.responder.expect("l", "k").andRaise(exception2) with self.assertRaises(_exn.UnknownClientError) as catcher: self.connection(self.action.object) self.assertIs(catcher.exception, exception2)