summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/unit/common/test_fs_utils.py49
-rw-r--r--test/unit/common/test_utils.py59
-rw-r--r--test/unit/obj/test_diskfile.py619
-rw-r--r--test/unit/proxy/test_server.py10
4 files changed, 267 insertions, 470 deletions
diff --git a/test/unit/common/test_fs_utils.py b/test/unit/common/test_fs_utils.py
index 19fc2df..c7f969e 100644
--- a/test/unit/common/test_fs_utils.py
+++ b/test/unit/common/test_fs_utils.py
@@ -34,19 +34,6 @@ def mock_os_fdatasync(fd):
return True
-class TestFakefile(unittest.TestCase):
- """ Tests for common.fs_utils.Fake_file """
-
- def test_Fake_file(self):
- path = "/tmp/bar"
- ff = fs.Fake_file(path)
- self.assertEqual(path, ff.path)
- self.assertEqual(0, ff.tell())
- self.assertEqual(None, ff.read(50))
- self.assertEqual(-1, ff.fileno())
- self.assertEqual(None, ff.close())
-
-
class TestFsUtils(unittest.TestCase):
""" Tests for common.fs_utils """
@@ -199,16 +186,6 @@ class TestFsUtils(unittest.TestCase):
def test_do_open(self):
_fd, tmpfile = mkstemp()
try:
- f = fs.do_open(tmpfile, 'r')
- try:
- f.write('test')
- except IOError as err:
- pass
- else:
- self.fail("IOError expected")
- finally:
- f.close()
-
fd = fs.do_open(tmpfile, os.O_RDONLY)
try:
os.write(fd, 'test')
@@ -222,14 +199,6 @@ class TestFsUtils(unittest.TestCase):
os.close(_fd)
os.remove(tmpfile)
- def test_do_open_err(self):
- try:
- fs.do_open(os.path.join('/tmp', str(random.random())), 'r')
- except GlusterFileSystemIOError:
- pass
- else:
- self.fail("GlusterFileSystemIOError expected")
-
def test_do_open_err_int_mode(self):
try:
fs.do_open(os.path.join('/tmp', str(random.random())),
@@ -463,8 +432,6 @@ class TestFsUtils(unittest.TestCase):
pass
else:
self.fail("OSError expected")
- fp = open(tmpfile)
- fs.do_close(fp)
finally:
os.remove(tmpfile)
@@ -482,22 +449,6 @@ class TestFsUtils(unittest.TestCase):
finally:
os.remove(tmpfile)
- def test_do_close_err_fp(self):
- fd, tmpfile = mkstemp()
- os.close(fd)
- fp = open(tmpfile, 'w')
- try:
- fd = fp.fileno()
- os.close(fd)
- try:
- fs.do_close(fp)
- except GlusterFileSystemIOError:
- pass
- else:
- self.fail("GlusterFileSystemIOError expected")
- finally:
- os.remove(tmpfile)
-
def test_do_unlink(self):
fd, tmpfile = mkstemp()
try:
diff --git a/test/unit/common/test_utils.py b/test/unit/common/test_utils.py
index 72d62d0..4d345da 100644
--- a/test/unit/common/test_utils.py
+++ b/test/unit/common/test_utils.py
@@ -26,7 +26,6 @@ import tarfile
import shutil
from collections import defaultdict
from mock import patch
-from swift.common.utils import normalize_timestamp
from gluster.swift.common import utils, Glusterfs
from gluster.swift.common.exceptions import GlusterFileSystemOSError
@@ -368,7 +367,7 @@ class TestUtils(unittest.TestCase):
assert md[utils.X_OBJECT_TYPE] == utils.FILE
assert md[utils.X_CONTENT_TYPE] == utils.FILE_TYPE
assert md[utils.X_CONTENT_LENGTH] == os.path.getsize(tf.name)
- assert md[utils.X_TIMESTAMP] == normalize_timestamp(os.path.getctime(tf.name))
+ assert md[utils.X_TIMESTAMP] == utils.normalize_timestamp(os.path.getctime(tf.name))
assert md[utils.X_ETAG] == utils._get_etag(tf.name)
def test_get_object_metadata_dir(self):
@@ -381,7 +380,7 @@ class TestUtils(unittest.TestCase):
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))
+ assert md[utils.X_TIMESTAMP] == utils.normalize_timestamp(os.path.getctime(td))
assert md[utils.X_ETAG] == hashlib.md5().hexdigest()
finally:
os.rmdir(td)
@@ -406,7 +405,7 @@ class TestUtils(unittest.TestCase):
assert md[utils.X_OBJECT_TYPE] == utils.FILE
assert md[utils.X_CONTENT_TYPE] == utils.FILE_TYPE
assert md[utils.X_CONTENT_LENGTH] == os.path.getsize(tf.name)
- assert md[utils.X_TIMESTAMP] == normalize_timestamp(os.path.getctime(tf.name))
+ assert md[utils.X_TIMESTAMP] == utils.normalize_timestamp(os.path.getctime(tf.name))
assert md[utils.X_ETAG] == utils._get_etag(tf.name)
def test_create_object_metadata_dir(self):
@@ -428,7 +427,7 @@ class TestUtils(unittest.TestCase):
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))
+ assert md[utils.X_TIMESTAMP] == utils.normalize_timestamp(os.path.getctime(td))
assert md[utils.X_ETAG] == hashlib.md5().hexdigest()
finally:
os.rmdir(td)
@@ -445,8 +444,8 @@ class TestUtils(unittest.TestCase):
try:
exp_md = {
utils.X_TYPE: (utils.CONTAINER, 0),
- utils.X_TIMESTAMP: (normalize_timestamp(os.path.getctime(td)), 0),
- utils.X_PUT_TIMESTAMP: (normalize_timestamp(os.path.getmtime(td)), 0),
+ utils.X_TIMESTAMP: (utils.normalize_timestamp(os.path.getctime(td)), 0),
+ utils.X_PUT_TIMESTAMP: (utils.normalize_timestamp(os.path.getmtime(td)), 0),
utils.X_OBJECTS_COUNT: (3, 0),
utils.X_BYTES_USED: (47, 0),
}
@@ -467,8 +466,8 @@ class TestUtils(unittest.TestCase):
try:
exp_md = {
utils.X_TYPE: (utils.ACCOUNT, 0),
- utils.X_TIMESTAMP: (normalize_timestamp(os.path.getctime(td)), 0),
- utils.X_PUT_TIMESTAMP: (normalize_timestamp(os.path.getmtime(td)), 0),
+ utils.X_TIMESTAMP: (utils.normalize_timestamp(os.path.getctime(td)), 0),
+ utils.X_PUT_TIMESTAMP: (utils.normalize_timestamp(os.path.getmtime(td)), 0),
utils.X_OBJECTS_COUNT: (0, 0),
utils.X_BYTES_USED: (0, 0),
utils.X_CONTAINER_COUNT: (2, 0),
@@ -498,8 +497,8 @@ class TestUtils(unittest.TestCase):
for key in self.cont_keys:
assert key in md, "Expected key %s in %r" % (key, md)
assert md[utils.X_TYPE] == (utils.CONTAINER, 0)
- assert md[utils.X_TIMESTAMP] == (normalize_timestamp(os.path.getctime(td)), 0)
- assert md[utils.X_PUT_TIMESTAMP] == (normalize_timestamp(os.path.getmtime(td)), 0)
+ assert md[utils.X_TIMESTAMP] == (utils.normalize_timestamp(os.path.getctime(td)), 0)
+ assert md[utils.X_PUT_TIMESTAMP] == (utils.normalize_timestamp(os.path.getmtime(td)), 0)
assert md[utils.X_OBJECTS_COUNT] == (0, 0)
assert md[utils.X_BYTES_USED] == (0, 0)
finally:
@@ -524,8 +523,8 @@ class TestUtils(unittest.TestCase):
for key in self.acct_keys:
assert key in md, "Expected key %s in %r" % (key, md)
assert md[utils.X_TYPE] == (utils.ACCOUNT, 0)
- assert md[utils.X_TIMESTAMP] == (normalize_timestamp(os.path.getctime(td)), 0)
- assert md[utils.X_PUT_TIMESTAMP] == (normalize_timestamp(os.path.getmtime(td)), 0)
+ assert md[utils.X_TIMESTAMP] == (utils.normalize_timestamp(os.path.getctime(td)), 0)
+ assert md[utils.X_PUT_TIMESTAMP] == (utils.normalize_timestamp(os.path.getmtime(td)), 0)
assert md[utils.X_OBJECTS_COUNT] == (0, 0)
assert md[utils.X_BYTES_USED] == (0, 0)
assert md[utils.X_CONTAINER_COUNT] == (0, 0)
@@ -608,40 +607,6 @@ class TestUtils(unittest.TestCase):
os.chdir(orig_cwd)
shutil.rmtree(td)
- def test_write_pickle(self):
- td = tempfile.mkdtemp()
- try:
- fpp = os.path.join(td, 'pp')
- # FIXME: Remove this patch when coverage.py can handle eventlet
- with patch("os.fsync", _mock_os_fsync):
- utils.write_pickle('pickled peppers', fpp)
- with open(fpp, "rb") as f:
- contents = f.read()
- s = pickle.loads(contents)
- assert s == 'pickled peppers', repr(s)
- finally:
- shutil.rmtree(td)
-
- def test_write_pickle_ignore_tmp(self):
- tf = tempfile.NamedTemporaryFile()
- td = tempfile.mkdtemp()
- try:
- fpp = os.path.join(td, 'pp')
- # Also test an explicity pickle protocol
- # FIXME: Remove this patch when coverage.py can handle eventlet
- with patch("os.fsync", _mock_os_fsync):
- utils.write_pickle('pickled peppers', fpp, tmp=tf.name,
- pickle_protocol=2)
- with open(fpp, "rb") as f:
- contents = f.read()
- s = pickle.loads(contents)
- assert s == 'pickled peppers', repr(s)
- with open(tf.name, "rb") as f:
- contents = f.read()
- assert contents == ''
- finally:
- shutil.rmtree(td)
-
def test_check_user_xattr_bad_path(self):
assert False == utils.check_user_xattr("/tmp/foo/bar/check/user/xattr")
diff --git a/test/unit/obj/test_diskfile.py b/test/unit/obj/test_diskfile.py
index 27ff51e..8270e05 100644
--- a/test/unit/obj/test_diskfile.py
+++ b/test/unit/obj/test_diskfile.py
@@ -22,20 +22,22 @@ import unittest
import tempfile
import shutil
import mock
+from eventlet import tpool
from mock import patch
from hashlib import md5
+from copy import deepcopy
-from swift.common.utils import normalize_timestamp
from swift.common.exceptions import DiskFileNotExist, DiskFileError, \
- DiskFileNoSpace
+ DiskFileNoSpace, DiskFileNotOpen
+from swift.common.utils import ThreadPool
from gluster.swift.common.exceptions import GlusterFileSystemOSError
import gluster.swift.common.utils
+from gluster.swift.common.utils import normalize_timestamp
import gluster.swift.obj.diskfile
-from gluster.swift.obj.diskfile import DiskFile
+from gluster.swift.obj.diskfile import DiskFile, OnDiskManager
from gluster.swift.common.utils import DEFAULT_UID, DEFAULT_GID, X_TYPE, \
X_OBJECT_TYPE, DIR_OBJECT
-from gluster.swift.common.fs_utils import Fake_file
from test.unit.common.test_utils import _initxattr, _destroyxattr
from test.unit import FakeLogger
@@ -48,13 +50,7 @@ def _mapit(filename_or_fd):
statmeth = os.fstat
else:
statmeth = os.lstat
- try:
- stats = statmeth(filename_or_fd)
- except OSError as err:
- if err.errno == errno.ENOENT:
- raise GlusterFileSystemOSError(
- err.errno, '%s, os.fstat(%s)' % (err.strerror, filename_or_fd))
- raise
+ stats = statmeth(filename_or_fd)
return stats.st_ino
@@ -62,7 +58,7 @@ def _mock_read_metadata(filename_or_fd):
global _metadata
ino = _mapit(filename_or_fd)
if ino in _metadata:
- md = _metadata[ino].copy()
+ md = _metadata[ino]
else:
md = {}
return md
@@ -71,7 +67,7 @@ def _mock_read_metadata(filename_or_fd):
def _mock_write_metadata(filename_or_fd, metadata):
global _metadata
ino = _mapit(filename_or_fd)
- _metadata[ino] = metadata.copy()
+ _metadata[ino] = metadata
def _mock_clear_metadata():
@@ -103,6 +99,8 @@ class TestDiskFile(unittest.TestCase):
""" Tests for gluster.swift.obj.diskfile """
def setUp(self):
+ self._orig_tpool_exc = tpool.execute
+ tpool.execute = lambda f, *args, **kwargs: f(*args, **kwargs)
self.lg = FakeLogger()
_initxattr()
_mock_clear_metadata()
@@ -117,8 +115,12 @@ class TestDiskFile(unittest.TestCase):
self._saved_do_fsync = gluster.swift.obj.diskfile.do_fsync
gluster.swift.obj.diskfile.do_fsync = _mock_do_fsync
self.td = tempfile.mkdtemp()
+ self.conf = dict(devices=self.td, mb_per_sync=2,
+ keep_cache_size=(1024 * 1024), mount_check=False)
+ self.mgr = OnDiskManager(self.conf, self.lg)
def tearDown(self):
+ tpool.execute = self._orig_tpool_exc
self.lg = None
_destroyxattr()
gluster.swift.obj.diskfile.write_metadata = self._saved_df_wm
@@ -129,38 +131,29 @@ class TestDiskFile(unittest.TestCase):
shutil.rmtree(self.td)
def _get_diskfile(self, d, p, a, c, o, **kwargs):
- return DiskFile(self.td, d, p, a, c, o, self.lg, **kwargs)
+ return self.mgr.get_diskfile(d, a, c, o, **kwargs)
def test_constructor_no_slash(self):
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
+ assert gdf._mgr is self.mgr
+ assert gdf._device_path == os.path.join(self.td, "vol0")
+ assert isinstance(gdf._threadpool, ThreadPool)
+ assert gdf._uid == DEFAULT_UID
+ assert gdf._gid == DEFAULT_GID
assert gdf._obj == "z"
assert gdf._obj_path == ""
- assert gdf.name == "bar"
- assert gdf.datadir == os.path.join(self.td, "vol0", "bar")
- assert gdf.device_path == os.path.join(self.td, "vol0")
- assert gdf._container_path == os.path.join(self.td, "vol0", "bar")
- assert gdf.disk_chunk_size == 65536
- assert gdf.iter_hook is None
- assert gdf.logger == self.lg
- assert gdf.uid == DEFAULT_UID
- assert gdf.gid == DEFAULT_GID
- assert gdf._metadata == None
- assert gdf.data_file is None
- assert gdf.fp is None
- assert gdf.iter_etag is None
- assert not gdf.started_at_0
- assert not gdf.read_to_eof
- assert gdf.quarantined_dir is None
- assert not gdf.keep_cache
- assert not gdf._is_dir
+ assert gdf._datadir == os.path.join(self.td, "vol0", "bar"), gdf._datadir
+ assert gdf._datadir == gdf._put_datadir
+ assert gdf._data_file == os.path.join(self.td, "vol0", "bar", "z")
+ assert gdf._is_dir is False
+ assert gdf._logger == self.lg
+ assert gdf._fd is None
def test_constructor_leadtrail_slash(self):
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "/b/a/z/")
assert gdf._obj == "z"
- assert gdf._obj_path == os.path.join("b", "a")
- assert gdf.name == os.path.join("bar", "b", "a")
- assert gdf.datadir == os.path.join(self.td, "vol0", "bar", "b", "a")
- assert gdf.device_path == os.path.join(self.td, "vol0")
+ assert gdf._obj_path == "b/a"
+ assert gdf._datadir == os.path.join(self.td, "vol0", "bar", "b", "a"), gdf._datadir
def test_open_no_metadata(self):
the_path = os.path.join(self.td, "vol0", "bar")
@@ -180,11 +173,17 @@ class TestDiskFile(unittest.TestCase):
'Content-Type': 'application/octet-stream'}
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
assert gdf._obj == "z"
+ assert gdf._fd is None
+ assert gdf._metadata is None
+ assert not gdf._is_dir
with gdf.open():
- assert gdf.data_file == the_file
+ assert gdf._data_file == the_file
assert not gdf._is_dir
- assert gdf.fp is not None
+ assert gdf._fd is not None
assert gdf._metadata == exp_md
+ self.assertRaises(DiskFileNotOpen, gdf.get_metadata)
+ self.assertRaises(DiskFileNotOpen, gdf.reader)
+ self.assertRaises(DiskFileNotOpen, gdf.__enter__)
def test_open_existing_metadata(self):
the_path = os.path.join(self.td, "vol0", "bar")
@@ -205,11 +204,14 @@ class TestDiskFile(unittest.TestCase):
del exp_md['X-Object-Type']
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
assert gdf._obj == "z"
+ assert gdf._fd is None
+ assert gdf._metadata is None
+ assert not gdf._is_dir
with gdf.open():
- assert gdf.data_file == the_file
assert not gdf._is_dir
- assert gdf.fp is not None
- assert gdf._metadata == exp_md
+ assert gdf._data_file == the_file
+ assert gdf._fd is not None
+ assert gdf._metadata == exp_md, "%r != %r" % (gdf._metadata, exp_md)
def test_open_invalid_existing_metadata(self):
the_path = os.path.join(self.td, "vol0", "bar")
@@ -225,10 +227,10 @@ class TestDiskFile(unittest.TestCase):
_metadata[_mapit(the_file)] = inv_md
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
assert gdf._obj == "z"
+ assert not gdf._is_dir
+ assert gdf._fd is None
with gdf.open():
- assert gdf.data_file == the_file
- assert not gdf._is_dir
- assert gdf.fp is not None
+ assert gdf._data_file == the_file
assert gdf._metadata != inv_md
def test_open_isdir(self):
@@ -248,90 +250,101 @@ class TestDiskFile(unittest.TestCase):
del exp_md['X-Object-Type']
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "d")
assert gdf._obj == "d"
+ assert gdf._is_dir is False
with gdf.open():
- assert gdf.data_file == the_dir
assert gdf._is_dir
+ assert gdf._data_file == the_dir
assert gdf._metadata == exp_md
- def test_constructor_chunk_size(self):
- gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z",
- disk_chunk_size=8192)
- assert gdf.disk_chunk_size == 8192
-
- def test_constructor_iter_hook(self):
- gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z",
- iter_hook='hook')
- assert gdf.iter_hook == 'hook'
-
- def test_close_no_open_fp(self):
- gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
- gdf._is_dir = False
- self.called = False
+ def _create_and_get_diskfile(self, dev, par, acc, con, obj):
+ # FIXME: assumes account === volume
+ the_path = os.path.join(self.td, dev, con)
+ the_file = os.path.join(the_path, obj)
+ base_obj = os.path.basename(the_file)
+ base_dir = os.path.dirname(the_file)
+ os.makedirs(base_dir)
+ with open(the_file, "wb") as fd:
+ fd.write("y" * 256)
+ gdf = self._get_diskfile(dev, par, acc, con, obj)
+ assert gdf._obj == base_obj
+ assert not gdf._is_dir
+ assert gdf._fd is None
+ return gdf
- def our_do_close(fp):
- self.called = True
+ def test_reader(self):
+ closed = [False]
+ fd = [-1]
- with mock.patch("gluster.swift.obj.diskfile.do_close", our_do_close):
- gdf.close()
- assert not self.called
- assert gdf.fp is None
+ def mock_close(*args, **kwargs):
+ closed[0] = True
+ os.close(fd[0])
- def test_all_dir_object(self):
- the_cont = os.path.join(self.td, "vol0", "bar")
- the_dir = "dir"
- self.called = False
- os.makedirs(os.path.join(the_cont, the_dir))
- gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "dir")
+ with mock.patch("gluster.swift.obj.diskfile.do_close", mock_close):
+ gdf = self._create_and_get_diskfile("vol0", "p57", "ufo47", "bar", "z")
+ with gdf.open():
+ assert gdf._fd is not None
+ assert gdf._data_file == os.path.join(self.td, "vol0", "bar", "z")
+ reader = gdf.reader()
+ assert reader._fd is not None
+ fd[0] = reader._fd
+ chunks = [ck for ck in reader]
+ assert reader._fd is None
+ assert closed[0]
+ assert len(chunks) == 1, repr(chunks)
+
+ def test_reader_disk_chunk_size(self):
+ conf = dict(disk_chunk_size=64)
+ conf.update(self.conf)
+ self.mgr = OnDiskManager(conf, self.lg)
+ gdf = self._create_and_get_diskfile("vol0", "p57", "ufo47", "bar", "z")
with gdf.open():
- ret = isinstance(gdf.fp, Fake_file)
- self.assertTrue(ret)
-
- # Get a "Fake_file" pointer
- ffp = gdf.fp
+ reader = gdf.reader()
+ try:
+ assert reader._disk_chunk_size == 64
+ chunks = [ck for ck in reader]
+ finally:
+ reader.close()
+ assert len(chunks) == 4, repr(chunks)
+ for chunk in chunks:
+ assert len(chunk) == 64, repr(chunks)
- # This expected to call Fake_file interfaces
- ret = ffp.tell()
- self.assertEqual(ret, 0)
+ def test_reader_iter_hook(self):
+ called = [0]
- ret = ffp.read(1)
- self.assertEqual(ret, None)
+ def mock_sleep(*args, **kwargs):
+ called[0] += 1
- ret = ffp.fileno()
- self.assertEqual(ret, -1)
+ gdf = self._create_and_get_diskfile("vol0", "p57", "ufo47", "bar", "z")
+ with gdf.open():
+ reader = gdf.reader(iter_hook=mock_sleep)
+ try:
+ chunks = [ck for ck in reader]
+ finally:
+ reader.close()
+ assert len(chunks) == 1, repr(chunks)
+ assert called[0] == 1, called
- def our_do_close(ffp):
- self.called = True
+ def test_reader_dir_object(self):
+ called = [False]
- with mock.patch("gluster.swift.obj.diskfile.do_close",
- our_do_close):
- ret = ffp.close()
- self.assertEqual(ret, None)
- self.assertFalse(self.called)
+ def our_do_close(fd):
+ called[0] = True
+ os.close(fd)
- def test_close_file_object(self):
the_cont = os.path.join(self.td, "vol0", "bar")
- the_file = os.path.join(the_cont, "z")
- self.called = False
- os.makedirs(the_cont)
- with open(the_file, "wb") as fd:
- fd.write("1234")
- gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
-
- def our_do_close(fp):
- self.called = True
-
- with mock.patch("gluster.swift.obj.diskfile.do_close",
- our_do_close):
- with gdf.open():
- assert not self.called
- assert self.called
-
- def test_is_deleted(self):
- gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
+ os.makedirs(os.path.join(the_cont, "dir"))
+ gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "dir")
with gdf.open():
- assert gdf.is_deleted()
- gdf.data_file = os.path.join(self.td, "bar")
- assert not gdf.is_deleted()
+ reader = gdf.reader()
+ try:
+ chunks = [ck for ck in reader]
+ assert len(chunks) == 0, repr(chunks)
+ with mock.patch("gluster.swift.obj.diskfile.do_close",
+ our_do_close):
+ reader.close()
+ assert not called[0]
+ finally:
+ reader.close()
def test_create_dir_object_no_md(self):
the_cont = os.path.join(self.td, "vol0", "bar")
@@ -405,120 +418,111 @@ class TestDiskFile(unittest.TestCase):
self.assertFalse(os.path.isdir(the_dir))
self.assertFalse(_mapit(the_dir) in _metadata)
- def test_put_metadata(self):
- the_dir = os.path.join(self.td, "vol0", "bar", "z")
+ def test_write_metadata(self):
+ the_path = os.path.join(self.td, "vol0", "bar")
+ the_dir = os.path.join(the_path, "z")
os.makedirs(the_dir)
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
md = {'Content-Type': 'application/octet-stream', 'a': 'b'}
- gdf.put_metadata(md.copy())
- assert gdf._metadata is None
- fmd = _metadata[_mapit(the_dir)]
- md.update({'X-Object-Type': 'file', 'X-Type': 'Object'})
- assert fmd == md, "on-disk md = %r, md = %r" % (fmd, md)
-
- def test_put_w_tombstone(self):
- gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
- assert gdf._metadata == None
-
- gdf.put_metadata({'x': '1'}, tombstone=True)
- assert gdf._metadata is None
- assert _metadata == {}
-
- def test_put_w_meta_file(self):
+ gdf.write_metadata(md.copy())
+ on_disk_md = _metadata[_mapit(the_dir)]
+ del on_disk_md['X-Type']
+ del on_disk_md['X-Object-Type']
+ assert on_disk_md == md, "on_disk_md = %r, md = %r" % (
+ on_disk_md, md)
+
+ def test_write_metadata_w_meta_file(self):
the_path = os.path.join(self.td, "vol0", "bar")
the_file = os.path.join(the_path, "z")
os.makedirs(the_path)
with open(the_file, "wb") as fd:
fd.write("1234")
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
- with gdf.open():
- newmd = gdf.get_metadata().copy()
- newmd['X-Object-Meta-test'] = '1234'
- gdf.put_metadata(newmd)
- assert gdf._metadata is None
- fmd = _metadata[_mapit(the_file)]
- assert fmd == newmd, "on-disk md = %r, newmd = %r" % (fmd, newmd)
+ newmd = deepcopy(gdf.read_metadata())
+ newmd['X-Object-Meta-test'] = '1234'
+ gdf.write_metadata(newmd)
+ assert _metadata[_mapit(the_file)] == newmd
- def test_put_w_meta_file_no_content_type(self):
+ def test_write_metadata_w_meta_file_no_content_type(self):
the_path = os.path.join(self.td, "vol0", "bar")
the_file = os.path.join(the_path, "z")
os.makedirs(the_path)
with open(the_file, "wb") as fd:
fd.write("1234")
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
- with gdf.open():
- newmd = gdf.get_metadata().copy()
- newmd['Content-Type'] = ''
- newmd['X-Object-Meta-test'] = '1234'
- gdf.put_metadata(newmd)
- assert gdf._metadata is None
- fmd = _metadata[_mapit(the_file)]
- assert fmd == newmd, "on-disk md = %r, newmd = %r" % (fmd, newmd)
+ newmd = deepcopy(gdf.read_metadata())
+ newmd['Content-Type'] = ''
+ newmd['X-Object-Meta-test'] = '1234'
+ gdf.write_metadata(newmd)
+ assert _metadata[_mapit(the_file)] == newmd
- def test_put_w_meta_dir(self):
+ def test_write_metadata_w_meta_dir(self):
the_path = os.path.join(self.td, "vol0", "bar")
the_dir = os.path.join(the_path, "dir")
os.makedirs(the_dir)
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "dir")
- with gdf.open():
- newmd = gdf.get_metadata().copy()
- newmd['X-Object-Meta-test'] = '1234'
- gdf.put_metadata(newmd)
- assert gdf._metadata is None
- fmd = _metadata[_mapit(the_dir)]
- assert fmd == newmd, "on-disk md = %r, newmd = %r" % (fmd, newmd)
+ newmd = deepcopy(gdf.read_metadata())
+ newmd['X-Object-Meta-test'] = '1234'
+ gdf.write_metadata(newmd)
+ assert _metadata[_mapit(the_dir)] == newmd
- def test_put_w_marker_dir(self):
+ def test_write_metadata_w_marker_dir(self):
the_path = os.path.join(self.td, "vol0", "bar")
the_dir = os.path.join(the_path, "dir")
os.makedirs(the_dir)
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "dir")
- with gdf.open():
- newmd = gdf.get_metadata().copy()
- newmd['X-Object-Meta-test'] = '1234'
- gdf.put_metadata(newmd)
- assert gdf._metadata is None
- fmd = _metadata[_mapit(the_dir)]
- assert fmd == newmd, "on-disk md = %r, newmd = %r" % (fmd, newmd)
+ newmd = deepcopy(gdf.read_metadata())
+ newmd['X-Object-Meta-test'] = '1234'
+ gdf.write_metadata(newmd)
+ assert _metadata[_mapit(the_dir)] == newmd
def test_put_w_marker_dir_create(self):
the_cont = os.path.join(self.td, "vol0", "bar")
the_dir = os.path.join(the_cont, "dir")
os.makedirs(the_cont)
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "dir")
- assert gdf._metadata == None
+ assert gdf._metadata is None
newmd = {
'ETag': 'etag',
'X-Timestamp': 'ts',
'Content-Type': 'application/directory'}
with gdf.create() as dw:
- dw.put(newmd.copy(), extension='.dir')
- with gdf.open():
- assert gdf.data_file == the_dir
- for key, val in newmd.items():
- assert gdf._metadata[key] == val
- assert _metadata[_mapit(the_dir)][key] == val
- assert X_OBJECT_TYPE not in gdf._metadata, "md = %r" % gdf._metadata
- assert _metadata[_mapit(the_dir)][X_OBJECT_TYPE] == DIR_OBJECT
+ dw.put(newmd)
+ assert gdf._data_file == the_dir
+ for key, val in newmd.items():
+ assert _metadata[_mapit(the_dir)][key] == val
+ assert _metadata[_mapit(the_dir)][X_OBJECT_TYPE] == DIR_OBJECT
def test_put_is_dir(self):
the_path = os.path.join(self.td, "vol0", "bar")
the_dir = os.path.join(the_path, "dir")
os.makedirs(the_dir)
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "dir")
+ with gdf.open():
+ origmd = gdf.get_metadata()
+ origfmd = _metadata[_mapit(the_dir)]
+ newmd = deepcopy(origmd)
# FIXME: This is a hack to get to the code-path; it is not clear
# how this can happen normally.
- newmd = {
- 'Content-Type': '',
- 'X-Object-Meta-test': '1234'}
+ newmd['Content-Type'] = ''
+ newmd['X-Object-Meta-test'] = '1234'
with gdf.create() as dw:
try:
- dw.put(newmd, extension='.data')
+ # FIXME: We should probably be able to detect in .create()
+ # when the target file name already exists as a directory to
+ # avoid reading the data off the wire only to fail as a
+ # directory.
+ dw.write('12345\n')
+ dw.put(newmd)
except DiskFileError:
pass
else:
self.fail("Expected to encounter"
" 'already-exists-as-dir' exception")
+ with gdf.open():
+ assert gdf.get_metadata() == origmd
+ assert _metadata[_mapit(the_dir)] == origfmd, "was: %r, is: %r" % (
+ origfmd, _metadata[_mapit(the_dir)])
def test_put(self):
the_cont = os.path.join(self.td, "vol0", "bar")
@@ -526,9 +530,9 @@ class TestDiskFile(unittest.TestCase):
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
assert gdf._obj == "z"
assert gdf._obj_path == ""
- assert gdf.name == "bar"
- assert gdf.datadir == the_cont
- assert gdf.data_file is None
+ assert gdf._container_path == os.path.join(self.td, "vol0", "bar")
+ assert gdf._datadir == the_cont
+ assert gdf._data_file == os.path.join(self.td, "vol0", "bar", "z")
body = '1234\n'
etag = md5()
@@ -542,13 +546,12 @@ class TestDiskFile(unittest.TestCase):
}
with gdf.create() as dw:
- assert dw.tmppath is not None
- tmppath = dw.tmppath
+ assert dw._tmppath is not None
+ tmppath = dw._tmppath
dw.write(body)
dw.put(metadata)
- assert gdf.data_file == os.path.join(self.td, "vol0", "bar", "z")
- assert os.path.exists(gdf.data_file)
+ assert os.path.exists(gdf._data_file)
assert not os.path.exists(tmppath)
def test_put_ENOSPC(self):
@@ -557,9 +560,9 @@ class TestDiskFile(unittest.TestCase):
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
assert gdf._obj == "z"
assert gdf._obj_path == ""
- assert gdf.name == "bar"
- assert gdf.datadir == the_cont
- assert gdf.data_file is None
+ assert gdf._container_path == os.path.join(self.td, "vol0", "bar")
+ assert gdf._datadir == the_cont
+ assert gdf._data_file == os.path.join(self.td, "vol0", "bar", "z")
body = '1234\n'
etag = md5()
@@ -578,7 +581,7 @@ class TestDiskFile(unittest.TestCase):
with mock.patch("os.open", mock_open):
try:
with gdf.create() as dw:
- assert dw.tmppath is not None
+ assert dw._tmppath is not None
dw.write(body)
dw.put(metadata)
except DiskFileNoSpace:
@@ -592,9 +595,9 @@ class TestDiskFile(unittest.TestCase):
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
assert gdf._obj == "z"
assert gdf._obj_path == ""
- assert gdf.name == "bar"
- assert gdf.datadir == the_cont
- assert gdf.data_file is None
+ assert gdf._container_path == os.path.join(self.td, "vol0", "bar")
+ assert gdf._datadir == the_cont
+ assert gdf._data_file == os.path.join(self.td, "vol0", "bar", "z")
body = '1234\n'
etag = md5()
@@ -618,7 +621,8 @@ class TestDiskFile(unittest.TestCase):
with mock.patch("os.rename", mock_rename):
try:
with gdf.create() as dw:
- assert dw.tmppath is not None
+ assert dw._tmppath is not None
+ tmppath = dw._tmppath
dw.write(body)
dw.put(metadata)
except GlusterFileSystemOSError:
@@ -632,9 +636,10 @@ class TestDiskFile(unittest.TestCase):
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", the_file)
assert gdf._obj == "z"
assert gdf._obj_path == the_obj_path
- assert gdf.name == os.path.join("bar", "b", "a")
- assert gdf.datadir == os.path.join(self.td, "vol0", "bar", "b", "a")
- assert gdf.data_file is None
+ assert gdf._container_path == os.path.join(self.td, "vol0", "bar")
+ assert gdf._datadir == os.path.join(self.td, "vol0", "bar", "b", "a")
+ assert gdf._data_file == os.path.join(
+ self.td, "vol0", "bar", "b", "a", "z")
body = '1234\n'
etag = md5()
@@ -648,42 +653,30 @@ class TestDiskFile(unittest.TestCase):
}
with gdf.create() as dw:
- assert dw.tmppath is not None
- tmppath = dw.tmppath
+ assert dw._tmppath is not None
+ tmppath = dw._tmppath
dw.write(body)
dw.put(metadata)
- assert gdf.data_file == os.path.join(
- self.td, "vol0", "bar", "b", "a", "z")
- assert os.path.exists(gdf.data_file)
+ assert os.path.exists(gdf._data_file)
assert not os.path.exists(tmppath)
- def test_delete_no_metadata(self):
+ def test_delete(self):
+ the_path = os.path.join(self.td, "vol0", "bar")
+ the_file = os.path.join(the_path, "z")
+ os.makedirs(the_path)
+ with open(the_file, "wb") as fd:
+ fd.write("1234")
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
- assert gdf._metadata == None
- _saved_rmobjdir = gluster.swift.obj.diskfile.rmobjdir
- gluster.swift.obj.diskfile.rmobjdir = _mock_rmobjdir
- try:
- gdf.delete(1.0)
- except MockException as exp:
- self.fail(str(exp))
- finally:
- gluster.swift.obj.diskfile.rmobjdir = _saved_rmobjdir
+ assert gdf._obj == "z"
+ assert gdf._data_file == the_file
+ assert not gdf._is_dir
+ later = float(gdf.read_metadata()['X-Timestamp']) + 1
+ gdf.delete(normalize_timestamp(later))
+ assert os.path.isdir(gdf._datadir)
+ assert not os.path.exists(os.path.join(gdf._datadir, gdf._obj))
def test_delete_same_timestamp(self):
- gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
- assert gdf._metadata == None
- gdf._metadata = {'X-Timestamp': 1}
- _saved_rmobjdir = gluster.swift.obj.diskfile.rmobjdir
- gluster.swift.obj.diskfile.rmobjdir = _mock_rmobjdir
- try:
- gdf.delete(1)
- except MockException as exp:
- self.fail(str(exp))
- finally:
- gluster.swift.obj.diskfile.rmobjdir = _saved_rmobjdir
-
- def test_delete_file(self):
the_path = os.path.join(self.td, "vol0", "bar")
the_file = os.path.join(the_path, "z")
os.makedirs(the_path)
@@ -691,12 +684,12 @@ class TestDiskFile(unittest.TestCase):
fd.write("1234")
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
assert gdf._obj == "z"
- with gdf.open():
- later = float(gdf.get_metadata()['X-Timestamp']) + 1
- assert gdf.data_file == the_file
- gdf.delete(normalize_timestamp(later))
- assert os.path.isdir(gdf.datadir)
- assert not os.path.exists(os.path.join(gdf.datadir, gdf._obj))
+ assert gdf._data_file == the_file
+ assert not gdf._is_dir
+ now = float(gdf.read_metadata()['X-Timestamp'])
+ gdf.delete(normalize_timestamp(now))
+ assert os.path.isdir(gdf._datadir)
+ assert os.path.exists(os.path.join(gdf._datadir, gdf._obj))
def test_delete_file_not_found(self):
the_path = os.path.join(self.td, "vol0", "bar")
@@ -706,17 +699,16 @@ class TestDiskFile(unittest.TestCase):
fd.write("1234")
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
assert gdf._obj == "z"
- with gdf.open():
- later = float(gdf._metadata['X-Timestamp']) + 1
- assert gdf.data_file == the_file
- assert not gdf._is_dir
+ assert gdf._data_file == the_file
+ assert not gdf._is_dir
+ later = float(gdf.read_metadata()['X-Timestamp']) + 1
# Handle the case the file is not in the directory listing.
os.unlink(the_file)
gdf.delete(normalize_timestamp(later))
- assert os.path.isdir(gdf.datadir)
- assert not os.path.exists(os.path.join(gdf.datadir, gdf._obj))
+ assert os.path.isdir(gdf._datadir)
+ assert not os.path.exists(os.path.join(gdf._datadir, gdf._obj))
def test_delete_file_unlink_error(self):
the_path = os.path.join(self.td, "vol0", "bar")
@@ -726,10 +718,10 @@ class TestDiskFile(unittest.TestCase):
fd.write("1234")
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
assert gdf._obj == "z"
- with gdf.open():
- assert gdf.data_file == the_file
- assert not gdf._is_dir
- later = float(gdf._metadata['X-Timestamp']) + 1
+ assert gdf._data_file == the_file
+ assert not gdf._is_dir
+
+ later = float(gdf.read_metadata()['X-Timestamp']) + 1
def _mock_os_unlink_eacces_err(f):
raise OSError(errno.EACCES, os.strerror(errno.EACCES))
@@ -749,148 +741,33 @@ class TestDiskFile(unittest.TestCase):
finally:
os.chmod(the_path, stats.st_mode)
- assert os.path.isdir(gdf.datadir)
- assert os.path.exists(os.path.join(gdf.datadir, gdf._obj))
+ assert os.path.isdir(gdf._datadir)
+ assert os.path.exists(os.path.join(gdf._datadir, gdf._obj))
def test_delete_is_dir(self):
the_path = os.path.join(self.td, "vol0", "bar")
the_dir = os.path.join(the_path, "d")
os.makedirs(the_dir)
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "d")
- assert gdf._obj == "d"
- with gdf.open():
- assert gdf.data_file == the_dir
- assert gdf._is_dir
- later = float(gdf._metadata['X-Timestamp']) + 1
+ assert gdf._data_file == the_dir
+ later = float(gdf.read_metadata()['X-Timestamp']) + 1
gdf.delete(normalize_timestamp(later))
- assert os.path.isdir(gdf.datadir)
- assert not os.path.exists(os.path.join(gdf.datadir, gdf._obj))
-
- def test_get_data_file_size(self):
- the_path = os.path.join(self.td, "vol0", "bar")
- the_file = os.path.join(the_path, "z")
- os.makedirs(the_path)
- with open(the_file, "wb") as fd:
- fd.write("1234")
- gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
- assert gdf._obj == "z"
- with gdf.open():
- assert gdf.data_file == the_file
- assert not gdf._is_dir
- assert 4 == gdf.get_data_file_size()
-
- def test_get_data_file_size_md_restored(self):
- the_path = os.path.join(self.td, "vol0", "bar")
- the_file = os.path.join(the_path, "z")
- os.makedirs(the_path)
- with open(the_file, "wb") as fd:
- fd.write("1234")
- gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
- assert gdf._obj == "z"
- with gdf.open():
- assert gdf.data_file == the_file
- assert not gdf._is_dir
- assert 4 == gdf._metadata['Content-Length']
- gdf._metadata['Content-Length'] = 3
- assert 4 == gdf.get_data_file_size()
- assert 4 == gdf._metadata['Content-Length']
-
- def test_get_data_file_size_dne(self):
- gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar",
- "/b/a/z/")
- try:
- gdf.get_data_file_size()
- except DiskFileNotExist:
- pass
- else:
- self.fail("Expected DiskFileNotExist exception")
-
- def test_get_data_file_size_dne_os_err(self):
- the_path = os.path.join(self.td, "vol0", "bar")
- the_file = os.path.join(the_path, "z")
- os.makedirs(the_path)
- with open(the_file, "wb") as fd:
- fd.write("1234")
- gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
- assert gdf._obj == "z"
- with gdf.open():
- assert gdf.data_file == the_file
- assert not gdf._is_dir
- gdf.data_file = gdf.data_file + ".dne"
- try:
- gdf.get_data_file_size()
- except DiskFileNotExist:
- pass
- else:
- self.fail("Expected DiskFileNotExist exception")
-
- def test_get_data_file_size_os_err(self):
- the_path = os.path.join(self.td, "vol0", "bar")
- the_file = os.path.join(the_path, "z")
- os.makedirs(the_path)
- with open(the_file, "wb") as fd:
- fd.write("1234")
- gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
- assert gdf._obj == "z"
- with gdf.open():
- assert gdf.data_file == the_file
- assert not gdf._is_dir
- stats = os.stat(the_path)
- try:
- os.chmod(the_path, 0)
-
- def _mock_getsize_eaccess_err(f):
- raise OSError(errno.EACCES, os.strerror(errno.EACCES))
-
- with patch("os.path.getsize", _mock_getsize_eaccess_err):
- try:
- gdf.get_data_file_size()
- except OSError as err:
- assert err.errno == errno.EACCES
- else:
- self.fail("Expected OSError exception")
- finally:
- os.chmod(the_path, stats.st_mode)
-
- def test_get_data_file_size_dir(self):
- the_path = os.path.join(self.td, "vol0", "bar")
- the_dir = os.path.join(the_path, "d")
- os.makedirs(the_dir)
- gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "d")
- assert gdf._obj == "d"
- with gdf.open():
- assert gdf.data_file == the_dir
- assert gdf._is_dir
- assert 0 == gdf.get_data_file_size()
-
- def test_filter_metadata(self):
- gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "z")
- assert gdf._metadata == None
- gdf._filter_metadata()
- assert gdf._metadata == None
-
- gdf._metadata = {}
- gdf._metadata[X_TYPE] = 'a'
- gdf._metadata[X_OBJECT_TYPE] = 'b'
- gdf._metadata['foobar'] = 'c'
- gdf._filter_metadata()
- assert X_TYPE not in gdf._metadata
- assert X_OBJECT_TYPE not in gdf._metadata
- assert 'foobar' in gdf._metadata
+ assert os.path.isdir(gdf._datadir)
+ assert not os.path.exists(os.path.join(gdf._datadir, gdf._obj))
def test_create(self):
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "dir/z")
saved_tmppath = ''
saved_fd = None
with gdf.create() as dw:
- assert gdf.datadir == os.path.join(self.td, "vol0", "bar", "dir")
- assert os.path.isdir(gdf.datadir)
- saved_tmppath = dw.tmppath
- assert os.path.dirname(saved_tmppath) == gdf.datadir
+ assert gdf._datadir == os.path.join(self.td, "vol0", "bar", "dir")
+ assert os.path.isdir(gdf._datadir)
+ saved_tmppath = dw._tmppath
+ assert os.path.dirname(saved_tmppath) == gdf._datadir
assert os.path.basename(saved_tmppath)[:3] == '.z.'
assert os.path.exists(saved_tmppath)
dw.write("123")
- saved_fd = dw.fd
+ saved_fd = dw._fd
# At the end of previous with block a close on fd is called.
# Calling os.close on the same fd will raise an OSError
# exception and we must catch it.
@@ -906,25 +783,25 @@ class TestDiskFile(unittest.TestCase):
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "dir/z")
saved_tmppath = ''
with gdf.create() as dw:
- assert gdf.datadir == os.path.join(self.td, "vol0", "bar", "dir")
- assert os.path.isdir(gdf.datadir)
- saved_tmppath = dw.tmppath
- assert os.path.dirname(saved_tmppath) == gdf.datadir
+ assert gdf._datadir == os.path.join(self.td, "vol0", "bar", "dir")
+ assert os.path.isdir(gdf._datadir)
+ saved_tmppath = dw._tmppath
+ assert os.path.dirname(saved_tmppath) == gdf._datadir
assert os.path.basename(saved_tmppath)[:3] == '.z.'
assert os.path.exists(saved_tmppath)
dw.write("123")
# Closing the fd prematurely should not raise any exceptions.
- os.close(dw.fd)
+ os.close(dw._fd)
assert not os.path.exists(saved_tmppath)
def test_create_err_on_unlink(self):
gdf = self._get_diskfile("vol0", "p57", "ufo47", "bar", "dir/z")
saved_tmppath = ''
with gdf.create() as dw:
- assert gdf.datadir == os.path.join(self.td, "vol0", "bar", "dir")
- assert os.path.isdir(gdf.datadir)
- saved_tmppath = dw.tmppath
- assert os.path.dirname(saved_tmppath) == gdf.datadir
+ assert gdf._datadir == os.path.join(self.td, "vol0", "bar", "dir")
+ assert os.path.isdir(gdf._datadir)
+ saved_tmppath = dw._tmppath
+ assert os.path.dirname(saved_tmppath) == gdf._datadir
assert os.path.basename(saved_tmppath)[:3] == '.z.'
assert os.path.exists(saved_tmppath)
dw.write("123")
diff --git a/test/unit/proxy/test_server.py b/test/unit/proxy/test_server.py
index 490e8fc..3745a9f 100644
--- a/test/unit/proxy/test_server.py
+++ b/test/unit/proxy/test_server.py
@@ -75,7 +75,7 @@ def request_init(self, *args, **kwargs):
_request_instances[self] = None
-def setup():
+def do_setup(the_object_server):
utils.HASH_PATH_SUFFIX = 'endcap'
global _testdir, _test_servers, _test_sockets, \
_orig_container_listing_limit, _test_coros
@@ -147,8 +147,8 @@ def setup():
acc2srv = account_server.AccountController(conf)
con1srv = container_server.ContainerController(conf)
con2srv = container_server.ContainerController(conf)
- obj1srv = object_server.ObjectController(conf)
- obj2srv = object_server.ObjectController(conf)
+ obj1srv = the_object_server.ObjectController(conf)
+ obj2srv = the_object_server.ObjectController(conf)
_test_servers = \
(prosrv, acc1srv, acc2srv, con1srv, con2srv, obj1srv, obj2srv)
nl = DebugLogger()
@@ -190,6 +190,10 @@ def setup():
exp, headers[:len(exp)])
+def setup():
+ do_setup(object_server)
+
+
def teardown():
for server in _test_coros:
server.kill()