/** {@inheritDoc} */ @Override public void openOutage(final PollableService svc, final PollEvent svcLostEvent) { // Open the outage immediately final Integer outageId = getQueryManager().openOutagePendingLostEventId(svc.getNodeId(), svc.getIpAddr(), svc.getSvcName(), svcLostEvent.getDate()); // Defer updating the outage with the event id until we receive back // from the event bus final Runnable r = new Runnable() { @Override public void run() { final int eventId = svcLostEvent.getEventId(); if (eventId > 0) { getQueryManager().updateOpenOutageWithEventId(outageId, eventId); } else { LOG.warn("run: Failed to determine an eventId for service lost for: {} with event: {}", svc, svcLostEvent); } } }; if (svcLostEvent instanceof PendingPollEvent) { ((PendingPollEvent)svcLostEvent).addPending(r); } else { r.run(); } LOG.debug("openOutage: sending outageCreated event for: {} on {}", svc.getSvcName(), svc.getIpAddr()); sendEvent(createEvent(EventConstants.OUTAGE_CREATED_EVENT_UEI, svc.getNodeId(), svc.getAddress(), svc.getSvcName(), svcLostEvent.getDate(), null)); }
sendEvent(createEvent(EventConstants.OUTAGE_RESOLVED_EVENT_UEI, svc.getNodeId(), svc.getAddress(), svc.getSvcName(), svcRegainEvent.getDate(), null));
@Test public void testCreateEvent() throws Exception { Date date = new Date(1222222222000L); Event nodeEvent = m_pollContext.createEvent(EventConstants.NODE_DOWN_EVENT_UEI, 1, null, null, date, String.valueOf(PollStatus.SERVICE_UNAVAILABLE)); assertEquals(EventConstants.NODE_DOWN_EVENT_UEI, nodeEvent.getUei()); assertEquals(Long.valueOf(1), nodeEvent.getNodeid()); assertNull(nodeEvent.getInterface()); assertNull(nodeEvent.getService()); assertEquals("Unexpected time for event", date, nodeEvent.getTime()); Event ifEvent = m_pollContext.createEvent(EventConstants.INTERFACE_UP_EVENT_UEI, 1, InetAddressUtils.addr("192.168.1.1"), null, date, null); assertEquals(EventConstants.INTERFACE_UP_EVENT_UEI, ifEvent.getUei()); assertEquals(Long.valueOf(1), ifEvent.getNodeid()); assertEquals("192.168.1.1", ifEvent.getInterface()); assertNull(ifEvent.getService()); assertEquals("Unexpected time for event", date, ifEvent.getTime()); Event svcEvent = m_pollContext.createEvent(EventConstants.NODE_GAINED_SERVICE_EVENT_UEI, 1, InetAddressUtils.addr("192.168.1.1"), "ICMP", date, null); assertEquals(EventConstants.NODE_GAINED_SERVICE_EVENT_UEI, svcEvent.getUei()); assertEquals(Long.valueOf(1), svcEvent.getNodeid()); assertEquals("192.168.1.1", svcEvent.getInterface()); assertEquals("ICMP", svcEvent.getService()); assertEquals("Unexpected time for event", date, svcEvent.getTime()); }
@Test public void testPathOutages() throws Exception { Assert.assertNotNull(m_nodeDao); Assert.assertNotNull(m_pathOutageDao); Assert.assertNotNull(m_pathOutageManager); OnmsNode node = m_nodeDao.get(1); Assert.assertNotNull(node); OnmsPathOutage pathOutage = new OnmsPathOutage(node, InetAddressUtils.addr("169.254.0.1"), "ICMP"); m_pathOutageDao.save(pathOutage); m_pathOutageDao.flush(); m_pollerConfig.setPathOutageEnabled(true); CriticalPath path = m_pathOutageManager.getCriticalPath(1); Assert.assertEquals(InetAddrUtils.addr("169.254.0.1"), path.getIpAddress()); Event nodeEvent = m_pollContext.createEvent(EventConstants.NODE_DOWN_EVENT_UEI, 1, null, null, new Date(), String.valueOf(PollStatus.SERVICE_UNAVAILABLE)); Assert.assertNotNull(nodeEvent); Assert.assertEquals("169.254.0.1", nodeEvent.getParm(EventConstants.PARM_CRITICAL_PATH_IP).getValue().getContent()); Assert.assertEquals(EventConstants.PARM_VALUE_PATHOUTAGE, nodeEvent.getParm(EventConstants.PARM_LOSTSERVICE_REASON).getValue().getContent()); } }