Adding new unit tests and removed some unused functions
New unit tests help improve test coverage of common/Glusterfs.py code Also removed a function that was no longer being used. Change-Id: Iaa0eed3d2b9ffcc148c1e00b28322ebf93b3f13c Signed-off-by: Thiago da Silva <thiago@redhat.com> Reviewed-on: http://review.gluster.org/6053 Reviewed-by: Luis Pabon <lpabon@redhat.com> Tested-by: Luis Pabon <lpabon@redhat.com>
This commit is contained in:
parent
2d56bc3803
commit
46cd43fdf4
@ -21,10 +21,9 @@ import logging
|
|||||||
import urllib
|
import urllib
|
||||||
|
|
||||||
from ConfigParser import ConfigParser, NoSectionError, NoOptionError
|
from ConfigParser import ConfigParser, NoSectionError, NoOptionError
|
||||||
from swift.common.utils import TRUE_VALUES, search_tree
|
from swift.common.utils import TRUE_VALUES
|
||||||
from gluster.swift.common.fs_utils import do_ismount
|
from gluster.swift.common.fs_utils import do_ismount
|
||||||
from gluster.swift.common.exceptions import GlusterfsException, \
|
from gluster.swift.common.exceptions import FailureToMountError
|
||||||
FailureToMountError
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Read the fs.conf file once at startup (module load)
|
# Read the fs.conf file once at startup (module load)
|
||||||
@ -286,28 +285,3 @@ def _get_export_list():
|
|||||||
export_list.append(item.split(':')[1].strip(' '))
|
export_list.append(item.split(':')[1].strip(' '))
|
||||||
|
|
||||||
return export_list
|
return export_list
|
||||||
|
|
||||||
|
|
||||||
def get_mnt_point(vol_name, conf_dir=SWIFT_DIR, conf_file="object-server*"):
|
|
||||||
"""
|
|
||||||
Read the object-server's configuration file and return
|
|
||||||
the device value.
|
|
||||||
|
|
||||||
:param vol_name: target GlusterFS volume name
|
|
||||||
:param conf_dir: Swift configuration directory root
|
|
||||||
:param conf_file: configuration file name for which to search
|
|
||||||
:returns full path to given target volume name
|
|
||||||
:raises GlusterfsException if unable to fetch mount point root from
|
|
||||||
configuration files
|
|
||||||
"""
|
|
||||||
mnt_dir = ''
|
|
||||||
conf_files = search_tree(conf_dir, conf_file, '.conf')
|
|
||||||
if not conf_files:
|
|
||||||
raise GlusterfsException("Config file, %s, in directory, %s, "
|
|
||||||
"not found" % (conf_file, conf_dir))
|
|
||||||
_conf = ConfigParser()
|
|
||||||
if _conf.read(conf_files[0]):
|
|
||||||
mnt_dir = _conf.get('DEFAULT', 'devices', '')
|
|
||||||
return os.path.join(mnt_dir, vol_name)
|
|
||||||
else:
|
|
||||||
raise GlusterfsException("Config file, %s, is empty" % conf_files[0])
|
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
import unittest
|
import unittest
|
||||||
import os, fcntl, errno, shutil
|
import os, fcntl, errno, shutil
|
||||||
import time
|
import time
|
||||||
|
import StringIO
|
||||||
|
import mock
|
||||||
from tempfile import mkdtemp
|
from tempfile import mkdtemp
|
||||||
import gluster.swift.common.Glusterfs as gfs
|
import gluster.swift.common.Glusterfs as gfs
|
||||||
|
|
||||||
@ -124,5 +126,111 @@ class TestGlusterfs(unittest.TestCase):
|
|||||||
finally:
|
finally:
|
||||||
shutil.rmtree(tmpdir)
|
shutil.rmtree(tmpdir)
|
||||||
|
|
||||||
|
def test_get_drive_mount_point_name_unique_id_None(self):
|
||||||
|
"""
|
||||||
|
Using the public method mount to test _get_drive_mount_point_name
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
tmpdir = mkdtemp()
|
||||||
|
root = os.path.join(tmpdir, 'mnt/gluster-object')
|
||||||
|
drive = 'test'
|
||||||
|
|
||||||
|
_init_mock_variables(tmpdir)
|
||||||
|
gfs._allow_mount_per_server = True
|
||||||
|
self.assertTrue(gfs.mount(root, drive))
|
||||||
|
finally:
|
||||||
|
gfs._allow_mount_per_server = False
|
||||||
|
_reset_mock_variables()
|
||||||
|
shutil.rmtree(tmpdir)
|
||||||
|
|
||||||
|
def test_get_drive_mount_point_name_unique_id_exists(self):
|
||||||
|
"""
|
||||||
|
Using the public method mount to test _get_drive_mount_point_name
|
||||||
|
and the _unique_id is already defined
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
tmpdir = mkdtemp()
|
||||||
|
root = os.path.join(tmpdir, 'mnt/gluster-object')
|
||||||
|
drive = 'test'
|
||||||
|
|
||||||
|
_init_mock_variables(tmpdir)
|
||||||
|
gfs._allow_mount_per_server = True
|
||||||
|
gfs._unique_id = 0
|
||||||
|
self.assertTrue(gfs.mount(root, drive))
|
||||||
|
finally:
|
||||||
|
gfs._allow_mount_per_server = False
|
||||||
|
gfs._unique_id = None
|
||||||
|
_reset_mock_variables()
|
||||||
|
shutil.rmtree(tmpdir)
|
||||||
|
|
||||||
|
def test_invalid_drive_name(self):
|
||||||
|
try:
|
||||||
|
tmpdir = mkdtemp()
|
||||||
|
root = os.path.join(tmpdir, 'mnt/gluster-object')
|
||||||
|
drive = 'te st'
|
||||||
|
|
||||||
|
_init_mock_variables(tmpdir)
|
||||||
|
self.assertFalse(gfs.mount(root, drive))
|
||||||
|
finally:
|
||||||
|
_reset_mock_variables()
|
||||||
|
shutil.rmtree(tmpdir)
|
||||||
|
|
||||||
|
def test_already_mounted(self):
|
||||||
|
try:
|
||||||
|
tmpdir = mkdtemp()
|
||||||
|
root = os.path.join(tmpdir, 'mnt/gluster-object')
|
||||||
|
drive = 'test'
|
||||||
|
|
||||||
|
_init_mock_variables(tmpdir)
|
||||||
|
def mock_do_ismount(path):
|
||||||
|
return True
|
||||||
|
|
||||||
|
with mock.patch("gluster.swift.common.Glusterfs.do_ismount",
|
||||||
|
mock_do_ismount):
|
||||||
|
self.assertTrue(gfs.mount(root, drive))
|
||||||
|
finally:
|
||||||
|
_reset_mock_variables()
|
||||||
|
shutil.rmtree(tmpdir)
|
||||||
|
|
||||||
|
def test_get_export_list(self):
|
||||||
|
try:
|
||||||
|
tmpdir = mkdtemp()
|
||||||
|
root = os.path.join(tmpdir, 'mnt/gluster-object')
|
||||||
|
drive = 'test'
|
||||||
|
|
||||||
|
# undo mocking of _get_export_list
|
||||||
|
tmp_get_export_list = gfs._get_export_list
|
||||||
|
_init_mock_variables(tmpdir)
|
||||||
|
gfs._get_export_list = tmp_get_export_list
|
||||||
|
|
||||||
|
def mock_os_popen(cmd):
|
||||||
|
mock_string = """
|
||||||
|
Volume Name: test
|
||||||
|
Type: Distribute
|
||||||
|
Volume ID: 361cfe52-75c0-4a76-88af-0092a92270b5
|
||||||
|
Status: Started
|
||||||
|
Number of Bricks: 1
|
||||||
|
Transport-type: tcp
|
||||||
|
Bricks:
|
||||||
|
Brick1: myhost:/export/brick/test
|
||||||
|
|
||||||
|
Volume Name: test2
|
||||||
|
Type: Distribute
|
||||||
|
Volume ID: a6df4e2b-6040-4e19-96f1-b8d8c0a29528
|
||||||
|
Status: Started
|
||||||
|
Number of Bricks: 1
|
||||||
|
Transport-type: tcp
|
||||||
|
Bricks:
|
||||||
|
Brick1: myhost:/export/brick/test2
|
||||||
|
"""
|
||||||
|
return StringIO.StringIO(mock_string)
|
||||||
|
|
||||||
|
# mock os_popen
|
||||||
|
with mock.patch('os.popen', mock_os_popen):
|
||||||
|
self.assertTrue(gfs.mount(root, drive))
|
||||||
|
finally:
|
||||||
|
_reset_mock_variables()
|
||||||
|
shutil.rmtree(tmpdir)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
_reset_mock_variables()
|
_reset_mock_variables()
|
||||||
|
2
tox.ini
2
tox.ini
@ -14,7 +14,7 @@ deps =
|
|||||||
--download-cache={homedir}/.pipcache
|
--download-cache={homedir}/.pipcache
|
||||||
-r{toxinidir}/tools/test-requires
|
-r{toxinidir}/tools/test-requires
|
||||||
changedir = {toxinidir}/test/unit
|
changedir = {toxinidir}/test/unit
|
||||||
commands = nosetests -v --exe --with-xunit --with-coverage --cover-package gluster --cover-erase --cover-xml --cover-html --cover-branches {posargs}
|
commands = nosetests -v --exe --with-xunit --with-coverage --cover-package gluster --cover-erase --cover-xml --cover-html --cover-branches --with-html-output {posargs}
|
||||||
|
|
||||||
[tox:jenkins]
|
[tox:jenkins]
|
||||||
downloadcache = ~/cache/pip
|
downloadcache = ~/cache/pip
|
||||||
|
Loading…
x
Reference in New Issue
Block a user