예제 #1
0
    def test_resource_throttle_retry_policy_query(self):
        connection_policy = documents.ConnectionPolicy()
        connection_policy.RetryOptions = retry_options.RetryOptions(5)

        client = document_client.DocumentClient(Test_retry_policy_tests.host, {'masterKey': Test_retry_policy_tests.masterKey}, connection_policy)
        
        document_definition = { 'id': 'doc',
                                'name': 'sample document',
                                'key': 'value'} 

        client.CreateDocument(self.created_collection['_self'], document_definition)

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

        try:
            list(client.QueryDocuments(
            self.created_collection['_self'],
            {
                'query': 'SELECT * FROM root r WHERE r.id=@id',
                'parameters': [
                    { 'name':'@id', 'value':document_definition['id'] }
                ]
            }))
        except errors.HTTPFailure as e:
            self.assertEqual(e.status_code, 429)
            self.assertEqual(connection_policy.RetryOptions.MaxRetryAttemptCount, client.last_response_headers[http_constants.HttpHeaders.ThrottleRetryCount])
            self.assertGreaterEqual(client.last_response_headers[http_constants.HttpHeaders.ThrottleRetryWaitTimeInMs], connection_policy.RetryOptions.MaxRetryAttemptCount * self.retry_after_in_milliseconds)

        retry_utility._ExecuteFunction = self.OriginalExecuteFunction
예제 #2
0
    def test_resource_throttle_retry_policy_fixed_retry_after(self):
        connection_policy = documents.ConnectionPolicy()
        connection_policy.RetryOptions = retry_options.RetryOptions(5, 2000)

        client = document_client.DocumentClient(
            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.CreateDocument(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 *
                connection_policy.RetryOptions.FixedRetryIntervalInMilliseconds
            )

        retry_utility._ExecuteFunction = self.OriginalExecuteFunction
예제 #3
0
    def test_resource_throttle_retry_policy_max_wait_time(self):
        connection_policy = documents.ConnectionPolicy()
        connection_policy.RetryOptions = retry_options.RetryOptions(5, 2000, 3)

        client = document_client.DocumentClient(
            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.CreateDocument(self.created_collection['_self'],
                                  document_definition)
        except errors.HTTPFailure as e:
            self.assertEqual(e.status_code, 429)
            self.assertGreaterEqual(
                client.last_response_headers[
                    http_constants.HttpHeaders.ThrottleRetryWaitTimeInMs],
                connection_policy.RetryOptions.MaxWaitTimeInSeconds * 1000)

        retry_utility._ExecuteFunction = self.OriginalExecuteFunction
예제 #4
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()