@Test
public void testExecutionTimeoutWithFallback() {

    TestHystrixCommand<Integer> command = getLatentCommand(ExecutionIsolationStrategy.THREAD, AbstractTestHystrixCommand.ExecutionResult.SUCCESS, 200, AbstractTestHystrixCommand.FallbackResult.SUCCESS, 50);
    assertEquals(FlexibleTestHystrixCommand.FALLBACK_VALUE, command.execute());
    // the time should be 50+ since we timeout at 50ms
    assertTrue("Execution Time is: " + command.getExecutionTimeInMilliseconds(), command.getExecutionTimeInMilliseconds() >= 50);
    assertFalse(command.isCircuitBreakerOpen());
    assertFalse(command.isResponseShortCircuited());
    assertTrue(command.isResponseTimedOut());
    assertTrue(command.isResponseFromFallback());
    assertCommandExecutionEvents(command, HystrixEventType.TIMEOUT, HystrixEventType.FALLBACK_SUCCESS);
    assertNotNull(command.getExecutionException());
    assertEquals(0, command.getBuilder().metrics.getCurrentConcurrentExecutionCount());
    assertSaneHystrixRequestLog(1);
}