Merge "Use the same key for memcache and env['swift.infocache']"

This commit is contained in:
Jenkins 2016-05-19 15:53:20 +00:00 committed by Gerrit Code Review
commit 40eace99c3
13 changed files with 182 additions and 201 deletions

View File

@ -107,18 +107,6 @@ def delay_denial(func):
return func return func
def get_account_memcache_key(account):
cache_key, env_key = _get_cache_key(account, None)
return cache_key
def get_container_memcache_key(account, container):
if not container:
raise ValueError("container not provided")
cache_key, env_key = _get_cache_key(account, container)
return cache_key
def _prep_headers_to_info(headers, server_type): def _prep_headers_to_info(headers, server_type):
""" """
Helper method that iterates once over a dict of headers, Helper method that iterates once over a dict of headers,
@ -424,17 +412,24 @@ def get_account_info(env, app, swift_source=None):
return info return info
def _get_cache_key(account, container): def get_cache_key(account, container=None, obj=None):
""" """
Get the keys for both memcache (cache_key) and env (env_key) Get the keys for both memcache and env['swift.infocache'] (cache_key)
where info about accounts and containers is cached where info about accounts, containers, and objects is cached
:param account: The name of the account :param account: The name of the account
:param container: The name of the container (or None if account) :param container: The name of the container (or None if account)
:returns: a tuple of (cache_key, env_key) :param obj: The name of the object (or None if account or container)
:returns: a string cache_key
""" """
if container: if obj:
if not (account and container):
raise ValueError('Object cache key requires account and container')
cache_key = 'object/%s/%s/%s' % (account, container, obj)
elif container:
if not account:
raise ValueError('Container cache key requires account')
cache_key = 'container/%s/%s' % (account, container) cache_key = 'container/%s/%s' % (account, container)
else: else:
cache_key = 'account/%s' % account cache_key = 'account/%s' % account
@ -442,22 +437,7 @@ def _get_cache_key(account, container):
# This allows caching both account and container and ensures that when we # This allows caching both account and container and ensures that when we
# copy this env to form a new request, it won't accidentally reuse the # copy this env to form a new request, it won't accidentally reuse the
# old container or account info # old container or account info
env_key = 'swift.%s' % cache_key return cache_key
return cache_key, env_key
def get_object_env_key(account, container, obj):
"""
Get the keys for env (env_key) where info about object is cached
:param account: The name of the account
:param container: The name of the container
:param obj: The name of the object
:returns: a string env_key
"""
env_key = 'swift.object/%s/%s/%s' % (account,
container, obj)
return env_key
def set_info_cache(app, env, account, container, resp): def set_info_cache(app, env, account, container, resp):
@ -483,7 +463,7 @@ def set_info_cache(app, env, account, container, resp):
cache_time = int(resp.headers.get( cache_time = int(resp.headers.get(
'X-Backend-Recheck-Account-Existence', 'X-Backend-Recheck-Account-Existence',
DEFAULT_RECHECK_ACCOUNT_EXISTENCE)) DEFAULT_RECHECK_ACCOUNT_EXISTENCE))
cache_key, env_key = _get_cache_key(account, container) cache_key = get_cache_key(account, container)
if resp: if resp:
if resp.status_int in (HTTP_NOT_FOUND, HTTP_GONE): if resp.status_int in (HTTP_NOT_FOUND, HTTP_GONE):
@ -494,7 +474,7 @@ def set_info_cache(app, env, account, container, resp):
# Next actually set both memcache and the env cache # Next actually set both memcache and the env cache
memcache = getattr(app, 'memcache', None) or env.get('swift.cache') memcache = getattr(app, 'memcache', None) or env.get('swift.cache')
if not cache_time: if not cache_time:
infocache.pop(env_key, None) infocache.pop(cache_key, None)
if memcache: if memcache:
memcache.delete(cache_key) memcache.delete(cache_key)
return return
@ -505,7 +485,7 @@ def set_info_cache(app, env, account, container, resp):
info = headers_to_account_info(resp.headers, resp.status_int) info = headers_to_account_info(resp.headers, resp.status_int)
if memcache: if memcache:
memcache.set(cache_key, info, time=cache_time) memcache.set(cache_key, info, time=cache_time)
infocache[env_key] = info infocache[cache_key] = info
return info return info
@ -525,14 +505,14 @@ def set_object_info_cache(app, env, account, container, obj, resp):
:returns: the object info :returns: the object info
""" """
env_key = get_object_env_key(account, container, obj) cache_key = get_cache_key(account, container, obj)
if 'swift.infocache' in env and not resp: if 'swift.infocache' in env and not resp:
env['swift.infocache'].pop(env_key, None) env['swift.infocache'].pop(cache_key, None)
return return
info = headers_to_object_info(resp.headers, resp.status_int) info = headers_to_object_info(resp.headers, resp.status_int)
env.setdefault('swift.infocache', {})[env_key] = info env.setdefault('swift.infocache', {})[cache_key] = info
return info return info
@ -559,9 +539,9 @@ def _get_info_from_infocache(env, account, container=None):
:returns: a dictionary of cached info on cache hit, None on miss :returns: a dictionary of cached info on cache hit, None on miss
""" """
_junk, env_key = _get_cache_key(account, container) cache_key = get_cache_key(account, container)
if 'swift.infocache' in env and env_key in env['swift.infocache']: if 'swift.infocache' in env and cache_key in env['swift.infocache']:
return env['swift.infocache'][env_key] return env['swift.infocache'][cache_key]
return None return None
@ -577,7 +557,7 @@ def _get_info_from_memcache(app, env, account, container=None):
:returns: a dictionary of cached info on cache hit, None on miss. Also :returns: a dictionary of cached info on cache hit, None on miss. Also
returns None if memcache is not in use. returns None if memcache is not in use.
""" """
cache_key, env_key = _get_cache_key(account, container) cache_key = get_cache_key(account, container)
memcache = getattr(app, 'memcache', None) or env.get('swift.cache') memcache = getattr(app, 'memcache', None) or env.get('swift.cache')
if memcache: if memcache:
info = memcache.get(cache_key) info = memcache.get(cache_key)
@ -589,7 +569,7 @@ def _get_info_from_memcache(app, env, account, container=None):
for subkey, value in info[key].items(): for subkey, value in info[key].items():
if isinstance(value, six.text_type): if isinstance(value, six.text_type):
info[key][subkey] = value.encode("utf-8") info[key][subkey] = value.encode("utf-8")
env.setdefault('swift.infocache', {})[env_key] = info env.setdefault('swift.infocache', {})[cache_key] = info
return info return info
return None return None
@ -680,8 +660,8 @@ def _get_object_info(app, env, account, container, obj, swift_source=None):
:param obj: The unquoted name of the object :param obj: The unquoted name of the object
:returns: the cached info or None if cannot be retrieved :returns: the cached info or None if cannot be retrieved
""" """
env_key = get_object_env_key(account, container, obj) cache_key = get_cache_key(account, container, obj)
info = env.get('swift.infocache', {}).get(env_key) info = env.get('swift.infocache', {}).get(cache_key)
if info: if info:
return info return info
# Not in cache, let's try the object servers # Not in cache, let's try the object servers

View File

