@Override public void processRow(ResultSet rs) throws SQLException { Outage outage = new Outage(rs.getInt("nodeId"), rs.getString("ipAddr"), rs.getInt("serviceId")); outage.setServiceName(rs.getString("serviceName")); outage.setLostEvent(rs.getInt("svcLostEventID"), rs.getTimestamp("ifLostService")); boolean open = (rs.getObject("ifRegainedService") == null); if (!open) { outage.setRegainedEvent(rs.getInt("svcRegainedEventID"), rs.getTimestamp("ifRegainedService")); } outages.add(outage); } };
private synchronized boolean anticipates(Map<EventWrapper, List<Outage>> pending, MockService svc) { for (List<Outage> outageList : pending.values()) { for (Outage outage : outageList) { if (outage.isForService(svc)) { return true; } } } return false; }
private synchronized void closeExpectedOutages(Event e, Outage pendingOutage) { for (Outage outage : m_expectedOutages) { if (pendingOutage.equals(outage)) { outage.setRegainedEvent(e.getDbid(), new Timestamp(e.getTime().getTime())); } } }
@Override public void visitService(MockService svc) { if (!m_db.hasOpenOutage(svc) || anticipatesClose(svc)) { m_expectedOpenCount++; m_expectedOutageCount++; outageCreatedEvents.add(svc.createOutageCreatedEvent()); Outage outage = new Outage(svc); MockUtil.println("Anticipating outage open: "+outage); addToOutageList(m_pendingOpens, lostService, outage); } } };
@Override public synchronized void onEvent(Event e) { for (Outage outage : getOutageList(m_pendingOpens, e)) { outage.setLostEvent(e.getDbid(), new Timestamp(e.getTime().getTime())); m_expectedOutages.add(outage); } clearOutageList(m_pendingOpens, e); for (Outage outage : getOutageList(m_pendingCloses, e)) { closeExpectedOutages(e, outage); } clearOutageList(m_pendingCloses, e); }
currentOutages.remove(expectedOutage); } else { LOG.warn("Expected outage {} not in current Set", expectedOutage.toDetailedString()); LOG.warn("Unexpected outage {} in database", unexpectedOutage.toDetailedString());
@Override public void processRow(ResultSet rs) throws SQLException { Outage outage = new Outage(rs.getInt("nodeId"), rs.getString("ipAddr"), rs.getInt("serviceId")); outage.setServiceName(rs.getString("serviceName")); outage.setLostEvent(rs.getInt("svcLostEventID"), rs.getTimestamp("ifLostService")); boolean open = (rs.getObject("ifRegainedService") == null); if (!open) { outage.setRegainedEvent(rs.getInt("svcRegainedEventID"), rs.getTimestamp("ifRegainedService")); } outages.add(outage); } };