add unit-test

Signed-off-by: jiangyuan <joe469391363@gmail.com>
This commit is contained in:
jiangyuan
2025-03-13 12:31:46 +08:00
parent 9eb9165927
commit 8b5bc32456
3 changed files with 28 additions and 21 deletions

View File

@@ -173,11 +173,11 @@ public class RetryGatewayFilterFactory extends AbstractGatewayFilterFactory<Retr
}
JitterConfig jitter = retryConfig.getJitter();
if (jitter != null) {
statusCodeRepeat = statusCodeRepeat.jitter(getJitter(jitter));
exceptionRetry = exceptionRetry.jitter(getJitter(jitter));
}
Duration timeout = retryConfig.getTimeout();
if (timeout != null) {
statusCodeRepeat = statusCodeRepeat.timeout(timeout);
exceptionRetry = exceptionRetry.timeout(timeout);
}
}
@@ -357,6 +357,11 @@ public class RetryGatewayFilterFactory extends AbstractGatewayFilterFactory<Retr
return this;
}
public RetryConfig setJitter(double randomFactor) {
this.jitter = new JitterConfig(randomFactor);
return this;
}
public BackoffConfig getBackoff() {
return backoff;
}

View File

@@ -121,6 +121,17 @@ public class RetryGatewayFilterFactoryIntegrationTests extends BaseWebClientTest
// @formatter:on
}
@Test
public void retryWithBackoffTimeout() {
// backoff > timeout
testClient.get()
.uri("/retry?key=retry-with-backoff-timeout&count=3")
.header(HttpHeaders.HOST, "www.retrywithbackofftimeout.org")
.exchange()
.expectStatus()
.isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR);
}
@Test
public void retryFilterGetJavaDsl() {
testClient.get()
@@ -375,6 +386,16 @@ public class RetryGatewayFilterFactoryIntegrationTests extends BaseWebClientTest
r -> r.host("**.retrywithbackoff.org").filters(f -> f.prefixPath("/httpbin").retry(config -> {
config.setRetries(2).setBackoff(Duration.ofMillis(100), null, 2, true);
})).uri(uri))
.route("retry_with_backoff_jitter_timeout_test",
r -> r.host("**.retrywithbackoffjittertimeout.org").filters(f -> f.prefixPath("/httpbin").retry(config -> {
config.setRetries(3).setBackoff(Duration.ofMillis(50), Duration.ofMillis(100), 2, true)
.setJitter(0.1).setTimeout(Duration.ofMillis(1000));
})).uri(uri))
.route("retry_with_backoff_timeout_test",
r -> r.host("**.retrywithbackofftimeout.org").filters(f -> f.prefixPath("/httpbin").retry(config -> {
config.setRetries(3).setBackoff(Duration.ofMillis(100), null, 2, true)
.setTimeout(Duration.ofMillis(100));
})).uri(uri))
.route("retry_with_loadbalancer",
r -> r.host("**.retrywithloadbalancer.org")

View File

@@ -29,22 +29,3 @@ spring:
- name: Retry
args:
methods: GET,POST
# =====================================
- id: retry_with_backoff_jitter_timeout_test
uri: ${test.uri}
predicates:
- Host=**.retrywithbackoffjittertimeout.org
filters:
- name: Retry
args:
retries: 3
statuses: INTERNAL_SERVER_ERROR
methods: GET
backoff:
firstBackoff: 10ms
maxBackoff: 50ms
factor: 2
basedOnPreviousValue: false
jitter:
randomFactor: 0.5
timeout: 200ms