diff --git a/spring-integration-jmx/src/main/java/org/springframework/integration/monitor/ExponentialMovingAverageRatio.java b/spring-integration-jmx/src/main/java/org/springframework/integration/monitor/ExponentialMovingAverageRatio.java index 48297f2bb0..6240b6cb96 100644 --- a/spring-integration-jmx/src/main/java/org/springframework/integration/monitor/ExponentialMovingAverageRatio.java +++ b/spring-integration-jmx/src/main/java/org/springframework/integration/monitor/ExponentialMovingAverageRatio.java @@ -92,7 +92,8 @@ public class ExponentialMovingAverageRatio { public double getMean() { int count = cumulative.getCount(); if (count == 0) { - return 0; + // Optimistic to start: success rate is 100% + return 1; } long t = System.currentTimeMillis(); double alpha = Math.exp((t0 - t) * lapse); diff --git a/spring-integration-jmx/src/test/java/org/springframework/integration/monitor/ExponentialMovingAverageRatioTests.java b/spring-integration-jmx/src/test/java/org/springframework/integration/monitor/ExponentialMovingAverageRatioTests.java index acbb8e7e67..09feb9eb72 100644 --- a/spring-integration-jmx/src/test/java/org/springframework/integration/monitor/ExponentialMovingAverageRatioTests.java +++ b/spring-integration-jmx/src/test/java/org/springframework/integration/monitor/ExponentialMovingAverageRatioTests.java @@ -45,14 +45,14 @@ public class ExponentialMovingAverageRatioTests { @Test public void testGetEarlyMean() throws Exception { - assertEquals(0, history.getMean(), 0.01); + assertEquals(1, history.getMean(), 0.01); history.success(); assertEquals(1, history.getMean(), 0.01); } @Test public void testGetEarlyFailure() throws Exception { - assertEquals(0, history.getMean(), 0.01); + assertEquals(1, history.getMean(), 0.01); history.failure(); assertEquals(0, history.getMean(), 0.01); } @@ -66,7 +66,7 @@ public class ExponentialMovingAverageRatioTests { @Test public void testGetMean() throws Exception { - assertEquals(0, history.getMean(), 0.01); + assertEquals(1, history.getMean(), 0.01); history.success(); assertEquals(1, history.getMean(), 0.01); history.success(); @@ -77,7 +77,7 @@ public class ExponentialMovingAverageRatioTests { @Test public void testGetMeanFailuresHighRate() throws Exception { - assertEquals(0, history.getMean(), 0.01); + assertEquals(1, history.getMean(), 0.01); history.success(); assertEquals(average(1), history.getMean(), 0.01); history.failure(); @@ -88,7 +88,7 @@ public class ExponentialMovingAverageRatioTests { @Test public void testGetMeanFailuresLowRate() throws Exception { - assertEquals(0, history.getMean(), 0.01); + assertEquals(1, history.getMean(), 0.01); history.failure(); assertEquals(average(0), history.getMean(), 0.01); history.failure();