@Test void buildShouldThrowWhenNegativeMaxRetries() { assertThatThrownBy(() -> RetryBackoffConfiguration.builder() .maxRetries(-6) .firstBackoff(DEFAULT_FIRST_BACKOFF) .jitterFactor(DEFAULT_JITTER_FACTOR) .build()) .isInstanceOf(IllegalArgumentException.class) .hasMessage("maxRetries is not allowed to be negative"); }
@Test void buildShouldReturnCorrespondingValues() { RetryBackoffConfiguration retryBackoff = RetryBackoffConfiguration.builder() .maxRetries(5) .firstBackoff(Duration.ofMillis(200)) .jitterFactor(0.6) .build(); SoftAssertions.assertSoftly(softly -> { softly.assertThat(retryBackoff.getJitterFactor()) .isEqualTo(0.6); softly.assertThat(retryBackoff.getMaxRetries()) .isEqualTo(5); softly.assertThat(retryBackoff.getFirstBackoff()) .isEqualTo(Duration.ofMillis(200)); }); }
static RequireMaxRetries builder() { return maxRetries -> firstBackoff -> jitterFactor -> new ReadyToBuild(maxRetries, firstBackoff, jitterFactor); }
@Test void buildShouldSuccessWhenZeroJitterFactor() { RetryBackoffConfiguration retryBackoff = RetryBackoffConfiguration.builder() .maxRetries(DEFAULT_MAX_RETRIES) .firstBackoff(DEFAULT_FIRST_BACKOFF) .jitterFactor(0) .build(); assertThat(retryBackoff.getJitterFactor()) .isEqualTo(0); } @Test
@Test void buildShouldSuccessWhenZeroMaxRetries() { RetryBackoffConfiguration retryBackoff = RetryBackoffConfiguration.builder() .maxRetries(0) .firstBackoff(DEFAULT_FIRST_BACKOFF) .jitterFactor(DEFAULT_JITTER_FACTOR) .build(); assertThat(retryBackoff.getMaxRetries()) .isEqualTo(0L); }
@Test void buildShouldThrowWhenGreaterThanOneJitterFactor() { assertThatThrownBy(() -> RetryBackoffConfiguration.builder() .maxRetries(DEFAULT_MAX_RETRIES) .firstBackoff(DEFAULT_FIRST_BACKOFF) .jitterFactor(1.000001) .build()) .isInstanceOf(IllegalArgumentException.class) .hasMessage("jitterFactor is not allowed to be negative or greater than 1"); }
@Test void buildShouldThrowWhenNegativeFirstBackoff() { assertThatThrownBy(() -> RetryBackoffConfiguration.builder() .maxRetries(DEFAULT_MAX_RETRIES) .firstBackoff(Duration.ofMillis(-1000L)) .jitterFactor(DEFAULT_JITTER_FACTOR) .build()) .isInstanceOf(IllegalArgumentException.class) .hasMessage("firstBackoff is not allowed to be negative"); }
@Test void buildShouldSuccessWhenZeroFirstBackoff() { RetryBackoffConfiguration retryBackoff = RetryBackoffConfiguration.builder() .maxRetries(DEFAULT_MAX_RETRIES) .firstBackoff(Duration.ZERO) .jitterFactor(DEFAULT_JITTER_FACTOR) .build(); assertThat(retryBackoff.getFirstBackoff().toMillis()) .isEqualTo(0L); }
@Test void buildShouldThrowWhenNegativeJitterFactor() { assertThatThrownBy(() -> RetryBackoffConfiguration.builder() .maxRetries(DEFAULT_MAX_RETRIES) .firstBackoff(DEFAULT_FIRST_BACKOFF) .jitterFactor(-2.5) .build()) .isInstanceOf(IllegalArgumentException.class) .hasMessage("jitterFactor is not allowed to be negative or greater than 1"); }