summaryrefslogtreecommitdiffstats
path: root/tests/test_config_generator.py
blob: 891bcbc854d96c9f20f51f3d478a45a5324b3ca8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/python
# Copyright 2014 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#

import mock
from plugins import config_generator
from testrunner import PluginsTestCase as TestCaseBase


class TestGlusterNagiosConfManager(TestCaseBase):
    # Method to test the generateNagiosConfigFromGlusterCluster() method
    @mock.patch('plugins.config_generator.GlusterNagiosConfManager.'
                'generateConfigFiles')
    def testGenerateConfigFiles(self, mock_generateConfigFiles):
        confManager = self.__getGlusterNagiosConfManager()
        clusterData = self.__createDummyCluster()
        clusterConfig = confManager.generateNagiosConfigFromGlusterCluster(
            clusterData)
        mock_generateConfigFiles.assert_called()
        self.__verifyConfig(clusterConfig, clusterData)

    def __verifyConfig(self, clusterConfig, clusterData):
        self.assertTrue(len(clusterConfig), len(clusterData['hosts']) + 1)
        self.__verifyClusterConfig(clusterConfig[0], clusterData)
        for index in range(0, len(clusterData['hosts'])):
            self.__verifyHostConfig(clusterConfig[index + 1],
                                    clusterData['hosts'][index])

    def __verifyHostConfig(self, hostConfig, hostData):
        self.assertEqual(hostConfig['host_name'], hostData['hostip'])
        self.assertEqual(hostConfig['alias'], hostData['hostip'])
        self.assertEqual(hostConfig['address'], hostData['hostip'])
        self.assertEqual(hostConfig['use'], 'gluster-host')

    def __verifyClusterConfig(self, config, clusterData):
        self.assertEqual(config['host_name'], clusterData['name'])
        self.assertEqual(config['alias'], clusterData['name'])
        self.assertEqual(config['address'], clusterData['name'])
        self.assertEqual(config['check_command'], "")
        self.assertEqual(config['use'], 'gluster-cluster')

    def createBricks(self, count, volume):
        bricks = []
        for number in range(count):
            brickDir = "/mnt/Brick-%s" % (number + 1)
            bricks.append({'brickpath': brickDir,
                           'volumeName': volume})
        return bricks

    def __createDummyCluster(self):
        cluster = {'name': 'Test-Cluster', 'hosts': [], 'volumes': []}
        cluster['hosts'].append({'hostip': '10.70.43.1',
                                 'bricks': self.createBricks(1, "Volume1")})
        cluster['hosts'].append({'hostip': '10.70.43.2',
                                 'bricks': self.createBricks(2, "Volume1")})
        cluster['volumes'].append({'name': 'Volume1', "type": "T"})
        return cluster

    def __getGlusterNagiosConfManager(self):
        return config_generator.GlusterNagiosConfManager(
            "/tmp/nagios/gluster", "../config", "gluster-host.cfg.template")