@Test
public void testCountersOnExecutionTimeout() throws Exception {

    TestHystrixCommand<Integer> command = getCommand(ExecutionIsolationStrategy.THREAD, AbstractTestHystrixCommand.ExecutionResult.SUCCESS, 200, AbstractTestHystrixCommand.FallbackResult.SUCCESS, 50);
    command.execute();
    /* wait long enough for the command to have finished */
    Thread.sleep(200);
    /* response should still be the same as 'testCircuitBreakerOnExecutionTimeout' */
    assertTrue(command.isResponseFromFallback());
    assertFalse(command.isCircuitBreakerOpen());
    assertFalse(command.isResponseShortCircuited());
    assertTrue(command.getExecutionTimeInMilliseconds() > -1);
    assertTrue(command.isResponseTimedOut());
    assertFalse(command.isSuccessfulExecution());
    assertNotNull(command.getExecutionException());
    assertCommandExecutionEvents(command, HystrixEventType.TIMEOUT, HystrixEventType.FALLBACK_SUCCESS);
    assertEquals(0, command.getBuilder().metrics.getCurrentConcurrentExecutionCount());
    assertSaneHystrixRequestLog(1);
}