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')
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')
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')
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')
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')
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'])
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)
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'])