package com.lambdaworks.redis.resource;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
/**
* @author Jongyeol Choi
*/
public class EqualJitterDelayTest {
@Test(expected = IllegalArgumentException.class)
public void shouldNotCreateIfLowerBoundIsNegative() throws Exception {
Delay.equalJitter(-1, 100, 1, TimeUnit.MILLISECONDS);
}
@Test(expected = IllegalArgumentException.class)
public void shouldNotCreateIfLowerBoundIsSameAsUpperBound() throws Exception {
Delay.equalJitter(100, 100, 1, TimeUnit.MILLISECONDS);
}
@Test
public void negativeAttemptShouldReturnZero() throws Exception {
Delay delay = Delay.equalJitter();
assertThat(delay.createDelay(-1)).isEqualTo(0);
}
@Test
public void zeroShouldReturnZero() throws Exception {
Delay delay = Delay.equalJitter();
assertThat(delay.createDelay(0)).isEqualTo(0);
}
@Test
public void testDefaultDelays() throws Exception {
Delay delay = Delay.equalJitter();
assertThat(delay.getTimeUnit()).isEqualTo(TimeUnit.MILLISECONDS);
assertThat(delay.createDelay(1)).isBetween(0L, 1L);
assertThat(delay.createDelay(2)).isBetween(0L, 2L);
assertThat(delay.createDelay(3)).isBetween(0L, 4L);
assertThat(delay.createDelay(4)).isBetween(0L, 8L);
assertThat(delay.createDelay(5)).isBetween(0L, 16L);
assertThat(delay.createDelay(6)).isBetween(0L, 32L);
assertThat(delay.createDelay(7)).isBetween(0L, 64L);
assertThat(delay.createDelay(8)).isBetween(0L, 128L);
assertThat(delay.createDelay(9)).isBetween(0L, 256L);
assertThat(delay.createDelay(10)).isBetween(0L, 512L);
assertThat(delay.createDelay(11)).isBetween(0L, 1024L);
assertThat(delay.createDelay(12)).isBetween(0L, 2048L);
assertThat(delay.createDelay(13)).isBetween(0L, 4096L);
assertThat(delay.createDelay(14)).isBetween(0L, 8192L);
assertThat(delay.createDelay(15)).isBetween(0L, 16384L);
assertThat(delay.createDelay(16)).isBetween(0L, 30000L);
assertThat(delay.createDelay(17)).isBetween(0L, 30000L);
assertThat(delay.createDelay(Integer.MAX_VALUE)).isBetween(0L, 30000L);
}
}