diff --git a/java/monasca-common-util/src/main/java/monasca/common/util/stats/SlidingWindowStats.java b/java/monasca-common-util/src/main/java/monasca/common/util/stats/SlidingWindowStats.java index 96e19753..bff65d32 100644 --- a/java/monasca-common-util/src/main/java/monasca/common/util/stats/SlidingWindowStats.java +++ b/java/monasca-common-util/src/main/java/monasca/common/util/stats/SlidingWindowStats.java @@ -98,20 +98,21 @@ public class SlidingWindowStats { /** * Adds the {@code value} to the statistics for the slot associated with the {@code timestamp} and * returns true, else returns false if the {@code timestamp} is outside of the window and - * {@code force} is false. If {@code force} is true, always add value + * {@code force} is false. If {@code force} is true, always add value to the first window * * @param value to add * @param timestamp to add value for - * @param force if true, add value to first window even if timestamp is outside of all windows + * @param force if true, add value to first window * @return true if the value was added else false if it the {@code timestamp} was outside the * window and force was false */ public boolean addValue(double value, long timestamp, boolean force) { - int index = indexOfTime(timescale.adjust(timestamp)); - if (index == -1) { - if (force) { - index = 0; - } else { + final int index; + if (force) { + index = 0; + } else { + index = indexOfTime(timescale.adjust(timestamp)); + if (index == -1) { return false; } } diff --git a/java/monasca-common-util/src/test/java/monasca/common/util/stats/SlidingWindowStatsTest.java b/java/monasca-common-util/src/test/java/monasca/common/util/stats/SlidingWindowStatsTest.java index 6a582da8..8e407268 100644 --- a/java/monasca-common-util/src/test/java/monasca/common/util/stats/SlidingWindowStatsTest.java +++ b/java/monasca-common-util/src/test/java/monasca/common/util/stats/SlidingWindowStatsTest.java @@ -170,6 +170,8 @@ public class SlidingWindowStatsTest { TimeResolution.ABSOLUTE, 3, 1, 2, 9); window.addValue(999, 3, true); assertEquals(window.getViewValues(), new double[] { 999 }); + window.addValue(899, 10, true); + assertEquals(window.getViewValues(), new double[] { 899 }); } public void shouldNotAddOutOfWindowValueWithoutForce() { @@ -177,6 +179,8 @@ public class SlidingWindowStatsTest { TimeResolution.ABSOLUTE, 3, 1, 2, 9); window.addValue(999, 3, false); assertEquals(window.getViewValues(), new double[] { Double.NaN }); + window.addValue(899, 10, false); + assertEquals(window.getViewValues(), new double[] { Double.NaN }); } public void shouldIgnoreOutOfOrderValue() {