package com.aol.micro.server.health;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import org.junit.Before;
import org.junit.Test;
import com.google.common.eventbus.EventBus;
public class HealthCheckTest {
HealthCheck check;
EventBus eventBus;
@Before
public void setup() {
eventBus = mock(EventBus.class);
check = new HealthCheck(
new HealthChecker(
10000l),
10, 20, eventBus);
}
@Test
public void testRegister() {
check.register();
verify(eventBus).register(check);
}
@Test
public void testOnEvent() {
check.onEvent(new ErrorEvent());
assertThat(check.errors.size(), is(1));
}
@Test
public void testOnEventMaxNotExceeded() {
for (int i = 0; i < check.getMaxSize() * 2; i++) {
check.onEvent(new ErrorEvent());
assertThat(check.errors.size(), is(Math.min(i + 1, check.getMaxSize())));
}
}
@Test
public void testCheckHealthStatusErrorsOld() throws InterruptedException {
check = new HealthCheck(
new HealthChecker(
1l),
10, 20, eventBus);
check.onEvent(new ErrorEvent());
Thread.sleep(1l);
HealthStatus status = check.checkHealthStatus();
assertThat(status.getGeneralProcessing(), is(HealthStatus.State.Ok));
assertThat(status.getRecentErrors()
.size(),
is(1));
}
@Test
public void testSetMaxSizeTooBig() {
check.setMaxSize(100);
assertThat(check.getMaxSize(), is(10));
}
@Test
public void testSetMaxSizeOk() {
check.setMaxSize(15);
assertThat(check.getMaxSize(), is(15));
}
}