class MessagePublisherTestCase(unittest.TestCase): """Suite de tests du module publish_messages""" def setUp(self): """Initialisation d'une réplique du RuleDispatcher.""" self.mp = MessagePublisher( helpers.settings['correlator']['nagios_hls_host'], {}) self.mp.sendMessage = Mock() # Initialisation de la BDD helpers.setup_db() # Ajout des noms d'états dans la BDD helpers.populate_statename() # Ajout d'un hôte dans la BDD self.host1 = functions.add_host(u'host1.example.com') # Ajout d'un service de haut niveau dans la BDD self.hls1 = functions.add_highlevelservice(u'Connexion') # Ajout d'un service de bas niveau dans la BDD self.lls1 = functions.add_lowlevelservice(self.host1, u'Processes') # Création d'un timestamp à partir de l'heure actuelle self.timestamp = datetime.now() self.int_timestamp = int(mktime(self.timestamp.timetuple())) def tearDown(self): helpers.teardown_db() def test_publish_aggregate(self): """Publication d'alertes à ajouter à des évènements corrélés""" self.mp.publish_aggregate([1, 2], [1, 2, 3, 4]) print self.mp.sendMessage.call_args self.assertEqual(self.mp.sendMessage.call_args[0][0], {'aggregates': [1, 2], 'alerts': [1, 2, 3, 4], 'type': 'aggr'}) def test_delete_published_aggregates(self): """Publication d'une liste d'évènements corrélés à supprimer""" self.mp.delete_published_aggregates([1, 2]) print self.mp.sendMessage.call_args self.assertEqual(self.mp.sendMessage.call_args[0][0], {'aggregates': [1, 2], 'type': 'delaggr'})
def ruledispatcher_factory(settings, database, client): nagios_hls_host = settings['correlator']['nagios_hls_host'] timeout = settings['correlator'].as_int('rules_timeout') if timeout <= 0: timeout = None min_runner = settings['correlator'].as_int('min_rule_runners') max_runner = settings['correlator'].as_int('max_rule_runners') # Identifiant (supposé) unique de l'instance. instance = settings['instance'] try: max_idle = settings['correlator'].as_int('rule_runners_max_idle') except KeyError: max_idle = 20 msg_handler = RuleDispatcher(database, nagios_hls_host, timeout, min_runner, max_runner, max_idle, instance) msg_handler.check_database_connectivity() msg_handler.setClient(client) subs = parseSubscriptions(settings) queue = settings["bus"]["queue"] queue_message_ttl = int(settings['bus'].get('queue_messages_ttl', 0)) msg_handler.subscribe(queue, queue_message_ttl, subs) # Expéditeur de messages publications = parsePublications(settings.get('publications', {}).copy()) publisher = MessagePublisher(nagios_hls_host, publications) publisher.setClient(client) msg_handler.bus_publisher = publisher # Créateur de correvents correvent_builder = CorrEventBuilder(publisher, database) msg_handler.correvent_builder = correvent_builder return msg_handler
def setUp(self): """Initialisation d'une réplique du RuleDispatcher.""" self.mp = MessagePublisher( helpers.settings['correlator']['nagios_hls_host'], {}) self.mp.sendMessage = Mock() # Initialisation de la BDD helpers.setup_db() # Ajout des noms d'états dans la BDD helpers.populate_statename() # Ajout d'un hôte dans la BDD self.host1 = functions.add_host(u'host1.example.com') # Ajout d'un service de haut niveau dans la BDD self.hls1 = functions.add_highlevelservice(u'Connexion') # Ajout d'un service de bas niveau dans la BDD self.lls1 = functions.add_lowlevelservice(self.host1, u'Processes') # Création d'un timestamp à partir de l'heure actuelle self.timestamp = datetime.now() self.int_timestamp = int(mktime(self.timestamp.timetuple()))