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_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_process(self): self.results = load_pickle_file(self, 'Interfaces_process_184038')[0] data = self.plugin.process(self.device, self.results, Mock()) self.assertEquals(data.maps[7].perfmonInstance, "\\Network Interface(HP NC382i DP Multifunction Gigabit Server Adapter)") self.assertEquals(data.maps[8].perfmonInstance, "\\Network Interface(HP NC382i DP Multifunction Gigabit Server Adapter _2)") self.assertEquals(data.maps[13].perfmonInstance, "\\Network Interface(HP NC382i DP Multifunction Gigabit Server Adapter#1)") self.assertEquals(data.maps[14].perfmonInstance, "\\Network Interface(HP NC382i DP Multifunction Gigabit Server Adapter _2#1)") self.results = load_pickle_file(self, 'Interfaces_process_184151')[0] data = self.plugin.process(self.device, self.results, Mock()) self.assertEquals(data.maps[7].perfmonInstance, "\\Network Interface(HP NC382i DP Multifunction Gigabit Server Adapter)") self.assertEquals(data.maps[8].perfmonInstance, "\\Network Interface(HP NC382i DP Multifunction Gigabit Server Adapter _2)") self.assertEquals(data.maps[12].perfmonInstance, "\\Network Interface(HP NC382i DP Multifunction Gigabit Server Adapter#1)") self.assertEquals(data.maps[13].perfmonInstance, "\\Network Interface(HP NC382i DP Multifunction Gigabit Server Adapter _2#1)")
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_onSuccess(self): config = load_pickle_file(self, 'cluster_config') results = CommandResponse( RAW_RESULTS['stdout'], RAW_RESULTS['stderr'], RAW_RESULTS['exit_code']) data = self.plugin.onSuccess(results, config) self.assertEquals(len(data['values']), 25) 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']), 28) # 24989663232 is the freespace in the pickle file self.assertEquals(data['values']['860caaf4-595a-44e6-be70-285a9bb3733d']['freespace'], 24254611456) # test for ownerchange events results.stdout[11] = results.stdout[11].replace('win2016-node-01', 'win2016-node-02') data = self.plugin.onSuccess(results, config) self.assertEquals(len(data['events']), 29) results.stdout[11] = results.stdout[11].replace('win2016-node-02', 'win2016-node-01') results.stdout[12] = results.stdout[12].replace('win2016-node-02', 'win2016-node-01') data = self.plugin.onSuccess(results, config) self.assertEquals(len(data['events']), 29)
def test_onSuccess(self): config = load_pickle_file(self, 'cluster_config') results = CommandResponse(RAW_RESULTS['stdout'], RAW_RESULTS['stderr'], RAW_RESULTS['exit_code']) data = self.plugin.onSuccess(results, config) self.assertEquals(len(data['values']), 25) 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']), 28) # 24989663232 is the freespace in the pickle file self.assertEquals( data['values']['860caaf4-595a-44e6-be70-285a9bb3733d'] ['freespace'], 24254611456) # test for ownerchange events results.stdout[11] = results.stdout[11].replace( 'win2016-node-01', 'win2016-node-02') data = self.plugin.onSuccess(results, config) self.assertEquals(len(data['events']), 29) results.stdout[11] = results.stdout[11].replace( 'win2016-node-02', 'win2016-node-01') results.stdout[12] = results.stdout[12].replace( 'win2016-node-02', 'win2016-node-01') data = self.plugin.onSuccess(results, config) self.assertEquals(len(data['events']), 29)
def test_onSuccess(self): plugin = EventLogPlugin() results = load_pickle_file(self, 'EventLogPlugin')[0] config = Mock( id="machine", datasources=[ Mock(params={'eventlog': sentinel.eventlog}, datasource='DataSource') ], ) res = plugin.onSuccess(results, config) self.maxDiff = None self.assertEquals(len(res['events']), 6, msg='Received {}'.format(pprint.pformat(res))) self.assertEquals(res['events'][0], INFO_EXPECTED) self.assertEquals(res['events'][1], CRITICAL_EXPECTED) self.assertEquals( res['events'][3]['summary'], 'Windows EventLog: No PowerShell errors during event collection') # check for invalid severity to look for new default severity results.stdout[1] = results.stdout[1].replace( '"EntryType": "Information"', '"EntryType": "Invalid"') res = plugin.onSuccess(results, config) self.assertEquals(res['events'][0]['severity'], 2)
def test_process(self): data = self.plugin.process(self.device, self.results, Mock()) self.assertEquals(len(data.maps), 14) self.assertFalse(hasattr(data.maps[7], 'perfmonInstance')) self.assertEquals(data.maps[12].perfmonInstance, "\\Network Interface(RedHat PV NIC Driver _2)") results = load_pickle_file(self, 'Interfaces_process_163512')[0] for i in results['Win32_NetworkAdapter']: i.PhysicalAdapter = 'false' data = self.plugin.process(self.device, results, Mock()) self.assertEquals(data.maps[7].perfmonInstance, "\\Network Interface(AWS PV Network Device _0)")
def test_process(self): data = self.plugin.process(self.device, self.results, Mock()) self.assertEquals(len(data.maps), 14) self.assertFalse(hasattr(data.maps[7], 'perfmonInstance')) self.assertEquals(data.maps[12].perfmonInstance, "\\Network Interface(RedHat PV NIC Driver _2)") results = load_pickle_file(self, 'Interfaces_process_163512')[0] for i in results['Win32_NetworkAdapter']: i.PhysicalAdapter = 'false' data = self.plugin.process(self.device, results, Mock()) self.assertEquals(data.maps[7].perfmonInstance, "\\Network Interface(AWS PV Network Device _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)
def test_onSuccess(self): results = load_pickle_file(self, 'IISSiteDataSourcePlugin_onSuccess_162344')[0] data = self.plugin.onSuccess(results, MagicMock( id="windows_test", datasources=[MagicMock(datasource='IISSiteDataSource', params={'eventlog': sentinel.eventlog, 'statusname': 'Default Web Site', 'iis_version': u'8.5', 'apppool': 'defaultapppool'})], )) self.assertEquals(len(data['events']), 5, msg='Expected 5 events: {}'.format(pprint.pformat(data['events']))) self.assertEquals("Monitoring ok", data['events'][2]['summary']) self.assertIn("is in Running state", data['events'][0]['summary']) self.assertIn("is in Running state", data['events'][1]['summary']) self.assertEquals(data['values'][data['values'].keys()[0]]['status'], (0, 'N')) self.assertEquals(data['values'][data['values'].keys()[0]]['appPoolState'], (3, 'N'))
def test_onSuccess(self): plugin = EventLogPlugin() results = load_pickle_file(self, 'EventLogPlugin')[0] config = Mock( id="machine", datasources=[Mock(params={'eventlog': sentinel.eventlog}, datasource='DataSource')], ) res = plugin.onSuccess(results, config) self.maxDiff = None self.assertEquals(len(res['events']), 6, msg='Received {}'.format(pprint.pformat(res))) self.assertEquals(res['events'][0], INFO_EXPECTED) self.assertEquals(res['events'][1], CRITICAL_EXPECTED) self.assertEquals(res['events'][2]['summary'], 'Windows EventLog: successful event collection') # check for invalid severity to look for new default severity results.stdout[1] = results.stdout[1].replace('"EntryType": "Information"', '"EntryType": "Invalid"') res = plugin.onSuccess(results, config) self.assertEquals(res['events'][0]['severity'], 2)
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_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 setUp(self): self.plugin = OperatingSystem() self.device = StringAttributeObject() self.results = load_pickle_file(self, 'OperatingSystem_process_103136')[0]
def setUp(self): # pickled results from a 2016 server self.results = load_pickle_file(self, 'Interfaces_process_215200')[0]
def setUp(self): # pickled results from a 2016 server self.results = load_pickle_file(self, 'Interfaces_process_215200')[0]
def setUp(self): self.results = load_pickle_file(self, 'Interfaces_process_194131')[0] self.device = load_pickle_file(self, 'device') self.plugin = Interfaces()
def setUp(self): self.device = load_pickle_file(self, 'device') self.plugin = Interfaces()
def setUp(self): self.plugin = OperatingSystem() self.device = StringAttributeObject() self.results = load_pickle_file(self, 'OperatingSystem_process_103136')[0]
def setUp(self): self.device = load_pickle_file(self, 'device') self.plugin = Interfaces()
def setUp(self): self.results = load_pickle_file(self, 'Interfaces_process_194131')[0] self.device = load_pickle_file(self, 'device') self.plugin = Interfaces()