Skip to content

Commit

Permalink
Rename Event/Context getExecutions -> getAttemptCount
Browse files Browse the repository at this point in the history
  • Loading branch information
jhalterman committed Jan 18, 2019
1 parent 1de9094 commit 0714417
Show file tree
Hide file tree
Showing 10 changed files with 52 additions and 52 deletions.
2 changes: 1 addition & 1 deletion src/main/java/net/jodah/failsafe/AbstractExecution.java
Expand Up @@ -74,7 +74,7 @@ private void buildPolicyExecutor(Policy policy) {
*/
void record(ExecutionResult result) {
Assert.state(!completed, "Execution has already been completed");
executions++;
attempts++;
lastResult = result.result;
lastFailure = result.failure;
}
Expand Down
12 changes: 6 additions & 6 deletions src/main/java/net/jodah/failsafe/ExecutionContext.java
Expand Up @@ -19,21 +19,21 @@

/**
* Contextual execution information.
*
*
* @author Jonathan Halterman
*/
public class ExecutionContext {
private final Duration startTime;
/** Number of execution attempts */
volatile int executions;
volatile int attempts;

ExecutionContext(Duration startTime) {
this.startTime = startTime;
}

private ExecutionContext(ExecutionContext context) {
this.startTime = context.startTime;
this.executions = context.executions;
this.attempts = context.attempts;
}

/**
Expand All @@ -44,10 +44,10 @@ public Duration getElapsedTime() {
}

/**
* Gets the number of executions so far.
* Gets the number of execution attempts so far.
*/
public int getExecutions() {
return executions;
public int getAttemptCount() {
return attempts;
}

/**
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/net/jodah/failsafe/event/ExecutionEvent.java
Expand Up @@ -24,10 +24,10 @@ public Duration getElapsedTime() {
}

/**
* Gets the number of executions so far.
* Gets the number of execution attempts so far.
*/
public int getExecutions() {
return context.getExecutions();
public int getAttemptCount() {
return context.getAttemptCount();
}

/**
Expand Down
Expand Up @@ -149,7 +149,7 @@ else if (delayMin != null && delayMax != null)
delayNanos = randomDelayInRange(delayMin.toNanos(), delayMin.toNanos(), Math.random());

// Adjust for backoff
if (execution.getExecutions() != 1 && policy.getMaxDelay() != null)
if (execution.getAttemptCount() != 1 && policy.getMaxDelay() != null)
delayNanos = (long) Math.min(delayNanos * policy.getDelayFactor(), policy.getMaxDelay().toNanos());
}

Expand All @@ -171,7 +171,7 @@ else if (policy.getJitterFactor() > 0.0)
}

// Calculate result
boolean maxRetriesExceeded = policy.getMaxRetries() != -1 && execution.getExecutions() > policy.getMaxRetries();
boolean maxRetriesExceeded = policy.getMaxRetries() != -1 && execution.getAttemptCount() > policy.getMaxRetries();
boolean maxDurationExceeded = policy.getMaxDuration() != null && elapsedNanos > policy.getMaxDuration().toNanos();
retriesExceeded = maxRetriesExceeded || maxDurationExceeded;
boolean isAbortable = policy.isAbortable(result.result, result.failure);
Expand Down
20 changes: 10 additions & 10 deletions src/test/java/net/jodah/failsafe/AsyncExecutionTest.java
Expand Up @@ -51,7 +51,7 @@ public void testCompleteForNoResult() {
exec.complete();

// Then
assertEquals(exec.getExecutions(), 1);
assertEquals(exec.getAttemptCount(), 1);
assertTrue(exec.isComplete());
assertNull(exec.getLastResult());
assertNull(exec.getLastFailure());
Expand All @@ -68,7 +68,7 @@ public void testCompleteForResult() {
assertTrue(exec.complete(true));

// Then
assertEquals(exec.getExecutions(), 2);
assertEquals(exec.getAttemptCount(), 2);
assertTrue(exec.isComplete());
assertEquals(exec.getLastResult(), Boolean.TRUE);
assertNull(exec.getLastFailure());
Expand All @@ -80,7 +80,7 @@ public void testGetAttemptCount() {
exec.retryOn(e);
exec.preExecute();
exec.retryOn(e);
assertEquals(exec.getExecutions(), 2);
assertEquals(exec.getAttemptCount(), 2);
}

public void testRetryForResult() {
Expand All @@ -95,7 +95,7 @@ public void testRetryForResult() {
assertFalse(exec.retryFor(1));

// Then
assertEquals(exec.getExecutions(), 3);
assertEquals(exec.getAttemptCount(), 3);
assertTrue(exec.isComplete());
assertEquals(exec.getLastResult(), Integer.valueOf(1));
assertNull(exec.getLastFailure());
Expand All @@ -114,7 +114,7 @@ public void testRetryForResult() {
assertFalse(exec.retryFor(null));

// Then
assertEquals(exec.getExecutions(), 3);
assertEquals(exec.getAttemptCount(), 3);
assertTrue(exec.isComplete());
assertNull(exec.getLastResult());
assertNull(exec.getLastFailure());
Expand All @@ -136,7 +136,7 @@ public void testRetryForResultAndThrowable() {
assertFalse(exec.retryFor(1, null));

// Then
assertEquals(exec.getExecutions(), 4);
assertEquals(exec.getAttemptCount(), 4);
assertTrue(exec.isComplete());
assertEquals(exec.getLastResult(), Integer.valueOf(1));
assertNull(exec.getLastFailure());
Expand All @@ -155,7 +155,7 @@ public void testRetryForResultAndThrowable() {
assertFalse(exec.retryFor(null, e));

// Then
assertEquals(exec.getExecutions(), 3);
assertEquals(exec.getAttemptCount(), 3);
assertTrue(exec.isComplete());
assertNull(exec.getLastResult());
assertEquals(exec.getLastFailure(), e);
Expand All @@ -174,7 +174,7 @@ public void testRetryOn() {
assertFalse(exec.retryOn(e));

// Then
assertEquals(exec.getExecutions(), 2);
assertEquals(exec.getAttemptCount(), 2);
assertTrue(exec.isComplete());
assertNull(exec.getLastResult());
assertEquals(exec.getLastFailure(), e);
Expand All @@ -191,7 +191,7 @@ public void testRetryOn() {
assertFalse(exec.retryOn(e));

// Then
assertEquals(exec.getExecutions(), 2);
assertEquals(exec.getAttemptCount(), 2);
assertTrue(exec.isComplete());
assertNull(exec.getLastResult());
assertEquals(exec.getLastFailure(), e);
Expand All @@ -218,7 +218,7 @@ public void testCompleteOrRetry() {
exec.completeOrHandle(null, null);

// Then
assertEquals(exec.getExecutions(), 2);
assertEquals(exec.getAttemptCount(), 2);
assertTrue(exec.isComplete());
assertNull(exec.getLastResult());
assertNull(exec.getLastFailure());
Expand Down
20 changes: 10 additions & 10 deletions src/test/java/net/jodah/failsafe/AsyncFailsafeTest.java
Expand Up @@ -60,7 +60,7 @@ private void assertRunAsync(Object runnable) throws Throwable {

// When / Then
Future<?> future = runAsync(Failsafe.with(retryAlways).with(executor).onComplete(e -> {
waiter.assertEquals(e.getExecutions(), expectedExecutions.get());
waiter.assertEquals(e.getAttemptCount(), expectedExecutions.get());
waiter.assertNull(e.getResult());
waiter.assertNull(e.getFailure());
waiter.resume();
Expand All @@ -76,7 +76,7 @@ private void assertRunAsync(Object runnable) throws Throwable {

// When
Future<?> future2 = runAsync(Failsafe.with(retryTwice).with(executor).onComplete(e -> {
waiter.assertEquals(e.getExecutions(), expectedExecutions.get());
waiter.assertEquals(e.getAttemptCount(), expectedExecutions.get());
waiter.assertNull(e.getResult());
waiter.assertTrue(e.getFailure() instanceof ConnectException);
waiter.resume();
Expand All @@ -94,7 +94,7 @@ public void shouldRunWithExecutor() throws Throwable {

public void shouldRunContextualWithExecutor() throws Throwable {
assertRunAsync((ContextualRunnable) context -> {
assertEquals(context.getExecutions(), counter.getAndIncrement());
assertEquals(context.getAttemptCount(), counter.getAndIncrement());
service.connect();
});
}
Expand All @@ -106,7 +106,7 @@ public void shouldRunAsync() throws Throwable {
exec.complete();
} catch (Exception failure) {
// Alternate between automatic and manual retries
if (exec.getExecutions() % 2 == 0)
if (exec.getAttemptCount() % 2 == 0)
throw failure;
if (!exec.retryOn(failure))
throw failure;
Expand All @@ -122,7 +122,7 @@ private void assertGetAsync(Object supplier) throws Throwable {

// When / Then
Future<Boolean> future = getAsync(Failsafe.with(retryPolicy).with(executor).onComplete(e -> {
waiter.assertEquals(e.getExecutions(), expectedExecutions.get());
waiter.assertEquals(e.getAttemptCount(), expectedExecutions.get());
waiter.assertTrue(e.getResult());
waiter.assertNull(e.getFailure());
waiter.resume();
Expand All @@ -140,7 +140,7 @@ private void assertGetAsync(Object supplier) throws Throwable {

// When / Then
Future<Boolean> future2 = getAsync(Failsafe.with(retryTwice).with(executor).onComplete(e -> {
waiter.assertEquals(e.getExecutions(), expectedExecutions.get());
waiter.assertEquals(e.getAttemptCount(), expectedExecutions.get());
waiter.assertNull(e.getResult());
waiter.assertTrue(e.getFailure() instanceof ConnectException);
waiter.resume();
Expand All @@ -156,7 +156,7 @@ public void shouldGetWithExecutor() throws Throwable {

public void shouldGetContextualWithExecutor() throws Throwable {
assertGetAsync((ContextualSupplier<Boolean>) context -> {
assertEquals(context.getExecutions(), counter.getAndIncrement());
assertEquals(context.getAttemptCount(), counter.getAndIncrement());
return service.connect();
});
}
Expand All @@ -170,7 +170,7 @@ public void shouldGetAsync() throws Throwable {
return result;
} catch (Exception failure) {
// Alternate between automatic and manual retries
if (exec.getExecutions() % 2 == 0)
if (exec.getAttemptCount() % 2 == 0)
throw failure;
if (!exec.retryOn(failure))
throw failure;
Expand Down Expand Up @@ -232,7 +232,7 @@ public void shouldGetFutureAsyncExecution() throws Throwable {
return result;
} catch (Exception failure) {
// Alternate between automatic and manual retries
if (exec.getExecutions() % 2 == 0)
if (exec.getAttemptCount() % 2 == 0)
throw failure;
if (!exec.retryOn(failure))
throw failure;
Expand Down Expand Up @@ -312,7 +312,7 @@ public void shouldManuallyRetryAndComplete() throws Throwable {
waiter.assertNull(e.getFailure());
waiter.resume();
}).getAsyncExecution(exec -> {
if (exec.getExecutions() < 2)
if (exec.getAttemptCount() < 2)
exec.retryOn(new ConnectException());
else
exec.complete(true);
Expand Down
26 changes: 13 additions & 13 deletions src/test/java/net/jodah/failsafe/ExecutionTest.java
Expand Up @@ -45,7 +45,7 @@ public void testCanRetryForResult() {
assertFalse(exec.canRetryFor(1));

// Then
assertEquals(exec.getExecutions(), 3);
assertEquals(exec.getAttemptCount(), 3);
assertTrue(exec.isComplete());
assertEquals(exec.getLastResult(), Integer.valueOf(1));
assertNull(exec.getLastFailure());
Expand All @@ -59,7 +59,7 @@ public void testCanRetryForResult() {
assertFalse(exec.canRetryFor(null));

// Then
assertEquals(exec.getExecutions(), 3);
assertEquals(exec.getAttemptCount(), 3);
assertTrue(exec.isComplete());
assertNull(exec.getLastResult());
assertNull(exec.getLastFailure());
Expand All @@ -76,7 +76,7 @@ public void testCanRetryForResultAndThrowable() {
assertFalse(exec.canRetryFor(1, null));

// Then
assertEquals(exec.getExecutions(), 4);
assertEquals(exec.getAttemptCount(), 4);
assertTrue(exec.isComplete());

// Given 2 max retries
Expand All @@ -88,7 +88,7 @@ public void testCanRetryForResultAndThrowable() {
assertFalse(exec.canRetryFor(null, e));

// Then
assertEquals(exec.getExecutions(), 3);
assertEquals(exec.getAttemptCount(), 3);
assertTrue(exec.isComplete());
}

Expand All @@ -101,7 +101,7 @@ public void testCanRetryOn() {
assertFalse(exec.canRetryOn(e));

// Then
assertEquals(exec.getExecutions(), 2);
assertEquals(exec.getAttemptCount(), 2);
assertTrue(exec.isComplete());
assertNull(exec.getLastResult());
assertEquals(exec.getLastFailure(), e);
Expand All @@ -115,7 +115,7 @@ public void testCanRetryOn() {
assertFalse(exec.canRetryOn(e));

// Then
assertEquals(exec.getExecutions(), 3);
assertEquals(exec.getAttemptCount(), 3);
assertTrue(exec.isComplete());
assertNull(exec.getLastResult());
assertEquals(exec.getLastFailure(), e);
Expand All @@ -129,7 +129,7 @@ public void testComplete() {
exec.complete();

// Then
assertEquals(exec.getExecutions(), 1);
assertEquals(exec.getAttemptCount(), 1);
assertTrue(exec.isComplete());
assertNull(exec.getLastResult());
assertNull(exec.getLastFailure());
Expand All @@ -144,7 +144,7 @@ public void testCompleteForResult() {
assertTrue(exec.complete(true));

// Then
assertEquals(exec.getExecutions(), 2);
assertEquals(exec.getAttemptCount(), 2);
assertTrue(exec.isComplete());
assertEquals(exec.getLastResult(), Boolean.TRUE);
assertNull(exec.getLastFailure());
Expand All @@ -154,7 +154,7 @@ public void testGetAttemptCount() {
Execution exec = new Execution(new RetryPolicy<>());
exec.recordFailure(e);
exec.recordFailure(e);
assertEquals(exec.getExecutions(), 2);
assertEquals(exec.getAttemptCount(), 2);
}

public void testGetElapsedMillis() throws Throwable {
Expand All @@ -181,7 +181,7 @@ public void testIsComplete() {
}

assertEquals(exec.getLastResult(), Integer.valueOf(5));
assertEquals(exec.getExecutions(), 3);
assertEquals(exec.getAttemptCount(), 3);
}

public void shouldAdjustWaitTimeForBackoff() {
Expand All @@ -203,7 +203,7 @@ public void shouldAdjustWaitTimeForBackoff() {

public void shouldAdjustWaitTimeForComputedDelay() {
Execution exec = new Execution(
new RetryPolicy<>().withDelay((r, f, ctx) -> Duration.ofNanos(ctx.getExecutions() * 2)));
new RetryPolicy<>().withDelay((r, f, ctx) -> Duration.ofNanos(ctx.getAttemptCount() * 2)));
assertEquals(exec.getWaitTime().toNanos(), 0);
exec.recordFailure(e);
assertEquals(exec.getWaitTime().toNanos(), 2);
Expand All @@ -217,7 +217,7 @@ public void shouldAdjustWaitTimeForComputedDelay() {

public void shouldFallbackWaitTimeFromComputedToFixedDelay() {
Execution exec = new Execution(new RetryPolicy<>().withDelay(Duration.ofNanos(5)).withDelay((r, f,
ctx) -> Duration.ofNanos(ctx.getExecutions() % 2 == 0 ? ctx.getExecutions() * 2 : -1)));
ctx) -> Duration.ofNanos(ctx.getAttemptCount() % 2 == 0 ? ctx.getAttemptCount() * 2 : -1)));
assertEquals(exec.getWaitTime().toNanos(), 0);
exec.recordFailure(e);
assertEquals(exec.getWaitTime().toNanos(), 5);
Expand All @@ -235,7 +235,7 @@ public void shouldFallbackWaitTimeFromComputedToFixedDelay() {

public void shouldFallbackWaitTimeFromComputedToBackoffDelay() {
Execution exec = new Execution(new RetryPolicy<>().withBackoff(1, 10, ChronoUnit.NANOS).withDelay((r, f,
ctx) -> Duration.ofNanos(ctx.getExecutions() % 2 == 0 ? ctx.getExecutions() * 2 : -1)));
ctx) -> Duration.ofNanos(ctx.getAttemptCount() % 2 == 0 ? ctx.getAttemptCount() * 2 : -1)));
assertEquals(exec.getWaitTime().toNanos(), 0);
exec.recordFailure(e);
assertEquals(exec.getWaitTime().toNanos(), 1);
Expand Down
4 changes: 2 additions & 2 deletions src/test/java/net/jodah/failsafe/SyncFailsafeTest.java
Expand Up @@ -78,7 +78,7 @@ public void shouldRun() {

public void shouldRunContextual() {
assertRun((ContextualRunnable) context -> {
assertEquals(context.getExecutions(), counter.getAndIncrement());
assertEquals(context.getAttemptCount(), counter.getAndIncrement());
service.connect();
});
}
Expand Down Expand Up @@ -107,7 +107,7 @@ public void shouldGet() {

public void shouldGetContextual() {
assertGet((ContextualSupplier<Boolean>) context -> {
assertEquals(context.getExecutions(), counter.getAndIncrement());
assertEquals(context.getAttemptCount(), counter.getAndIncrement());
return service.connect();
});
}
Expand Down

0 comments on commit 0714417

Please sign in to comment.