Пример #1
0
    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)
Пример #2
0
    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")
Пример #3
0
    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")
Пример #4
0
    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")
Пример #5
0
    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)