@Test
public void testRequestCache2() throws Exception {

    TestCircuitBreaker circuitBreaker = new TestCircuitBreaker();
    SuccessfulCacheableCommand<String> command1 = new SuccessfulCacheableCommand<String>(circuitBreaker, true, "A");
    SuccessfulCacheableCommand<String> command2 = new SuccessfulCacheableCommand<String>(circuitBreaker, true, "B");
    assertTrue(command1.isCommandRunningInThread());
    Future<String> f1 = command1.queue();
    Future<String> f2 = command2.queue();
    assertEquals("A", f1.get());
    assertEquals("B", f2.get());
    assertTrue(command1.executed);
    // both should execute as they are different
    assertTrue(command2.executed);
    assertTrue(command2.getExecutionTimeInMilliseconds() > -1);
    assertFalse(command2.isResponseFromCache());
    assertCommandExecutionEvents(command1, HystrixEventType.SUCCESS);
    assertCommandExecutionEvents(command2, HystrixEventType.SUCCESS);
    assertNull(command1.getExecutionException());
    assertFalse(command2.isResponseFromCache());
    assertNull(command2.getExecutionException());
    assertEquals(0, circuitBreaker.metrics.getCurrentConcurrentExecutionCount());
    assertSaneHystrixRequestLog(2);
}