@Test
public void testNoRequestCache3() {

    final TestCollapserTimer timer = new TestCollapserTimer();
    SuccessfulCacheableCollapsedCommand command1 = new SuccessfulCacheableCollapsedCommand(timer, "A", false);
    SuccessfulCacheableCollapsedCommand command2 = new SuccessfulCacheableCollapsedCommand(timer, "B", false);
    SuccessfulCacheableCollapsedCommand command3 = new SuccessfulCacheableCollapsedCommand(timer, "B", false);
    Future<String> f1 = command1.queue();
    Future<String> f2 = command2.queue();
    Future<String> f3 = command3.queue();
    // increment past batch time so it executes
    timer.incrementTime(15);
    try {
        assertEquals("A", f1.get(1000, TimeUnit.MILLISECONDS));
        assertEquals("B", f2.get(1000, TimeUnit.MILLISECONDS));
        assertEquals("B", f3.get(1000, TimeUnit.MILLISECONDS));
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    Future<String> f4 = command1.queue();
    Future<String> f5 = command2.queue();
    Future<String> f6 = command3.queue();
    // increment past batch time so it executes
    timer.incrementTime(15);
    try {
        assertEquals("A", f4.get(1000, TimeUnit.MILLISECONDS));
        assertEquals("B", f5.get(1000, TimeUnit.MILLISECONDS));
        assertEquals("B", f6.get(1000, TimeUnit.MILLISECONDS));
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    // request caching is turned off on this so we expect 2 command executions
    assertEquals(2, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
    // we expect to see it with SUCCESS and COLLAPSED and both
    HystrixInvokableInfo<?> commandA = HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().toArray(new HystrixInvokableInfo<?>[2])[0];
    assertEquals(2, commandA.getExecutionEvents().size());
    assertTrue(commandA.getExecutionEvents().contains(HystrixEventType.SUCCESS));
    assertTrue(commandA.getExecutionEvents().contains(HystrixEventType.COLLAPSED));
    // we expect to see it with SUCCESS and COLLAPSED and both
    HystrixInvokableInfo<?> commandB = HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().toArray(new HystrixInvokableInfo<?>[2])[1];
    assertEquals(2, commandB.getExecutionEvents().size());
    assertTrue(commandB.getExecutionEvents().contains(HystrixEventType.SUCCESS));
    assertTrue(commandB.getExecutionEvents().contains(HystrixEventType.COLLAPSED));
    Iterator<HystrixInvokableInfo<?>> cmdIterator = HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().iterator();
    assertEquals(2, cmdIterator.next().getNumberCollapsed());  //1 for A, 1 for B.  Batch contains only unique arguments (no duplicates)
    assertEquals(2, cmdIterator.next().getNumberCollapsed());  //1 for A, 1 for B.  Batch contains only unique arguments (no duplicates)
}