@ -18,9 +18,8 @@ from swift.common.swob import Request, wsgify, HTTPForbidden, \
from swift.common.middleware import account_quotas, copy from swift.common.middleware import account_quotas, copy
from swift.proxy.controllers.base import _get_cache_key, \ from swift.proxy.controllers.base import get_cache_key, \
headers_to_account_info, get_object_env_key, \ headers_to_account_info, headers_to_object_info
headers_to_object_info
class FakeCache(object): class FakeCache(object):
@ -58,8 +57,8 @@ class FakeApp(object):
return aresp(env, start_response) return aresp(env, start_response)
if env['REQUEST_METHOD'] == "HEAD" and \ if env['REQUEST_METHOD'] == "HEAD" and \
env['PATH_INFO'] == '/v1/a/c2/o2': env['PATH_INFO'] == '/v1/a/c2/o2':
env_key = get_object_env_key('a', 'c2', 'o2') cache_key = get_cache_key('a', 'c2', 'o2')
env.setdefault('swift.infocache', {})[env_key] = \ env.setdefault('swift.infocache', {})[cache_key] = \
headers_to_object_info(self.headers, 200) headers_to_object_info(self.headers, 200)
start_response('200 OK', self.headers) start_response('200 OK', self.headers)
elif env['REQUEST_METHOD'] == "HEAD" and \ elif env['REQUEST_METHOD'] == "HEAD" and \
@ -67,8 +66,8 @@ class FakeApp(object):
start_response('404 Not Found', []) start_response('404 Not Found', [])
else: else:
# Cache the account_info (same as a real application) # Cache the account_info (same as a real application)
cache_key, env_key = _get_cache_key('a', None) cache_key = get_cache_key('a')
env.setdefault('swift.infocache', {})[env_key] = \ env.setdefault('swift.infocache', {})[cache_key] = \
headers_to_account_info(self.headers, 200) headers_to_account_info(self.headers, 200)
start_response('200 OK', self.headers) start_response('200 OK', self.headers)
return [] return []

View File

@ -23,7 +23,7 @@ import mock
from swift.common import swob from swift.common import swob
from swift.common.middleware import container_sync from swift.common.middleware import container_sync
from swift.proxy.controllers.base import _get_cache_key from swift.proxy.controllers.base import get_cache_key
from swift.proxy.controllers.info import InfoController from swift.proxy.controllers.info import InfoController
from test.unit import FakeLogger from test.unit import FakeLogger
@ -206,7 +206,7 @@ cluster_dfw1 = http://dfw1.host/v1/
req = swob.Request.blank( req = swob.Request.blank(
'/v1/a/c', headers={'x-container-sync-auth': 'US nonce sig'}) '/v1/a/c', headers={'x-container-sync-auth': 'US nonce sig'})
infocache = req.environ.setdefault('swift.infocache', {}) infocache = req.environ.setdefault('swift.infocache', {})
infocache[_get_cache_key('a', 'c')[1]] = {'sync_key': 'abc'} infocache[get_cache_key('a', 'c')] = {'sync_key': 'abc'}
resp = req.get_response(self.sync) resp = req.get_response(self.sync)
self.assertEqual(resp.status, '401 Unauthorized') self.assertEqual(resp.status, '401 Unauthorized')
self.assertEqual( self.assertEqual(
@ -226,7 +226,7 @@ cluster_dfw1 = http://dfw1.host/v1/
'x-container-sync-auth': 'US nonce ' + sig, 'x-container-sync-auth': 'US nonce ' + sig,
'x-backend-inbound-x-timestamp': ts}) 'x-backend-inbound-x-timestamp': ts})
infocache = req.environ.setdefault('swift.infocache', {}) infocache = req.environ.setdefault('swift.infocache', {})
infocache[_get_cache_key('a', 'c')[1]] = {'sync_key': 'abc'} infocache[get_cache_key('a', 'c')] = {'sync_key': 'abc'}
resp = req.get_response(self.sync) resp = req.get_response(self.sync)
self.assertEqual(resp.status, '200 OK') self.assertEqual(resp.status, '200 OK')
self.assertEqual(resp.body, 'Response to Authorized Request') self.assertEqual(resp.body, 'Response to Authorized Request')
@ -241,7 +241,7 @@ cluster_dfw1 = http://dfw1.host/v1/
req = swob.Request.blank( req = swob.Request.blank(
'/v1/a/c', headers={'x-container-sync-auth': 'US nonce ' + sig}) '/v1/a/c', headers={'x-container-sync-auth': 'US nonce ' + sig})
infocache = req.environ.setdefault('swift.infocache', {}) infocache = req.environ.setdefault('swift.infocache', {})
infocache[_get_cache_key('a', 'c')[1]] = {'sync_key': 'abc'} infocache[get_cache_key('a', 'c')] = {'sync_key': 'abc'}
resp = req.get_response(self.sync) resp = req.get_response(self.sync)
self.assertEqual(resp.status, '200 OK') self.assertEqual(resp.status, '200 OK')
self.assertEqual(resp.body, 'Response to Authorized Request') self.assertEqual(resp.body, 'Response to Authorized Request')

View File

