/** 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); }