diff --git a/utils/src/main/java/com/cloud/utils/backoff/impl/RangeTimeBackoff.java b/utils/src/main/java/com/cloud/utils/backoff/impl/RangeTimeBackoff.java index b4bdc47c653..8061c909824 100644 --- a/utils/src/main/java/com/cloud/utils/backoff/impl/RangeTimeBackoff.java +++ b/utils/src/main/java/com/cloud/utils/backoff/impl/RangeTimeBackoff.java @@ -38,7 +38,7 @@ import com.cloud.utils.component.AdapterBase; public class RangeTimeBackoff extends AdapterBase implements BackoffAlgorithm { protected static final int DEFAULT_MIN_TIME = 5; private int minTime = DEFAULT_MIN_TIME; - private int maxTime = 3 * DEFAULT_MIN_TIME; + private int maxTime = DEFAULT_MIN_TIME; private final Map asleep = new ConcurrentHashMap<>(); private static final Logger LOG = Logger.getLogger(RangeTimeBackoff.class.getName()); @@ -71,7 +71,7 @@ public class RangeTimeBackoff extends AdapterBase implements BackoffAlgorithm { @Override public boolean configure(String name, Map params) { minTime = NumbersUtil.parseInt((String)params.get("minSeconds"), DEFAULT_MIN_TIME); - maxTime = NumbersUtil.parseInt((String)params.get("maxSeconds"), minTime * 3); + maxTime = NumbersUtil.parseInt((String)params.get("maxSeconds"), minTime); return true; } } diff --git a/utils/src/test/java/com/cloud/utils/backoff/impl/RangeTimeBackoffTest.java b/utils/src/test/java/com/cloud/utils/backoff/impl/RangeTimeBackoffTest.java index 01a3c950ddd..668417c5f3f 100644 --- a/utils/src/test/java/com/cloud/utils/backoff/impl/RangeTimeBackoffTest.java +++ b/utils/src/test/java/com/cloud/utils/backoff/impl/RangeTimeBackoffTest.java @@ -43,6 +43,12 @@ public class RangeTimeBackoffTest { Assert.assertTrue(timeTaken <= max * 1000L); } + private void checkTimeTakenBetweenDelta(long timeTaken, int value) { + long min = (value * 1000L) - 10L; + long max = (value* 1000L) + 10L; + Assert.assertTrue(min <= timeTaken && timeTaken <= max); + } + @Test public void testWaitEmptyValue() { RangeTimeBackoff backoff = new RangeTimeBackoff(); @@ -52,8 +58,7 @@ public class RangeTimeBackoffTest { backoff.configure("RangeTimeBackoff", map); long startTime = System.currentTimeMillis(); backoff.waitBeforeRetry(); - long timeTaken = System.currentTimeMillis() - startTime; - Assert.assertTrue(timeTaken >= RangeTimeBackoff.DEFAULT_MIN_TIME * 1000L); + checkTimeTakenBetweenDelta(System.currentTimeMillis() - startTime, RangeTimeBackoff.DEFAULT_MIN_TIME); } @Test @@ -63,8 +68,7 @@ public class RangeTimeBackoffTest { backoff.configure("RangeTimeBackoff", map); long startTime = System.currentTimeMillis(); backoff.waitBeforeRetry(); - long timeTaken = System.currentTimeMillis() - startTime; - Assert.assertTrue(timeTaken >= RangeTimeBackoff.DEFAULT_MIN_TIME * 1000L); + checkTimeTakenBetweenDelta(System.currentTimeMillis() - startTime, RangeTimeBackoff.DEFAULT_MIN_TIME); } @Test @@ -78,7 +82,6 @@ public class RangeTimeBackoffTest { backoff.configure("RangeTimeBackoff", map); long startTime = System.currentTimeMillis(); backoff.waitBeforeRetry(); - long timeTaken = System.currentTimeMillis() - startTime; - Assert.assertTrue(timeTaken >= min * 1000L); + checkTimeTakenBetweenDelta(System.currentTimeMillis() - startTime, min); } }