@ -24,6 +24,7 @@ from six import BytesIO
from swift.common.swob import Request, Response from swift.common.swob import Request, Response
from swift.common.middleware import tempauth, formpost from swift.common.middleware import tempauth, formpost
from swift.common.utils import split_path from swift.common.utils import split_path
from swift.proxy.controllers.base import get_cache_key
class FakeApp(object): class FakeApp(object):
@ -131,7 +132,7 @@ class TestFormPost(unittest.TestCase):
_junk, account, _junk, _junk = split_path(path, 2, 4) _junk, account, _junk, _junk = split_path(path, 2, 4)
req.environ.setdefault('swift.infocache', {}) req.environ.setdefault('swift.infocache', {})
req.environ['swift.infocache']['swift.account/' + account] = \ req.environ['swift.infocache'][get_cache_key(account)] = \
self._fake_cache_env(account, tempurl_keys) self._fake_cache_env(account, tempurl_keys)
return req return req
@ -249,7 +250,7 @@ class TestFormPost(unittest.TestCase):
sig, env, body = self._make_sig_env_body( sig, env, body = self._make_sig_env_body(
'/v1/AUTH_test/container', '', 1024, 10, int(time() - 10), key) '/v1/AUTH_test/container', '', 1024, 10, int(time() - 10), key)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
@ -354,9 +355,10 @@ class TestFormPost(unittest.TestCase):
'SERVER_PORT': '8080', 'SERVER_PORT': '8080',
'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_PROTOCOL': 'HTTP/1.0',
'swift.infocache': { 'swift.infocache': {
'swift.account/AUTH_test': self._fake_cache_env( get_cache_key('AUTH_test'): self._fake_cache_env(
'AUTH_test', [key]), 'AUTH_test', [key]),
'swift.container/AUTH_test/container': {'meta': {}}}, get_cache_key('AUTH_test', 'container'): {
'meta': {}}},
'wsgi.errors': wsgi_errors, 'wsgi.errors': wsgi_errors,
'wsgi.input': wsgi_input, 'wsgi.input': wsgi_input,
'wsgi.multiprocess': False, 'wsgi.multiprocess': False,
@ -471,9 +473,10 @@ class TestFormPost(unittest.TestCase):
'SERVER_PORT': '8080', 'SERVER_PORT': '8080',
'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_PROTOCOL': 'HTTP/1.0',
'swift.infocache': { 'swift.infocache': {
'swift.account/AUTH_test': self._fake_cache_env( get_cache_key('AUTH_test'): self._fake_cache_env(
'AUTH_test', [key]), 'AUTH_test', [key]),
'swift.container/AUTH_test/container': {'meta': {}}}, get_cache_key('AUTH_test', 'container'): {
'meta': {}}},
'wsgi.errors': wsgi_errors, 'wsgi.errors': wsgi_errors,
'wsgi.input': wsgi_input, 'wsgi.input': wsgi_input,
'wsgi.multiprocess': False, 'wsgi.multiprocess': False,
@ -591,9 +594,10 @@ class TestFormPost(unittest.TestCase):
'SERVER_PORT': '8080', 'SERVER_PORT': '8080',
'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_PROTOCOL': 'HTTP/1.0',
'swift.infocache': { 'swift.infocache': {
'swift.account/AUTH_test': self._fake_cache_env( get_cache_key('AUTH_test'): self._fake_cache_env(
'AUTH_test', [key]), 'AUTH_test', [key]),
'swift.container/AUTH_test/container': {'meta': {}}}, get_cache_key('AUTH_test', 'container'): {
'meta': {}}},
'wsgi.errors': wsgi_errors, 'wsgi.errors': wsgi_errors,
'wsgi.input': wsgi_input, 'wsgi.input': wsgi_input,
'wsgi.multiprocess': False, 'wsgi.multiprocess': False,
@ -707,9 +711,10 @@ class TestFormPost(unittest.TestCase):
'SERVER_PORT': '8080', 'SERVER_PORT': '8080',
'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_PROTOCOL': 'HTTP/1.0',
'swift.infocache': { 'swift.infocache': {
'swift.account/AUTH_test': self._fake_cache_env( get_cache_key('AUTH_test'): self._fake_cache_env(
'AUTH_test', [key]), 'AUTH_test', [key]),
'swift.container/AUTH_test/container': {'meta': {}}}, get_cache_key('AUTH_test', 'container'): {
'meta': {}}},
'wsgi.errors': wsgi_errors, 'wsgi.errors': wsgi_errors,
'wsgi.input': wsgi_input, 'wsgi.input': wsgi_input,
'wsgi.multiprocess': False, 'wsgi.multiprocess': False,
@ -753,10 +758,10 @@ class TestFormPost(unittest.TestCase):
'/v1/AUTH_test/container', 'http://brim.net', 5, 10, '/v1/AUTH_test/container', 'http://brim.net', 5, 10,
int(time() + 86400), key) int(time() + 86400), key)
env['wsgi.input'] = BytesIO(b'XX' + b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'XX' + b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
env['swift.infocache']['swift.container/AUTH_test/container'] = { env['swift.infocache'][get_cache_key(
'meta': {}} 'AUTH_test', 'container')] = {'meta': {}}
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
self.auth = tempauth.filter_factory({})(self.app) self.auth = tempauth.filter_factory({})(self.app)
@ -790,10 +795,10 @@ class TestFormPost(unittest.TestCase):
'/v1/AUTH_test/container', 'http://brim.net', 5, 10, '/v1/AUTH_test/container', 'http://brim.net', 5, 10,
int(time() + 86400), key) int(time() + 86400), key)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
env['swift.infocache']['swift.container/AUTH_test/container'] = { env['swift.infocache'][get_cache_key(
'meta': {}} 'AUTH_test', 'container')] = {'meta': {}}
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
self.auth = tempauth.filter_factory({})(self.app) self.auth = tempauth.filter_factory({})(self.app)
@ -822,10 +827,10 @@ class TestFormPost(unittest.TestCase):
'/v1/AUTH_test/container', 'http://brim.net', 1024, 1, '/v1/AUTH_test/container', 'http://brim.net', 1024, 1,
int(time() + 86400), key) int(time() + 86400), key)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
env['swift.infocache']['swift.container/AUTH_test/container'] = { env['swift.infocache'][get_cache_key(
'meta': {}} 'AUTH_test', 'container')] = {'meta': {}}
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
self.auth = tempauth.filter_factory({})(self.app) self.auth = tempauth.filter_factory({})(self.app)
@ -864,10 +869,10 @@ class TestFormPost(unittest.TestCase):
'/v1/AUTH_test/container', '', 1024, 10, int(time() + 86400), key) '/v1/AUTH_test/container', '', 1024, 10, int(time() + 86400), key)
env['QUERY_STRING'] = 'this=should&not=get&passed' env['QUERY_STRING'] = 'this=should&not=get&passed'
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
env['swift.infocache']['swift.container/AUTH_test/container'] = { env['swift.infocache'][get_cache_key(
'meta': {}} 'AUTH_test', 'container')] = {'meta': {}}
self.app = FakeApp( self.app = FakeApp(
iter([('201 Created', {}, ''), iter([('201 Created', {}, ''),
('201 Created', {}, '')]), ('201 Created', {}, '')]),
@ -900,10 +905,10 @@ class TestFormPost(unittest.TestCase):
'/v1/AUTH_test/container', 'http://brim.net', 1024, 10, '/v1/AUTH_test/container', 'http://brim.net', 1024, 10,
int(time() + 86400), key) int(time() + 86400), key)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
env['swift.infocache']['swift.container/AUTH_test/container'] = { env['swift.infocache'][get_cache_key(
'meta': {}} 'AUTH_test', 'container')] = {'meta': {}}
self.app = FakeApp(iter([('404 Not Found', {}, ''), self.app = FakeApp(iter([('404 Not Found', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
self.auth = tempauth.filter_factory({})(self.app) self.auth = tempauth.filter_factory({})(self.app)
@ -987,10 +992,10 @@ class TestFormPost(unittest.TestCase):
if six.PY3: if six.PY3:
wsgi_input = wsgi_input.encode('utf-8') wsgi_input = wsgi_input.encode('utf-8')
env['wsgi.input'] = BytesIO(wsgi_input) env['wsgi.input'] = BytesIO(wsgi_input)
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
env['swift.infocache']['swift.container/AUTH_test/container'] = { env['swift.infocache'][get_cache_key(
'meta': {}} 'AUTH_test', 'container')] = {'meta': {}}
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
self.auth = tempauth.filter_factory({})(self.app) self.auth = tempauth.filter_factory({})(self.app)
@ -1059,10 +1064,10 @@ class TestFormPost(unittest.TestCase):
if six.PY3: if six.PY3:
wsgi_input = wsgi_input.encode('utf-8') wsgi_input = wsgi_input.encode('utf-8')
env['wsgi.input'] = BytesIO(wsgi_input) env['wsgi.input'] = BytesIO(wsgi_input)
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
env['swift.infocache']['swift.container/AUTH_test/container'] = { env['swift.infocache'][get_cache_key(
'meta': {}} 'AUTH_test', 'container')] = {'meta': {}}
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
self.auth = tempauth.filter_factory({})(self.app) self.auth = tempauth.filter_factory({})(self.app)
@ -1100,10 +1105,10 @@ class TestFormPost(unittest.TestCase):
'/v1/AUTH_test/container', 'http://redirect', 1024, 10, '/v1/AUTH_test/container', 'http://redirect', 1024, 10,
int(time() + 86400), key, user_agent=False) int(time() + 86400), key, user_agent=False)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
env['swift.infocache']['swift.container/AUTH_test/container'] = { env['swift.infocache'][get_cache_key(
'meta': {}} 'AUTH_test', 'container')] = {'meta': {}}
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
self.auth = tempauth.filter_factory({})(self.app) self.auth = tempauth.filter_factory({})(self.app)
@ -1122,10 +1127,10 @@ class TestFormPost(unittest.TestCase):
'/v1/AUTH_test/container', 'http://redirect', 1024, 10, '/v1/AUTH_test/container', 'http://redirect', 1024, 10,
int(time() + 86400), key, user_agent=False) int(time() + 86400), key, user_agent=False)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
env['swift.infocache']['swift.container/AUTH_test/container'] = { env['swift.infocache'][get_cache_key(
'meta': {}} 'AUTH_test', 'container')] = {'meta': {}}
env['HTTP_ORIGIN'] = 'http://localhost:5000' env['HTTP_ORIGIN'] = 'http://localhost:5000'
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', ('201 Created',
@ -1152,10 +1157,10 @@ class TestFormPost(unittest.TestCase):
int(time() + 86400), key) int(time() + 86400), key)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
# Stick it in X-Account-Meta-Temp-URL-Key-2 and make sure we get it # Stick it in X-Account-Meta-Temp-URL-Key-2 and make sure we get it
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', ['bert', key])) self._fake_cache_env('AUTH_test', [key]))
env['swift.infocache']['swift.container/AUTH_test/container'] = \ env['swift.infocache'][get_cache_key(
{'meta': {}} 'AUTH_test', 'container')] = {'meta': {}}
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
self.auth = tempauth.filter_factory({})(self.app) self.auth = tempauth.filter_factory({})(self.app)
@ -1189,11 +1194,11 @@ class TestFormPost(unittest.TestCase):
'/v1/AUTH_test/container', 'http://redirect', 1024, 10, '/v1/AUTH_test/container', 'http://redirect', 1024, 10,
int(time() + 86400), key) int(time() + 86400), key)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test')) self._fake_cache_env('AUTH_test'))
# Stick it in X-Container-Meta-Temp-URL-Key-2 and ensure we get it # Stick it in X-Container-Meta-Temp-URL-Key-2 and ensure we get it
env['swift.infocache']['swift.container/AUTH_test/container'] = { env['swift.infocache'][get_cache_key(
'meta': meta} 'AUTH_test', 'container')] = {'meta': meta}
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
self.auth = tempauth.filter_factory({})(self.app) self.auth = tempauth.filter_factory({})(self.app)
@ -1217,10 +1222,10 @@ class TestFormPost(unittest.TestCase):
'/v1/AUTH_test/container', 'http://redirect', 1024, 10, '/v1/AUTH_test/container', 'http://redirect', 1024, 10,
int(time() + 86400), key) int(time() + 86400), key)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
env['swift.infocache']['swift.container/AUTH_test/container'] = { env['swift.infocache'][get_cache_key(
'meta': {}} 'AUTH_test', 'container')] = {'meta': {}}
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
self.auth = tempauth.filter_factory({})(self.app) self.auth = tempauth.filter_factory({})(self.app)
@ -1256,10 +1261,10 @@ class TestFormPost(unittest.TestCase):
'/v1/AUTH_test/container', 'http://redirect?one=two', 1024, 10, '/v1/AUTH_test/container', 'http://redirect?one=two', 1024, 10,
int(time() + 86400), key) int(time() + 86400), key)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
env['swift.infocache']['swift.container/AUTH_test/container'] = { env['swift.infocache'][get_cache_key(
'meta': {}} 'AUTH_test', 'container')] = {'meta': {}}
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
self.auth = tempauth.filter_factory({})(self.app) self.auth = tempauth.filter_factory({})(self.app)
@ -1295,10 +1300,10 @@ class TestFormPost(unittest.TestCase):
sig, env, body = self._make_sig_env_body( sig, env, body = self._make_sig_env_body(
'/v1/AUTH_test/container', '', 1024, 10, int(time() + 86400), key) '/v1/AUTH_test/container', '', 1024, 10, int(time() + 86400), key)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
env['swift.infocache']['swift.container/AUTH_test/container'] = { env['swift.infocache'][get_cache_key(
'meta': {}} 'AUTH_test', 'container')] = {'meta': {}}
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
self.auth = tempauth.filter_factory({})(self.app) self.auth = tempauth.filter_factory({})(self.app)
@ -1333,7 +1338,7 @@ class TestFormPost(unittest.TestCase):
sig, env, body = self._make_sig_env_body( sig, env, body = self._make_sig_env_body(
'/v1/AUTH_test/container', '', 1024, 10, int(time() - 10), key) '/v1/AUTH_test/container', '', 1024, 10, int(time() - 10), key)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
@ -1367,7 +1372,7 @@ class TestFormPost(unittest.TestCase):
'/v1/AUTH_test/container', '', 1024, 10, int(time() + 86400), key) '/v1/AUTH_test/container', '', 1024, 10, int(time() + 86400), key)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
# Change key to invalidate sig # Change key to invalidate sig
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key + ' is bogus now'])) self._fake_cache_env('AUTH_test', [key + ' is bogus now']))
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
@ -1400,7 +1405,7 @@ class TestFormPost(unittest.TestCase):
sig, env, body = self._make_sig_env_body( sig, env, body = self._make_sig_env_body(
'/v1/AUTH_test/container', '', 1024, 10, int(time() + 86400), key) '/v1/AUTH_test/container', '', 1024, 10, int(time() + 86400), key)
env['wsgi.input'] = BytesIO(b'XX' + b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'XX' + b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
@ -1433,7 +1438,7 @@ class TestFormPost(unittest.TestCase):
sig, env, body = self._make_sig_env_body( sig, env, body = self._make_sig_env_body(
'/v2/AUTH_test/container', '', 1024, 10, int(time() + 86400), key) '/v2/AUTH_test/container', '', 1024, 10, int(time() + 86400), key)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
@ -1466,7 +1471,7 @@ class TestFormPost(unittest.TestCase):
sig, env, body = self._make_sig_env_body( sig, env, body = self._make_sig_env_body(
'//AUTH_test/container', '', 1024, 10, int(time() + 86400), key) '//AUTH_test/container', '', 1024, 10, int(time() + 86400), key)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
@ -1499,7 +1504,7 @@ class TestFormPost(unittest.TestCase):
sig, env, body = self._make_sig_env_body( sig, env, body = self._make_sig_env_body(
'/v1//container', '', 1024, 10, int(time() + 86400), key) '/v1//container', '', 1024, 10, int(time() + 86400), key)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
@ -1532,7 +1537,7 @@ class TestFormPost(unittest.TestCase):
sig, env, body = self._make_sig_env_body( sig, env, body = self._make_sig_env_body(
'/v1/AUTH_tst/container', '', 1024, 10, int(time() + 86400), key) '/v1/AUTH_tst/container', '', 1024, 10, int(time() + 86400), key)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
self.app = FakeApp(iter([ self.app = FakeApp(iter([
('200 Ok', {'x-account-meta-temp-url-key': 'def'}, ''), ('200 Ok', {'x-account-meta-temp-url-key': 'def'}, ''),
@ -1567,7 +1572,7 @@ class TestFormPost(unittest.TestCase):
sig, env, body = self._make_sig_env_body( sig, env, body = self._make_sig_env_body(
'/v1/AUTH_test', '', 1024, 10, int(time() + 86400), key) '/v1/AUTH_test', '', 1024, 10, int(time() + 86400), key)
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
@ -1605,7 +1610,7 @@ class TestFormPost(unittest.TestCase):
body[i] = 'badvalue' body[i] = 'badvalue'
break break
env['wsgi.input'] = BytesIO(b'\r\n'.join(body)) env['wsgi.input'] = BytesIO(b'\r\n'.join(body))
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
@ -1646,10 +1651,10 @@ class TestFormPost(unittest.TestCase):
'/v1/AUTH_test/container', '', 1024, 10, int(time() + 86400), key) '/v1/AUTH_test/container', '', 1024, 10, int(time() + 86400), key)
wsgi_input = b'\r\n'.join(x_delete_body_part + body) wsgi_input = b'\r\n'.join(x_delete_body_part + body)
env['wsgi.input'] = BytesIO(wsgi_input) env['wsgi.input'] = BytesIO(wsgi_input)
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
env['swift.infocache']['swift.container/AUTH_test/container'] = { env['swift.infocache'][get_cache_key(
'meta': {}} 'AUTH_test', 'container')] = {'meta': {}}
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
self.auth = tempauth.filter_factory({})(self.app) self.auth = tempauth.filter_factory({})(self.app)
@ -1690,7 +1695,7 @@ class TestFormPost(unittest.TestCase):
'/v1/AUTH_test/container', '', 1024, 10, int(time() + 86400), key) '/v1/AUTH_test/container', '', 1024, 10, int(time() + 86400), key)
wsgi_input = b'\r\n'.join(x_delete_body_part + body) wsgi_input = b'\r\n'.join(x_delete_body_part + body)
env['wsgi.input'] = BytesIO(wsgi_input) env['wsgi.input'] = BytesIO(wsgi_input)
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
@ -1725,10 +1730,10 @@ class TestFormPost(unittest.TestCase):
'/v1/AUTH_test/container', '', 1024, 10, int(time() + 86400), key) '/v1/AUTH_test/container', '', 1024, 10, int(time() + 86400), key)
wsgi_input = b'\r\n'.join(x_delete_body_part + body) wsgi_input = b'\r\n'.join(x_delete_body_part + body)
env['wsgi.input'] = BytesIO(wsgi_input) env['wsgi.input'] = BytesIO(wsgi_input)
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
env['swift.infocache']['swift.container/AUTH_test/container'] = { env['swift.infocache'][get_cache_key(
'meta': {}} 'AUTH_test', 'container')] = {'meta': {}}
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))
self.auth = tempauth.filter_factory({})(self.app) self.auth = tempauth.filter_factory({})(self.app)
@ -1769,7 +1774,7 @@ class TestFormPost(unittest.TestCase):
'/v1/AUTH_test/container', '', 1024, 10, int(time() + 86400), key) '/v1/AUTH_test/container', '', 1024, 10, int(time() + 86400), key)
wsgi_input = b'\r\n'.join(x_delete_body_part + body) wsgi_input = b'\r\n'.join(x_delete_body_part + body)
env['wsgi.input'] = BytesIO(wsgi_input) env['wsgi.input'] = BytesIO(wsgi_input)
env['swift.infocache']['swift.account/AUTH_test'] = ( env['swift.infocache'][get_cache_key('AUTH_test')] = (
self._fake_cache_env('AUTH_test', [key])) self._fake_cache_env('AUTH_test', [key]))
self.app = FakeApp(iter([('201 Created', {}, ''), self.app = FakeApp(iter([('201 Created', {}, ''),
('201 Created', {}, '')])) ('201 Created', {}, '')]))

