Example #1
0
 def setUp(self):
     super(PollerMuninModuleTestCase, self).setUp()
     # Set logger None
     self._logger = _logger
     # Set parser
     self._configParse = ConfigParser.RawConfigParser()
     self._configParse.read(myPath+"/poller_unittest.cfg")
     # Fake socker
     self._fakeMunin = myFakeMunin()
     # Start
     self._pollerMuninModule = MuninModule(self._configParse)
     self._pollerMuninModule.munin_connection = self._fakeMunin
     # Make a shot name
     self._munin = self._pollerMuninModule.munin_connection
     self._pollerMuninModule._plugins_enable=".*"
Example #2
0
class PollerMuninModuleTestCase(test_base.TestCase):
#self.munin_connection = munin_connect.MuninConnection
# import munin_connect
    def setUp(self):
        super(PollerMuninModuleTestCase, self).setUp()
        # Set logger None
        self._logger = _logger
        # Set parser
        self._configParse = ConfigParser.RawConfigParser()
        self._configParse.read(myPath+"/poller_unittest.cfg")
        # Fake socker
        self._fakeMunin = myFakeMunin()
        # Start
        self._pollerMuninModule = MuninModule(self._configParse)
        self._pollerMuninModule.munin_connection = self._fakeMunin
        # Make a shot name
        self._munin = self._pollerMuninModule.munin_connection
        self._pollerMuninModule._plugins_enable=".*"

    def tearDown(self):
        super(PollerMuninModuleTestCase, self).tearDown()

    def test_muninModule_formatFetchData(self):
        # Send empty bad fetch
        self._munin.fetch_return_value = {}
        result = self._pollerMuninModule.formatFetchData("foo")
        self.assertEqual(result, None)
        # Send good fetch
        self._munin.fetch_return_value = { 'bar':'42' }
        result = self._pollerMuninModule.formatFetchData("foo")
        self.assertEqual(result, {'TimeStamp': result['TimeStamp'], 'Values': {'bar': '42'}, 'Plugin': 'foo'})
        self.assertTrue(re.match('^[0-9]{10}$',result['TimeStamp']))

    def test_muninModule_formatFetchInfo(self):
        # Send empty config
        self._munin.config_return_value = {}
        result = self._pollerMuninModule.formatFetchInfo("foo")
        self.assertEqual(result, None)
        # Send valid with 2 infos, no info for DS bar, base and graph describ
        #self._fakeMunin._fakeReturnConfig = ['graph_info unit test','graph_args --base 1024','foo.min 0','foo.max 10','bar.bar gnu','.']
        self._munin.config_return_value = {
                                            'graph_info':'unit test',
                                            'graph_title':'foo bar',
                                            'graph_vlabel':'',
                                            'graph_args':'--base 1024',
                                            'foo': {'max':'10', 'min':'0'},
                                            'bar': {'bar':'gnu'}
                                          }
        self._munin.fetch_return_value = {}
        result = self._pollerMuninModule.formatFetchInfo("foo")
        self.assertEqual(result,
                {'Describ': 'unit test', 'Title': 'foo bar', 'Plugin': 'foo', 'Vlabel': '', 'Base': '1024', 'Infos':
                    {'foo': {'max': '10', 'id': 'foo', 'min': '0'},
                    'bar': {'bar': 'gnu','id': 'bar'}}
                , 'Order': ''})
        # Send valid with bad --base + title
        self._munin.config_return_value = {
                                            'graph_vlabel':'',
                                            'graph_args':'--base fake',
                                            'foo': {},
                                          }
        self._munin.fetch_return_value = {}
        result = self._pollerMuninModule.formatFetchInfo("foo")
        self.assertEqual(result['Base'], '1000')
         # Send valid with no DS infos
        self._munin.config_return_value = {
                                            'graph_title':'foo',
                                          }
        self._munin.fetch_return_value = {}
        result = self._pollerMuninModule.formatFetchInfo("foo")
        self.assertEqual(result, None)
        # Plugin valid with no info on DS but have one value in fetch
        self._munin.config_return_value = {
                                            'graph_title':'foo',
                                            'foo': {'min':'0'},
                                          }
        self._munin.fetch_return_value = {'bar':'3'}
        result = self._pollerMuninModule.formatFetchInfo("foo")
        self.assertEqual(result["Infos"], {'foo': {'id': 'foo', 'min': '0'}, 'bar': {'id': 'bar'}})
        # Value declared as stack. Graph order must be genereted
        self._munin.config_return_value = {
                                            'graph_title':'foo',
                                            'foo': {'draw':'STACK'},
                                            'bar': {'draw':'LINE'},
                                          }
        self._munin.fetch_return_value = {}
        result = self._pollerMuninModule.formatFetchInfo("foo")
        self.assertEqual(result["Order"], "bar foo")

    def test_muninModule_getData(self):
        # Send good fetch
        self._munin.list_return_value = ['foo']
        self._munin.fetch_return_value = { 'bar':'4.2' }
        result = self._pollerMuninModule.getData()
        self.assertEqual(result, [{'TimeStamp': result[0]['TimeStamp'], 'Values': {'bar': '4.2'}, 'Plugin': 'foo'}])
        # Send plugin with no value
        self._munin.list_return_value = ['foo']
        self._munin.fetch_return_value = {}
        result = self._pollerMuninModule.getData()
        self.assertEqual(result, [])
        # Test regex plugin match
        self._pollerMuninModule._plugins_enable="^foo_b.*$"
        self._munin.list_return_value = ['foo']
        self._munin.fetch_return_value = { 'bar':'4.2' }
        result = self._pollerMuninModule.getData()
        self.assertEqual(result, [])
        # Matching regex
        self._pollerMuninModule._plugins_enable="^foo_b.*$"
        self._munin.list_return_value = ['foo_bar']
        self._munin.fetch_return_value = { 'bar':'4.2' }
        result = self._pollerMuninModule.getData()
        self.assertEqual(result[0]['Plugin'], 'foo_bar')
        # Reset regex
        self._pollerMuninModule._plugins_enable="^.*$"


    def test_muninModule_getInfo(self):
        # Send config with no DS
        self._munin.config_return_value = {'Title':'test'}
        self._munin.list_return_value = ['foo']
        self._munin.fetch_return_value = {}
        result = self._pollerMuninModule.getInfo()
        self.assertEqual(result, [])
        # Send config with no DS
        self._munin.list_return_value = ['foo']
        self._munin.fetch_return_value = {}
        self._munin.config_return_value = {
                                            'graph_title':'foo',
                                            'bar': {'min':'0'},
                                          }
        result = self._pollerMuninModule.getInfo()
        self.assertEqual(result,
                [{'Describ': '', 'Title': 'foo', 'Plugin': 'foo', 'Vlabel': '', 'Base': '1000',
                    'Infos': {'bar': {'id': 'bar', 'min': '0'}}, 'Order': ''}
                ])
        # Test regex plugin match
        self._pollerMuninModule._plugins_enable="^foo_b.*$"
        self._munin.config_return_value = {'graph_title':'foo'}
        self._munin.list_return_value = ['foo']
        self._munin.fetch_return_value = { 'bar':'4.2' }
        result = self._pollerMuninModule.getInfo()
        self.assertEqual(result, [])
        # Regex suite
        self._munin.list_return_value = ['foo_bar']
        self._munin.config_return_value = {'graph_title':'foo'}
        self._munin.fetch_return_value = { 'bar':'4.2' }
        result = self._pollerMuninModule.getInfo()
        self.assertEqual(result[0]['Plugin'], 'foo_bar')