1616
1717package org .springframework .ai .openai .chat ;
1818
19+ import java .time .Duration ;
1920import java .util .List ;
2021import java .util .Optional ;
2122
2526import org .junit .jupiter .api .extension .ExtendWith ;
2627import org .mockito .Mock ;
2728import org .mockito .junit .jupiter .MockitoExtension ;
29+ import org .slf4j .Logger ;
30+ import org .slf4j .LoggerFactory ;
2831import reactor .core .publisher .Flux ;
2932
3033import org .springframework .ai .audio .transcription .AudioTranscriptionPrompt ;
5962import org .springframework .ai .openai .api .OpenAiImageApi .Data ;
6063import org .springframework .ai .openai .api .OpenAiImageApi .OpenAiImageRequest ;
6164import org .springframework .ai .openai .api .OpenAiImageApi .OpenAiImageResponse ;
62- import org .springframework .ai .retry .RetryUtils ;
6365import org .springframework .ai .retry .TransientAiException ;
6466import org .springframework .core .io .ClassPathResource ;
6567import org .springframework .http .ResponseEntity ;
8183@ ExtendWith (MockitoExtension .class )
8284public class OpenAiRetryTests {
8385
86+ private static final Logger logger = LoggerFactory .getLogger (OpenAiRetryTests .class );
87+
8488 private TestRetryListener retryListener ;
8589
8690 private RetryTemplate retryTemplate ;
@@ -99,9 +103,23 @@ public class OpenAiRetryTests {
99103
100104 private OpenAiImageModel imageModel ;
101105
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+
102120 @ BeforeEach
103121 public void beforeEach () {
104- this .retryTemplate = RetryUtils . DEFAULT_RETRY_TEMPLATE ;
122+ this .retryTemplate = SHORT_RETRY_TEMPLATE ;
105123 this .retryListener = new TestRetryListener ();
106124 this .retryTemplate .registerListener (this .retryListener );
107125
0 commit comments