Added some more unittest cases for fs_utils file.

Change-Id: I4c13fd7b3d6c21389b701437dd4a4a5cd0a31212
Signed-off-by: Mohammed Junaid <junaid@redhat.com>
Reviewed-on: http://review.gluster.org/5065
Reviewed-by: Peter Portante <pportant@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
Reviewed-by: Luis Pabon <lpabon@redhat.com>
This commit is contained in:
Mohammed Junaid 2013-05-22 10:50:54 +05:30 committed by Luis Pabon
parent 1811a9b05e
commit ce614363d6

View File

@ -16,19 +16,29 @@
import os
import shutil
import random
import errno
import unittest
import eventlet
from nose import SkipTest
from mock import patch
from tempfile import mkdtemp, mkstemp
from gluster.swift.common import fs_utils as fs
from gluster.swift.common.exceptions import NotDirectoryError, \
FileOrDirNotFoundError
def mock_os_fsync(fd):
return True
def mock_tpool_execute(func, *args, **kwargs):
func(*args, **kwargs)
class TestUtils(unittest.TestCase):
""" Tests for common.utils """
def test_do_walk(self):
# create directory structure
tmpparent = mkdtemp()
try:
# create directory structure
tmpparent = mkdtemp()
tmpdirs = []
tmpfiles = []
for i in range(5):
@ -44,9 +54,10 @@ class TestUtils(unittest.TestCase):
finally:
shutil.rmtree(tmpparent)
def test_do_open(self):
fd, tmpfile = mkstemp()
try:
fd, tmpfile = mkstemp()
f = fs.do_open(tmpfile, 'r')
try:
f.write('test')
@ -54,11 +65,13 @@ class TestUtils(unittest.TestCase):
pass
else:
self.fail("IOError expected")
finally:
f.close()
finally:
f.close()
os.close(fd)
os.remove(tmpfile)
def test_do_open_err(self):
try:
fs.do_open(os.path.join('/tmp', str(random.random())), 'r')
@ -67,9 +80,18 @@ class TestUtils(unittest.TestCase):
else:
self.fail("IOError expected")
def test_do_write(self):
def test_do_open_err_int_mode(self):
try:
fs.do_open(os.path.join('/tmp', str(random.random())),
os.O_RDONLY)
except OSError:
pass
else:
self.fail("IOError expected")
def test_do_write(self):
fd, tmpfile = mkstemp()
try:
fd, tmpfile = mkstemp()
cnt = fs.do_write(fd, "test")
assert cnt == len("test")
finally:
@ -77,17 +99,22 @@ class TestUtils(unittest.TestCase):
os.remove(tmpfile)
def test_do_write_err(self):
fd, tmpfile = mkstemp()
try:
fd, tmpfile = mkstemp()
fd1 = os.open(tmpfile, os.O_RDONLY)
fs.do_write(fd1, "test")
except OSError:
pass
try:
fs.do_write(fd1, "test")
except OSError:
pass
else:
self.fail("OSError expected")
except OSError as ose:
self.fail("Open failed with %s" %ose.strerror)
else:
self.fail("OSError expected")
os.close(fd1)
finally:
os.close(fd)
os.close(fd1)
os.remove(tmpfile)
def test_do_mkdir(self):
try:
@ -119,8 +146,8 @@ class TestUtils(unittest.TestCase):
shutil.rmtree(subdir)
def test_do_listdir(self):
tmpdir = mkdtemp()
try:
tmpdir = mkdtemp()
subdir = []
for i in range(5):
subdir.append(mkdtemp(dir=tmpdir).rsplit(os.path.sep, 1)[1])
@ -139,8 +166,8 @@ class TestUtils(unittest.TestCase):
self.fail("OSError expected")
def test_do_stat(self):
tmpdir = mkdtemp()
try:
tmpdir = mkdtemp()
fd, tmpfile = mkstemp(dir=tmpdir)
buf1 = os.stat(tmpfile)
buf2 = fs.do_stat(fd)
@ -162,8 +189,8 @@ class TestUtils(unittest.TestCase):
self.fail("OSError expected")
def test_do_close(self):
fd, tmpfile = mkstemp()
try:
fd, tmpfile = mkstemp()
fs.do_close(fd);
try:
os.write(fd, "test")
@ -176,9 +203,23 @@ class TestUtils(unittest.TestCase):
finally:
os.remove(tmpfile)
def test_do_unlink(self):
def test_do_close_err(self):
fd, tmpfile = mkstemp()
try:
fs.do_close(fd);
try:
fs.do_close(fd);
except OSError:
pass
else:
self.fail("OSError expected")
finally:
os.remove(tmpfile)
def test_do_unlink(self):
fd, tmpfile = mkstemp()
try:
fd, tmpfile = mkstemp()
fs.do_unlink(tmpfile)
assert not os.path.exists(tmpfile)
assert fs.do_unlink(os.path.join('/tmp', str(random.random())))
@ -186,8 +227,8 @@ class TestUtils(unittest.TestCase):
os.close(fd)
def test_do_unlink_err(self):
tmpdir = mkdtemp()
try:
tmpdir = mkdtemp()
fs.do_unlink(tmpdir)
except OSError:
pass
@ -203,8 +244,8 @@ class TestUtils(unittest.TestCase):
assert not fs.do_rmdir(os.path.join('/tmp', str(random.random())))
def test_do_rmdir_err(self):
fd, tmpfile = mkstemp()
try:
fd, tmpfile = mkstemp()
fs.do_rmdir(tmpfile)
except OSError:
pass
@ -215,8 +256,8 @@ class TestUtils(unittest.TestCase):
os.remove(tmpfile)
def test_do_rename(self):
srcpath = mkdtemp()
try:
srcpath = mkdtemp()
destpath = os.path.join('/tmp', str(random.random()))
fs.do_rename(srcpath, destpath)
assert not os.path.exists(srcpath)
@ -235,8 +276,8 @@ class TestUtils(unittest.TestCase):
self.fail("OSError expected")
def test_dir_empty(self):
tmpdir = mkdtemp()
try:
tmpdir = mkdtemp()
subdir = mkdtemp(dir=tmpdir)
assert not fs.dir_empty(tmpdir)
assert fs.dir_empty(subdir)
@ -264,8 +305,8 @@ class TestUtils(unittest.TestCase):
os.unlink(tmpfile)
def test_rmdirs(self):
tmpdir = mkdtemp()
try:
tmpdir = mkdtemp()
subdir = mkdtemp(dir=tmpdir)
fd, tmpfile = mkstemp(dir=tmpdir)
assert not fs.rmdirs(tmpfile)
@ -275,3 +316,85 @@ class TestUtils(unittest.TestCase):
finally:
os.close(fd)
shutil.rmtree(tmpdir)
def test_chown_dir(self):
tmpdir = mkdtemp()
try:
subdir = mkdtemp(dir=tmpdir)
buf = os.stat(subdir)
if buf.st_uid == 0:
raise SkipTest
else:
try:
fs.do_chown(subdir, 20000, 20000)
except OSError as ex:
if ex.errno != errno.EPERM:
self.fail("Expected OSError")
else:
self.fail("Expected OSError")
finally:
shutil.rmtree(tmpdir)
def test_chown_file(self):
tmpdir = mkdtemp()
try:
fd, tmpfile = mkstemp(dir=tmpdir)
buf = os.stat(tmpfile)
if buf.st_uid == 0:
raise SkipTest
else:
try:
fs.do_chown(tmpfile, 20000, 20000)
except OSError as ex:
if ex.errno != errno.EPERM:
self.fail("Expected OSError")
else:
self.fail("Expected OSError")
finally:
os.close(fd)
shutil.rmtree(tmpdir)
def test_chown_file_err(self):
try:
fs.do_chown(os.path.join('/tmp', str(random.random())),
20000, 20000)
except OSError:
pass
else:
self.fail("Expected OSError")
def test_do_fsync(self):
tmpdir = mkdtemp()
try:
fd, tmpfile = mkstemp(dir=tmpdir)
try:
os.write(fd, 'test')
with patch('eventlet.tpool.execute', mock_tpool_execute):
with patch('os.fsync', mock_os_fsync):
assert fs.do_fsync(fd)
except OSError as ose:
self.fail('Opening a temporary file failed with %s' %ose.strerror)
else:
os.close(fd)
finally:
shutil.rmtree(tmpdir)
def test_do_fsync_err(self):
tmpdir = mkdtemp()
try:
fd, tmpfile = mkstemp(dir=tmpdir)
os.write(fd, 'test')
with patch('eventlet.tpool.execute', mock_tpool_execute):
with patch('os.fsync', mock_os_fsync):
assert fs.do_fsync(fd)
os.close(fd)
try:
fs.do_fsync(fd)
except OSError:
pass
else:
self.fail("Expected OSError")
finally:
shutil.rmtree(tmpdir)