def test_nagios_parser(self):
     # OK status from Nagios and 4 datapoints
     # OK - no errors or warnings|default_lines=10 default_warnings=0 default_criticals=0 default_unknowns=0
     win_results = load_pickle_file(self, 'ShellDataSourcePlugin_onSuccess_141718')[0]
     nagios_ok = Mock()
     nagios_ok.datasources = win_results[1]
     nagios_ok.id = nagios_ok.datasources[0].device
     data = self.plugin.onSuccess(win_results, nagios_ok)
     self.assertEquals(len(data['values'][None]), 4)
     self.assertEquals(data['values'][None]['default_criticals'], (0.0, 'N'))
     self.assertEquals(len(data['events']), 8)
     self.assertEquals(data['events'][0]['severity'], 0)
     # now test nagios with a CRITICAL return code and exit_code of 2
     # CRITICAL - (11 errors) - testing ...|default_lines=12 default_warnings=0 default_criticals=11 default_unknowns=0
     # we should see datapoints and a ZenEventClasses.Critical event
     win_results = load_pickle_file(self, 'ShellDataSourcePlugin_onSuccess_143352')[0]
     nagios_critical = Mock()
     win_results[1][0].eventClass = '/Status/Nagios/Test'
     nagios_critical.datasources = win_results[1]
     nagios_critical.id = nagios_critical.datasources[0].device
     data = self.plugin.onSuccess(win_results, nagios_critical)
     self.assertEquals(len(data['values'][None]), 4)
     self.assertEquals(data['values'][None]['default_criticals'], (11.0, 'N'))
     self.assertEquals(len(data['events']), 8)
     self.assertEquals(data['events'][0]['severity'], 5)
     self.assertEquals(data['events'][0]['eventClass'], '/Status/Nagios/Test')
示例#2
0
 def test_nagios_parser(self):
     # OK status from Nagios and 4 datapoints
     # OK - no errors or warnings|default_lines=10 default_warnings=0 default_criticals=0 default_unknowns=0
     win_results = load_pickle_file(self, 'ShellDataSourcePlugin_onSuccess_141718')[0]
     nagios_ok = Mock()
     nagios_ok.datasources = win_results[1]
     nagios_ok.id = nagios_ok.datasources[0].device
     data = self.plugin.onSuccess(win_results, nagios_ok)
     self.assertEquals(len(data['values'][None]), 4)
     self.assertEquals(data['values'][None]['default_criticals'], (0.0, 'N'))
     self.assertEquals(len(data['events']), 8)
     self.assertEquals(data['events'][0]['severity'], 0)
     # now test nagios with a CRITICAL return code and exit_code of 2
     # CRITICAL - (11 errors) - testing ...|default_lines=12 default_warnings=0 default_criticals=11 default_unknowns=0
     # we should see datapoints and a ZenEventClasses.Critical event
     win_results = load_pickle_file(self, 'ShellDataSourcePlugin_onSuccess_143352')[0]
     nagios_critical = Mock()
     win_results[1][0].eventClass = '/Status/Nagios/Test'
     nagios_critical.datasources = win_results[1]
     nagios_critical.id = nagios_critical.datasources[0].device
     data = self.plugin.onSuccess(win_results, nagios_critical)
     self.assertEquals(len(data['values'][None]), 4)
     self.assertEquals(data['values'][None]['default_criticals'], (11.0, 'N'))
     self.assertEquals(len(data['events']), 8)
     self.assertEquals(data['events'][0]['severity'], 5)
     self.assertEquals(data['events'][0]['eventClass'], '/Status/Nagios/Test')
