Search in sources :

Example 1 with RateLimiter

use of com.linkedin.parseq.retry.termination.RateLimiter 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");
}
Also used : GuavaRateLimiter(com.linkedin.parseq.retry.termination.GuavaRateLimiter) GuavaRateLimiter(com.linkedin.parseq.retry.termination.GuavaRateLimiter) RateLimiter(com.linkedin.parseq.retry.termination.RateLimiter) BaseEngineTest(com.linkedin.parseq.BaseEngineTest) Test(org.testng.annotations.Test)

Example 2 with RateLimiter

use of com.linkedin.parseq.retry.termination.RateLimiter 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));
}
Also used : TerminationPolicy(com.linkedin.parseq.retry.termination.TerminationPolicy) GuavaRateLimiter(com.linkedin.parseq.retry.termination.GuavaRateLimiter) GuavaRateLimiter(com.linkedin.parseq.retry.termination.GuavaRateLimiter) RateLimiter(com.linkedin.parseq.retry.termination.RateLimiter) BaseEngineTest(com.linkedin.parseq.BaseEngineTest) Test(org.testng.annotations.Test)

Aggregations

BaseEngineTest (com.linkedin.parseq.BaseEngineTest)2 GuavaRateLimiter (com.linkedin.parseq.retry.termination.GuavaRateLimiter)2 RateLimiter (com.linkedin.parseq.retry.termination.RateLimiter)2 Test (org.testng.annotations.Test)2 TerminationPolicy (com.linkedin.parseq.retry.termination.TerminationPolicy)1