def test_resource_throttle_retry_policy_default_retry_after(self):
        connection_policy = Test_retry_policy_tests.connectionPolicy
        connection_policy.RetryOptions = retry_options.RetryOptions(5)

        client = cosmos_client.CosmosClient(
            Test_retry_policy_tests.host,
            {'masterKey': Test_retry_policy_tests.masterKey},
            connection_policy)

        self.OriginalExecuteFunction = retry_utility._ExecuteFunction
        retry_utility._ExecuteFunction = self._MockExecuteFunction

        document_definition = {
            'id': 'doc',
            'name': 'sample document',
            'key': 'value'
        }

        try:
            client.CreateItem(self.created_collection['_self'],
                              document_definition)
        except errors.HTTPFailure as e:
            self.assertEqual(e.status_code, StatusCodes.TOO_MANY_REQUESTS)
            self.assertEqual(
                connection_policy.RetryOptions.MaxRetryAttemptCount,
                client.last_response_headers[HttpHeaders.ThrottleRetryCount])
            self.assertGreaterEqual(
                client.last_response_headers[
                    HttpHeaders.ThrottleRetryWaitTimeInMs],
                connection_policy.RetryOptions.MaxRetryAttemptCount *
                self.retry_after_in_milliseconds)

        retry_utility._ExecuteFunction = self.OriginalExecuteFunction
    def test_resource_throttle_retry_policy_default_retry_after(self):
        connection_policy = Test_retry_policy_tests.connectionPolicy
        connection_policy.RetryOptions = retry_options.RetryOptions(5)

        self.OriginalExecuteFunction = retry_utility._ExecuteFunction
        try:
            retry_utility._ExecuteFunction = self._MockExecuteFunction

            document_definition = {
                'id': 'doc',
                'name': 'sample document',
                'key': 'value'
            }

            try:
                self.created_collection.create_item(body=document_definition)
            except errors.HTTPFailure as e:
                self.assertEqual(e.status_code, StatusCodes.TOO_MANY_REQUESTS)
                self.assertEqual(
                    connection_policy.RetryOptions.MaxRetryAttemptCount,
                    self.created_collection.client_connection.
                    last_response_headers[HttpHeaders.ThrottleRetryCount])
                self.assertGreaterEqual(
                    self.created_collection.client_connection.
                    last_response_headers[
                        HttpHeaders.ThrottleRetryWaitTimeInMs],
                    connection_policy.RetryOptions.MaxRetryAttemptCount *
                    self.retry_after_in_milliseconds)
        finally:
            retry_utility._ExecuteFunction = self.OriginalExecuteFunction
Example #3
0
 def __init__(self):
     self.RequestTimeout = self.__defaultRequestTimeout
     self.MediaRequestTimeout = self.__defaultMediaRequestTimeout
     self.ConnectionMode = ConnectionMode.Gateway
     self.MediaReadMode = MediaReadMode.Buffered
     self.SSLConfiguration = None
     self.ProxyConfiguration = None
     self.EnableEndpointDiscovery = True
     self.PreferredLocations = []
     self.RetryOptions = retry_options.RetryOptions()
     self.DisableSSLVerification = False
     self.UseMultipleWriteLocations = False