@Test
  public void testClientCQNotLostAtGIIReceiver() throws Exception {
    Integer size = 10;
    VM serverVM2 = clientVM2;

    int port3 = serverVM2.invoke(
        () -> CQListGIIDistributedTest.createServerCache(HARegionQueue.HA_EVICTION_POLICY_MEMORY));

    // slow start for dispatcher
    serverVM0.invoke(() -> ConflationDistributedTestHelper.setIsSlowStart("45000"));

    // createClientCache(Integer.valueOf(PORT1), Integer.valueOf(PORT2), "1");
    createClientCache(PORT1, PORT2, port3, "1");
    try {
      clientVM1.invoke(() -> CQListGIIDistributedTest.createClientCache(PORT1,
          port3, PORT2, "1"));
      try {
        createCQ("testSpecificClientCQIsGIIed_0", cqs[0]);
        executeCQ("testSpecificClientCQIsGIIed_0", Boolean.FALSE);
        clientVM1
            .invoke(
                () -> CQListGIIDistributedTest.createCQ("testSpecificClientCQIsGIIed_0", cqs[0]));
        clientVM1.invoke(
            () -> CQListGIIDistributedTest.executeCQ("testSpecificClientCQIsGIIed_0",
                Boolean.FALSE));

        serverVM0.invoke(() -> CQListGIIDistributedTest.putEntries(regions[0], size));

        serverVM1.invoke(() -> CQListGIIDistributedTest.VerifyCUMCQList(size, 1));

        serverVM2.invoke(CQListGIIDistributedTest::stopServer);
        Thread.sleep(3000); // TODO: Find a better 'n reliable alternative

        serverVM0.invoke(() -> CQListGIIDistributedTest.VerifyCUMCQList(size, 2));
        serverVM1.invoke(() -> CQListGIIDistributedTest.VerifyCUMCQList(size, 2));
      } finally {
        clientVM1.invoke(CQListGIIDistributedTest::destroyClientPool);
      }

    } finally {
      destroyClientPool();
    }
  }
This test asserts that cq list of a client for an event is not lost if that client's queue has
been GII'ed to a server where that event already existed.
geode-cq/src/distributedTest/java/org/apache/geode/internal/cache/ha/CQListGIIDistributedTest.java