Exemple #1
0
    def test_resource_throttle_retry_policy_query(self):
        connection_policy = Test_retry_policy_tests.connectionPolicy
        connection_policy.RetryOptions = retry_options.RetryOptions(5)

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

        self.created_collection.create_item(body=document_definition)

        self.OriginalExecuteFunction = _retry_utility.ExecuteFunction
        try:
            _retry_utility.ExecuteFunction = self._MockExecuteFunction

            try:
                list(self.created_collection.query_items(
                {
                    '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, 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
    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.CosmosHttpResponseError 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
Exemple #3
0
    def test_resource_throttle_retry_policy_max_wait_time(self):
        connection_policy = Test_retry_policy_tests.connectionPolicy
        connection_policy.RetryOptions = retry_options.RetryOptions(5, 2000, 3)

        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.assertGreaterEqual(self.created_collection.client_connection.last_response_headers[HttpHeaders.ThrottleRetryWaitTimeInMs],
                                        connection_policy.RetryOptions.MaxWaitTimeInSeconds * 1000)
        finally:
            _retry_utility.ExecuteFunction = self.OriginalExecuteFunction