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'})
Example #2
0
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()))