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
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
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
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()