boolean retry = policy.allowRetry(retryCount, elapsedTimeNanos, sleeper);
if (retryCount < maxRetries) {
assertTrue(retry);
assertEquals(retryCount + 1, sleeper.count);
} else {
assertFalse(retry);
assertEquals(maxRetries, sleeper.count);
assertTrue(sleeper.time >= baseSleepTimeNanos);
assertEquals(
"baseSleepTime[secs]:2.0, maxSleepTime[secs]:3.0, maxRetries:100, maxElapsedTime[secs]:4.0",
policy.toString());
assertTrue(policy.allowRetry(0, elapsedTimeNanos, sleeper));
assertEquals(1, sleeper.count);
assertEquals(0, sleeper.time);
assertFalse(policy.allowRetry(-1, elapsedTimeNanos, sleeper));
assertFalse(policy.allowRetry(0, maxElapsedTimeNanos, sleeper));
assertTrue(policy.allowRetry(0, 0, sleeper));
assertTrue(policy.allowRetry(0, elapsedTimeNanos, sleeper));
assertEquals(1, sleeper.count);
assertEquals(Long.MAX_VALUE, sleeper.time);
fail();
} catch (IllegalArgumentException e) {