Skip to content

Commit 2a6f55a

Browse files
committed
Use shorter retry intervals in tests
The DEFAULT_RETRY_TEMPLATE uses exponential backoff starting at 2s with max 3min delay between retries, making tests run unnecessarily long. This change introduces SHORT_RETRY_TEMPLATE with fixed 100ms backoff to speed up test execution while preserving the same retry behavior and error handling.
1 parent 0b4f90e commit 2a6f55a

File tree

8 files changed

+25
-21
lines changed

8 files changed

+25
-21
lines changed

models/spring-ai-minimax/src/test/java/org/springframework/ai/minimax/api/MiniMaxRetryTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public class MiniMaxRetryTests {
7272

7373
@BeforeEach
7474
public void beforeEach() {
75-
this.retryTemplate = RetryUtils.DEFAULT_RETRY_TEMPLATE;
75+
this.retryTemplate = RetryUtils.SHORT_RETRY_TEMPLATE;
7676
this.retryListener = new TestRetryListener();
7777
this.retryTemplate.registerListener(this.retryListener);
7878

models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiRetryTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public class MistralAiRetryTests {
7272

7373
@BeforeEach
7474
public void beforeEach() {
75-
this.retryTemplate = RetryUtils.DEFAULT_RETRY_TEMPLATE;
75+
this.retryTemplate = RetryUtils.SHORT_RETRY_TEMPLATE;
7676
this.retryListener = new TestRetryListener();
7777
this.retryTemplate.registerListener(this.retryListener);
7878

models/spring-ai-moonshot/src/test/java/org/springframework/ai/moonshot/MoonshotRetryTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public class MoonshotRetryTests {
6262

6363
@BeforeEach
6464
public void beforeEach() {
65-
RetryTemplate retryTemplate = RetryUtils.DEFAULT_RETRY_TEMPLATE;
65+
RetryTemplate retryTemplate = RetryUtils.SHORT_RETRY_TEMPLATE;
6666
this.retryListener = new TestRetryListener();
6767
retryTemplate.registerListener(this.retryListener);
6868

models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiRetryTests.java

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
import org.springframework.ai.openai.api.OpenAiImageApi.Data;
6363
import org.springframework.ai.openai.api.OpenAiImageApi.OpenAiImageRequest;
6464
import org.springframework.ai.openai.api.OpenAiImageApi.OpenAiImageResponse;
65+
import org.springframework.ai.retry.RetryUtils;
6566
import org.springframework.ai.retry.TransientAiException;
6667
import org.springframework.core.io.ClassPathResource;
6768
import org.springframework.http.ResponseEntity;
@@ -103,23 +104,9 @@ public class OpenAiRetryTests {
103104

104105
private OpenAiImageModel imageModel;
105106

106-
public static final RetryTemplate SHORT_RETRY_TEMPLATE = RetryTemplate.builder()
107-
.maxAttempts(10)
108-
.retryOn(TransientAiException.class)
109-
.fixedBackoff(Duration.ofMillis(100))
110-
.withListener(new RetryListener() {
111-
112-
@Override
113-
public <T extends Object, E extends Throwable> void onError(RetryContext context,
114-
RetryCallback<T, E> callback, Throwable throwable) {
115-
logger.warn("Retry error. Retry count:" + context.getRetryCount(), throwable);
116-
}
117-
})
118-
.build();
119-
120107
@BeforeEach
121108
public void beforeEach() {
122-
this.retryTemplate = SHORT_RETRY_TEMPLATE;
109+
this.retryTemplate = RetryUtils.SHORT_RETRY_TEMPLATE;
123110
this.retryListener = new TestRetryListener();
124111
this.retryTemplate.registerListener(this.retryListener);
125112

models/spring-ai-qianfan/src/test/java/org/springframework/ai/qianfan/api/QianFanRetryTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public class QianFanRetryTests {
8080

8181
@BeforeEach
8282
public void beforeEach() {
83-
RetryTemplate retryTemplate = RetryUtils.DEFAULT_RETRY_TEMPLATE;
83+
RetryTemplate retryTemplate = RetryUtils.SHORT_RETRY_TEMPLATE;
8484
this.retryListener = new TestRetryListener();
8585
retryTemplate.registerListener(this.retryListener);
8686

models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiRetryTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public class VertexAiGeminiRetryTests {
6767

6868
@BeforeEach
6969
public void setUp() {
70-
this.retryTemplate = RetryUtils.DEFAULT_RETRY_TEMPLATE;
70+
this.retryTemplate = RetryUtils.SHORT_RETRY_TEMPLATE;
7171
this.retryListener = new TestRetryListener();
7272
this.retryTemplate.registerListener(this.retryListener);
7373

models/spring-ai-zhipuai/src/test/java/org/springframework/ai/zhipuai/api/ZhiPuAiRetryTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public class ZhiPuAiRetryTests {
8484

8585
@BeforeEach
8686
public void beforeEach() {
87-
this.retryTemplate = RetryUtils.DEFAULT_RETRY_TEMPLATE;
87+
this.retryTemplate = RetryUtils.SHORT_RETRY_TEMPLATE;
8888
this.retryListener = new TestRetryListener();
8989
this.retryTemplate.registerListener(this.retryListener);
9090

spring-ai-retry/src/main/java/org/springframework/ai/retry/RetryUtils.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,21 @@ public <T extends Object, E extends Throwable> void onError(RetryContext context
8383
})
8484
.build();
8585

86+
/**
87+
* Useful in testing scenarios where you don't want to wait long for retry.
88+
*/
89+
public static final RetryTemplate SHORT_RETRY_TEMPLATE = RetryTemplate.builder()
90+
.maxAttempts(10)
91+
.retryOn(TransientAiException.class)
92+
.fixedBackoff(Duration.ofMillis(100))
93+
.withListener(new RetryListener() {
94+
95+
@Override
96+
public <T extends Object, E extends Throwable> void onError(RetryContext context,
97+
RetryCallback<T, E> callback, Throwable throwable) {
98+
logger.warn("Retry error. Retry count:" + context.getRetryCount(), throwable);
99+
}
100+
})
101+
.build();
102+
86103
}

0 commit comments

Comments
 (0)