public RetryableFunction<BT, BR> build() { final IRetryStrategy retryStrategy = new RetryStrategyConfiguration(this.conf).getRetryStrategy(); return new RetryableFunction<BT, BR>(this.func, retryStrategy); } }
@Test(expected = IllegalArgumentException.class) public void testBadRetryableTask() throws Exception { counter = 0; final MockRetryableFunction<Integer, Integer> divideBy = new MockRetryableFunction<>( this::divide, new RetryStrategyConfiguration(conf).getRetryStrategy()); try { divideBy.apply(0); } finally { divideBy.verifyRetry(maxRetries, maxRetries); } } }
@Test public void testGoodRetryableFunction() throws Exception { counter = 0; final MockRetryableFunction<Integer, Integer> divideBy = new MockRetryableFunction<>( this::divide, new RetryStrategyConfiguration(conf).getRetryStrategy()); assertEquals(new Integer(50), divideBy.apply(2)); divideBy.verifyRetry(maxRetries, maxRetries-1); }