示例#3
0
    def test_143596(self):
        # Cluster shared volumes are different than cluster disks
        # the status will be a string, not an int
        results = load_pickle_file(
            self, 'ClusterDataSourcePlugin_onSuccess_210137')[0]
        config = Mock()
        datasources = []
        for line in results.stdout:
            component = line.split('|')[0]
            datasource = Mock(params={
                'eventlog': sentinel.eventlog,
                'contexttitle': 'device',
                'ownernode': 'IS-HVDRCL03-H04',
                'cluster': 'IS-HVDRCL03.tcy.prv'
            },
                              datasource='DataSource',
                              component=component)
            datasources.append(datasource)

        config.datasources = datasources
        config.id = 'IS-HVDRCL03.tcy.prv'
        data = self.plugin.onSuccess(results, config)
        for k, v in RESULTS_143596.iteritems():
            self.assertEquals(data['values'][k]['freespace'], v)
            self.assertEquals(data['values'][k]['state'], 2)
        csvs = set(RESULTS_143596.keys())
        evts = [
            evt for evt in data['events'] if evt.get('component', '') in csvs
        ]
        for evt in evts:
            self.assertEquals(evt['summary'],
                              'Last state of component device was Online')
示例#4
0
 def test_sql_no_counters(self):
     parms = load_pickle_file(self, 'ShellDataSourcePlugin_onSuccess_162846')[0]
     stdout = [u'databasename : db01',
               u'databasestatus:Normal',
               u'databasename:master',
               u'databasestatus:Normal',
               u'databasename : msdb',
               u'databasestatus:Normal',
               u'databasename : tempdb',
               u'databasestatus:Normal',
               u'databasename : model',
               u'databasestatus:Normal']
     sql_config = Mock()
     sql_config.datasources = parms[1]
     sql_config.id = sql_config.datasources[0].device
     results = (parms[0], parms[1], CommandResponse(stdout, [], 0))
     data = self.plugin.onSuccess(results, sql_config)
     self.assertEquals(len(data['values']), 5)
     self.assertEquals(len(data['events']), 15)
     # we should see status of databases even if no counters are returned.
     for x in xrange(5):
         self.assertEquals('The database is available.', data['events'][x]['message'])
     for x in xrange(5, 10):
         self.assertEquals(
             'Error parsing data in powershell MSSQL strategy for "ActiveTransactions" datasource',
             data['events'][x]['summary'])
    def test_143596(self):
        # Cluster shared volumes are different than cluster disks
        # the status will be a string, not an int
        results = load_pickle_file(self, 'ClusterDataSourcePlugin_onSuccess_210137')[0]
        config = Mock()
        datasources = []
        for line in results.stdout:
            component = line.split('|')[0]
            datasource = Mock(
                params={
                    'eventlog': sentinel.eventlog,
                    'contexttitle': 'device',
                    'ownernode': 'IS-HVDRCL03-H04',
                    'cluster': 'IS-HVDRCL03.tcy.prv'
                },
                datasource='DataSource',
                component=component)
            datasources.append(datasource)

        config.datasources = datasources
        config.id = 'IS-HVDRCL03.tcy.prv'
        data = self.plugin.onSuccess(results, config)
        for k, v in RESULTS_143596.iteritems():
            self.assertEquals(data['values'][k]['freespace'], v)
            self.assertEquals(data['values'][k]['state'], 2)
        csvs = set(RESULTS_143596.keys())
        evts = [evt for evt in data['events'] if evt.get('component', '') in csvs]
        for evt in evts:
            self.assertEquals(
                evt['summary'],
                'Last state of component device was Online')
示例#6
0
 def test_process_sys_name_unknown(self):
     device = Mock()
     device.id = 'win_device'
     device.snmpSysName = ''
     device.manageIp = '8.8.8.8'
     data = self.plugin.process(device, {}, Mock())
     self.assertEquals(data[0].snmpSysName, 'Unknown')
示例#7
0
 def test_process_sys_name_from_comp_system(self):
     device = Mock()
     device.id = 'win_device'
     device.snmpSysName = 'device_sys_name'
     device.manageIp = '8.8.8.8'
     computer_system = Mock()
     computer_system.Name = 'computer_sys_name'
     results = {
         'Win32_ComputerSystem': [computer_system]
     }
     data = self.plugin.process(device, results, Mock())
     self.assertEquals(data[0].snmpSysName, 'computer_sys_name')
