Skip to content

Commit

Permalink
Merge pull request #450 from mattrjacobs/more-comprehensive-tests-for…
Browse files Browse the repository at this point in the history
…-is-response-from-fallback

Added more comprehensive tests for HystrixObservableCommand.isResponseFromFallback()
  • Loading branch information
mattrjacobs committed Jan 7, 2015
2 parents 3f6f95a + 7cadf30 commit 8847054
Showing 1 changed file with 78 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ public void testExecutionSuccess() {

assertTrue(command.getExecutionTimeInMilliseconds() > -1);
assertTrue(command.isSuccessfulExecution());
assertFalse(command.isResponseFromFallback());

assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.FALLBACK_REJECTION));
Expand Down Expand Up @@ -171,6 +172,7 @@ public void testExecutionMultipleTimes() {
assertFalse(command.isExecutedInThread());
assertTrue(command.getExecutionTimeInMilliseconds() > -1);
assertTrue(command.isSuccessfulExecution());
assertFalse(command.isResponseFromFallback());
try {
// second should fail
command.observe().toBlocking().single();
Expand Down Expand Up @@ -217,6 +219,7 @@ public void testExecutionKnownFailureWithNoFallback() {
}
assertTrue(command.getExecutionTimeInMilliseconds() > -1);
assertTrue(command.isFailedExecution());
assertFalse(command.isResponseFromFallback());

assertEquals(1, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.FAILURE));
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));
Expand Down Expand Up @@ -259,6 +262,7 @@ public void testExecutionUnknownFailureWithNoFallback() {

assertTrue(command.getExecutionTimeInMilliseconds() > -1);
assertTrue(command.isFailedExecution());
assertFalse(command.isResponseFromFallback());

assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));
assertEquals(1, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
Expand Down Expand Up @@ -297,6 +301,7 @@ public void testExecutionFailureWithFallback() {

assertTrue(command.getExecutionTimeInMilliseconds() > -1);
assertTrue(command.isFailedExecution());
assertTrue(command.isResponseFromFallback());

assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
Expand Down Expand Up @@ -336,6 +341,7 @@ public void testExecutionFailureWithFallbackFailure() {

assertTrue(command.getExecutionTimeInMilliseconds() > -1);
assertTrue(command.isFailedExecution());
assertFalse(command.isResponseFromFallback());

assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));
assertEquals(1, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
Expand Down Expand Up @@ -373,6 +379,7 @@ public void testQueueSuccess() {

assertTrue(command.getExecutionTimeInMilliseconds() > -1);
assertTrue(command.isSuccessfulExecution());
assertFalse(command.isResponseFromFallback());

assertEquals(1, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
Expand Down Expand Up @@ -418,6 +425,7 @@ public void testQueueKnownFailureWithNoFallback() {

assertTrue(command.getExecutionTimeInMilliseconds() > -1);
assertTrue(command.isFailedExecution());
assertFalse(command.isResponseFromFallback());

assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));
assertEquals(1, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
Expand Down Expand Up @@ -461,6 +469,7 @@ public void testQueueUnknownFailureWithNoFallback() {

assertTrue(command.getExecutionTimeInMilliseconds() > -1);
assertTrue(command.isFailedExecution());
assertFalse(command.isResponseFromFallback());

assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));
assertEquals(1, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
Expand Down Expand Up @@ -498,6 +507,7 @@ public void testQueueFailureWithFallback() {

assertTrue(command.getExecutionTimeInMilliseconds() > -1);
assertTrue(command.isFailedExecution());
assertTrue(command.isResponseFromFallback());

assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
Expand Down Expand Up @@ -540,6 +550,7 @@ public void testQueueFailureWithFallbackFailure() {

assertTrue(command.getExecutionTimeInMilliseconds() > -1);
assertTrue(command.isFailedExecution());
assertFalse(command.isResponseFromFallback());

assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));
assertEquals(1, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
Expand Down Expand Up @@ -581,6 +592,7 @@ public void testObserveSuccess() {

assertTrue(command.getExecutionTimeInMilliseconds() > -1);
assertTrue(command.isSuccessfulExecution());
assertFalse(command.isResponseFromFallback());

assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.FALLBACK_REJECTION));
Expand All @@ -603,6 +615,70 @@ public void testObserveSuccess() {
}
}

/**
* Test a successful command execution.
*/
@Test
public void testObserveSuccessWithFallback() {
try {
final TestHystrixCommand<Boolean> command = new KnownFailureTestCommandWithFallback(new TestCircuitBreaker());
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.FAILURE));
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.TIMEOUT));
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));

final CountDownLatch latch = new CountDownLatch(1);

command.observe().subscribe(new Subscriber<Boolean>() {
@Override
public void onCompleted() {
System.out.println("*** onCompleted");
assertEquals(1, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.FAILURE));
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.TIMEOUT));
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.FALLBACK_REJECTION));
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.FALLBACK_FAILURE));
assertEquals(1, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.FALLBACK_SUCCESS));
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.SEMAPHORE_REJECTED));
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.SHORT_CIRCUITED));
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.THREAD_POOL_REJECTED));
assertEquals(0, command.builder.metrics.getRollingCount(HystrixRollingNumberEvent.RESPONSE_FROM_CACHE));

assertEquals(100, command.builder.metrics.getHealthCounts().getErrorPercentage());

assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());

// semaphore isolated
assertFalse(command.isExecutedInThread());

latch.countDown();
}

@Override
public void onError(Throwable e) {
System.out.println("*** onError : " + e);
fail(e.getMessage());
}

@Override
public void onNext(Boolean b) {
System.out.println("*** onNext : " + b);
assertEquals(false, b);
assertTrue(command.getExecutionTimeInMilliseconds() > -1);
assertFalse(command.isSuccessfulExecution());
assertTrue(command.isFailedExecution());
assertTrue(command.isResponseFromFallback());
}
});

latch.await(1000, TimeUnit.MILLISECONDS);

} catch (Exception e) {
e.printStackTrace();
fail("We received an exception.");
}
}

/**
* Test a successful command execution.
*
Expand Down Expand Up @@ -793,6 +869,8 @@ public void onNext(Boolean args) {

// semaphore isolated
assertFalse(command.isExecutedInThread());

assertFalse(command.isResponseFromFallback());
}

/**
Expand Down

0 comments on commit 8847054

Please sign in to comment.