diff options
| author | Thiago da Silva <thiago@redhat.com> | 2013-10-08 13:39:25 -0400 | 
|---|---|---|
| committer | Luis Pabon <lpabon@redhat.com> | 2013-10-10 13:42:31 -0700 | 
| commit | 46cd43fdf401b16f9e1b588e5fc8d2c5dd599b37 (patch) | |
| tree | af6405fa0ce96f4b15a811320ec7cd5da665ae82 | |
| parent | 2d56bc3803286b80516652da8f01dcdf96c21d19 (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.py | 30 | ||||
| -rw-r--r-- | test/unit/common/test_Glusterfs.py | 108 | ||||
| -rw-r--r-- | tox.ini | 2 | 
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() @@ -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  | 
