Search in sources :

Example 16 with RetryCallback

use of cn.taketoday.retry.RetryCallback in project today-infrastructure by TAKETODAY.

the class StatefulRecoveryRetryTests method testExhaustedClearsHistoryAfterLastAttempt.

@Test
public void testExhaustedClearsHistoryAfterLastAttempt() throws Throwable {
    RetryPolicy retryPolicy = new SimpleRetryPolicy(1);
    this.retryTemplate.setRetryPolicy(retryPolicy);
    final String input = "foo";
    RetryState state = new DefaultRetryState(input);
    RetryCallback<String, Exception> callback = new RetryCallback<String, Exception>() {

        @Override
        public String doWithRetry(RetryContext context) throws Exception {
            throw new RuntimeException("Barf!");
        }
    };
    try {
        this.retryTemplate.execute(callback, state);
        fail("Expected ExhaustedRetryException");
    } catch (RuntimeException e) {
        assertEquals("Barf!", e.getMessage());
    }
    try {
        this.retryTemplate.execute(callback, state);
        fail("Expected ExhaustedRetryException");
    } catch (ExhaustedRetryException e) {
    // expected
    }
    RetryContext context = this.retryTemplate.open(retryPolicy, state);
    // True after exhausted - the history is reset...
    assertTrue(retryPolicy.canRetry(context));
}
Also used : ExhaustedRetryException(cn.taketoday.retry.ExhaustedRetryException) RetryContext(cn.taketoday.retry.RetryContext) SimpleRetryPolicy(cn.taketoday.retry.policy.SimpleRetryPolicy) RetryPolicy(cn.taketoday.retry.RetryPolicy) NeverRetryPolicy(cn.taketoday.retry.policy.NeverRetryPolicy) SimpleRetryPolicy(cn.taketoday.retry.policy.SimpleRetryPolicy) DataAccessException(cn.taketoday.dao.DataAccessException) ExhaustedRetryException(cn.taketoday.retry.ExhaustedRetryException) RetryException(cn.taketoday.retry.RetryException) RetryState(cn.taketoday.retry.RetryState) RetryCallback(cn.taketoday.retry.RetryCallback) Test(org.junit.Test)

Aggregations

RetryCallback (cn.taketoday.retry.RetryCallback)16 RetryContext (cn.taketoday.retry.RetryContext)16 Test (org.junit.Test)16 SimpleRetryPolicy (cn.taketoday.retry.policy.SimpleRetryPolicy)14 DataAccessException (cn.taketoday.dao.DataAccessException)12 ExhaustedRetryException (cn.taketoday.retry.ExhaustedRetryException)12 RetryException (cn.taketoday.retry.RetryException)12 RetryState (cn.taketoday.retry.RetryState)12 RecoveryCallback (cn.taketoday.retry.RecoveryCallback)8 RetryPolicy (cn.taketoday.retry.RetryPolicy)6 NeverRetryPolicy (cn.taketoday.retry.policy.NeverRetryPolicy)6 BinaryExceptionClassifier (cn.taketoday.classify.BinaryExceptionClassifier)4 MapRetryContextCache (cn.taketoday.retry.policy.MapRetryContextCache)4 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)4 MethodInvocationRetryCallback (cn.taketoday.retry.interceptor.MethodInvocationRetryCallback)2 ArrayList (java.util.ArrayList)2 Collections (java.util.Collections)2 List (java.util.List)2 Assert.assertEquals (org.junit.Assert.assertEquals)2 Assert.assertFalse (org.junit.Assert.assertFalse)2