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:
Thiago da Silva 2013-10-08 13:39:25 -04:00 committed by Luis Pabon
parent 2d56bc3803
commit 46cd43fdf4
3 changed files with 111 additions and 29 deletions

View File

@ -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])

View File

@ -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()

View File

@ -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