@SuppressWarnings({"unchecked", "boxing"})
  @Test
  public void testDoHealthCheckSingleQueueCheckConsumerDown() throws Exception {
    Queue queue = generateQueue("test");
    healthIndicator.addQueueCheck(queue, 10000, 2);

    RabbitQueueProperties properties = new RabbitQueueProperties();
    properties.setConsumerCount(1);
    properties.setMessageCount(5883);
    propertiesManager.request(queue);
    PowerMock.expectLastCall().andReturn(properties);

    PowerMock.replayAll();
    Builder builder = new Builder(Status.OUT_OF_SERVICE);
    healthIndicator.doHealthCheck(builder);
    PowerMock.verifyAll();

    Health health = builder.build();
    Assert.assertEquals(Status.DOWN, health.getStatus());
    Assert.assertNotNull(health.getDetails().get("test"));
    Map<String, Object> details = (Map<String, Object>) health.getDetails().get("test");
    Assert.assertEquals(Status.DOWN.getCode(), details.get("status"));
    Assert.assertEquals(5883, details.get("currentMessageCount"));
    Assert.assertEquals(10000, details.get("maxMessageCount"));
    Assert.assertEquals(1, details.get("currentConsumerCount"));
    Assert.assertEquals(2, details.get("minConsumerCount"));
  }
  @Test
  public void testGetQueueChecks() {
    Assert.assertNotNull(healthIndicator.getQueueChecks());

    Queue queue = generateQueue("test");
    healthIndicator.addQueueCheck(queue, 1);
    healthIndicator.addQueueCheck(queue, 1);
    Assert.assertEquals(2, healthIndicator.getQueueChecks().size());
  }
  @Test
  public void testDoHealthCheckSingleQueueCheckMetricException() throws Exception {
    Queue queue = generateQueue("test");
    healthIndicator.addQueueCheck(queue, 10000, 2);

    propertiesManager.request(queue);
    PowerMock.expectLastCall().andThrow(new RuntimeException());

    PowerMock.replayAll();
    Builder builder = new Builder(Status.OUT_OF_SERVICE);
    healthIndicator.doHealthCheck(builder);
    PowerMock.verifyAll();

    Health health = builder.build();
    Assert.assertEquals(Status.DOWN, health.getStatus());
    Assert.assertNull(health.getDetails().get("test"));
  }
 @Test
 public void testDoHealthCheckNoQueueChecks() throws Exception {
   Builder builder = new Builder(Status.OUT_OF_SERVICE);
   healthIndicator.doHealthCheck(builder);
   Assert.assertEquals(Status.UP, builder.build().getStatus());
 }
 @Test
 public void testAddQueueCheckMaxMessageCount() {
   healthIndicator.addQueueCheck(generateQueue("test"), 10000);
   healthIndicator.addQueueCheck(generateQueue("test"), 5000);
   Assert.assertEquals(2, healthIndicator.getQueueChecks().size());
 }