package com.nurkiewicz.asyncretry.backoff;
import com.nurkiewicz.asyncretry.AbstractBaseTestCase;
import org.testng.annotations.Test;
import static org.assertj.core.api.Assertions.assertThat;
/**
* @author Tomasz Nurkiewicz
* @since 7/20/13, 5:44 PM
*/
public class BoundedMaxBackoffTest extends AbstractBaseTestCase {
@Test
public void shouldReturnOriginalBackoffDelayIfBelowMax() throws Exception {
final Backoff backoff = new ExponentialDelayBackoff(1, 2.0).withMaxDelay();
assertThat(backoff.delayMillis(retry(1))).isEqualTo(1);
assertThat(backoff.delayMillis(retry(2))).isEqualTo(2);
assertThat(backoff.delayMillis(retry(3))).isEqualTo(4);
assertThat(backoff.delayMillis(retry(4))).isEqualTo(8);
}
@Test
public void shouldCapBackoffAtDefaultLevel() throws Exception {
final Backoff backoff = new ExponentialDelayBackoff(1, 2.0).withMaxDelay();
assertThat(backoff.delayMillis(retry(100))).isEqualTo(BoundedMaxBackoff.DEFAULT_MAX_DELAY_MILLIS);
}
@Test
public void shouldCapBackoffAtGivenLevel() throws Exception {
final Backoff backoff = new ExponentialDelayBackoff(1, 2.0).withMaxDelay(1234);
assertThat(backoff.delayMillis(retry(100))).isEqualTo(1234);
}
}