@Override
  public Status investigate(final long hostId) {
    final HostVO host = _hostDao.findById(hostId);
    if (host == null) {
      return null;
    }

    final Enumeration<Investigator> en = _investigators.enumeration();
    Status hostState = null;
    Investigator investigator = null;
    while (en.hasMoreElements()) {
      investigator = en.nextElement();
      hostState = investigator.isAgentAlive(host);
      if (hostState != null) {
        if (s_logger.isDebugEnabled()) {
          s_logger.debug(
              investigator.getName()
                  + " was able to determine host "
                  + hostId
                  + " is in "
                  + hostState.toString());
        }
        return hostState;
      }
      if (s_logger.isDebugEnabled()) {
        s_logger.debug(
            investigator.getName() + " unable to determine the state of the host.  Moving on.");
      }
    }

    return null;
  }
  @Override
  public Status investigate(final long hostId) {
    final HostVO host = _hostDao.findById(hostId);
    if (host == null) {
      return null;
    }

    Status hostState = null;
    for (Investigator investigator : investigators) {
      hostState = investigator.isAgentAlive(host);
      if (hostState != null) {
        if (s_logger.isDebugEnabled()) {
          s_logger.debug(
              investigator.getName()
                  + " was able to determine host "
                  + hostId
                  + " is in "
                  + hostState.toString());
        }
        return hostState;
      }
      if (s_logger.isDebugEnabled()) {
        s_logger.debug(
            investigator.getName() + " unable to determine the state of the host.  Moving on.");
      }
    }

    return null;
  }
  @Test
  public void investigateHostStatusSuccess() {
    Mockito.when(_hostDao.findById(Mockito.anyLong())).thenReturn(hostVO);
    // Set the list of investigators, CheckOnAgentInvestigator suffices for now
    Investigator investigator = Mockito.mock(CheckOnAgentInvestigator.class);
    List<Investigator> investigators = new ArrayList<Investigator>();
    investigators.add(investigator);
    highAvailabilityManager.setInvestigators(investigators);
    // Mock isAgentAlive to return host status as Down
    Mockito.when(investigator.isAgentAlive(hostVO)).thenReturn(Status.Down);

    assertTrue(highAvailabilityManager.investigate(1l) == Status.Down);
  }