/** test remote cache peers */
  public void testProviderFromCacheManager() throws InterruptedException {

    if (JVMUtil.isSingleRMIRegistryPerVM()) {
      return;
    }

    Ehcache m1sampleCache1 = manager1.getCache("sampleCache1");
    Thread.sleep(2000);

    List peerUrls = manager1.getCachePeerProvider().listRemoteCachePeers(m1sampleCache1);
    assertEquals(expectedPeers(), peerUrls.size());

    Ehcache m2sampleCache1 = manager2.getCache("sampleCache1");
    assertFalse(m1sampleCache1.getGuid().equals(m2sampleCache1.getGuid()));

    List peerUrls2 = manager2.getCachePeerProvider().listRemoteCachePeers(m2sampleCache1);
    assertEquals(expectedPeers(), peerUrls2.size());

    Ehcache m3sampleCache1 = manager3.getCache("sampleCache1");
    assertFalse(m1sampleCache1.getGuid().equals(m3sampleCache1.getGuid()));

    List peerUrls3 = manager3.getCachePeerProvider().listRemoteCachePeers(m3sampleCache1);
    assertEquals(expectedPeers(), peerUrls3.size());

    // Now remove a node, wait for the cluster to self-heal and then test
    manager1.shutdown();
    Thread.sleep(1000);
    peerUrls3 = manager3.getCachePeerProvider().listRemoteCachePeers(m3sampleCache1);
    // The manual provider removes the cache peer that was not reachable
    assertEquals(1, peerUrls3.size());
  }
  /** {@inheritDoc} */
  protected void setUp() throws Exception {
    if (JVMUtil.isSingleRMIRegistryPerVM()) {
      return;
    }

    manager1 =
        new CacheManager(
            AbstractCacheTest.TEST_CONFIG_DIR + "distribution/ehcache-manual-distributed1.xml");
    manager2 =
        new CacheManager(
            AbstractCacheTest.TEST_CONFIG_DIR + "distribution/ehcache-manual-distributed2.xml");
    manager3 =
        new CacheManager(
            AbstractCacheTest.TEST_CONFIG_DIR + "distribution/ehcache-manual-distributed3.xml");

    /* manager3 has an empty manual configuration, which is topped up by adding manual entries.
     * The sampleCache1 from manager3 is added to the rmiUrls list for manager1 and manager2
     */
    CacheManagerPeerProvider peerProvider = manager3.getCacheManagerPeerProvider();
    peerProvider.registerPeer("//localhost:40001/sampleCache1");
    peerProvider.registerPeer("//localhost:40002/sampleCache1");

    // Allow cluster setup
    Thread.sleep(2000);
  }