public void processRow(ResultSet rs) throws SQLException {
   assertEquals(m_svc.getNodeId(), rs.getInt("nodeId"));
   assertEquals(m_svc.getIpAddr(), rs.getString("ipAddr"));
   assertEquals(m_svc.getId(), rs.getInt("serviceId"));
   assertEquals(m_lostSvcEvent.getDbid(), Integer.valueOf(rs.getInt("svcLostEventId")));
   assertEquals(m_lostSvcTime, rs.getTimestamp("ifLostService"));
   assertEquals(getRegainedEventId(), rs.getObject("svcRegainedEventId"));
   assertEquals(m_regainedSvcTime, rs.getTimestamp("ifRegainedService"));
 }
  @Test
  public void testNodeLostServiceWithReason() {
    m_pollerConfig.setNodeOutageProcessingEnabled(true);

    MockService svc = m_network.getService(1, "192.168.1.1", "ICMP");
    Event e = svc.createDownEvent();
    String reasonParm = "eventReason";
    String val = EventUtil.getNamedParmValue("parm[" + reasonParm + "]", e);
    assertEquals("Service Not Responding.", val);
  }
  @Test
  public void testBug709() {

    m_pollerConfig.setNodeOutageProcessingEnabled(true);

    MockNode node = m_network.getNode(2);
    MockService icmpService = m_network.getService(2, "192.168.1.3", "ICMP");
    MockService httpService = m_network.getService(2, "192.168.1.3", "HTTP");

    // start the poller
    startDaemons();

    //
    // Bring Down the HTTP service and expect nodeLostService Event
    //

    resetAnticipated();
    anticipateDown(httpService);

    // bring down the HTTP service
    httpService.bringDown();

    verifyAnticipated(10000);

    //
    // Bring Down the ICMP (on the only interface on the node) now expect
    // nodeDown
    // only.
    //

    resetAnticipated();
    anticipateDown(node);

    // bring down the ICMP service
    icmpService.bringDown();

    // make sure the down events are received
    // verifyAnticipated(10000);
    sleep(5000);
    //
    // Bring up both the node and the httpService at the same time. Expect
    // both a nodeUp and a nodeRegainedService
    //

    resetAnticipated();
    // the order matters here
    anticipateUp(httpService);
    anticipateUp(node);

    // bring up all the services on the node
    node.bringUp();

    // make sure the down events are received
    verifyAnticipated(10000);
  }
  @Test
  public void testSuspendPollingResumeService() {

    MockService svc = m_network.getService(1, "192.168.1.2", "SMTP");

    startDaemons();

    sleep(2000);
    assertTrue(0 < svc.getPollCount());

    m_eventMgr.sendEventToListeners(MockEventUtil.createSuspendPollingServiceEvent("Test", svc));
    svc.resetPollCount();

    sleep(5000);
    assertEquals(0, svc.getPollCount());

    m_eventMgr.sendEventToListeners(MockEventUtil.createResumePollingServiceEvent("Test", svc));

    sleep(2000);
    assertTrue(0 < svc.getPollCount());
  }
  @Test
  public void testNodeLostServiceIncludesReason() throws Exception {
    MockService element = m_network.getService(1, "192.168.1.1", "SMTP");
    String expectedReason = "Oh No!! An Outage!!";
    startDaemons();

    resetAnticipated();
    anticipateDown(element);

    MockUtil.println("Bringing down element: " + element);
    element.bringDown(expectedReason);
    MockUtil.println("Finished bringing down element: " + element);

    verifyAnticipated(8000);

    Collection<Event> receivedEvents = m_anticipator.getAnticipatedEventsRecieved();

    assertEquals(1, receivedEvents.size());

    Event event = receivedEvents.iterator().next();

    assertEquals(expectedReason, EventUtils.getParm(event, EventConstants.PARM_LOSTSERVICE_REASON));
  }
  @Test
  public void testInterfaceWithNoCriticalService() {
    m_pollerConfig.setNodeOutageProcessingEnabled(true);

    MockInterface iface = m_network.getInterface(3, "192.168.1.4");
    MockService svc = iface.getService("SMTP");
    MockService otherService = iface.getService("HTTP");

    startDaemons();

    anticipateDown(iface);

    iface.bringDown();

    verifyAnticipated(8000);

    anticipateUp(iface);
    anticipateDown(otherService, true);

    svc.bringUp();

    verifyAnticipated(8000);
  }
  @Test
  public void testNodeGainedServiceWhileNodeDownAndServiceDown() {

    startDaemons();

    MockNode node = m_network.getNode(4);
    MockService svc = m_network.getService(4, "192.168.1.6", "SNMP");

    anticipateDown(node);

    node.bringDown();

    verifyAnticipated(5000);

    resetAnticipated();

    MockService newSvc = m_network.addService(4, "192.168.1.6", "SMTP");

    m_db.writeService(newSvc);

    newSvc.bringDown();

    Event e = MockEventUtil.createNodeGainedServiceEvent("Test", newSvc);
    m_eventMgr.sendEventToListeners(e);

    sleep(5000);
    System.err.println(m_db.getOutages());

    verifyAnticipated(8000);

    anticipateUp(node);
    anticipateDown(svc, true);

    newSvc.bringUp();

    verifyAnticipated(5000);
  }
  private void testSendNodeGainedServices(
      int nodeid, String nodeLabel, String ipAddr, String... svcNames) {
    assertNotNull(svcNames);
    assertTrue(svcNames.length > 0);

    MockNode node = m_network.addNode(nodeid, nodeLabel);
    m_db.writeNode(node);
    MockInterface iface = m_network.addInterface(nodeid, ipAddr);
    m_db.writeInterface(iface);

    List<MockService> services = new ArrayList<MockService>();
    for (String svcName : svcNames) {
      MockService svc = m_network.addService(nodeid, ipAddr, svcName);
      m_db.writeService(svc);
      m_pollerConfig.addService(svc);
      services.add(svc);
    }

    MockVisitor gainSvcSender =
        new MockVisitorAdapter() {
          public void visitService(MockService svc) {
            Event event = MockEventUtil.createNodeGainedServiceEvent("Test", svc);
            m_eventMgr.sendEventToListeners(event);
          }
        };
    node.visit(gainSvcSender);

    MockService svc1 = services.get(0);

    PollAnticipator anticipator = new PollAnticipator();
    svc1.addAnticipator(anticipator);

    anticipator.anticipateAllServices(svc1);

    StringBuffer didNotOccur = new StringBuffer();
    for (MockService service : anticipator.waitForAnticipated(10000)) {
      didNotOccur.append(service.toString());
    }
    StringBuffer unanticipatedStuff = new StringBuffer();
    for (MockService service : anticipator.unanticipatedPolls()) {
      unanticipatedStuff.append(service.toString());
    }

    assertEquals(unanticipatedStuff.toString(), "", didNotOccur.toString());

    anticipateDown(svc1);

    svc1.bringDown();

    verifyAnticipated(10000);
  }
  @Test
  @Ignore
  public void testBug1564() {
    // NODE processing = true;
    m_pollerConfig.setNodeOutageProcessingEnabled(true);
    MockNode node = m_network.getNode(2);
    MockService icmpService = m_network.getService(2, "192.168.1.3", "ICMP");
    MockService smtpService = m_network.getService(2, "192.168.1.3", "SMTP");
    MockService snmpService = m_network.getService(2, "192.168.1.3", "SNMP");

    // start the poller
    startDaemons();

    //
    // Bring Down the HTTP service and expect nodeLostService Event
    //

    resetAnticipated();
    anticipateDown(snmpService);
    // One service works fine
    snmpService.bringDown();

    verifyAnticipated(10000);

    // Now we simulate the restart, the node
    // looses all three at the same time

    resetAnticipated();
    anticipateDown(node);

    icmpService.bringDown();
    smtpService.bringDown();
    snmpService.bringDown();

    verifyAnticipated(10000);
    anticipateDown(smtpService);
    verifyAnticipated(10000);
    anticipateDown(snmpService);
    verifyAnticipated(10000);

    // This is to simulate a restart,
    // where I turn off the node behaviour

    m_pollerConfig.setNodeOutageProcessingEnabled(false);

    anticipateUp(snmpService);
    snmpService.bringUp();

    verifyAnticipated(10000);

    anticipateUp(smtpService);
    smtpService.bringUp();

    verifyAnticipated(10000);

    // Another restart - let's see if this will work?

    m_pollerConfig.setNodeOutageProcessingEnabled(true);
    // So everything is down, now
    // SNMP will regain and SMTP will regain
    // will the node come up?

    smtpService.bringDown();

    anticipateUp(smtpService);
    smtpService.bringUp();

    verifyAnticipated(10000, true);

    anticipateUp(snmpService);
    snmpService.bringUp();

    verifyAnticipated(10000);
  }