Merge "Fix the cache interface to use time= by default."

This commit is contained in:
Jenkins
2013-06-26 22:05:18 +00:00
committed by Gerrit Code Review
2 changed files with 21 additions and 15 deletions

View File

@@ -331,7 +331,6 @@ class AuthProtocol(object):
# Token caching via memcache # Token caching via memcache
self._cache = None self._cache = None
self._use_keystone_cache = False
self._cache_initialized = False # cache already initialzied? self._cache_initialized = False # cache already initialzied?
# memcache value treatment, ENCRYPT or MAC # memcache value treatment, ENCRYPT or MAC
self._memcache_security_strategy = \ self._memcache_security_strategy = \
@@ -373,7 +372,6 @@ class AuthProtocol(object):
else: else:
# use Keystone memcache # use Keystone memcache
self._cache = memorycache.get_client(memcache_servers) self._cache = memorycache.get_client(memcache_servers)
self._use_keystone_cache = True
self._cache_initialized = True self._cache_initialized = True
def _conf_get(self, name): def _conf_get(self, name):
@@ -915,14 +913,16 @@ class AuthProtocol(object):
cache_key = CACHE_KEY_TEMPLATE % memcache_crypt.get_cache_key(keys) cache_key = CACHE_KEY_TEMPLATE % memcache_crypt.get_cache_key(keys)
data_to_store = memcache_crypt.protect_data(keys, serialized_data) data_to_store = memcache_crypt.protect_data(keys, serialized_data)
# we need to special-case set() because of the incompatibility between # Historically the swift cache conection used the argument
# Swift MemcacheRing and python-memcached. See # timeout= for the cache timeout, but this has been unified
# https://bugs.launchpad.net/swift/+bug/1095730 # with the official python memcache client with time= since
if self._use_keystone_cache: # grizzly, we still need to handle folsom for a while until
# this could get removed.
try:
self._cache.set(cache_key, self._cache.set(cache_key,
data_to_store, data_to_store,
time=self.token_cache_time) time=self.token_cache_time)
else: except(TypeError):
self._cache.set(cache_key, self._cache.set(cache_key,
data_to_store, data_to_store,
timeout=self.token_cache_time) timeout=self.token_cache_time)

View File

@@ -414,10 +414,10 @@ class DisableModuleFixture(fixtures.Fixture):
sys.meta_path.insert(0, finder) sys.meta_path.insert(0, finder)
class FakeSwiftMemcacheRing(memorycache.Client): class FakeSwiftOldMemcacheClient(memorycache.Client):
# NOTE(vish): swift memcache uses param timeout instead of time # NOTE(vish,chmou): old swift memcache uses param timeout instead of time
def set(self, key, value, timeout=0, min_compress_len=0): def set(self, key, value, timeout=0, min_compress_len=0):
sup = super(FakeSwiftMemcacheRing, self) sup = super(FakeSwiftOldMemcacheClient, self)
sup.set(key, value, timeout, min_compress_len) sup.set(key, value, timeout, min_compress_len)
@@ -1036,16 +1036,18 @@ class AuthTokenMiddlewareTest(BaseAuthTokenMiddlewareTest):
self.assertRaises(auth_token.InvalidUserToken, self.assertRaises(auth_token.InvalidUserToken,
self._get_cached_token, token) self._get_cached_token, token)
def test_memcache_set_expired(self): def test_memcache_set_expired(self, extra_conf={}, extra_environ={}):
token_cache_time = 10 token_cache_time = 10
conf = { conf = {
'token_cache_time': token_cache_time, 'token_cache_time': token_cache_time,
'signing_dir': CERTDIR, 'signing_dir': CERTDIR,
} }
conf.update(extra_conf)
self.set_middleware(conf=conf) self.set_middleware(conf=conf)
req = webob.Request.blank('/') req = webob.Request.blank('/')
token = self.token_dict['signed_token_scoped'] token = self.token_dict['signed_token_scoped']
req.headers['X-Auth-Token'] = token req.headers['X-Auth-Token'] = token
req.environ.update(extra_environ)
try: try:
now = datetime.datetime.utcnow() now = datetime.datetime.utcnow()
timeutils.set_time_override(now) timeutils.set_time_override(now)
@@ -1057,11 +1059,15 @@ class AuthTokenMiddlewareTest(BaseAuthTokenMiddlewareTest):
finally: finally:
timeutils.clear_time_override() timeutils.clear_time_override()
def test_old_swift_memcache_set_expired(self):
extra_conf = {'cache': 'swift.cache'}
extra_environ = {'swift.cache': FakeSwiftOldMemcacheClient()}
self.test_memcache_set_expired(extra_conf, extra_environ)
def test_swift_memcache_set_expired(self): def test_swift_memcache_set_expired(self):
self.middleware._cache = FakeSwiftMemcacheRing() extra_conf = {'cache': 'swift.cache'}
self.middleware._use_keystone_cache = False extra_environ = {'swift.cache': memorycache.Client()}
self.middleware._cache_initialized = True self.test_memcache_set_expired(extra_conf, extra_environ)
self.test_memcache_set_expired()
def test_use_cache_from_env(self): def test_use_cache_from_env(self):
env = {'swift.cache': 'CACHE_TEST'} env = {'swift.cache': 'CACHE_TEST'}