summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/unit/common/test_diskdir.py34
-rw-r--r--test/unit/proxy/test_server.py35
2 files changed, 69 insertions, 0 deletions
diff --git a/test/unit/common/test_diskdir.py b/test/unit/common/test_diskdir.py
index 580e76a..be0c922 100644
--- a/test/unit/common/test_diskdir.py
+++ b/test/unit/common/test_diskdir.py
@@ -344,6 +344,22 @@ class TestDiskCommon(unittest.TestCase):
del dc.metadata['X-Container-Meta-foo']
assert dc.metadata == md_copy
+ def test_empty_dir_is_not_empty(self):
+ dc = dd.DiskCommon(self.td, self.fake_drives[0],
+ self.fake_accounts[0], self.fake_logger)
+ os.makedirs(os.path.join(self.td, self.fake_drives[0], 'aaabbbccc'))
+ self.assertFalse(dc.empty())
+
+ def test_empty_dir_is_empty(self):
+ dc = dd.DiskCommon(self.td, self.fake_drives[0],
+ self.fake_accounts[0], self.fake_logger)
+ self.assertTrue(dc.empty())
+
+ def test_empty_dir_does_not_exist(self):
+ dc = dd.DiskCommon(self.td, 'non_existent_drive',
+ self.fake_accounts[0], self.fake_logger)
+ self.assertTrue(dc.empty())
+
class TestContainerBroker(unittest.TestCase):
"""
@@ -498,6 +514,24 @@ class TestContainerBroker(unittest.TestCase):
self.assertEquals(info['x_container_sync_point1'], -1)
self.assertEquals(info['x_container_sync_point2'], -1)
+ def test_get_info_nonexistent_container(self):
+ broker = dd.DiskDir(self.path, self.drive, account='no_account',
+ container='no_container', logger=FakeLogger())
+ info = broker.get_info()
+
+ #
+ # Because broker._dir_exists is False and _update_object_count()
+ # has not been called yet, the values returned for
+ # object_count, bytes_used, and put_timestamp are '0' as
+ # a string. OpenStack Swift handles this situation by
+ # passing the value to float().
+ #
+ self.assertEquals(info['account'], 'no_account')
+ self.assertEquals(info['container'], 'no_container')
+ self.assertEquals(info['object_count'], '0')
+ self.assertEquals(info['bytes_used'], '0')
+ self.assertEquals(info['put_timestamp'], '0')
+
def test_set_x_syncs(self):
broker = self._get_broker(account='test1',
container='test2')
diff --git a/test/unit/proxy/test_server.py b/test/unit/proxy/test_server.py
index a04380d..57e3111 100644
--- a/test/unit/proxy/test_server.py
+++ b/test/unit/proxy/test_server.py
@@ -4512,6 +4512,41 @@ class TestContainerController(unittest.TestCase):
self.assert_status_map(controller.DELETE,
(200, 404, 404, 404), 404)
+ def test_DELETE_container_that_does_not_exist(self):
+ prolis = _test_sockets[0]
+ # Create a container
+ sock = connect_tcp(('localhost', prolis.getsockname()[1]))
+ fd = sock.makefile()
+ fd.write('PUT /v1/a/aaabbbccc HTTP/1.1\r\nHost: localhost\r\n'
+ 'Connection: close\r\nX-Storage-Token: t\r\n'
+ 'Content-Length: 0\r\n\r\n')
+ fd.flush()
+ headers = readuntil2crlfs(fd)
+ exp = 'HTTP/1.1 201'
+ self.assertEquals(headers[:len(exp)], exp)
+
+ # Delete container
+ sock = connect_tcp(('localhost', prolis.getsockname()[1]))
+ fd = sock.makefile()
+ fd.write('DELETE /v1/a/aaabbbccc HTTP/1.1\r\nHost: localhost\r\n'
+ 'Connection: close\r\nX-Storage-Token: t\r\n'
+ 'Content-Length: 0\r\n\r\n')
+ fd.flush()
+ headers = readuntil2crlfs(fd)
+ exp = 'HTTP/1.1 204'
+ self.assertEquals(headers[:len(exp)], exp)
+
+ # Delete again
+ sock = connect_tcp(('localhost', prolis.getsockname()[1]))
+ fd = sock.makefile()
+ fd.write('DELETE /v1/a/aaabbbccc HTTP/1.1\r\nHost: localhost\r\n'
+ 'Connection: close\r\nX-Storage-Token: t\r\n'
+ 'Content-Length: 0\r\n\r\n')
+ fd.flush()
+ headers = readuntil2crlfs(fd)
+ exp = 'HTTP/1.1 404'
+ self.assertEquals(headers[:len(exp)], exp)
+
def test_response_get_accept_ranges_header(self):
with save_globals():
set_http_connect(200, 200, body='{}')