Merge "Pep8 account and proxy server unit tests (10 of 12)"
This commit is contained in:
commit
f5a54a3264
@ -32,7 +32,8 @@ class TestAccountController(unittest.TestCase):
|
||||
"""Test swift.account.server.AccountController"""
|
||||
def setUp(self):
|
||||
"""Set up for testing swift.account.server.AccountController"""
|
||||
self.testdir = os.path.join(os.path.dirname(__file__), 'account_server')
|
||||
self.testdir = os.path.join(os.path.dirname(__file__),
|
||||
'account_server')
|
||||
self.controller = AccountController(
|
||||
{'devices': self.testdir, 'mount_check': 'false'})
|
||||
|
||||
@ -46,24 +47,24 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_DELETE_not_found(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'DELETE',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 404)
|
||||
self.assertTrue('X-Account-Status' not in resp.headers)
|
||||
|
||||
def test_DELETE_empty(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'DELETE',
|
||||
'HTTP_X_TIMESTAMP': '1'})
|
||||
'HTTP_X_TIMESTAMP': '1'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 204)
|
||||
self.assertEquals(resp.headers['X-Account-Status'], 'Deleted')
|
||||
|
||||
def test_DELETE_not_empty(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
@ -72,7 +73,7 @@ class TestAccountController(unittest.TestCase):
|
||||
'X-Bytes-Used': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'DELETE',
|
||||
'HTTP_X_TIMESTAMP': '1'})
|
||||
'HTTP_X_TIMESTAMP': '1'})
|
||||
resp = req.get_response(self.controller)
|
||||
# We now allow deleting non-empty accounts
|
||||
self.assertEquals(resp.status_int, 204)
|
||||
@ -80,7 +81,7 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_DELETE_now_empty(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
@ -89,7 +90,8 @@ class TestAccountController(unittest.TestCase):
|
||||
'X-Bytes-Used': '0',
|
||||
'X-Timestamp': normalize_timestamp(0)})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a/c1',
|
||||
req = Request.blank(
|
||||
'/sda1/p/a/c1',
|
||||
environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
'X-Delete-Timestamp': '2',
|
||||
@ -99,7 +101,7 @@ class TestAccountController(unittest.TestCase):
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 204)
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'DELETE',
|
||||
'HTTP_X_TIMESTAMP': '1'})
|
||||
'HTTP_X_TIMESTAMP': '1'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 204)
|
||||
self.assertEquals(resp.headers['X-Account-Status'], 'Deleted')
|
||||
@ -121,8 +123,9 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_DELETE_insufficient_storage(self):
|
||||
self.controller = AccountController({'devices': self.testdir})
|
||||
req = Request.blank('/sda-null/p/a', environ={'REQUEST_METHOD': 'DELETE',
|
||||
'HTTP_X_TIMESTAMP': '1'})
|
||||
req = Request.blank(
|
||||
'/sda-null/p/a', environ={'REQUEST_METHOD': 'DELETE',
|
||||
'HTTP_X_TIMESTAMP': '1'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 507)
|
||||
|
||||
@ -153,7 +156,7 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_HEAD_empty_account(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'HEAD'})
|
||||
resp = req.get_response(self.controller)
|
||||
@ -201,7 +204,7 @@ class TestAccountController(unittest.TestCase):
|
||||
'X-Timestamp': normalize_timestamp(0)})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'HEAD',
|
||||
'HTTP_X_TIMESTAMP': '5'})
|
||||
'HTTP_X_TIMESTAMP': '5'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 204)
|
||||
self.assertEquals(resp.headers['x-account-container-count'], '2')
|
||||
@ -235,7 +238,8 @@ class TestAccountController(unittest.TestCase):
|
||||
self.assertEquals(resp.status_int, 400)
|
||||
|
||||
def test_PUT_not_found(self):
|
||||
req = Request.blank('/sda1/p/a/c', environ={'REQUEST_METHOD': 'PUT'},
|
||||
req = Request.blank(
|
||||
'/sda1/p/a/c', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-PUT-Timestamp': normalize_timestamp(1),
|
||||
'X-DELETE-Timestamp': normalize_timestamp(0),
|
||||
'X-Object-Count': '1',
|
||||
@ -247,11 +251,11 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_PUT(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 201)
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '1'})
|
||||
'HTTP_X_TIMESTAMP': '1'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 202)
|
||||
|
||||
@ -273,7 +277,8 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_PUT_GET_metadata(self):
|
||||
# Set metadata header
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
|
||||
req = Request.blank(
|
||||
'/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Timestamp': normalize_timestamp(1),
|
||||
'X-Account-Meta-Test': 'Value'})
|
||||
resp = req.get_response(self.controller)
|
||||
@ -283,7 +288,8 @@ class TestAccountController(unittest.TestCase):
|
||||
self.assertEquals(resp.status_int, 204)
|
||||
self.assertEquals(resp.headers.get('x-account-meta-test'), 'Value')
|
||||
# Set another metadata header, ensuring old one doesn't disappear
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
|
||||
req = Request.blank(
|
||||
'/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
|
||||
headers={'X-Timestamp': normalize_timestamp(1),
|
||||
'X-Account-Meta-Test2': 'Value2'})
|
||||
resp = req.get_response(self.controller)
|
||||
@ -294,7 +300,8 @@ class TestAccountController(unittest.TestCase):
|
||||
self.assertEquals(resp.headers.get('x-account-meta-test'), 'Value')
|
||||
self.assertEquals(resp.headers.get('x-account-meta-test2'), 'Value2')
|
||||
# Update metadata header
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
|
||||
req = Request.blank(
|
||||
'/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Timestamp': normalize_timestamp(3),
|
||||
'X-Account-Meta-Test': 'New Value'})
|
||||
resp = req.get_response(self.controller)
|
||||
@ -304,7 +311,8 @@ class TestAccountController(unittest.TestCase):
|
||||
self.assertEquals(resp.status_int, 204)
|
||||
self.assertEquals(resp.headers.get('x-account-meta-test'), 'New Value')
|
||||
# Send old update to metadata header
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
|
||||
req = Request.blank(
|
||||
'/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Timestamp': normalize_timestamp(2),
|
||||
'X-Account-Meta-Test': 'Old Value'})
|
||||
resp = req.get_response(self.controller)
|
||||
@ -314,7 +322,8 @@ class TestAccountController(unittest.TestCase):
|
||||
self.assertEquals(resp.status_int, 204)
|
||||
self.assertEquals(resp.headers.get('x-account-meta-test'), 'New Value')
|
||||
# Remove metadata header (by setting it to empty)
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
|
||||
req = Request.blank(
|
||||
'/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Timestamp': normalize_timestamp(4),
|
||||
'X-Account-Meta-Test': ''})
|
||||
resp = req.get_response(self.controller)
|
||||
@ -338,12 +347,14 @@ class TestAccountController(unittest.TestCase):
|
||||
self.assertEquals(resp.status_int, 507)
|
||||
|
||||
def test_POST_HEAD_metadata(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
|
||||
req = Request.blank(
|
||||
'/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Timestamp': normalize_timestamp(1)})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 201)
|
||||
# Set metadata header
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
|
||||
req = Request.blank(
|
||||
'/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
|
||||
headers={'X-Timestamp': normalize_timestamp(1),
|
||||
'X-Account-Meta-Test': 'Value'})
|
||||
resp = req.get_response(self.controller)
|
||||
@ -353,7 +364,8 @@ class TestAccountController(unittest.TestCase):
|
||||
self.assertEquals(resp.status_int, 204)
|
||||
self.assertEquals(resp.headers.get('x-account-meta-test'), 'Value')
|
||||
# Update metadata header
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
|
||||
req = Request.blank(
|
||||
'/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
|
||||
headers={'X-Timestamp': normalize_timestamp(3),
|
||||
'X-Account-Meta-Test': 'New Value'})
|
||||
resp = req.get_response(self.controller)
|
||||
@ -363,7 +375,8 @@ class TestAccountController(unittest.TestCase):
|
||||
self.assertEquals(resp.status_int, 204)
|
||||
self.assertEquals(resp.headers.get('x-account-meta-test'), 'New Value')
|
||||
# Send old update to metadata header
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
|
||||
req = Request.blank(
|
||||
'/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
|
||||
headers={'X-Timestamp': normalize_timestamp(2),
|
||||
'X-Account-Meta-Test': 'Old Value'})
|
||||
resp = req.get_response(self.controller)
|
||||
@ -373,7 +386,8 @@ class TestAccountController(unittest.TestCase):
|
||||
self.assertEquals(resp.status_int, 204)
|
||||
self.assertEquals(resp.headers.get('x-account-meta-test'), 'New Value')
|
||||
# Remove metadata header (by setting it to empty)
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
|
||||
req = Request.blank(
|
||||
'/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
|
||||
headers={'X-Timestamp': normalize_timestamp(4),
|
||||
'X-Account-Meta-Test': ''})
|
||||
resp = req.get_response(self.controller)
|
||||
@ -455,7 +469,7 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_GET_empty_account_plain(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'GET'})
|
||||
resp = req.get_response(self.controller)
|
||||
@ -465,7 +479,8 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_GET_empty_account_json(self):
|
||||
req = Request.blank('/sda1/p/a?format=json',
|
||||
environ={'REQUEST_METHOD': 'PUT', 'HTTP_X_TIMESTAMP': '0'})
|
||||
environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a?format=json',
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
@ -476,7 +491,8 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_GET_empty_account_xml(self):
|
||||
req = Request.blank('/sda1/p/a?format=xml',
|
||||
environ={'REQUEST_METHOD': 'PUT', 'HTTP_X_TIMESTAMP': '0'})
|
||||
environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a?format=xml',
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
@ -486,14 +502,15 @@ class TestAccountController(unittest.TestCase):
|
||||
'application/xml; charset=utf-8')
|
||||
|
||||
def test_GET_over_limit(self):
|
||||
req = Request.blank('/sda1/p/a?limit=%d' %
|
||||
(ACCOUNT_LISTING_LIMIT + 1), environ={'REQUEST_METHOD': 'GET'})
|
||||
req = Request.blank(
|
||||
'/sda1/p/a?limit=%d' % (ACCOUNT_LISTING_LIMIT + 1),
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 412)
|
||||
|
||||
def test_GET_with_containers_plain(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
@ -545,7 +562,7 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_GET_with_containers_json(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
@ -594,7 +611,7 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_GET_with_containers_xml(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
@ -675,7 +692,8 @@ class TestAccountController(unittest.TestCase):
|
||||
node = [n for n in container if n.nodeName == 'bytes'][0]
|
||||
self.assertEquals(node.firstChild.nodeValue, '2')
|
||||
self.assertEquals(listing[-1].nodeName, 'container')
|
||||
container = [n for n in listing[-1].childNodes if n.nodeName != '#text']
|
||||
container = [
|
||||
n for n in listing[-1].childNodes if n.nodeName != '#text']
|
||||
self.assertEquals(sorted([n.nodeName for n in container]),
|
||||
['bytes', 'count', 'name'])
|
||||
node = [n for n in container if n.nodeName == 'name'][0]
|
||||
@ -748,16 +766,17 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_GET_limit_marker_plain(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
for c in xrange(5):
|
||||
req = Request.blank('/sda1/p/a/c%d' % c,
|
||||
environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': str(c + 1),
|
||||
'X-Delete-Timestamp': '0',
|
||||
'X-Object-Count': '2',
|
||||
'X-Bytes-Used': '3',
|
||||
'X-Timestamp': normalize_timestamp(0)})
|
||||
req = Request.blank(
|
||||
'/sda1/p/a/c%d' % c,
|
||||
environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': str(c + 1),
|
||||
'X-Delete-Timestamp': '0',
|
||||
'X-Object-Count': '2',
|
||||
'X-Bytes-Used': '3',
|
||||
'X-Timestamp': normalize_timestamp(0)})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a?limit=3',
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
@ -772,16 +791,17 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_GET_limit_marker_json(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
for c in xrange(5):
|
||||
req = Request.blank('/sda1/p/a/c%d' % c,
|
||||
environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': str(c + 1),
|
||||
'X-Delete-Timestamp': '0',
|
||||
'X-Object-Count': '2',
|
||||
'X-Bytes-Used': '3',
|
||||
'X-Timestamp': normalize_timestamp(0)})
|
||||
req = Request.blank(
|
||||
'/sda1/p/a/c%d' % c,
|
||||
environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': str(c + 1),
|
||||
'X-Delete-Timestamp': '0',
|
||||
'X-Object-Count': '2',
|
||||
'X-Bytes-Used': '3',
|
||||
'X-Timestamp': normalize_timestamp(0)})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a?limit=3&format=json',
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
@ -801,16 +821,17 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_GET_limit_marker_xml(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
for c in xrange(5):
|
||||
req = Request.blank('/sda1/p/a/c%d' % c,
|
||||
environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': str(c + 1),
|
||||
'X-Delete-Timestamp': '0',
|
||||
'X-Object-Count': '2',
|
||||
'X-Bytes-Used': '3',
|
||||
'X-Timestamp': normalize_timestamp(c)})
|
||||
req = Request.blank(
|
||||
'/sda1/p/a/c%d' % c,
|
||||
environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': str(c + 1),
|
||||
'X-Delete-Timestamp': '0',
|
||||
'X-Object-Count': '2',
|
||||
'X-Bytes-Used': '3',
|
||||
'X-Timestamp': normalize_timestamp(c)})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a?limit=3&format=xml',
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
@ -832,7 +853,8 @@ class TestAccountController(unittest.TestCase):
|
||||
node = [n for n in container if n.nodeName == 'bytes'][0]
|
||||
self.assertEquals(node.firstChild.nodeValue, '3')
|
||||
self.assertEquals(listing[-1].nodeName, 'container')
|
||||
container = [n for n in listing[-1].childNodes if n.nodeName != '#text']
|
||||
container = [
|
||||
n for n in listing[-1].childNodes if n.nodeName != '#text']
|
||||
self.assertEquals(sorted([n.nodeName for n in container]),
|
||||
['bytes', 'count', 'name'])
|
||||
node = [n for n in container if n.nodeName == 'name'][0]
|
||||
@ -861,7 +883,8 @@ class TestAccountController(unittest.TestCase):
|
||||
node = [n for n in container if n.nodeName == 'bytes'][0]
|
||||
self.assertEquals(node.firstChild.nodeValue, '3')
|
||||
self.assertEquals(listing[-1].nodeName, 'container')
|
||||
container = [n for n in listing[-1].childNodes if n.nodeName != '#text']
|
||||
container = [
|
||||
n for n in listing[-1].childNodes if n.nodeName != '#text']
|
||||
self.assertEquals(sorted([n.nodeName for n in container]),
|
||||
['bytes', 'count', 'name'])
|
||||
node = [n for n in container if n.nodeName == 'name'][0]
|
||||
@ -873,7 +896,7 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_GET_accept_wildcard(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
@ -890,7 +913,7 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_GET_accept_application_wildcard(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
@ -907,7 +930,7 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_GET_accept_json(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
@ -924,7 +947,7 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_GET_accept_xml(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
@ -945,7 +968,7 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_GET_accept_conflicting(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
@ -963,7 +986,7 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_GET_accept_not_valid(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
@ -986,10 +1009,11 @@ class TestAccountController(unittest.TestCase):
|
||||
|
||||
def test_GET_prefix_delimiter_plain(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
resp = req.get_response(self.controller)
|
||||
for first in range(3):
|
||||
req = Request.blank('/sda1/p/a/sub.%s' % first,
|
||||
req = Request.blank(
|
||||
'/sda1/p/a/sub.%s' % first,
|
||||
environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
'X-Delete-Timestamp': '0',
|
||||
@ -998,7 +1022,8 @@ class TestAccountController(unittest.TestCase):
|
||||
'X-Timestamp': normalize_timestamp(0)})
|
||||
req.get_response(self.controller)
|
||||
for second in range(3):
|
||||
req = Request.blank('/sda1/p/a/sub.%s.%s' % (first, second),
|
||||
req = Request.blank(
|
||||
'/sda1/p/a/sub.%s.%s' % (first, second),
|
||||
environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
'X-Delete-Timestamp': '0',
|
||||
@ -1007,29 +1032,31 @@ class TestAccountController(unittest.TestCase):
|
||||
'X-Timestamp': normalize_timestamp(0)})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a?delimiter=.',
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 200)
|
||||
self.assertEquals(resp.body.strip().split('\n'), ['sub.'])
|
||||
req = Request.blank('/sda1/p/a?prefix=sub.&delimiter=.',
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 200)
|
||||
self.assertEquals(resp.body.strip().split('\n'),
|
||||
self.assertEquals(
|
||||
resp.body.strip().split('\n'),
|
||||
['sub.0', 'sub.0.', 'sub.1', 'sub.1.', 'sub.2', 'sub.2.'])
|
||||
req = Request.blank('/sda1/p/a?prefix=sub.1.&delimiter=.',
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 200)
|
||||
self.assertEquals(resp.body.strip().split('\n'),
|
||||
['sub.1.0', 'sub.1.1', 'sub.1.2'])
|
||||
['sub.1.0', 'sub.1.1', 'sub.1.2'])
|
||||
|
||||
def test_GET_prefix_delimiter_json(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
resp = req.get_response(self.controller)
|
||||
for first in range(3):
|
||||
req = Request.blank('/sda1/p/a/sub.%s' % first,
|
||||
req = Request.blank(
|
||||
'/sda1/p/a/sub.%s' % first,
|
||||
environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
'X-Delete-Timestamp': '0',
|
||||
@ -1038,7 +1065,8 @@ class TestAccountController(unittest.TestCase):
|
||||
'X-Timestamp': normalize_timestamp(0)})
|
||||
req.get_response(self.controller)
|
||||
for second in range(3):
|
||||
req = Request.blank('/sda1/p/a/sub.%s.%s' % (first, second),
|
||||
req = Request.blank(
|
||||
'/sda1/p/a/sub.%s.%s' % (first, second),
|
||||
environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
'X-Delete-Timestamp': '0',
|
||||
@ -1047,32 +1075,35 @@ class TestAccountController(unittest.TestCase):
|
||||
'X-Timestamp': normalize_timestamp(0)})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a?delimiter=.&format=json',
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 200)
|
||||
self.assertEquals([n.get('name', 's:' + n.get('subdir', 'error'))
|
||||
for n in simplejson.loads(resp.body)], ['s:sub.'])
|
||||
req = Request.blank('/sda1/p/a?prefix=sub.&delimiter=.&format=json',
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 200)
|
||||
self.assertEquals([n.get('name', 's:' + n.get('subdir', 'error'))
|
||||
for n in simplejson.loads(resp.body)],
|
||||
self.assertEquals(
|
||||
[n.get('name', 's:' + n.get('subdir', 'error'))
|
||||
for n in simplejson.loads(resp.body)],
|
||||
['sub.0', 's:sub.0.', 'sub.1', 's:sub.1.', 'sub.2', 's:sub.2.'])
|
||||
req = Request.blank('/sda1/p/a?prefix=sub.1.&delimiter=.&format=json',
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 200)
|
||||
self.assertEquals([n.get('name', 's:' + n.get('subdir', 'error'))
|
||||
for n in simplejson.loads(resp.body)],
|
||||
self.assertEquals(
|
||||
[n.get('name', 's:' + n.get('subdir', 'error'))
|
||||
for n in simplejson.loads(resp.body)],
|
||||
['sub.1.0', 'sub.1.1', 'sub.1.2'])
|
||||
|
||||
def test_GET_prefix_delimiter_xml(self):
|
||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
'HTTP_X_TIMESTAMP': '0'})
|
||||
resp = req.get_response(self.controller)
|
||||
for first in range(3):
|
||||
req = Request.blank('/sda1/p/a/sub.%s' % first,
|
||||
req = Request.blank(
|
||||
'/sda1/p/a/sub.%s' % first,
|
||||
environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
'X-Delete-Timestamp': '0',
|
||||
@ -1081,7 +1112,8 @@ class TestAccountController(unittest.TestCase):
|
||||
'X-Timestamp': normalize_timestamp(0)})
|
||||
req.get_response(self.controller)
|
||||
for second in range(3):
|
||||
req = Request.blank('/sda1/p/a/sub.%s.%s' % (first, second),
|
||||
req = Request.blank(
|
||||
'/sda1/p/a/sub.%s.%s' % (first, second),
|
||||
environ={'REQUEST_METHOD': 'PUT'},
|
||||
headers={'X-Put-Timestamp': '1',
|
||||
'X-Delete-Timestamp': '0',
|
||||
@ -1089,7 +1121,8 @@ class TestAccountController(unittest.TestCase):
|
||||
'X-Bytes-Used': '0',
|
||||
'X-Timestamp': normalize_timestamp(0)})
|
||||
req.get_response(self.controller)
|
||||
req = Request.blank('/sda1/p/a?delimiter=.&format=xml',
|
||||
req = Request.blank(
|
||||
'/sda1/p/a?delimiter=.&format=xml',
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 200)
|
||||
@ -1103,7 +1136,8 @@ class TestAccountController(unittest.TestCase):
|
||||
if node2.nodeName == 'name':
|
||||
listing.append(node2.firstChild.nodeValue)
|
||||
self.assertEquals(listing, ['s:sub.'])
|
||||
req = Request.blank('/sda1/p/a?prefix=sub.&delimiter=.&format=xml',
|
||||
req = Request.blank(
|
||||
'/sda1/p/a?prefix=sub.&delimiter=.&format=xml',
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 200)
|
||||
@ -1116,9 +1150,11 @@ class TestAccountController(unittest.TestCase):
|
||||
for node2 in node1.childNodes:
|
||||
if node2.nodeName == 'name':
|
||||
listing.append(node2.firstChild.nodeValue)
|
||||
self.assertEquals(listing,
|
||||
self.assertEquals(
|
||||
listing,
|
||||
['sub.0', 's:sub.0.', 'sub.1', 's:sub.1.', 'sub.2', 's:sub.2.'])
|
||||
req = Request.blank('/sda1/p/a?prefix=sub.1.&delimiter=.&format=xml',
|
||||
req = Request.blank(
|
||||
'/sda1/p/a?prefix=sub.1.&delimiter=.&format=xml',
|
||||
environ={'REQUEST_METHOD': 'GET'})
|
||||
resp = req.get_response(self.controller)
|
||||
self.assertEquals(resp.status_int, 200)
|
||||
@ -1369,8 +1405,9 @@ class TestAccountController(unittest.TestCase):
|
||||
errbuf = StringIO()
|
||||
outbuf = StringIO()
|
||||
self.controller = AccountController(
|
||||
{'devices': self.testdir, 'mount_check': 'false',
|
||||
'replication_server': 'false'})
|
||||
{'devices': self.testdir,
|
||||
'mount_check': 'false',
|
||||
'replication_server': 'false'})
|
||||
|
||||
def start_response(*args):
|
||||
"""Sends args to outbuf"""
|
||||
|
@ -107,24 +107,24 @@ def setup():
|
||||
obj2lis = listen(('localhost', 0))
|
||||
_test_sockets = \
|
||||
(prolis, acc1lis, acc2lis, con1lis, con2lis, obj1lis, obj2lis)
|
||||
with closing(GzipFile(os.path.join(_testdir, 'account.ring.gz'), 'wb')) \
|
||||
as f:
|
||||
account_ring_path = os.path.join(_testdir, 'account.ring.gz')
|
||||
with closing(GzipFile(account_ring_path, 'wb')) as f:
|
||||
pickle.dump(ring.RingData([[0, 1, 0, 1], [1, 0, 1, 0]],
|
||||
[{'id': 0, 'zone': 0, 'device': 'sda1', 'ip': '127.0.0.1',
|
||||
'port': acc1lis.getsockname()[1]},
|
||||
{'id': 1, 'zone': 1, 'device': 'sdb1', 'ip': '127.0.0.1',
|
||||
'port': acc2lis.getsockname()[1]}], 30),
|
||||
f)
|
||||
with closing(GzipFile(os.path.join(_testdir, 'container.ring.gz'), 'wb')) \
|
||||
as f:
|
||||
container_ring_path = os.path.join(_testdir, 'container.ring.gz')
|
||||
with closing(GzipFile(container_ring_path, 'wb')) as f:
|
||||
pickle.dump(ring.RingData([[0, 1, 0, 1], [1, 0, 1, 0]],
|
||||
[{'id': 0, 'zone': 0, 'device': 'sda1', 'ip': '127.0.0.1',
|
||||
'port': con1lis.getsockname()[1]},
|
||||
{'id': 1, 'zone': 1, 'device': 'sdb1', 'ip': '127.0.0.1',
|
||||
'port': con2lis.getsockname()[1]}], 30),
|
||||
f)
|
||||
with closing(GzipFile(os.path.join(_testdir, 'object.ring.gz'), 'wb')) \
|
||||
as f:
|
||||
object_ring_path = os.path.join(_testdir, 'object.ring.gz')
|
||||
with closing(GzipFile(object_ring_path, 'wb')) as f:
|
||||
pickle.dump(ring.RingData([[0, 1, 0, 1], [1, 0, 1, 0]],
|
||||
[{'id': 0, 'zone': 0, 'device': 'sda1', 'ip': '127.0.0.1',
|
||||
'port': obj1lis.getsockname()[1]},
|
||||
@ -171,7 +171,8 @@ def setup():
|
||||
fd.flush()
|
||||
headers = readuntil2crlfs(fd)
|
||||
exp = 'HTTP/1.1 201'
|
||||
assert headers[:len(exp)] == exp, "Expected '%s', encountered '%s'" % (exp, headers[:len(exp)])
|
||||
assert headers[:len(exp)] == exp, "Expected '%s', encountered '%s'" % (
|
||||
exp, headers[:len(exp)])
|
||||
|
||||
|
||||
def teardown():
|
||||
@ -349,7 +350,7 @@ class TestController(unittest.TestCase):
|
||||
# 'container_count' changed from 0 to None
|
||||
cache_key = get_account_memcache_key(self.account)
|
||||
account_info = {'status': 404,
|
||||
'container_count': None, # internally keep None
|
||||
'container_count': None, # internally keep None
|
||||
'total_object_count': None,
|
||||
'bytes': None,
|
||||
'meta': {}}
|
||||
@ -417,8 +418,8 @@ class TestController(unittest.TestCase):
|
||||
with save_globals():
|
||||
headers = {'x-container-read': self.read_acl,
|
||||
'x-container-write': self.write_acl}
|
||||
set_http_connect(200, # account_info is found
|
||||
200, headers=headers) # container_info is found
|
||||
set_http_connect(200, # account_info is found
|
||||
200, headers=headers) # container_info is found
|
||||
ret = self.controller.container_info(
|
||||
self.account, self.container, self.request)
|
||||
self.check_container_info_return(ret)
|
||||
@ -440,8 +441,8 @@ class TestController(unittest.TestCase):
|
||||
return True, True, 0
|
||||
|
||||
with save_globals():
|
||||
set_http_connect(503, 204, # account_info found
|
||||
504, 404, 404) # container_info 'NotFound'
|
||||
set_http_connect(503, 204, # account_info found
|
||||
504, 404, 404) # container_info 'NotFound'
|
||||
ret = self.controller.container_info(
|
||||
self.account, self.container, self.request)
|
||||
self.check_container_info_return(ret, True)
|
||||
@ -457,7 +458,7 @@ class TestController(unittest.TestCase):
|
||||
self.account, self.container, self.request)
|
||||
self.check_container_info_return(ret, True)
|
||||
|
||||
set_http_connect(503, 404, 404)# account_info 'NotFound'
|
||||
set_http_connect(503, 404, 404) # account_info 'NotFound'
|
||||
ret = self.controller.container_info(
|
||||
self.account, self.container, self.request)
|
||||
self.check_container_info_return(ret, True)
|
||||
@ -818,8 +819,8 @@ class TestObjectController(unittest.TestCase):
|
||||
proxy_server.ObjectController(self.app, 'a', 'c', 'o.jpg')
|
||||
controller.error_limit(
|
||||
self.app.object_ring.get_part_nodes(1)[0], 'test')
|
||||
set_http_connect(200, 200, # account, container
|
||||
201, 201, 201, # 3 working backends
|
||||
set_http_connect(200, 200, # account, container
|
||||
201, 201, 201, # 3 working backends
|
||||
give_connect=test_connect)
|
||||
req = Request.blank('/a/c/o.jpg', {})
|
||||
req.content_length = 1
|
||||
@ -832,7 +833,7 @@ class TestObjectController(unittest.TestCase):
|
||||
# this is kind of a hokey test, but in FakeRing, the port is even when
|
||||
# the region is 0, and odd when the region is 1, so this test asserts
|
||||
# that we wrote to 2 nodes in region 0, then went to 1 non-r0 node.
|
||||
self.assertEqual(0, written_to[0][1] % 2) # it's (ip, port, device)
|
||||
self.assertEqual(0, written_to[0][1] % 2) # it's (ip, port, device)
|
||||
self.assertEqual(0, written_to[1][1] % 2)
|
||||
self.assertNotEqual(0, written_to[2][1] % 2)
|
||||
|
||||
@ -1237,8 +1238,8 @@ class TestObjectController(unittest.TestCase):
|
||||
"content_type": "application/octet-stream"}]
|
||||
json_listing = simplejson.dumps(listing)
|
||||
response_bodies = (
|
||||
'', # HEAD /a
|
||||
'', # HEAD /a/c
|
||||
'', # HEAD /a
|
||||
'', # HEAD /a/c
|
||||
json_listing) # GET manifest
|
||||
with save_globals():
|
||||
controller = proxy_server.ObjectController(
|
||||
@ -1897,8 +1898,8 @@ class TestObjectController(unittest.TestCase):
|
||||
with save_globals():
|
||||
limit = MAX_META_VALUE_LENGTH
|
||||
self.app.object_post_as_copy = False
|
||||
controller = proxy_server.ObjectController(self.app, 'account',
|
||||
'container', 'object')
|
||||
proxy_server.ObjectController(self.app, 'account',
|
||||
'container', 'object')
|
||||
set_http_connect(200, 200, 202, 202, 202)
|
||||
# acct cont obj obj obj
|
||||
req = Request.blank('/v1/a/c/o', {'REQUEST_METHOD': 'POST'},
|
||||
@ -2024,7 +2025,7 @@ class TestObjectController(unittest.TestCase):
|
||||
req = Request.blank('/v1/a/c/o.html', {'REQUEST_METHOD': 'PUT'},
|
||||
headers=headers)
|
||||
self.app.update_request(req)
|
||||
res = req.get_response(self.app)
|
||||
req.get_response(self.app)
|
||||
self.assertNotEquals(it_worked, [])
|
||||
self.assertTrue(all(it_worked))
|
||||
|
||||
@ -2046,7 +2047,7 @@ class TestObjectController(unittest.TestCase):
|
||||
req = Request.blank('/v1/a/c/o.html', {'REQUEST_METHOD': 'PUT'},
|
||||
headers=headers)
|
||||
self.app.update_request(req)
|
||||
res = req.get_response(self.app)
|
||||
req.get_response(self.app)
|
||||
self.assertNotEquals(it_worked, [])
|
||||
self.assertTrue(all(it_worked))
|
||||
|
||||
@ -2789,7 +2790,7 @@ class TestObjectController(unittest.TestCase):
|
||||
|
||||
copy_from_obj_body = LargeResponseBody()
|
||||
set_http_connect(200, 200, 200, 200, 200, 201, 201, 201,
|
||||
body=copy_from_obj_body)
|
||||
body=copy_from_obj_body)
|
||||
self.app.memcache.store = {}
|
||||
resp = controller.PUT(req)
|
||||
self.assertEquals(resp.status_int, 413)
|
||||
@ -2919,7 +2920,7 @@ class TestObjectController(unittest.TestCase):
|
||||
|
||||
copy_from_obj_body = LargeResponseBody()
|
||||
set_http_connect(200, 200, 200, 200, 200, 201, 201, 201,
|
||||
body=copy_from_obj_body)
|
||||
body=copy_from_obj_body)
|
||||
self.app.memcache.store = {}
|
||||
resp = controller.COPY(req)
|
||||
self.assertEquals(resp.status_int, 413)
|
||||
@ -4615,7 +4616,8 @@ class TestObjectController(unittest.TestCase):
|
||||
seen_headers = self._gather_x_container_headers(
|
||||
controller.PUT, req,
|
||||
200, 200, 201, 201, 201) # HEAD HEAD PUT PUT PUT
|
||||
self.assertEqual(seen_headers, [
|
||||
self.assertEqual(
|
||||
seen_headers, [
|
||||
{'X-Container-Host': '10.0.0.0:1000',
|
||||
'X-Container-Partition': '1',
|
||||
'X-Container-Device': 'sda'},
|
||||
@ -4636,7 +4638,8 @@ class TestObjectController(unittest.TestCase):
|
||||
controller.PUT, req,
|
||||
200, 200, 201, 201, 201) # HEAD HEAD PUT PUT PUT
|
||||
|
||||
self.assertEqual(seen_headers, [
|
||||
self.assertEqual(
|
||||
seen_headers, [
|
||||
{'X-Container-Host': '10.0.0.0:1000',
|
||||
'X-Container-Partition': '1',
|
||||
'X-Container-Device': 'sda'},
|
||||
@ -4657,7 +4660,8 @@ class TestObjectController(unittest.TestCase):
|
||||
controller.PUT, req,
|
||||
200, 200, 201, 201, 201) # HEAD HEAD PUT PUT PUT
|
||||
|
||||
self.assertEqual(seen_headers, [
|
||||
self.assertEqual(
|
||||
seen_headers, [
|
||||
{'X-Container-Host': '10.0.0.0:1000,10.0.0.3:1003',
|
||||
'X-Container-Partition': '1',
|
||||
'X-Container-Device': 'sda,sdd'},
|
||||
@ -4679,7 +4683,8 @@ class TestObjectController(unittest.TestCase):
|
||||
controller.POST, req,
|
||||
200, 200, 200, 200, 200) # HEAD HEAD POST POST POST
|
||||
|
||||
self.assertEqual(seen_headers, [
|
||||
self.assertEqual(
|
||||
seen_headers, [
|
||||
{'X-Container-Host': '10.0.0.0:1000,10.0.0.3:1003',
|
||||
'X-Container-Partition': '1',
|
||||
'X-Container-Device': 'sda,sdd'},
|
||||
@ -4844,8 +4849,9 @@ class TestContainerController(unittest.TestCase):
|
||||
self.assertEquals(res.headers['x-works'], 'yes')
|
||||
if c_expected:
|
||||
self.assertTrue('swift.container/a/c' in res.environ)
|
||||
self.assertEquals(res.environ['swift.container/a/c']['status'],
|
||||
c_expected)
|
||||
self.assertEquals(
|
||||
res.environ['swift.container/a/c']['status'],
|
||||
c_expected)
|
||||
else:
|
||||
self.assertTrue('swift.container/a/c' not in res.environ)
|
||||
if a_expected:
|
||||
@ -4867,8 +4873,9 @@ class TestContainerController(unittest.TestCase):
|
||||
self.assertEquals(res.headers['x-works'], 'yes')
|
||||
if c_expected:
|
||||
self.assertTrue('swift.container/a/c' in res.environ)
|
||||
self.assertEquals(res.environ['swift.container/a/c']['status'],
|
||||
c_expected)
|
||||
self.assertEquals(
|
||||
res.environ['swift.container/a/c']['status'],
|
||||
c_expected)
|
||||
else:
|
||||
self.assertTrue('swift.container/a/c' not in res.environ)
|
||||
if a_expected:
|
||||
@ -4894,7 +4901,8 @@ class TestContainerController(unittest.TestCase):
|
||||
# In all the following tests cache 404 for account
|
||||
# return 404 (as account is not found) and dont cache container
|
||||
test_status_map((404, 404, 404), 404, None, 404)
|
||||
self.app.account_autocreate = True # This should make no difference
|
||||
# This should make no difference
|
||||
self.app.account_autocreate = True
|
||||
test_status_map((404, 404, 404), 404, None, 404)
|
||||
|
||||
def test_PUT(self):
|
||||
@ -4919,41 +4927,41 @@ class TestContainerController(unittest.TestCase):
|
||||
self.assertFalse(self.app.account_autocreate)
|
||||
test_status_map((404, 404, 404), 404, missing_container=True)
|
||||
self.app.account_autocreate = True
|
||||
#fail to retrieve account info
|
||||
# fail to retrieve account info
|
||||
test_status_map(
|
||||
(503, 503, 503), # account_info fails on 503
|
||||
404, missing_container=True)
|
||||
(503, 503, 503), # account_info fails on 503
|
||||
404, missing_container=True)
|
||||
# account fail after creation
|
||||
test_status_map(
|
||||
(404, 404, 404, # account_info fails on 404
|
||||
201, 201, 201, # PUT account
|
||||
404, 404, 404), # account_info fail
|
||||
404, missing_container=True)
|
||||
(404, 404, 404, # account_info fails on 404
|
||||
201, 201, 201, # PUT account
|
||||
404, 404, 404), # account_info fail
|
||||
404, missing_container=True)
|
||||
test_status_map(
|
||||
(503, 503, 404, # account_info fails on 404
|
||||
503, 503, 503, # PUT account
|
||||
503, 503, 404), # account_info fail
|
||||
404, missing_container=True)
|
||||
#put fails
|
||||
(503, 503, 404, # account_info fails on 404
|
||||
503, 503, 503, # PUT account
|
||||
503, 503, 404), # account_info fail
|
||||
404, missing_container=True)
|
||||
# put fails
|
||||
test_status_map(
|
||||
(404, 404, 404, # account_info fails on 404
|
||||
201, 201, 201, # PUT account
|
||||
200, # account_info success
|
||||
503, 503, 201), # put container fail
|
||||
503, missing_container=True)
|
||||
(404, 404, 404, # account_info fails on 404
|
||||
201, 201, 201, # PUT account
|
||||
200, # account_info success
|
||||
503, 503, 201), # put container fail
|
||||
503, missing_container=True)
|
||||
# all goes according to plan
|
||||
test_status_map(
|
||||
(404, 404, 404, # account_info fails on 404
|
||||
201, 201, 201, # PUT account
|
||||
200, # account_info success
|
||||
201, 201, 201), # put container success
|
||||
201, missing_container=True)
|
||||
(404, 404, 404, # account_info fails on 404
|
||||
201, 201, 201, # PUT account
|
||||
200, # account_info success
|
||||
201, 201, 201), # put container success
|
||||
201, missing_container=True)
|
||||
test_status_map(
|
||||
(503, 404, 404, # account_info fails on 404
|
||||
503, 201, 201, # PUT account
|
||||
503, 200, # account_info success
|
||||
503, 201, 201), # put container success
|
||||
201, missing_container=True)
|
||||
(503, 404, 404, # account_info fails on 404
|
||||
503, 201, 201, # PUT account
|
||||
503, 200, # account_info success
|
||||
503, 201, 201), # put container success
|
||||
201, missing_container=True)
|
||||
|
||||
def test_POST(self):
|
||||
with save_globals():
|
||||
@ -5367,7 +5375,8 @@ class TestContainerController(unittest.TestCase):
|
||||
req = Request.blank('/a/c')
|
||||
self.app.update_request(req)
|
||||
res = controller.GET(req)
|
||||
self.assertEquals(res.environ['swift.container/a/c']['status'], 204)
|
||||
self.assertEquals(
|
||||
res.environ['swift.container/a/c']['status'], 204)
|
||||
self.assertEquals(res.content_length, 0)
|
||||
self.assertTrue('transfer-encoding' not in res.headers)
|
||||
|
||||
@ -5571,7 +5580,7 @@ class TestContainerController(unittest.TestCase):
|
||||
self.assertEquals(expected_exposed, exposed)
|
||||
|
||||
def _gather_x_account_headers(self, controller_call, req, *connect_args,
|
||||
**kwargs):
|
||||
**kwargs):
|
||||
seen_headers = []
|
||||
to_capture = ('X-Account-Partition', 'X-Account-Host',
|
||||
'X-Account-Device')
|
||||
@ -5721,9 +5730,10 @@ class TestAccountController(unittest.TestCase):
|
||||
# Access-Control-Request-Method headers)
|
||||
self.app.allow_account_management = False
|
||||
controller = proxy_server.AccountController(self.app, 'account')
|
||||
req = Request.blank('/account', {'REQUEST_METHOD': 'OPTIONS'},
|
||||
req = Request.blank(
|
||||
'/account', {'REQUEST_METHOD': 'OPTIONS'},
|
||||
headers={'Origin': 'http://foo.com',
|
||||
'Access-Control-Request-Method': 'GET'})
|
||||
'Access-Control-Request-Method': 'GET'})
|
||||
req.content_length = 0
|
||||
resp = controller.OPTIONS(req)
|
||||
self.assertEquals(200, resp.status_int)
|
||||
@ -5831,16 +5841,19 @@ class TestAccountController(unittest.TestCase):
|
||||
# first test with autocreate being False
|
||||
self.assertFalse(self.app.account_autocreate)
|
||||
self.assert_status_map(controller.POST,
|
||||
(404, 404, 404), 404)
|
||||
(404, 404, 404), 404)
|
||||
# next turn it on and test account being created than updated
|
||||
controller.app.account_autocreate = True
|
||||
self.assert_status_map(controller.POST,
|
||||
self.assert_status_map(
|
||||
controller.POST,
|
||||
(404, 404, 404, 202, 202, 202, 201, 201, 201), 201)
|
||||
# account_info PUT account POST account
|
||||
self.assert_status_map(controller.POST,
|
||||
(404, 404, 503, 201, 201, 503, 204, 204, 504), 204)
|
||||
self.assert_status_map(
|
||||
controller.POST,
|
||||
(404, 404, 503, 201, 201, 503, 204, 204, 504), 204)
|
||||
# what if create fails
|
||||
self.assert_status_map(controller.POST,
|
||||
self.assert_status_map(
|
||||
controller.POST,
|
||||
(404, 404, 404, 403, 403, 403, 400, 400, 400), 400)
|
||||
|
||||
def test_connection_refused(self):
|
||||
@ -6115,9 +6128,10 @@ class TestAccountControllerFakeGetResponse(unittest.TestCase):
|
||||
def test_GET_autocreate_accept_json(self):
|
||||
with save_globals():
|
||||
set_http_connect(*([404] * 100)) # nonexistent: all backends 404
|
||||
req = Request.blank('/v1/a', headers={'Accept': 'application/json'},
|
||||
environ={'REQUEST_METHOD': 'GET',
|
||||
'PATH_INFO': '/v1/a'})
|
||||
req = Request.blank(
|
||||
'/v1/a', headers={'Accept': 'application/json'},
|
||||
environ={'REQUEST_METHOD': 'GET',
|
||||
'PATH_INFO': '/v1/a'})
|
||||
resp = req.get_response(self.app)
|
||||
self.assertEqual(200, resp.status_int)
|
||||
self.assertEqual('application/json; charset=utf-8',
|
||||
@ -6360,7 +6374,8 @@ class TestSegmentedIterable(unittest.TestCase):
|
||||
segit.ratelimit_index = 0
|
||||
segit.listing.next()
|
||||
segit._load_next_segment()
|
||||
self.assertEquals(self.controller.GETorHEAD_base_args[-1][4], '/a/lc/o2')
|
||||
self.assertEquals(
|
||||
self.controller.GETorHEAD_base_args[-1][4], '/a/lc/o2')
|
||||
data = ''.join(segit.segment_iter)
|
||||
self.assertEquals(data, '22')
|
||||
|
||||
@ -6372,9 +6387,11 @@ class TestSegmentedIterable(unittest.TestCase):
|
||||
segit.listing.next()
|
||||
segit.seek = 1
|
||||
segit._load_next_segment()
|
||||
self.assertEquals(self.controller.GETorHEAD_base_args[-1][4], '/a/lc/o2')
|
||||
self.assertEquals(str(self.controller.GETorHEAD_base_args[-1][0].range),
|
||||
'bytes=1-')
|
||||
self.assertEquals(
|
||||
self.controller.GETorHEAD_base_args[-1][4], '/a/lc/o2')
|
||||
self.assertEquals(
|
||||
str(self.controller.GETorHEAD_base_args[-1][0].range),
|
||||
'bytes=1-')
|
||||
data = ''.join(segit.segment_iter)
|
||||
self.assertEquals(data, '2')
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user