summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThiago da Silva <thiago@redhat.com>2013-10-08 13:39:25 -0400
committerLuis Pabon <lpabon@redhat.com>2013-10-10 13:42:31 -0700
commit46cd43fdf401b16f9e1b588e5fc8d2c5dd599b37 (patch)
treeaf6405fa0ce96f4b15a811320ec7cd5da665ae82
parent2d56bc3803286b80516652da8f01dcdf96c21d19 (diff)
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>
-rw-r--r--gluster/swift/common/Glusterfs.py30
-rw-r--r--test/unit/common/test_Glusterfs.py108
-rw-r--r--tox.ini2
3 files changed, 111 insertions, 29 deletions
diff --git a/gluster/swift/common/Glusterfs.py b/gluster/swift/common/Glusterfs.py
index 9ff54ba..55012d3 100644
--- a/gluster/swift/common/Glusterfs.py
+++ b/gluster/swift/common/Glusterfs.py
@@ -21,10 +21,9 @@ import logging
import urllib
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.exceptions import GlusterfsException, \
- FailureToMountError
+from gluster.swift.common.exceptions import FailureToMountError
#
# 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(' '))
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])
diff --git a/test/unit/common/test_Glusterfs.py b/test/unit/common/test_Glusterfs.py
index bcb233c..8a111f7 100644
--- a/test/unit/common/test_Glusterfs.py
+++ b/test/unit/common/test_Glusterfs.py
@@ -16,6 +16,8 @@
import unittest
import os, fcntl, errno, shutil
import time
+import StringIO
+import mock
from tempfile import mkdtemp
import gluster.swift.common.Glusterfs as gfs
@@ -124,5 +126,111 @@ class TestGlusterfs(unittest.TestCase):
finally:
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):
_reset_mock_variables()
diff --git a/tox.ini b/tox.ini
index 4e87a3c..b42092b 100644
--- a/tox.ini
+++ b/tox.ini
@@ -14,7 +14,7 @@ deps =
--download-cache={homedir}/.pipcache
-r{toxinidir}/tools/test-requires
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]
downloadcache = ~/cache/pip