Merge "Allow configure the number of http retries"

This commit is contained in:
Jenkins
2013-08-23 02:41:28 +00:00
committed by Gerrit Code Review
2 changed files with 22 additions and 1 deletions

View File

@@ -228,6 +228,10 @@ opts = [
default=None, default=None,
help='Request timeout value for communicating with Identity' help='Request timeout value for communicating with Identity'
' API server.'), ' API server.'),
cfg.IntOpt('http_request_max_retries',
default=3,
help='How many times are we trying to reconnect when'
' communicating with Identity API Server.'),
cfg.StrOpt('http_handler', cfg.StrOpt('http_handler',
default=None, default=None,
help='Allows to pass in the name of a fake http_handler' help='Allows to pass in the name of a fake http_handler'
@@ -428,7 +432,8 @@ class AuthProtocol(object):
self.http_connect_timeout = (http_connect_timeout_cfg and self.http_connect_timeout = (http_connect_timeout_cfg and
int(http_connect_timeout_cfg)) int(http_connect_timeout_cfg))
self.auth_version = None self.auth_version = None
self.http_request_max_retries = 3 self.http_request_max_retries = \
self._conf_get('http_request_max_retries')
def _assert_valid_memcache_protection_config(self): def _assert_valid_memcache_protection_config(self):
if self._memcache_security_strategy: if self._memcache_security_strategy:

View File

@@ -25,6 +25,7 @@ import testtools
import uuid import uuid
import fixtures import fixtures
import mock
import webob import webob
from keystoneclient.common import cms from keystoneclient.common import cms
@@ -992,6 +993,21 @@ class AuthTokenMiddlewareTest(BaseAuthTokenMiddlewareTest):
self.middleware(req.environ, self.start_fake_response) self.middleware(req.environ, self.start_fake_response)
self.assertEqual(self._get_cached_token(token), None) self.assertEqual(self._get_cached_token(token), None)
def test_http_request_max_retries(self):
times_retry = 10
req = webob.Request.blank('/')
token = self.token_dict['uuid_token_default']
req.headers['X-Auth-Token'] = token
self.set_middleware(conf=dict(http_request_max_retries=times_retry))
with mock.patch('time.sleep') as mock_obj:
self.set_fake_http(RaisingHTTPNetworkError)
self.middleware(req.environ, self.start_fake_response)
self.assertEqual(mock_obj.call_count, times_retry)
class CertDownloadMiddlewareTest(BaseAuthTokenMiddlewareTest): class CertDownloadMiddlewareTest(BaseAuthTokenMiddlewareTest):
def setUp(self): def setUp(self):