use of com.linkedin.parseq.retry.termination.GuavaRateLimiter in project parseq by linkedin.
the class TestRetryPolicy method testRateLimitedRetryPolicy.
@Test
public void testRateLimitedRetryPolicy() throws InterruptedException {
RateLimiter rateLimiter = new GuavaRateLimiter(4.0);
// wait for the rate limiter to be ready
Thread.sleep(500);
Task<Void> task = withRetryPolicy("testRateLimitedRetryPolicy", RetryPolicy.attemptsAndDurationAndRate(10, 1000, rateLimiter, 0), attempt -> Task.failure(new RuntimeException("current attempt: " + attempt)));
runAndWaitException(task, RuntimeException.class);
assertTrue(task.isDone());
assertTrue(task.isFailed());
assertEquals(task.getError().getMessage(), "current attempt: 3");
}
use of com.linkedin.parseq.retry.termination.GuavaRateLimiter in project parseq by linkedin.
the class TestTerminationPolicy method testLimitRate.
@Test
public void testLimitRate() throws InterruptedException {
RateLimiter rateLimiter = new GuavaRateLimiter(1);
TerminationPolicy policy = TerminationPolicy.limitRate(rateLimiter);
assertFalse(policy.shouldTerminate(1, 10));
assertTrue(policy.shouldTerminate(0, 10));
Thread.sleep(1000);
assertFalse(policy.shouldTerminate(0, 10));
assertTrue(policy.shouldTerminate(0, 10));
}
Aggregations