@Test
  public void testReadyForEventsNotCalledImplicitlyWithCacheXML() throws InterruptedException {

    final String cqName = "cqTest";
    // Start a server
    server1Port =
        server1VM.invoke(() -> createCacheServerFromXml(
            DurableClientTestBase.class.getResource("durablecq-server-cache.xml")));

    // Start a durable client that is not kept alive on the server when it
    // stops normally
    final String durableClientId = getName() + "_client";

    // create client cache from xml
    durableClientVM.invoke(() -> createCacheClientFromXml(
        DurableClientTestBase.class.getResource("durablecq-client-cache.xml"), "client",
        durableClientId, VERY_LONG_DURABLE_TIMEOUT_SECONDS, false));

    // verify that readyForEvents has not yet been called on all the client's pools
    durableClientVM.invoke("check readyForEvents not called", new CacheSerializableRunnable() {
      @Override
      public void run2() throws CacheException {
        for (Pool p : PoolManager.getAll().values()) {
          assertThat(((PoolImpl) p).getReadyForEventsCalled()).isFalse();
        }
      }
    });

    // Send clientReady message
    sendClientReady(durableClientVM);
    registerDurableCq(cqName);

    // Verify durable client on server1
    verifyDurableClientPresent(VERY_LONG_DURABLE_TIMEOUT_SECONDS, durableClientId, server1VM);

    // Start normal publisher client
    publisherClientVM.invoke(() -> createCacheClient(
        getClientPool(publisherClientVM.getHost().getHostName(), server1Port,
            false),
        regionName));

    // Publish some entries
    final int numberOfEntries = 10;
    publishEntries(publisherClientVM, 0, numberOfEntries);

    // Verify the durable client received the updates
    checkCqListenerEvents(durableClientVM, cqName, numberOfEntries,
        VERY_LONG_DURABLE_TIMEOUT_SECONDS);

    Thread.sleep(10000);

    // Stop the durable client
    durableClientVM.invoke(() -> CacheServerTestUtil.closeCache(true));

    // Verify the durable client still exists on the server
    verifyDurableClientPresent(VERY_LONG_DURABLE_TIMEOUT_SECONDS, durableClientId,
        server1VM);

    // Publish some more entries
    publishEntries(publisherClientVM, 10, numberOfEntries);

    publisherClientVM.invoke((SerializableRunnableIF) CacheServerTestUtil::closeCache);

    // Re-start the durable client
    durableClientVM.invoke(() -> createCacheClientFromXml(
        DurableClientTestBase.class.getResource("durablecq-client-cache.xml"), "client",
        durableClientId, VERY_LONG_DURABLE_TIMEOUT_SECONDS, false));

    // Durable client registers durable cq on server
    registerDurableCq(cqName);

    // Send clientReady message
    sendClientReady(durableClientVM);

    // Verify durable client on server
    verifyDurableClientPresent(VERY_LONG_DURABLE_TIMEOUT_SECONDS, durableClientId, server1VM);

    // Verify the durable client received the updates held for it on the server
    checkCqListenerEvents(durableClientVM, cqName, 10, VERY_LONG_DURABLE_TIMEOUT_SECONDS);

    // Stop the durable client
    durableClientVM.invoke((SerializableRunnableIF) CacheServerTestUtil::closeCache);

    // Stop the server
    server1VM.invoke((SerializableRunnableIF) CacheServerTestUtil::closeCache);

  }
This test method is disabled because it is failing periodically and causing cruise control
failures See bug #47060 (test seems to be enabled now!)
geode-cq/src/distributedTest/java/org/apache/geode/internal/cache/tier/sockets/DurableClientCQDUnitTest.java