package org.infinispan.server.hotrod; import static org.infinispan.server.core.test.ServerTestingUtil.killServer; import static org.infinispan.server.hotrod.test.HotRodTestingUtil.assertSuccess; import static org.infinispan.server.hotrod.test.HotRodTestingUtil.hotRodCacheConfiguration; import static org.infinispan.server.hotrod.test.HotRodTestingUtil.k; import static org.infinispan.server.hotrod.test.HotRodTestingUtil.killClient; import static org.infinispan.server.hotrod.test.HotRodTestingUtil.serverPort; import static org.infinispan.server.hotrod.test.HotRodTestingUtil.startHotRodServer; import static org.infinispan.server.hotrod.test.HotRodTestingUtil.v; import java.lang.reflect.Method; import org.infinispan.commons.CacheConfigurationException; import org.infinispan.configuration.cache.CacheMode; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.configuration.global.GlobalConfigurationBuilder; import org.infinispan.manager.EmbeddedCacheManager; import org.infinispan.server.hotrod.configuration.HotRodServerConfigurationBuilder; import org.infinispan.server.hotrod.test.HotRodClient; import org.infinispan.test.MultipleCacheManagersTest; import org.infinispan.test.fwk.TestCacheManagerFactory; import org.testng.annotations.AfterMethod; import org.testng.annotations.Test; @Test(groups = "functional", testName = "server.hotrod.HotRodSharedContainerTest") public class HotRodSharedContainerTest extends MultipleCacheManagersTest { private HotRodServer hotRodServer1; private HotRodServer hotRodServer2; private HotRodClient hotRodClient1; private HotRodClient hotRodClient2; private String cacheName = "HotRodCache"; @Override protected void createCacheManagers() { GlobalConfigurationBuilder globalCfg = GlobalConfigurationBuilder.defaultClusteredBuilder(); globalCfg.globalJmxStatistics().allowDuplicateDomains(true); EmbeddedCacheManager cm = TestCacheManagerFactory.createClusteredCacheManager(globalCfg, hotRodCacheConfiguration()); cacheManagers.add(cm); ConfigurationBuilder builder = hotRodCacheConfiguration( getDefaultClusteredCacheConfig(CacheMode.REPL_SYNC, false)); cm.defineConfiguration(cacheName, builder.build()); } @Test(expectedExceptions = CacheConfigurationException.class) public void testTopologyConflict() { int basePort = serverPort(); hotRodServer1 = startHotRodServer(cacheManagers.get(0), basePort, new HotRodServerConfigurationBuilder()); hotRodServer2 = startHotRodServer(cacheManagers.get(0), basePort + 50, new HotRodServerConfigurationBuilder()); } public void testSharedContainer(Method m) { int basePort = serverPort(); hotRodServer1 = startHotRodServer(cacheManagers.get(0), basePort, new HotRodServerConfigurationBuilder().name("1")); hotRodServer2 = startHotRodServer(cacheManagers.get(0), basePort + 50, new HotRodServerConfigurationBuilder().name("2")); hotRodClient1 = new HotRodClient("127.0.0.1", hotRodServer1.getPort(), cacheName, 60, (byte) 20); hotRodClient2 = new HotRodClient("127.0.0.1", hotRodServer2.getPort(), cacheName, 60, (byte) 20); hotRodClient1.put(k(m), 0, 0, v(m)); assertSuccess(hotRodClient2.get(k(m), 0), v(m)); } @AfterMethod(alwaysRun = true) void killClientsAndServers() { killClient(hotRodClient1); killClient(hotRodClient2); killServer(hotRodServer1); killServer(hotRodServer2); } }