package io.dropwizard.db;
import com.codahale.metrics.health.HealthCheck;
import io.dropwizard.util.Duration;
import org.junit.Test;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class TimeBoundHealthCheckTest {
@Test
@SuppressWarnings("unchecked")
public void testCheck() throws InterruptedException, ExecutionException, TimeoutException {
final ExecutorService executorService = mock(ExecutorService.class);
final Duration duration = mock(Duration.class);
when(duration.getQuantity()).thenReturn(5L);
when(duration.getUnit()).thenReturn(TimeUnit.SECONDS);
final Callable<HealthCheck.Result> callable = mock(Callable.class);
final Future<HealthCheck.Result> future = mock(Future.class);
when(executorService.submit(callable)).thenReturn(future);
new TimeBoundHealthCheck(executorService, duration).check(callable);
verify(executorService, times(1)).submit(callable);
verify(future, times(1)).get(duration.getQuantity(), duration.getUnit());
}
}