--- CircuitBreaker/test/dk/thoerup/circuitbreaker/TestCircuitBreaker.java 2009/10/20 10:48:47 453 +++ CircuitBreaker/test/dk/thoerup/circuitbreaker/TestCircuitBreaker.java 2011/04/19 17:13:40 1315 @@ -9,34 +9,22 @@ import org.junit.Before; import org.junit.Test; -import dk.thoerup.curcuitbreaker.CircuitBreaker; -import dk.thoerup.curcuitbreaker.CircuitBreakerException; -import dk.thoerup.curcuitbreaker.CircuitInvocation; -import dk.thoerup.curcuitbreaker.notification.SystemOutNotifier; +import dk.thoerup.circuitbreaker.CircuitBreaker; +import dk.thoerup.circuitbreaker.CircuitBreakerException; +import dk.thoerup.circuitbreaker.config.StaticConfig; + + public class TestCircuitBreaker { public static final int DELAY = 50; public static final int THRESHOLD = 2; - class SucceedingInvocation implements CircuitInvocation { - public Object proceed() throws Exception { - return "OK"; - } - } - - class FailingInvocation implements CircuitInvocation { - public Object proceed() throws Exception { - throw new IOException("Error"); - } - } - CircuitBreaker cb; @Before public void setup() { - cb = new CircuitBreaker("test", THRESHOLD, DELAY); - cb.setNotifier( new SystemOutNotifier() ); + cb = new CircuitBreaker("test", new StaticConfig(THRESHOLD, DELAY) ); } @Test public void defaultState() { @@ -86,6 +74,12 @@ assertTrue( cb.isOpen() ); } + @Test public void forcedTrip() { + assertTrue( cb.isClosed() ); + cb.tripBreaker(); + assertTrue( cb.isOpen() ); + } + @Test public void forcedResetTest() throws Exception { try{ cb.invoke( new FailingInvocation() ); @@ -98,7 +92,7 @@ cb.reset(); assertTrue( cb.isClosed() ); - assertTrue( cb.getFailureCount() == 0 ); //TODO: currently an externally triggered reset doesn't reset failure count - should a forced reset be possible at all ? + assertTrue( cb.getFailureCount() == 0 ); } @@ -130,7 +124,7 @@ assertTrue( cb.isOpen() ); Thread.sleep(DELAY*2); - cb.invoke( new FailingInvocation() ); //in half open this will cause a CircuitBreakerException + cb.invoke( new FailingInvocation() ); //in half-open this will cause a CircuitBreakerException, as if it was in open mode } @Test public void halfOpen3() throws Exception { @@ -140,10 +134,10 @@ Thread.sleep(DELAY*2); try{ - cb.invoke( new FailingInvocation() ); + cb.invoke( new FailingInvocation() ); } catch (CircuitBreakerException e) {} - assertTrue( cb.isOpen() ); + assertTrue( cb.isOpen() ); //after failing in half-open go back to open }