Example #1
0
    def test_close_limited_up(self):
        """Fermeture événements état UP avec limite de durée."""
        # On veut fermer les événements corrélés qui sont dans l'état UP,
        # ayant au moins 1j d'âge.
        options = Options(state_up=True, state_ok=False, days=1)
        res = close_green(LOGGER, options)
        self.assertTrue(res) # pas d'erreur.

        # On s'assure que le CorrEvent associé à l'état UP
        # âgé de 2j a bien été clos.
        supitem = tables.Host.by_host_name(u'localhost2')
        event = DBSession.query(tables.Event).filter(
            tables.Event.idsupitem == supitem.idsupitem).one()
        correvent = DBSession.query(tables.CorrEvent).filter(
            tables.CorrEvent.idcause == event.idevent).one()
        self.assertEquals(correvent.ack, tables.CorrEvent.ACK_CLOSED)

        # Les autres doivent toujours être dans l'état "nouveau".
        others = DBSession.query(tables.CorrEvent).filter(
            tables.CorrEvent.idcorrevent != correvent.idcorrevent).all()
        self.assertNotEquals(0, len(others))
        for other in others:
            self.assertEquals(other.ack, tables.CorrEvent.ACK_NONE,
                "L'événement corrélé sur %s devrait être 'nouveau'" %
                other.cause.supitem
            )
Example #2
0
    def test_close_unlimited_ok(self):
        """Fermeture événements état OK sans limite de durée."""
        # On veut fermer les événements corrélés qui sont dans l'état OK,
        # quelque soit la date à laquelle ils ont été créés.
        options = Options(state_ok=True, state_up=False, days=None)
        res = close_green(LOGGER, options)
        self.assertTrue(res) # pas d'erreur.

        # On s'assure que les CorrEvent associés à l'état OK
        # ont bien été clos.
        identifiers = [
            (u'localhost', u'UpTime'),
            (u'localhost2', u'UpTime2'),
        ]
        supitems = [
            tables.LowLevelService.by_host_service_name(*identifier)
            for identifier in identifiers
        ]
        events = [
            DBSession.query(tables.Event).filter(
                tables.Event.idsupitem == supitem.idsupitem).one()
            for supitem in supitems
        ]
        correvents = [
            DBSession.query(tables.CorrEvent).filter(
                tables.CorrEvent.idcause == event.idevent).one()
            for event in events
        ]
        for correvent in correvents:
            self.assertEquals(correvent.ack, tables.CorrEvent.ACK_CLOSED)

        # Les autres doivent toujours être dans l'état "nouveau".
        others = DBSession.query(tables.CorrEvent).filter(
                ~tables.CorrEvent.idcorrevent.in_([
                    correvent.idcorrevent for correvent in correvents
                ])
            ).all()
        self.assertNotEquals(0, len(others))
        for other in others:
            self.assertEquals(other.ack, tables.CorrEvent.ACK_NONE,
                "L'événement corrélé sur %s devrait être 'nouveau'" %
                other.cause.supitem
            )