View File

@ -19,7 +19,7 @@ from swift.common.middleware import keystoneauth
from swift.common.swob import Request, Response from swift.common.swob import Request, Response
from swift.common.http import HTTP_FORBIDDEN from swift.common.http import HTTP_FORBIDDEN
from swift.common.utils import split_path from swift.common.utils import split_path
from swift.proxy.controllers.base import _get_cache_key from swift.proxy.controllers.base import get_cache_key
from test.unit import FakeLogger from test.unit import FakeLogger
UNKNOWN_ID = keystoneauth.UNKNOWN_ID UNKNOWN_ID = keystoneauth.UNKNOWN_ID
@ -251,7 +251,7 @@ class SwiftAuth(unittest.TestCase):
account = get_account_for_tenant(self.test_auth, proj_id) account = get_account_for_tenant(self.test_auth, proj_id)
path = '/v1/' + account path = '/v1/' + account
# fake cached account info # fake cached account info
_, info_key = _get_cache_key(account, None) info_key = get_cache_key(account)
env = {'swift.infocache': {info_key: {'status': 0, 'sysmeta': {}}}, env = {'swift.infocache': {info_key: {'status': 0, 'sysmeta': {}}},
'keystone.token_info': _fake_token_info(version='3')} 'keystone.token_info': _fake_token_info(version='3')}
req = Request.blank(path, environ=env, headers=headers) req = Request.blank(path, environ=env, headers=headers)
@ -280,7 +280,7 @@ class SwiftAuth(unittest.TestCase):
account = get_account_for_tenant(self.test_auth, proj_id) account = get_account_for_tenant(self.test_auth, proj_id)
path = '/v1/' + account path = '/v1/' + account
# fake cached account info # fake cached account info
_, info_key = _get_cache_key(account, None) info_key = get_cache_key(account)
env = {'swift.infocache': {info_key: {'status': 0, 'sysmeta': {}}}, env = {'swift.infocache': {info_key: {'status': 0, 'sysmeta': {}}},
'keystone.token_info': _fake_token_info(version='3')} 'keystone.token_info': _fake_token_info(version='3')}
req = Request.blank(path, environ=env, headers=headers) req = Request.blank(path, environ=env, headers=headers)
@ -301,7 +301,7 @@ class SwiftAuth(unittest.TestCase):
headers = get_identity_headers(tenant_id=proj_id, role='admin') headers = get_identity_headers(tenant_id=proj_id, role='admin')
account = get_account_for_tenant(self.test_auth, proj_id) account = get_account_for_tenant(self.test_auth, proj_id)
path = '/v1/' + account path = '/v1/' + account
_, info_key = _get_cache_key(account, None) info_key = get_cache_key(account)
# v2 token # v2 token
env = {'swift.infocache': {info_key: {'status': 0, 'sysmeta': {}}}, env = {'swift.infocache': {info_key: {'status': 0, 'sysmeta': {}}},
'keystone.token_info': _fake_token_info(version='2')} 'keystone.token_info': _fake_token_info(version='2')}
@ -323,7 +323,7 @@ class SwiftAuth(unittest.TestCase):
role='reselleradmin') role='reselleradmin')
account = get_account_for_tenant(self.test_auth, proj_id) account = get_account_for_tenant(self.test_auth, proj_id)
path = '/v1/' + account path = '/v1/' + account
_, info_key = _get_cache_key(account, None) info_key = get_cache_key(account)
# v2 token # v2 token
env = {'swift.infocache': {info_key: {'status': 0, 'sysmeta': {}}}, env = {'swift.infocache': {info_key: {'status': 0, 'sysmeta': {}}},
'keystone.token_info': _fake_token_info(version='2')} 'keystone.token_info': _fake_token_info(version='2')}
@ -381,7 +381,7 @@ class ServiceTokenFunctionality(unittest.TestCase):
role=user_role, role=user_role,
service_role=service_role) service_role=service_role)
(version, account, _junk, _junk) = split_path(path, 2, 4, True) (version, account, _junk, _junk) = split_path(path, 2, 4, True)
_, info_key = _get_cache_key(account, None) info_key = get_cache_key(account)
env = {'swift.infocache': {info_key: {'status': 0, 'sysmeta': {}}}, env = {'swift.infocache': {info_key: {'status': 0, 'sysmeta': {}}},
'keystone.token_info': _fake_token_info(version='2')} 'keystone.token_info': _fake_token_info(version='2')}
if environ: if environ:
@ -595,7 +595,7 @@ class TestAuthorize(BaseTestAuthorize):
if not path: if not path:
path = '/v1/%s/c' % account path = '/v1/%s/c' % account
# fake cached account info # fake cached account info
_, info_key = _get_cache_key(account, None) info_key = get_cache_key(account)
default_env = { default_env = {
'REMOTE_USER': identity['HTTP_X_TENANT_ID'], 'REMOTE_USER': identity['HTTP_X_TENANT_ID'],
'swift.infocache': {info_key: {'status': 200, 'sysmeta': {}}}} 'swift.infocache': {info_key: {'status': 200, 'sysmeta': {}}}}
@ -985,7 +985,7 @@ class TestAuthorize(BaseTestAuthorize):
def test_get_project_domain_id(self): def test_get_project_domain_id(self):
sysmeta = {} sysmeta = {}
info = {'sysmeta': sysmeta} info = {'sysmeta': sysmeta}
_, info_key = _get_cache_key('AUTH_1234', None) info_key = get_cache_key('AUTH_1234')
env = {'PATH_INFO': '/v1/AUTH_1234', env = {'PATH_INFO': '/v1/AUTH_1234',
'swift.infocache': {info_key: info}} 'swift.infocache': {info_key: info}}
@ -1029,7 +1029,7 @@ class TestIsNameAllowedInACL(BaseTestAuthorize):
# pretend account exists # pretend account exists
info = {'status': 200, 'sysmeta': sysmeta} info = {'status': 200, 'sysmeta': sysmeta}
_, info_key = _get_cache_key(account, None) info_key = get_cache_key(account)
req = Request.blank(path, req = Request.blank(path,
environ={'swift.infocache': {info_key: info}}) environ={'swift.infocache': {info_key: info}})
@ -1216,7 +1216,7 @@ class TestSetProjectDomain(BaseTestAuthorize):
if sysmeta_project_domain_id: if sysmeta_project_domain_id:
sysmeta['project-domain-id'] = sysmeta_project_domain_id sysmeta['project-domain-id'] = sysmeta_project_domain_id
info = {'status': status, 'sysmeta': sysmeta} info = {'status': status, 'sysmeta': sysmeta}
_, info_key = _get_cache_key(account, None) info_key = get_cache_key(account)
env = {'swift.infocache': {info_key: info}} env = {'swift.infocache': {info_key: info}}
# create fake env identity # create fake env identity

