From d06387576ab111450202e7c33ceef0433ba8c571 Mon Sep 17 00:00:00 2001 From: ehanno728 Date: Tue, 19 Mar 2019 14:46:27 -0400 Subject: [PATCH] #56 deprecate FailureInterpreter methods in CircuitBreaker and add tests --- .../org/fishwife/jrugged/CircuitBreaker.java | 12 +++-- .../jrugged/TestCircuitBreakerFactory.java | 53 +++++++++++++++---- 2 files changed, 52 insertions(+), 13 deletions(-) diff --git a/jrugged-core/src/main/java/org/fishwife/jrugged/CircuitBreaker.java b/jrugged-core/src/main/java/org/fishwife/jrugged/CircuitBreaker.java index 58197f2f..b677ae0a 100644 --- a/jrugged-core/src/main/java/org/fishwife/jrugged/CircuitBreaker.java +++ b/jrugged-core/src/main/java/org/fishwife/jrugged/CircuitBreaker.java @@ -465,8 +465,10 @@ public String getHealthCheck() { * CircuitBreaker} by default. * @see DefaultFailureInterpreter * @param limit the number of tolerated failures in a window + * + * Deprecated methods will be removed in the 4.0 release */ - public void setLimit(int limit) { + @Deprecated public void setLimit(int limit) { FailureInterpreter fi = getFailureInterpreter(); if (!(fi instanceof DefaultFailureInterpreter)) { throw new IllegalStateException("setLimit() not supported: this CircuitBreaker's FailureInterpreter isn't a DefaultFailureInterpreter."); @@ -480,8 +482,10 @@ public void setLimit(int limit) { * @see DefaultFailureInterpreter * @param ignore a {@link java.util.Collection} of {@link Throwable} * classes + * + * Deprecated methods will be removed in the 4.0 release */ - public void setIgnore(Collection> ignore) { + @Deprecated public void setIgnore(Collection> ignore) { FailureInterpreter fi = getFailureInterpreter(); if (!(fi instanceof DefaultFailureInterpreter)) { throw new IllegalStateException("setIgnore() not supported: this CircuitBreaker's FailureInterpreter isn't a DefaultFailureInterpreter."); @@ -503,8 +507,10 @@ public void setIgnore(Collection> ignore) { * CircuitBreaker} by default. * @see DefaultFailureInterpreter * @param windowMillis length of the window in milliseconds + * + * Deprecated methods will be removed in the 4.0 release */ - public void setWindowMillis(long windowMillis) { + @Deprecated public void setWindowMillis(long windowMillis) { FailureInterpreter fi = getFailureInterpreter(); if (!(fi instanceof DefaultFailureInterpreter)) { throw new IllegalStateException("setWindowMillis() not supported: this CircuitBreaker's FailureInterpreter isn't a DefaultFailureInterpreter."); diff --git a/jrugged-core/src/test/java/org/fishwife/jrugged/TestCircuitBreakerFactory.java b/jrugged-core/src/test/java/org/fishwife/jrugged/TestCircuitBreakerFactory.java index cc46a031..53a721fd 100644 --- a/jrugged-core/src/test/java/org/fishwife/jrugged/TestCircuitBreakerFactory.java +++ b/jrugged-core/src/test/java/org/fishwife/jrugged/TestCircuitBreakerFactory.java @@ -45,7 +45,7 @@ public void setUp() { @Test public void testCreateCircuitBreaker() { CircuitBreaker breaker = factory.createCircuitBreaker("testCreate", config); - checkBreaker(breaker, TEST_LIMIT, TEST_WINDOW_MILLIS, TEST_RESET_MILLIS); + checkBreakerWithDefaultFailureInterpreter(breaker, TEST_LIMIT, TEST_WINDOW_MILLIS, TEST_RESET_MILLIS); } @Test @@ -55,7 +55,7 @@ public void testCreateDuplicateCircuitBreaker() { CircuitBreaker secondBreaker = factory.createCircuitBreaker(name, config); assertSame(createdBreaker, secondBreaker); - checkBreaker(createdBreaker, TEST_LIMIT, TEST_WINDOW_MILLIS, TEST_RESET_MILLIS); + checkBreakerWithDefaultFailureInterpreter(createdBreaker, TEST_LIMIT, TEST_WINDOW_MILLIS, TEST_RESET_MILLIS); } @Test @@ -64,7 +64,7 @@ public void testCreateCircuitBreakerEmptyConfig() { new CircuitBreakerConfig(-1, new DefaultFailureInterpreter()); CircuitBreaker breaker = factory.createCircuitBreaker("testCreateEmpty", emptyConfig); - checkBreaker(breaker, 0, 0, 15000L); // These are the CircuitBreaker Defaults. + checkBreakerWithDefaultFailureInterpreter(breaker, 0, 0, 15000L); // These are the CircuitBreaker Defaults. } @Test @@ -76,6 +76,24 @@ public void testCreateCircuitBreakerNullFailureInterpreter() { checkBreakerNoFailureInterpreter(breaker, 15000L); // These are the CircuitBreaker Defaults. } + @Test + public void testCreateCircuitBreakerDefaultFailureInterpreter() { + CircuitBreakerConfig emptyConfig = + new CircuitBreakerConfig(-1, new DefaultFailureInterpreter()); + CircuitBreaker breaker = factory.createCircuitBreaker("testDefaultFailureInterpreter", emptyConfig); + + checkBreakerWithDefaultFailureInterpreter(breaker, 0, 0L, 15000L); // These are the CircuitBreaker Defaults. + } + + @Test + public void testCreateCircuitBreakerPercentErrPerTimeFailureInterpreter() { + CircuitBreakerConfig emptyConfig = + new CircuitBreakerConfig(-1, new PercentErrPerTimeFailureInterpreter()); + CircuitBreaker breaker = factory.createCircuitBreaker("testPercentErrFailureInterpreter", emptyConfig); + + checkBreakerWithPercentErrPerTimeFailureInterpreter(breaker,0L, 15000L); + } + @Test public void testFindANamedCircuitBreaker() { String monitorName = "testFind"; @@ -111,7 +129,7 @@ public void testEmptyPropertyOverrides() { Properties overrideProperties = new Properties(); factory.setProperties(overrideProperties); CircuitBreaker breaker = factory.createCircuitBreaker("emptyOverrides", config); - checkBreaker(breaker, TEST_LIMIT, TEST_WINDOW_MILLIS, TEST_RESET_MILLIS); + checkBreakerWithDefaultFailureInterpreter(breaker, TEST_LIMIT, TEST_WINDOW_MILLIS, TEST_RESET_MILLIS); } @Test @@ -128,7 +146,7 @@ public void testPropertyOverrides() { factory.setProperties(overrideProperties); CircuitBreaker breaker = factory.createCircuitBreaker(name, config); - checkBreaker(breaker, overrideLimit, overrideWindowMillis, overrideResetMillis); + checkBreakerWithDefaultFailureInterpreter(breaker, overrideLimit, overrideWindowMillis, overrideResetMillis); } @Test @@ -144,14 +162,14 @@ public void testInvalidPropertyOverrides() { CircuitBreakerConfig emptyConfig = new CircuitBreakerConfig(-1, new DefaultFailureInterpreter()); CircuitBreaker breaker = factory.createCircuitBreaker(name, emptyConfig); - checkBreaker(breaker, 0, 0L, 15000L); // These are the CircuitBreaker defaults. + checkBreakerWithDefaultFailureInterpreter(breaker, 0, 0L, 15000L); // These are the CircuitBreaker defaults. assertNotNull(breaker); } - private void checkBreaker(CircuitBreaker breaker, - int expectedLimit, - long expectedWindowMillis, - long expectedResetMillis) { + private void checkBreakerWithDefaultFailureInterpreter(CircuitBreaker breaker, + int expectedLimit, + long expectedWindowMillis, + long expectedResetMillis) { assertNotNull(breaker); @@ -165,6 +183,21 @@ private void checkBreaker(CircuitBreaker breaker, assertEquals(breaker.getResetMillis(), expectedResetMillis); } + private void checkBreakerWithPercentErrPerTimeFailureInterpreter(CircuitBreaker breaker, + long expectedWindowMillis, + long expectedResetMillis) { + + assertNotNull(breaker); + + PercentErrPerTimeFailureInterpreter failureInterpreter = (PercentErrPerTimeFailureInterpreter) breaker.getFailureInterpreter(); + + if (failureInterpreter != null) { + assertEquals(failureInterpreter.getWindowMillis(), expectedWindowMillis); + } + + assertEquals(breaker.getResetMillis(), expectedResetMillis); + } + private void checkBreakerNoFailureInterpreter(CircuitBreaker breaker, long expectedResetMillis) {