示例#8
0
 def test_process_sys_name_from_os_system(self):
     device = Mock()
     device.id = 'win_device'
     device.snmpSysName = 'device_sys_name'
     device.manageIp = '8.8.8.8'
     os_system = Mock()
     os_system.CSName = 'os_sys_name'
     os_system.TotalVisibleMemorySize = 1024
     os_system.TotalVirtualMemorySize = 1024
     os_system.Caption = 'Caption'
     results = {
         'Win32_OperatingSystem': [os_system]
     }
     data = self.plugin.process(device, results, Mock())
     self.assertEquals(data[0].snmpSysName, 'os_sys_name')
 def test_sql_no_counters(self):
     parms = load_pickle_file(self, 'ShellDataSourcePlugin_onSuccess_185726')[0]
     stdout = [u'db01 :counter: databasestatus :value: Normal',
               u'master :counter: databasestatus :value: Normal',
               u'msdb :counter: databasestatus :value: Normal',
               u'tempdb :counter: databasestatus :value: Normal',
               u'model :counter: databasestatus :value: Normal']
     sql_config = Mock()
     sql_config.datasources = parms[1]
     sql_config.id = sql_config.datasources[0].device
     results = (parms[0], parms[1], CommandResponse(stdout, [], 0))
     data = self.plugin.onSuccess(results, sql_config)
     self.assertEquals(len(data['values']), 5)
     self.assertEquals(len(data['events']), 15)
     # we should see status of databases even if no counters are returned.
     for x in xrange(5):
         self.assertEquals('The database is available.', data['events'][x]['message'])
     for x in xrange(5, 10):
         self.assertEquals(
             'winrs: successful collection', data['events'][x]['summary'])
示例#10
0
 def test_onSuccess(self):
     datasources = load_pickle_file(self, 'cluster_datasources')
     results = load_pickle_file(
         self, 'ClusterDataSourcePlugin_onSuccess_161027')[0]
     config = Mock()
     config.datasources = datasources
     config.id = datasources[0].device
     data = self.plugin.onSuccess(results, config)
     self.assertEquals(len(data['values']), 22)
     for comp, value in RESULTS.iteritems():
         try:
             num = int(value)
             value = cluster_disk_state_string(num)
             self.assertEquals(data['values'][comp]['state'], num)
         except Exception:
             self.assertEquals(data['values'][comp]['state'][0],
                               cluster_state_value(value),
                               'found {}'.format(value))
     self.assertEquals(len(data['events']), 27)
     # 24989663232 is the freespace in the pickle file
     self.assertEquals(
         data['values']['860caaf4-595a-44e6-be70-285a9bb3733d']
         ['freespace'], 24989663232)
示例#11
0
 def test_sql_no_counters(self):
     parms = load_pickle_file(self,
                              'ShellDataSourcePlugin_onSuccess_185726')[0]
     stdout = [
         u'db01 :counter: databasestatus :value: Normal',
         u'master :counter: databasestatus :value: Normal',
         u'msdb :counter: databasestatus :value: Normal',
         u'tempdb :counter: databasestatus :value: Normal',
         u'model :counter: databasestatus :value: Normal'
     ]
     sql_config = Mock()
     sql_config.datasources = parms[1]
     sql_config.id = sql_config.datasources[0].device
     results = (parms[0], parms[1], CommandResponse(stdout, [], 0))
     data = self.plugin.onSuccess(results, sql_config)
     self.assertEquals(len(data['values']), 5)
     self.assertEquals(len(data['events']), 15)
     # we should see status of databases even if no counters are returned.
     for x in xrange(5):
         self.assertEquals('The database is available.',
                           data['events'][x]['message'])
     for x in xrange(5, 10):
         self.assertEquals('winrs: successful collection',
                           data['events'][x]['summary'])