summaryrefslogtreecommitdiffstats
path: root/test/unit/common/test_diskdir.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/common/test_diskdir.py')
-rw-r--r--test/unit/common/test_diskdir.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/test/unit/common/test_diskdir.py b/test/unit/common/test_diskdir.py
index 3b95de8..0ad607b 100644
--- a/test/unit/common/test_diskdir.py
+++ b/test/unit/common/test_diskdir.py
@@ -22,6 +22,7 @@ import unittest
import shutil
import tarfile
import hashlib
+from mock import Mock, patch
from time import time
from swift.common.utils import normalize_timestamp
from gluster.swift.common import utils
@@ -1179,6 +1180,48 @@ class TestAccountBroker(unittest.TestCase):
self.assertEquals([row[0] for row in listing],
['3-0049-', '3-0049-0049'])
+ def test_list_containers_iter_plain_listing(self):
+ broker = self._get_broker(account='a')
+ broker.initialize(self.initial_ts)
+ for cont in xrange(10):
+ # Create 10 containers - lci0 to lci9
+ self._create_container('lci%d' % cont)
+
+ # Check and assert that only name is fetched.
+ listing = broker.list_containers_iter(100, '', None, None,
+ '', 'text/plain')
+ self.assertEquals(len(listing), 10)
+ for i, (name, o_count, bytes_used, j) in enumerate(listing):
+ self.assertEqual(name, 'lci%d' % i)
+ self.assertEqual(o_count, 0)
+ self.assertEqual(bytes_used, 0)
+ self.assertEqual(j, 0)
+
+ # Check that limit is still honored.
+ listing = broker.list_containers_iter(5, '', None, None,
+ '', 'text/plain')
+ self.assertEquals(len(listing), 5)
+
+ # Confirm that metadata of containers (xattrs) are not fetched when
+ # response_content_type is text/plain
+ _m_r_md = Mock(return_value={})
+ with patch('gluster.swift.common.DiskDir._read_metadata', _m_r_md):
+ listing = broker.list_containers_iter(100, '', None, None,
+ '', 'text/plain')
+ self.assertEquals(len(listing), 10)
+ self.assertFalse(_m_r_md.called)
+
+ # Confirm that metadata of containers (xattrs) are still fetched when
+ # response_content_type is NOT text/plain
+ _m_r_md.reset_mock()
+ with patch('gluster.swift.common.DiskDir._read_metadata', _m_r_md):
+ listing = broker.list_containers_iter(100, '', None, None,
+ '', 'application/json')
+ self.assertEquals(len(listing), 10)
+ self.assertTrue(_m_r_md.called)
+ self.assertEqual(_m_r_md.call_count, 10)
+
+
def test_double_check_trailing_delimiter(self):
# Test swift.common.db.AccountBroker.list_containers_iter for an
# account that has an odd container with a trailing delimiter