package org.apereo.cas.monitor; import org.junit.Test; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import static org.junit.Assert.*; /** * Unit test for {@link AbstractPoolMonitor} class. * * @author Marvin S. Addison * @since 3.5.0 */ public class AbstractPoolMonitorTests { private final ExecutorService executor = Executors.newSingleThreadExecutor(); @Test public void verifyObserveOK() throws Exception { final AbstractPoolMonitor monitor = new AbstractPoolMonitor("monitor", executor, 1000) { @Override protected StatusCode checkPool() throws Exception { return StatusCode.OK; } @Override protected int getIdleCount() { return 3; } @Override protected int getActiveCount() { return 2; } }; final PoolStatus status = monitor.observe(); assertEquals(StatusCode.OK, status.getCode()); assertEquals(3, status.getIdleCount()); assertEquals(2, status.getActiveCount()); } @Test public void verifyObserveWarn() throws Exception { final AbstractPoolMonitor monitor = new AbstractPoolMonitor("monitor", executor, 500) { @Override protected StatusCode checkPool() throws Exception { Thread.sleep(1000); return StatusCode.OK; } @Override protected int getIdleCount() { return 1; } @Override protected int getActiveCount() { return 1; } }; final PoolStatus status = monitor.observe(); assertEquals(StatusCode.WARN, status.getCode()); assertEquals(1, status.getIdleCount()); assertEquals(1, status.getActiveCount()); } @Test public void verifyObserveError() throws Exception { final AbstractPoolMonitor monitor = new AbstractPoolMonitor("monitor", executor, 500) { @Override protected StatusCode checkPool() throws Exception { throw new RuntimeException("Pool check failed due to rogue penguins."); } @Override protected int getIdleCount() { return 1; } @Override protected int getActiveCount() { return 1; } }; final PoolStatus status = monitor.observe(); assertEquals(StatusCode.ERROR, status.getCode()); assertEquals(1, status.getIdleCount()); assertEquals(1, status.getActiveCount()); } }