1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.atlassian.fugue.retry;
17
18 import org.hamcrest.Matchers;
19 import org.junit.Test;
20
21 import static org.hamcrest.MatcherAssert.assertThat;
22 import static org.hamcrest.Matchers.is;
23
24 public class BeforeRetryExponentialBackoffTaskTest {
25
26 @Test(expected = IllegalArgumentException.class) public void negativeSleep() {
27 new BeforeRetryExponentialBackoffTask(-1);
28 }
29
30 @Test(expected = IllegalArgumentException.class) public void zeroSleep() {
31 new BeforeRetryExponentialBackoffTask(0);
32 }
33
34 @Test public void sleep() {
35 BeforeRetryExponentialBackoffTask beforeRetryExponentialBackoffTask = new BeforeRetryExponentialBackoffTask(1);
36
37 Thread.currentThread().interrupt();
38 try {
39 beforeRetryExponentialBackoffTask.run();
40 } catch (RuntimeException e) {
41 Throwable cause = e.getCause();
42 assertThat(cause.getClass(), Matchers.<Class<? extends Throwable>> is(InterruptedException.class));
43 }
44 }
45
46 @Test public void backoffIncreases() {
47 BeforeRetryExponentialBackoffTask beforeRetryExponentialBackoffTask = new BeforeRetryExponentialBackoffTask(1);
48
49 beforeRetryExponentialBackoffTask.run();
50 assertThat(beforeRetryExponentialBackoffTask.currentBackoff(), is(2L));
51 beforeRetryExponentialBackoffTask.run();
52 assertThat(beforeRetryExponentialBackoffTask.currentBackoff(), is(4L));
53 }
54 }