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')
Beispiel #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')
Beispiel #3
0
 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)")
Beispiel #4
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')
Beispiel #5
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')
    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)
Beispiel #8
0
    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)")
Beispiel #11
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)")
Beispiel #12
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)
Beispiel #13
0
 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'])
Beispiel #16
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'])
Beispiel #17
0
 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]
Beispiel #19
0
 def setUp(self):
     # pickled results from a 2016 server
     self.results = load_pickle_file(self, 'Interfaces_process_215200')[0]
Beispiel #20
0
 def setUp(self):
     self.results = load_pickle_file(self, 'Interfaces_process_194131')[0]
     self.device = load_pickle_file(self, 'device')
     self.plugin = Interfaces()
Beispiel #21
0
 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()