View File

@ -246,8 +246,8 @@ class ContainerQuotaCopyingTestCases(unittest.TestCase):
req = Request.blank('/v1/a/c2/o2', req = Request.blank('/v1/a/c2/o2',
environ={'REQUEST_METHOD': 'COPY', environ={'REQUEST_METHOD': 'COPY',
'swift.infocache': { 'swift.infocache': {
'swift.container/a/c': a_c_cache, 'container/a/c': a_c_cache,
'swift.container/a2/c': a2_c_cache}}, 'container/a2/c': a2_c_cache}},
headers={'Destination': '/c/o', headers={'Destination': '/c/o',
'Destination-Account': 'a2'}) 'Destination-Account': 'a2'})
res = req.get_response(self.copy_filter) res = req.get_response(self.copy_filter)
@ -263,8 +263,8 @@ class ContainerQuotaCopyingTestCases(unittest.TestCase):
req = Request.blank('/v1/a2/c/o', req = Request.blank('/v1/a2/c/o',
environ={'REQUEST_METHOD': 'PUT', environ={'REQUEST_METHOD': 'PUT',
'swift.infocache': { 'swift.infocache': {
'swift.container/a/c': a_c_cache, 'container/a/c': a_c_cache,
'swift.container/a2/c': a2_c_cache}}, 'container/a2/c': a2_c_cache}},
headers={'X-Copy-From': '/c2/o2', headers={'X-Copy-From': '/c2/o2',
'X-Copy-From-Account': 'a'}) 'X-Copy-From-Account': 'a'})
res = req.get_response(self.copy_filter) res = req.get_response(self.copy_filter)

