From 867d3a3373495cf5a007a3dbc13534f1f887a5ee Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Thu, 14 Feb 2019 15:09:02 +0100 Subject: Use a more agile retry policy with quick start and exponetial backoff. --- .../yahoo/messagebus/routing/ResenderTestCase.java | 8 +++--- .../messagebus/routing/RetryPolicyTestCase.java | 29 +++++++++++----------- 2 files changed, 19 insertions(+), 18 deletions(-) (limited to 'messagebus/src/test/java/com/yahoo') diff --git a/messagebus/src/test/java/com/yahoo/messagebus/routing/ResenderTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/routing/ResenderTestCase.java index 1e3764d8e4e..2973ea11278 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/routing/ResenderTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/routing/ResenderTestCase.java @@ -155,11 +155,11 @@ public class ResenderTestCase { assertNull(((Receptor)dstSession.getMessageHandler()).getMessage(0)); String trace = reply.getTrace().toString(); - assertTrue(trace.contains("retry 1 in 0.01")); + assertTrue(trace.contains("retry 1 in 0.0")); assertTrue(trace.contains("retry 2 in 0.02")); - assertTrue(trace.contains("retry 3 in 0.03")); - assertTrue(trace.contains("retry 4 in 0.04")); - assertTrue(trace.contains("retry 5 in 0.05")); + assertTrue(trace.contains("retry 3 in 0.04")); + assertTrue(trace.contains("retry 4 in 0.08")); + assertTrue(trace.contains("retry 5 in 0.16")); } @Test diff --git a/messagebus/src/test/java/com/yahoo/messagebus/routing/RetryPolicyTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/routing/RetryPolicyTestCase.java index 95a6eabf6f1..522c4ba909c 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/routing/RetryPolicyTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/routing/RetryPolicyTestCase.java @@ -12,26 +12,27 @@ import static org.junit.Assert.assertTrue; * @author Simon Thoresen Hult */ public class RetryPolicyTestCase { + private static final double SMALL = 0.00000000000000000001; @Test public void testSimpleRetryPolicy() { RetryTransientErrorsPolicy policy = new RetryTransientErrorsPolicy(); - for (int i = 0; i < 5; ++i) { - double delay = i / 3.0; - policy.setBaseDelay(delay); - for (int j = 0; j < 5; ++j) { - assertEquals((int)(j * delay), (int)policy.getRetryDelay(j)); - } - for (int j = ErrorCode.NONE; j < ErrorCode.ERROR_LIMIT; ++j) { - policy.setEnabled(true); - if (j < ErrorCode.FATAL_ERROR) { - assertTrue(policy.canRetry(j)); - } else { - assertFalse(policy.canRetry(j)); - } - policy.setEnabled(false); + assertEquals(0.0, policy.getRetryDelay(0), SMALL); + assertEquals(0.0, policy.getRetryDelay(1), SMALL); + for (int i = 2; i < 15; i++) { + assertEquals(0.001*(1 << (i-1)), policy.getRetryDelay(i), SMALL); + } + assertEquals(10.0, policy.getRetryDelay(15), SMALL); + assertEquals(10.0, policy.getRetryDelay(20), SMALL); + for (int j = ErrorCode.NONE; j < ErrorCode.ERROR_LIMIT; ++j) { + policy.setEnabled(true); + if (j < ErrorCode.FATAL_ERROR) { + assertTrue(policy.canRetry(j)); + } else { assertFalse(policy.canRetry(j)); } + policy.setEnabled(false); + assertFalse(policy.canRetry(j)); } } -- cgit v1.2.3