summaryrefslogtreecommitdiffstats
path: root/test/unit/common
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/common')
-rw-r--r--test/unit/common/test_diskfile.py32
-rw-r--r--test/unit/common/test_utils.py57
2 files changed, 71 insertions, 18 deletions
diff --git a/test/unit/common/test_diskfile.py b/test/unit/common/test_diskfile.py
index b8878e8..857ba9d 100644
--- a/test/unit/common/test_diskfile.py
+++ b/test/unit/common/test_diskfile.py
@@ -23,7 +23,7 @@ import tempfile
import shutil
from hashlib import md5
from swift.common.utils import normalize_timestamp
-from swift.common.exceptions import DiskFileNotExist
+from swift.common.exceptions import DiskFileNotExist, DiskFileError
import gluster.swift.common.DiskFile
import gluster.swift.common.utils
from gluster.swift.common.DiskFile import Gluster_DiskFile, \
@@ -54,8 +54,8 @@ class MockException(Exception):
pass
-def _mock_rmdirs(p):
- raise MockException("gluster.swift.common.DiskFile.rmdirs() called")
+def _mock_rmobjdir(p):
+ raise MockException("gluster.swift.common.DiskFile.rmobjdir() called")
def _mock_do_fsync(fd):
return
@@ -348,12 +348,12 @@ class TestDiskFile(unittest.TestCase):
assert g == DEFAULT_GID
dc = gluster.swift.common.DiskFile.do_chown
gluster.swift.common.DiskFile.do_chown = _mock_do_chown
- try:
- gdf._create_dir_object(the_dir)
- finally:
- gluster.swift.common.DiskFile.do_chown = dc
- assert os.path.isdir(the_dir)
- assert the_dir in _metadata
+ self.assertRaises(DiskFileError,
+ gdf._create_dir_object,
+ the_dir)
+ gluster.swift.common.DiskFile.do_chown = dc
+ self.assertFalse(os.path.isdir(the_dir))
+ self.assertFalse(the_dir in _metadata)
finally:
shutil.rmtree(td)
@@ -571,14 +571,14 @@ class TestDiskFile(unittest.TestCase):
gdf = Gluster_DiskFile("/tmp/foo", "vol0", "p57", "ufo47", "bar",
"z", self.lg)
assert gdf.metadata == {}
- _saved_rmdirs = gluster.swift.common.DiskFile.rmdirs
- gluster.swift.common.DiskFile.rmdirs = _mock_rmdirs
+ _saved_rmobjdir = gluster.swift.common.DiskFile.rmobjdir
+ gluster.swift.common.DiskFile.rmobjdir = _mock_rmobjdir
try:
gdf.unlinkold(None)
except MockException as exp:
self.fail(str(exp))
finally:
- gluster.swift.common.DiskFile.rmdirs = _saved_rmdirs
+ gluster.swift.common.DiskFile.rmobjdir = _saved_rmobjdir
def test_unlinkold_same_timestamp(self):
assert not os.path.exists("/tmp/foo")
@@ -586,14 +586,14 @@ class TestDiskFile(unittest.TestCase):
"z", self.lg)
assert gdf.metadata == {}
gdf.metadata['X-Timestamp'] = 1
- _saved_rmdirs = gluster.swift.common.DiskFile.rmdirs
- gluster.swift.common.DiskFile.rmdirs = _mock_rmdirs
+ _saved_rmobjdir = gluster.swift.common.DiskFile.rmobjdir
+ gluster.swift.common.DiskFile.rmobjdir = _mock_rmobjdir
try:
gdf.unlinkold(1)
except MockException as exp:
self.fail(str(exp))
finally:
- gluster.swift.common.DiskFile.rmdirs = _saved_rmdirs
+ gluster.swift.common.DiskFile.rmobjdir = _saved_rmobjdir
def test_unlinkold_file(self):
td = tempfile.mkdtemp()
@@ -717,7 +717,7 @@ class TestDiskFile(unittest.TestCase):
os.chmod(gdf.datadir, stats.st_mode)
os.rmdir = __os_rmdir
assert os.path.isdir(gdf.datadir)
- assert os.path.isdir(gdf.data_file)
+ self.assertTrue(gdf.data_file is None)
finally:
shutil.rmtree(td)
diff --git a/test/unit/common/test_utils.py b/test/unit/common/test_utils.py
index 566c70e..20984b1 100644
--- a/test/unit/common/test_utils.py
+++ b/test/unit/common/test_utils.py
@@ -367,7 +367,7 @@ class TestUtils(unittest.TestCase):
for key in self.obj_keys:
assert key in md, "Expected key %s in %r" % (key, md)
assert md[utils.X_TYPE] == utils.OBJECT
- assert md[utils.X_OBJECT_TYPE] == utils.DIR
+ assert md[utils.X_OBJECT_TYPE] == utils.DIR_NON_OBJECT
assert md[utils.X_CONTENT_TYPE] == utils.DIR_TYPE
assert md[utils.X_CONTENT_LENGTH] == 0
assert md[utils.X_TIMESTAMP] == normalize_timestamp(os.path.getctime(td))
@@ -413,7 +413,7 @@ class TestUtils(unittest.TestCase):
for key in self.obj_keys:
assert key in md, "Expected key %s in %r" % (key, md)
assert md[utils.X_TYPE] == utils.OBJECT
- assert md[utils.X_OBJECT_TYPE] == utils.DIR
+ assert md[utils.X_OBJECT_TYPE] == utils.DIR_NON_OBJECT
assert md[utils.X_CONTENT_TYPE] == utils.DIR_TYPE
assert md[utils.X_CONTENT_LENGTH] == 0
assert md[utils.X_TIMESTAMP] == normalize_timestamp(os.path.getctime(td))
@@ -802,3 +802,56 @@ class TestUtils(unittest.TestCase):
utils.X_OBJECT_TYPE: 'na' }
ret = utils.validate_object(md)
assert ret
+
+class TestUtilsDirObjects(unittest.TestCase):
+ def setUp(self):
+ _initxattr()
+ self.dirs = ['dir1',
+ 'dir1/dir2',
+ 'dir1/dir2/dir3' ]
+ self.files = ['file1',
+ 'file2',
+ 'dir1/dir2/file3']
+ self.tempdir = tempfile.mkdtemp()
+ self.rootdir = os.path.join(self.tempdir, 'a')
+ for d in self.dirs:
+ os.makedirs(os.path.join(self.rootdir, d))
+ for f in self.files:
+ open(os.path.join(self.rootdir, f), 'w').close()
+
+ def tearDown(self):
+ _destroyxattr()
+ shutil.rmtree(self.tempdir)
+
+ def _set_dir_object(self, obj):
+ metadata = utils.read_metadata(os.path.join(self.rootdir, obj))
+ metadata[utils.X_OBJECT_TYPE] = utils.DIR_OBJECT
+ utils.write_metadata(os.path.join(self.rootdir, self.dirs[0]),
+ metadata)
+
+ def _clear_dir_object(self, obj):
+ metadata = utils.read_metadata(os.path.join(self.rootdir, obj))
+ metadata[utils.X_OBJECT_TYPE] = utils.DIR_NON_OBJECT
+ utils.write_metadata(os.path.join(self.rootdir, obj),
+ metadata)
+
+ def test_rmobjdir_removing_files(self):
+ self.assertFalse(utils.rmobjdir(self.rootdir))
+
+ # Remove the files
+ for f in self.files:
+ os.unlink(os.path.join(self.rootdir, f))
+
+ self.assertTrue(utils.rmobjdir(self.rootdir))
+
+ def test_rmobjdir_removing_dirs(self):
+ self.assertFalse(utils.rmobjdir(self.rootdir))
+
+ # Remove the files
+ for f in self.files:
+ os.unlink(os.path.join(self.rootdir, f))
+
+ self._set_dir_object(self.dirs[0])
+ self.assertFalse(utils.rmobjdir(self.rootdir))
+ self._clear_dir_object(self.dirs[0])
+ self.assertTrue(utils.rmobjdir(self.rootdir))