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 )
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 )