View File

@ -21,7 +21,7 @@ from contextlib import contextmanager
from test.unit import FakeLogger from test.unit import FakeLogger
from swift.common.middleware import ratelimit from swift.common.middleware import ratelimit
from swift.proxy.controllers.base import get_container_memcache_key, \ from swift.proxy.controllers.base import get_cache_key, \
headers_to_container_info headers_to_container_info
from swift.common.memcached import MemcacheConnectionError from swift.common.memcached import MemcacheConnectionError
from swift.common.swob import Request from swift.common.swob import Request
@ -185,7 +185,7 @@ class TestRateLimit(unittest.TestCase):
conf_dict = {'account_ratelimit': current_rate, conf_dict = {'account_ratelimit': current_rate,
'container_ratelimit_3': 200} 'container_ratelimit_3': 200}
fake_memcache = FakeMemcache() fake_memcache = FakeMemcache()
fake_memcache.store[get_container_memcache_key('a', 'c')] = \ fake_memcache.store[get_cache_key('a', 'c')] = \
{'object_count': '5'} {'object_count': '5'}
the_app = ratelimit.filter_factory(conf_dict)(FakeApp()) the_app = ratelimit.filter_factory(conf_dict)(FakeApp())
the_app.memcache_client = fake_memcache the_app.memcache_client = fake_memcache
@ -229,7 +229,7 @@ class TestRateLimit(unittest.TestCase):
conf_dict = {'account_ratelimit': current_rate, conf_dict = {'account_ratelimit': current_rate,
'container_ratelimit_3': 200} 'container_ratelimit_3': 200}
fake_memcache = FakeMemcache() fake_memcache = FakeMemcache()
fake_memcache.store[get_container_memcache_key('a', 'c')] = \ fake_memcache.store[get_cache_key('a', 'c')] = \
{'container_size': 5} {'container_size': 5}
the_app = ratelimit.filter_factory(conf_dict)(FakeApp()) the_app = ratelimit.filter_factory(conf_dict)(FakeApp())
the_app.memcache_client = fake_memcache the_app.memcache_client = fake_memcache
@ -431,7 +431,7 @@ class TestRateLimit(unittest.TestCase):
req.method = 'PUT' req.method = 'PUT'
req.environ['swift.cache'] = FakeMemcache() req.environ['swift.cache'] = FakeMemcache()
req.environ['swift.cache'].set( req.environ['swift.cache'].set(
get_container_memcache_key('a', 'c'), get_cache_key('a', 'c'),
{'object_count': 1}) {'object_count': 1})
time_override = [0, 0, 0, 0, None] time_override = [0, 0, 0, 0, None]
@ -465,7 +465,7 @@ class TestRateLimit(unittest.TestCase):
req.method = 'GET' req.method = 'GET'
req.environ['swift.cache'] = FakeMemcache() req.environ['swift.cache'] = FakeMemcache()
req.environ['swift.cache'].set( req.environ['swift.cache'].set(
get_container_memcache_key('a', 'c'), get_cache_key('a', 'c'),
{'object_count': 1}) {'object_count': 1})
with mock.patch('swift.common.middleware.ratelimit.get_account_info', with mock.patch('swift.common.middleware.ratelimit.get_account_info',

View File

@ -97,7 +97,7 @@ class TestTempURL(unittest.TestCase):
meta[meta_name] = key meta[meta_name] = key
ic = environ.setdefault('swift.infocache', {}) ic = environ.setdefault('swift.infocache', {})
ic['swift.account/' + account] = { ic['account/' + account] = {
'status': 204, 'status': 204,
'container_count': '0', 'container_count': '0',
'total_object_count': '0', 'total_object_count': '0',
@ -109,7 +109,7 @@ class TestTempURL(unittest.TestCase):
meta_name = 'Temp-URL-key' + (("-%d" % (i + 1) if i else "")) meta_name = 'Temp-URL-key' + (("-%d" % (i + 1) if i else ""))
meta[meta_name] = key meta[meta_name] = key
container_cache_key = 'swift.container/' + account + '/c' container_cache_key = 'container/' + account + '/c'
ic.setdefault(container_cache_key, {'meta': meta}) ic.setdefault(container_cache_key, {'meta': meta})
def test_passthrough(self): def test_passthrough(self):
@ -169,7 +169,7 @@ class TestTempURL(unittest.TestCase):
meta_name = 'Temp-URL-key' + (("-%d" % (idx + 1) if idx else "")) meta_name = 'Temp-URL-key' + (("-%d" % (idx + 1) if idx else ""))
if key: if key:
meta[meta_name] = key meta[meta_name] = key
ic['swift.container/a/c'] = {'meta': meta} ic['container/a/c'] = {'meta': meta}
method = 'GET' method = 'GET'
expires = int(time() + 86400) expires = int(time() + 86400)

View File

@ -69,11 +69,10 @@ class TestAccountController(unittest.TestCase):
req = Request.blank('/v1/AUTH_bob', {'PATH_INFO': '/v1/AUTH_bob'}) req = Request.blank('/v1/AUTH_bob', {'PATH_INFO': '/v1/AUTH_bob'})
resp = controller.HEAD(req) resp = controller.HEAD(req)
self.assertEqual(2, resp.status_int // 100) self.assertEqual(2, resp.status_int // 100)
self.assertTrue( self.assertIn('account/AUTH_bob', resp.environ['swift.infocache'])
'swift.account/AUTH_bob' in resp.environ['swift.infocache'])
self.assertEqual( self.assertEqual(
headers_to_account_info(resp.headers), headers_to_account_info(resp.headers),
resp.environ['swift.infocache']['swift.account/AUTH_bob']) resp.environ['swift.infocache']['account/AUTH_bob'])
def test_swift_owner(self): def test_swift_owner(self):
owner_headers = { owner_headers = {
@ -228,13 +227,20 @@ class TestAccountController(unittest.TestCase):
self.assertEqual(1, len(resp.headers)) # we always get Content-Type self.assertEqual(1, len(resp.headers)) # we always get Content-Type
self.assertEqual(2, len(resp.environ)) self.assertEqual(2, len(resp.environ))
def test_memcache_key_impossible_cases(self): def test_cache_key_impossible_cases(self):
# For test coverage: verify that defensive coding does defend, in cases # For test coverage: verify that defensive coding does defend, in cases
# that shouldn't arise naturally # that shouldn't arise naturally
self.assertRaises( with self.assertRaises(ValueError):
ValueError, # Container needs account
lambda: swift.proxy.controllers.base.get_container_memcache_key( swift.proxy.controllers.base.get_cache_key(None, 'c')
'/a', None))
with self.assertRaises(ValueError):
# Object needs account
swift.proxy.controllers.base.get_cache_key(None, 'c', 'o')
with self.assertRaises(ValueError):
# Object needs container
swift.proxy.controllers.base.get_cache_key('a', None, 'o')
def test_stripping_swift_admin_headers(self): def test_stripping_swift_admin_headers(self):
# Verify that a GET/HEAD which receives privileged headers from the # Verify that a GET/HEAD which receives privileged headers from the

View File

@ -19,8 +19,7 @@ import unittest
from mock import patch from mock import patch
from swift.proxy.controllers.base import headers_to_container_info, \ from swift.proxy.controllers.base import headers_to_container_info, \
headers_to_account_info, headers_to_object_info, get_container_info, \ headers_to_account_info, headers_to_object_info, get_container_info, \
get_container_memcache_key, get_account_info, get_account_memcache_key, \ get_cache_key, get_account_info, get_info, get_object_info, \
get_object_env_key, get_info, get_object_info, \
Controller, GetOrHeadHandler, bytes_to_skip Controller, GetOrHeadHandler, bytes_to_skip
from swift.common.swob import Request, HTTPException, RESPONSE_REASONS from swift.common.swob import Request, HTTPException, RESPONSE_REASONS
from swift.common import exceptions from swift.common import exceptions
@ -210,7 +209,6 @@ class TestFuncs(unittest.TestCase):
# cached # cached
app.responses.stats['account'] = 0 app.responses.stats['account'] = 0
app.responses.stats['container'] = 0 app.responses.stats['container'] = 0
del(env['swift.infocache']['swift.account/a'])
info_c = get_info(app, env, 'a', 'c') info_c = get_info(app, env, 'a', 'c')
# Check that you got proper info # Check that you got proper info
self.assertEqual(info_a['status'], 200) self.assertEqual(info_a['status'], 200)
@ -274,11 +272,10 @@ class TestFuncs(unittest.TestCase):
self.assertEqual(resp['versions'], "\xe1\xbd\x8a\x39") self.assertEqual(resp['versions'], "\xe1\xbd\x8a\x39")
def test_get_container_info_env(self): def test_get_container_info_env(self):
cache_key = get_container_memcache_key("account", "cont") cache_key = get_cache_key("account", "cont")
env_key = 'swift.%s' % cache_key
req = Request.blank( req = Request.blank(
"/v1/account/cont", "/v1/account/cont",
environ={'swift.infocache': {env_key: {'bytes': 3867}}, environ={'swift.infocache': {cache_key: {'bytes': 3867}},
'swift.cache': FakeCache({})}) 'swift.cache': FakeCache({})})
resp = get_container_info(req.environ, 'xxx') resp = get_container_info(req.environ, 'xxx')
self.assertEqual(resp['bytes'], 3867) self.assertEqual(resp['bytes'], 3867)
@ -344,11 +341,10 @@ class TestFuncs(unittest.TestCase):
self.assertEqual(resp['total_object_count'], 10) self.assertEqual(resp['total_object_count'], 10)
def test_get_account_info_env(self): def test_get_account_info_env(self):
cache_key = get_account_memcache_key("account") cache_key = get_cache_key("account")
env_key = 'swift.%s' % cache_key
req = Request.blank( req = Request.blank(
"/v1/account", "/v1/account",
environ={'swift.infocache': {env_key: {'bytes': 3867}}, environ={'swift.infocache': {cache_key: {'bytes': 3867}},
'swift.cache': FakeCache({})}) 'swift.cache': FakeCache({})})
resp = get_account_info(req.environ, 'xxx') resp = get_account_info(req.environ, 'xxx')
self.assertEqual(resp['bytes'], 3867) self.assertEqual(resp['bytes'], 3867)
@ -358,10 +354,10 @@ class TestFuncs(unittest.TestCase):
'length': 3333, 'length': 3333,
'type': 'application/json', 'type': 'application/json',
'meta': {}} 'meta': {}}
env_key = get_object_env_key("account", "cont", "obj") cache_key = get_cache_key("account", "cont", "obj")
req = Request.blank( req = Request.blank(
"/v1/account/cont/obj", "/v1/account/cont/obj",
environ={'swift.infocache': {env_key: cached}, environ={'swift.infocache': {cache_key: cached},
'swift.cache': FakeCache({})}) 'swift.cache': FakeCache({})})
resp = get_object_info(req.environ, 'xxx') resp = get_object_info(req.environ, 'xxx')
self.assertEqual(resp['length'], 3333) self.assertEqual(resp['length'], 3333)

View File

@ -103,11 +103,10 @@ class TestContainerController(TestRingBase):
resp = controller.HEAD(req) resp = controller.HEAD(req)
self.assertEqual(2, resp.status_int // 100) self.assertEqual(2, resp.status_int // 100)
# Make sure it's in both swift.infocache and memcache # Make sure it's in both swift.infocache and memcache
self.assertTrue( self.assertIn("container/a/c", resp.environ['swift.infocache'])
"swift.container/a/c" in req.environ['swift.infocache'])
self.assertEqual( self.assertEqual(
headers_to_container_info(resp.headers), headers_to_container_info(resp.headers),
resp.environ['swift.infocache']['swift.container/a/c']) resp.environ['swift.infocache']['container/a/c'])
from_memcache = self.app.memcache.get('container/a/c') from_memcache = self.app.memcache.get('container/a/c')
self.assertTrue(from_memcache) self.assertTrue(from_memcache)

View File

@ -93,7 +93,7 @@ class PatchedObjControllerApp(proxy_server.Application):
# Seed the cache with our container info so that the real # Seed the cache with our container info so that the real
# get_container_info finds it. # get_container_info finds it.
ic = env.setdefault('swift.infocache', {}) ic = env.setdefault('swift.infocache', {})
cache_key = "swift.container/%s/%s" % (account, container) cache_key = "container/%s/%s" % (account, container)
old_value = ic.get(cache_key) old_value = ic.get(cache_key)

View File

@ -73,9 +73,8 @@ from swift.common.ring import RingData
from swift.common.utils import mkdirs, normalize_timestamp, NullLogger from swift.common.utils import mkdirs, normalize_timestamp, NullLogger
from swift.common.wsgi import monkey_patch_mimetools, loadapp from swift.common.wsgi import monkey_patch_mimetools, loadapp
from swift.proxy.controllers import base as proxy_base from swift.proxy.controllers import base as proxy_base
from swift.proxy.controllers.base import get_container_memcache_key, \ from swift.proxy.controllers.base import get_cache_key, cors_validation, \
get_account_memcache_key, cors_validation, get_account_info, \ get_account_info, get_container_info
get_container_info
import swift.proxy.controllers import swift.proxy.controllers
import swift.proxy.controllers.obj import swift.proxy.controllers.obj
from swift.common.header_key_dict import HeaderKeyDict from swift.common.header_key_dict import HeaderKeyDict
@ -482,14 +481,14 @@ class TestController(unittest.TestCase):
self.controller.account_info(self.account) self.controller.account_info(self.account)
self.assertEqual(count, 123) self.assertEqual(count, 123)
with save_globals(): with save_globals():
cache_key = get_account_memcache_key(self.account) cache_key = get_cache_key(self.account)
account_info = {'status': 200, 'container_count': 1234} account_info = {'status': 200, 'container_count': 1234}
self.memcache.set(cache_key, account_info) self.memcache.set(cache_key, account_info)
partition, nodes, count = \ partition, nodes, count = \
self.controller.account_info(self.account) self.controller.account_info(self.account)
self.assertEqual(count, 1234) self.assertEqual(count, 1234)
with save_globals(): with save_globals():
cache_key = get_account_memcache_key(self.account) cache_key = get_cache_key(self.account)
account_info = {'status': 200, 'container_count': '1234'} account_info = {'status': 200, 'container_count': '1234'}
self.memcache.set(cache_key, account_info) self.memcache.set(cache_key, account_info)
partition, nodes, count = \ partition, nodes, count = \
@ -517,7 +516,7 @@ class TestController(unittest.TestCase):
# Test the internal representation in memcache # Test the internal representation in memcache
# 'container_count' changed from int to str # 'container_count' changed from int to str
cache_key = get_account_memcache_key(self.account) cache_key = get_cache_key(self.account)
container_info = {'status': 200, container_info = {'status': 200,
'account_really_exists': True, 'account_really_exists': True,
'container_count': '12345', 'container_count': '12345',
@ -545,7 +544,7 @@ class TestController(unittest.TestCase):
# Test the internal representation in memcache # Test the internal representation in memcache
# 'container_count' changed from 0 to None # 'container_count' changed from 0 to None
cache_key = get_account_memcache_key(self.account) cache_key = get_cache_key(self.account)
account_info = {'status': 404, account_info = {'status': 404,
'container_count': None, # internally keep None 'container_count': None, # internally keep None
'total_object_count': None, 'total_object_count': None,
@ -622,8 +621,7 @@ class TestController(unittest.TestCase):
self.account, self.container, self.request) self.account, self.container, self.request)
self.check_container_info_return(ret) self.check_container_info_return(ret)
cache_key = get_container_memcache_key(self.account, cache_key = get_cache_key(self.account, self.container)
self.container)
cache_value = self.memcache.get(cache_key) cache_value = self.memcache.get(cache_key)
self.assertTrue(isinstance(cache_value, dict)) self.assertTrue(isinstance(cache_value, dict))
self.assertEqual(200, cache_value.get('status')) self.assertEqual(200, cache_value.get('status'))
@ -645,8 +643,7 @@ class TestController(unittest.TestCase):
self.account, self.container, self.request) self.account, self.container, self.request)
self.check_container_info_return(ret, True) self.check_container_info_return(ret, True)
cache_key = get_container_memcache_key(self.account, cache_key = get_cache_key(self.account, self.container)
self.container)
cache_value = self.memcache.get(cache_key) cache_value = self.memcache.get(cache_key)
self.assertTrue(isinstance(cache_value, dict)) self.assertTrue(isinstance(cache_value, dict))
self.assertEqual(404, cache_value.get('status')) self.assertEqual(404, cache_value.get('status'))
@ -661,8 +658,7 @@ class TestController(unittest.TestCase):
self.account, self.container, self.request) self.account, self.container, self.request)
self.check_container_info_return(ret, True) self.check_container_info_return(ret, True)
cache_key = get_container_memcache_key(self.account, cache_key = get_cache_key(self.account, self.container)
self.container)
cache_value = self.memcache.get(cache_key) cache_value = self.memcache.get(cache_key)
self.assertTrue(isinstance(cache_value, dict)) self.assertTrue(isinstance(cache_value, dict))
self.assertEqual(404, cache_value.get('status')) self.assertEqual(404, cache_value.get('status'))
@ -6351,18 +6347,18 @@ class TestContainerController(unittest.TestCase):
self.assertIn('x-works', res.headers) self.assertIn('x-works', res.headers)
self.assertEqual(res.headers['x-works'], 'yes') self.assertEqual(res.headers['x-works'], 'yes')
if c_expected: if c_expected:
self.assertIn('swift.container/a/c', infocache) self.assertIn('container/a/c', infocache)
self.assertEqual( self.assertEqual(
infocache['swift.container/a/c']['status'], infocache['container/a/c']['status'],
c_expected) c_expected)
else: else:
self.assertNotIn('swift.container/a/c', infocache) self.assertNotIn('container/a/c', infocache)
if a_expected: if a_expected:
self.assertIn('swift.account/a', infocache) self.assertIn('account/a', infocache)
self.assertEqual(infocache['swift.account/a']['status'], self.assertEqual(infocache['account/a']['status'],
a_expected) a_expected)
else: else:
self.assertNotIn('swift.account/a', res.environ) self.assertNotIn('account/a', res.environ)
set_http_connect(*statuses, **kwargs) set_http_connect(*statuses, **kwargs)
self.app.memcache.store = {} self.app.memcache.store = {}
@ -6376,18 +6372,18 @@ class TestContainerController(unittest.TestCase):
self.assertTrue('x-works' in res.headers) self.assertTrue('x-works' in res.headers)
self.assertEqual(res.headers['x-works'], 'yes') self.assertEqual(res.headers['x-works'], 'yes')
if c_expected: if c_expected:
self.assertIn('swift.container/a/c', infocache) self.assertIn('container/a/c', infocache)
self.assertEqual( self.assertEqual(
infocache['swift.container/a/c']['status'], infocache['container/a/c']['status'],
c_expected) c_expected)
else: else:
self.assertNotIn('swift.container/a/c', infocache) self.assertNotIn('container/a/c', infocache)
if a_expected: if a_expected:
self.assertIn('swift.account/a', infocache) self.assertIn('account/a', infocache)
self.assertEqual(infocache['swift.account/a']['status'], self.assertEqual(infocache['account/a']['status'],
a_expected) a_expected)
else: else:
self.assertNotIn('swift.account/a', infocache) self.assertNotIn('account/a', infocache)
# In all the following tests cache 200 for account # In all the following tests cache 200 for account
# return and cache vary for container # return and cache vary for container
# return 200 and cache 200 for account and container # return 200 and cache 200 for account and container
@ -7000,7 +6996,7 @@ class TestContainerController(unittest.TestCase):
res = controller.GET(req) res = controller.GET(req)
self.assertEqual(res.status_int, 204) self.assertEqual(res.status_int, 204)
ic = res.environ['swift.infocache'] ic = res.environ['swift.infocache']
self.assertEqual(ic['swift.container/a/c']['status'], 204) self.assertEqual(ic['container/a/c']['status'], 204)
self.assertEqual(res.content_length, 0) self.assertEqual(res.content_length, 0)
self.assertTrue('transfer-encoding' not in res.headers) self.assertTrue('transfer-encoding' not in res.headers)
@ -7018,7 +7014,7 @@ class TestContainerController(unittest.TestCase):
self.app.update_request(req) self.app.update_request(req)
res = controller.GET(req) res = controller.GET(req)
self.assertEqual( self.assertEqual(
res.environ['swift.infocache']['swift.container/a/c']['status'], res.environ['swift.infocache']['container/a/c']['status'],
201) 201)
self.assertTrue(called[0]) self.assertTrue(called[0])
@ -7488,7 +7484,7 @@ class TestAccountController(unittest.TestCase):
self.assertEqual(res.status_int, expected) self.assertEqual(res.status_int, expected)
infocache = res.environ.get('swift.infocache', {}) infocache = res.environ.get('swift.infocache', {})
if env_expected: if env_expected:
self.assertEqual(infocache['swift.account/a']['status'], self.assertEqual(infocache['account/a']['status'],
env_expected) env_expected)
set_http_connect(*statuses) set_http_connect(*statuses)
req = Request.blank('/v1/a/', {}) req = Request.blank('/v1/a/', {})
@ -7497,7 +7493,7 @@ class TestAccountController(unittest.TestCase):
infocache = res.environ.get('swift.infocache', {}) infocache = res.environ.get('swift.infocache', {})
self.assertEqual(res.status_int, expected) self.assertEqual(res.status_int, expected)
if env_expected: if env_expected:
self.assertEqual(infocache['swift.account/a']['status'], self.assertEqual(infocache['account/a']['status'],
env_expected) env_expected)
def test_OPTIONS(self): def test_OPTIONS(self):