@@ -68,6 +68,12 @@ void configureRetryTemplate() {
6868 retryTemplate .setRetryListener (retryListener );
6969 }
7070
71+ @ Test
72+ void checkRetryTemplateConfiguration () {
73+ assertThat (retryTemplate .getRetryPolicy ()).isSameAs (retryPolicy );
74+ assertThat (retryTemplate .getRetryListener ()).isSameAs (retryListener );
75+ }
76+
7177 @ Test
7278 void retryWithImmediateSuccess () throws Exception {
7379 AtomicInteger invocationCount = new AtomicInteger ();
@@ -99,10 +105,9 @@ void retryWithInitialFailureAndZeroRetriesRetryPolicy() {
99105 .withMessageMatching ("Retry policy for operation '.+?' exhausted; aborting execution" )
100106 .withCause (exception )
101107 .satisfies (throwable -> assertThat (throwable .getSuppressed ()).isEmpty ())
102- .satisfies (throwable -> assertThat (throwable .getRetryCount ()).isZero ());
108+ .satisfies (throwable -> assertThat (throwable .getRetryCount ()).isZero ())
109+ .satisfies (throwable -> inOrder .verify (retryListener ).onRetryPolicyExhaustion (retryPolicy , retryable , throwable ));
103110
104- // RetryListener interactions:
105- inOrder .verify (retryListener ).onRetryPolicyExhaustion (retryPolicy , retryable , exception );
106111 verifyNoMoreInteractions (retryListener );
107112 }
108113
@@ -122,10 +127,9 @@ void retryWithInitialFailureAndZeroRetriesFixedBackOffPolicy() {
122127 .withMessageMatching ("Retry policy for operation '.+?' exhausted; aborting execution" )
123128 .withCause (exception )
124129 .satisfies (throwable -> assertThat (throwable .getSuppressed ()).isEmpty ())
125- .satisfies (throwable -> assertThat (throwable .getRetryCount ()).isZero ());
130+ .satisfies (throwable -> assertThat (throwable .getRetryCount ()).isZero ())
131+ .satisfies (throwable -> inOrder .verify (retryListener ).onRetryPolicyExhaustion (retryPolicy , retryable , throwable ));
126132
127- // RetryListener interactions:
128- inOrder .verify (retryListener ).onRetryPolicyExhaustion (retryPolicy , retryable , exception );
129133 verifyNoMoreInteractions (retryListener );
130134 }
131135
@@ -145,10 +149,9 @@ void retryWithInitialFailureAndZeroRetriesBackOffPolicyFromBuilder() {
145149 .withMessageMatching ("Retry policy for operation '.+?' exhausted; aborting execution" )
146150 .withCause (exception )
147151 .satisfies (throwable -> assertThat (throwable .getSuppressed ()).isEmpty ())
148- .satisfies (throwable -> assertThat (throwable .getRetryCount ()).isZero ());
152+ .satisfies (throwable -> assertThat (throwable .getRetryCount ()).isZero ())
153+ .satisfies (throwable -> inOrder .verify (retryListener ).onRetryPolicyExhaustion (retryPolicy , retryable , throwable ));
149154
150- // RetryListener interactions:
151- inOrder .verify (retryListener ).onRetryPolicyExhaustion (retryPolicy , retryable , exception );
152155 verifyNoMoreInteractions (retryListener );
153156 }
154157
@@ -194,18 +197,19 @@ public String getName() {
194197 assertThatExceptionOfType (RetryException .class )
195198 .isThrownBy (() -> retryTemplate .execute (retryable ))
196199 .withMessage ("Retry policy for operation 'test' exhausted; aborting execution" )
197- .withCause (new CustomException ("Boom 4" ));
200+ .withCause (new CustomException ("Boom 4" ))
201+ .satisfies (throwable -> {
202+ invocationCount .set (1 );
203+ repeat (3 , () -> {
204+ inOrder .verify (retryListener ).beforeRetry (retryPolicy , retryable );
205+ inOrder .verify (retryListener ).onRetryFailure (retryPolicy , retryable ,
206+ new CustomException ("Boom " + invocationCount .incrementAndGet ()));
207+ });
208+ inOrder .verify (retryListener ).onRetryPolicyExhaustion (retryPolicy , retryable , throwable );
209+ });
198210 // 4 = 1 initial invocation + 3 retry attempts
199211 assertThat (invocationCount ).hasValue (4 );
200212
201- // RetryListener interactions:
202- invocationCount .set (1 );
203- repeat (3 , () -> {
204- inOrder .verify (retryListener ).beforeRetry (retryPolicy , retryable );
205- inOrder .verify (retryListener ).onRetryFailure (retryPolicy , retryable ,
206- new CustomException ("Boom " + invocationCount .incrementAndGet ()));
207- });
208- inOrder .verify (retryListener ).onRetryPolicyExhaustion (retryPolicy , retryable , new CustomException ("Boom 4" ));
209213 verifyNoMoreInteractions (retryListener );
210214 }
211215
@@ -240,16 +244,17 @@ public String getName() {
240244 assertThatExceptionOfType (RetryException .class )
241245 .isThrownBy (() -> retryTemplate .execute (retryable ))
242246 .withMessage ("Retry policy for operation 'always fails' exhausted; aborting execution" )
243- .withCause (exception );
247+ .withCause (exception )
248+ .satisfies (throwable -> {
249+ repeat (5 , () -> {
250+ inOrder .verify (retryListener ).beforeRetry (retryPolicy , retryable );
251+ inOrder .verify (retryListener ).onRetryFailure (retryPolicy , retryable , exception );
252+ });
253+ inOrder .verify (retryListener ).onRetryPolicyExhaustion (retryPolicy , retryable , throwable );
254+ });
244255 // 6 = 1 initial invocation + 5 retry attempts
245256 assertThat (invocationCount ).hasValue (6 );
246257
247- // RetryListener interactions:
248- repeat (5 , () -> {
249- inOrder .verify (retryListener ).beforeRetry (retryPolicy , retryable );
250- inOrder .verify (retryListener ).onRetryFailure (retryPolicy , retryable , exception );
251- });
252- inOrder .verify (retryListener ).onRetryPolicyExhaustion (retryPolicy , retryable , exception );
253258 verifyNoMoreInteractions (retryListener );
254259 }
255260
@@ -291,17 +296,17 @@ public String getName() {
291296 suppressed1 -> assertThat (suppressed1 ).isExactlyInstanceOf (FileNotFoundException .class ),
292297 suppressed2 -> assertThat (suppressed2 ).isExactlyInstanceOf (IOException .class )
293298 ))
294- .satisfies (throwable -> assertThat (throwable .getRetryCount ()).isEqualTo (2 ));
299+ .satisfies (throwable -> assertThat (throwable .getRetryCount ()).isEqualTo (2 ))
300+ .satisfies (throwable -> {
301+ repeat (2 , () -> {
302+ inOrder .verify (retryListener ).beforeRetry (retryPolicy , retryable );
303+ inOrder .verify (retryListener ).onRetryFailure (eq (retryPolicy ), eq (retryable ), any (Exception .class ));
304+ });
305+ inOrder .verify (retryListener ).onRetryPolicyExhaustion (retryPolicy , retryable , throwable );
306+ });
295307 // 3 = 1 initial invocation + 2 retry attempts
296308 assertThat (invocationCount ).hasValue (3 );
297309
298- // RetryListener interactions:
299- repeat (2 , () -> {
300- inOrder .verify (retryListener ).beforeRetry (retryPolicy , retryable );
301- inOrder .verify (retryListener ).onRetryFailure (eq (retryPolicy ), eq (retryable ), any (Exception .class ));
302- });
303- inOrder .verify (retryListener ).onRetryPolicyExhaustion (
304- eq (retryPolicy ), eq (retryable ), any (IllegalStateException .class ));
305310 verifyNoMoreInteractions (retryListener );
306311 }
307312
@@ -354,17 +359,17 @@ public String getName() {
354359 suppressed1 -> assertThat (suppressed1 ).isExactlyInstanceOf (IOException .class ),
355360 suppressed2 -> assertThat (suppressed2 ).isExactlyInstanceOf (IOException .class )
356361 ))
357- .satisfies (throwable -> assertThat (throwable .getRetryCount ()).isEqualTo (2 ));
362+ .satisfies (throwable -> assertThat (throwable .getRetryCount ()).isEqualTo (2 ))
363+ .satisfies (throwable -> {
364+ repeat (2 , () -> {
365+ inOrder .verify (retryListener ).beforeRetry (retryPolicy , retryable );
366+ inOrder .verify (retryListener ).onRetryFailure (eq (retryPolicy ), eq (retryable ), any (IOException .class ));
367+ });
368+ inOrder .verify (retryListener ).onRetryPolicyExhaustion (retryPolicy , retryable , throwable );
369+ });
358370 // 3 = 1 initial invocation + 2 retry attempts
359371 assertThat (invocationCount ).hasValue (3 );
360372
361- // RetryListener interactions:
362- repeat (2 , () -> {
363- inOrder .verify (retryListener ).beforeRetry (retryPolicy , retryable );
364- inOrder .verify (retryListener ).onRetryFailure (eq (retryPolicy ), eq (retryable ), any (IOException .class ));
365- });
366- inOrder .verify (retryListener ).onRetryPolicyExhaustion (
367- eq (retryPolicy ), eq (retryable ), any (CustomFileNotFoundException .class ));
368373 verifyNoMoreInteractions (retryListener );
369374 }
370375
0 commit comments