[infinispan-commits] Infinispan SVN: r1701 - in trunk/client/hotrod-client/src: main/java/org/infinispan/client/hotrod/impl and 2 other directories.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Fri Apr 16 10:29:22 EDT 2010
Author: mircea.markus
Date: 2010-04-16 10:29:21 -0400 (Fri, 16 Apr 2010)
New Revision: 1701
Added:
trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/RoundRobinBalancingIntegrationTest.java
trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/RoundRobinBalancingStrategyTest.java
Modified:
trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/RemoteCache.java
trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/RemoteCacheManager.java
trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/RemoteCacheImpl.java
trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/RemoteCacheSupport.java
trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/RoundRobinBalancingStrategy.java
trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/TcpTransport.java
trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/ClientConnectionPoolingTest.java
trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/ForceReturnValueTest.java
trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/HotRodServerStarter.java
trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/ServerShutdownTest.java
Log:
more tests
Modified: trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/RemoteCache.java
===================================================================
--- trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/RemoteCache.java 2010-04-16 12:55:16 UTC (rev 1700)
+++ trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/RemoteCache.java 2010-04-16 14:29:21 UTC (rev 1701)
@@ -346,4 +346,9 @@
public ServerStatistics stats();
RemoteCache<K,V> withFlags(Flag... flags);
+
+ /**
+ * Returns the {@link org.infinispan.client.hotrod.RemoteCacheManager} that created this cache.
+ */
+ public RemoteCacheManager getRemoteCacheManager();
}
Modified: trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/RemoteCacheManager.java
===================================================================
--- trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/RemoteCacheManager.java 2010-04-16 12:55:16 UTC (rev 1700)
+++ trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/RemoteCacheManager.java 2010-04-16 14:29:21 UTC (rev 1701)
@@ -107,6 +107,23 @@
}
/**
+ * The given string should have the following structure: "host1:port2;host:port2...". Every host:port defines a
+ * server.
+ */
+ public RemoteCacheManager(String servers, boolean start) {
+ props = new Properties();
+ props.put(TransportFactory.CONF_HOTROD_SERVERS, servers);
+ if (start) start();
+ }
+
+ /**
+ * Same as {@link #RemoteCacheManager(String, boolean)}, with start=true.
+ */
+ public RemoteCacheManager(String servers) {
+ this(servers, true);
+ }
+
+ /**
* Same as {@link #RemoteCacheManager(java.util.Properties)}, but it will try to lookup the config properties in
* supplied URL.
*
@@ -149,7 +166,8 @@
log.info("'transport-factory' factory not specified, using " + factory);
}
transportFactory = (TransportFactory) VHelper.newInstance(factory);
- transportFactory.start(props, getStaticConfiguredServers(props));
+ String servers = props.getProperty(CONF_HOTROD_SERVERS);
+ transportFactory.start(props, getStaticConfiguredServers(servers));
hotrodMarshaller = props.getProperty("marshaller");
if (hotrodMarshaller == null) {
hotrodMarshaller = SerializationMarshaller.class.getName();
@@ -183,12 +201,11 @@
private <K, V> RemoteCache<K, V> createRemoteCache(String cacheName) {
HotrodMarshaller marshaller = (HotrodMarshaller) VHelper.newInstance(hotrodMarshaller);
HotrodOperations hotrodOperations = new HotrodOperationsImpl(cacheName, transportFactory);
- return new RemoteCacheImpl<K, V>(hotrodOperations, marshaller, cacheName);
+ return new RemoteCacheImpl<K, V>(hotrodOperations, marshaller, cacheName, this);
}
- private Set<InetSocketAddress> getStaticConfiguredServers(Properties props) {
+ private Set<InetSocketAddress> getStaticConfiguredServers(String servers) {
Set<InetSocketAddress> serverAddresses = new HashSet<InetSocketAddress>();
- String servers = props.getProperty(CONF_HOTROD_SERVERS);
if (servers == null) {
servers = System.getProperty(OVERRIDE_HOTROD_SERVERS);
if (servers != null) {
Modified: trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/RemoteCacheImpl.java
===================================================================
--- trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/RemoteCacheImpl.java 2010-04-16 12:55:16 UTC (rev 1700)
+++ trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/RemoteCacheImpl.java 2010-04-16 14:29:21 UTC (rev 1701)
@@ -2,9 +2,11 @@
import org.infinispan.client.hotrod.Flag;
import org.infinispan.client.hotrod.RemoteCache;
+import org.infinispan.client.hotrod.RemoteCacheManager;
import org.infinispan.client.hotrod.ServerStatistics;
import org.infinispan.client.hotrod.Version;
import org.infinispan.client.hotrod.VersionedValue;
+import org.infinispan.manager.CacheManager;
import org.infinispan.util.concurrent.NotifyingFuture;
import java.util.Map;
@@ -22,14 +24,21 @@
private HotrodOperations operations;
private HotrodMarshaller marshaller;
private String name;
+ private RemoteCacheManager remoteCacheManager;
- public RemoteCacheImpl(HotrodOperations operations, HotrodMarshaller marshaller, String name) {
+ public RemoteCacheImpl(HotrodOperations operations, HotrodMarshaller marshaller, String name, RemoteCacheManager rcm) {
this.operations = operations;
this.marshaller = marshaller;
this.name = name;
+ this.remoteCacheManager = rcm;
}
+ public RemoteCacheManager getRemoteCacheManager() {
+ return remoteCacheManager;
+ }
+
+
@Override
public boolean remove(K key, long version) {
VersionedOperationResponse response = operations.removeIfUnmodified(obj2bytes(key), version, flags());
Modified: trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/RemoteCacheSupport.java
===================================================================
--- trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/RemoteCacheSupport.java 2010-04-16 12:55:16 UTC (rev 1700)
+++ trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/RemoteCacheSupport.java 2010-04-16 14:29:21 UTC (rev 1701)
@@ -38,7 +38,7 @@
@Override
public CacheManager getCacheManager() {
- throw new UnsupportedOperationException();
+ throw new UnsupportedOperationException("Use getRemoteCacheManager() instead.");
}
@Override
Modified: trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/RoundRobinBalancingStrategy.java
===================================================================
--- trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/RoundRobinBalancingStrategy.java 2010-04-16 12:55:16 UTC (rev 1700)
+++ trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/RoundRobinBalancingStrategy.java 2010-04-16 14:29:21 UTC (rev 1701)
@@ -5,6 +5,7 @@
import org.infinispan.util.logging.LogFactory;
import java.net.InetSocketAddress;
+import java.util.Arrays;
import java.util.Collection;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.Lock;
@@ -27,7 +28,7 @@
private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
private final Lock readLock = readWriteLock.readLock();
private final Lock writeLock = readWriteLock.writeLock();
- private final AtomicInteger index = new AtomicInteger();
+ private final AtomicInteger index = new AtomicInteger(0);
private InetSocketAddress[] servers;
@@ -36,6 +37,10 @@
writeLock.lock();
try {
this.servers = servers.toArray(new InetSocketAddress[servers.size()]);
+ index.set(0);
+ if (log.isTraceEnabled()) {
+ log.trace("New server list is: " + Arrays.toString(this.servers) + ". Resetting index to 0");
+ }
} finally {
writeLock.unlock();
}
@@ -48,7 +53,7 @@
public InetSocketAddress nextServer() {
readLock.lock();
try {
- int pos = index.incrementAndGet() % servers.length;
+ int pos = index.getAndIncrement() % servers.length;
InetSocketAddress server = servers[pos];
if (log.isTraceEnabled()) {
log.trace("Retuning server: " + server);
Modified: trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/TcpTransport.java
===================================================================
--- trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/TcpTransport.java 2010-04-16 12:55:16 UTC (rev 1700)
+++ trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/TcpTransport.java 2010-04-16 14:29:21 UTC (rev 1701)
@@ -174,7 +174,7 @@
return "TcpTransport{" +
"socket=" + socket +
", serverAddress=" + serverAddress +
- "} " + super.toString();
+ "} ";
}
@Override
Modified: trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/ClientConnectionPoolingTest.java
===================================================================
--- trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/ClientConnectionPoolingTest.java 2010-04-16 12:55:16 UTC (rev 1700)
+++ trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/ClientConnectionPoolingTest.java 2010-04-16 14:29:21 UTC (rev 1701)
@@ -1,13 +1,21 @@
package org.infinispan.client.hotrod;
+import org.infinispan.test.MultipleCacheManagersTest;
+
/**
* // TODO: Document this
*
* @author Mircea.Markus at jboss.com
* @since 4.1
*/
-public class ClientConnectionPoolingTest {
+public class ClientConnectionPoolingTest extends MultipleCacheManagersTest {
+
+ @Override
+ protected void createCacheManagers() throws Throwable {
+ // TODO: Customise this generated block
+ }
+
/**
* What happens if a server goes down and after that, we try to create a connection to that server.
*/
Modified: trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/ForceReturnValueTest.java
===================================================================
--- trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/ForceReturnValueTest.java 2010-04-16 12:55:16 UTC (rev 1700)
+++ trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/ForceReturnValueTest.java 2010-04-16 14:29:21 UTC (rev 1701)
@@ -1,33 +1,21 @@
package org.infinispan.client.hotrod;
import org.infinispan.Cache;
-import org.infinispan.client.hotrod.impl.SerializationMarshaller;
-import org.infinispan.config.Configuration;
import org.infinispan.manager.CacheManager;
-import org.infinispan.server.core.CacheValue;
-import org.infinispan.server.hotrod.CacheKey;
import org.infinispan.server.hotrod.HotRodServer;
-import org.infinispan.server.hotrod.test.HotRodTestingUtil;
import org.infinispan.test.SingleCacheManagerTest;
import org.infinispan.test.fwk.TestCacheManagerFactory;
-import org.infinispan.util.logging.Log;
-import org.infinispan.util.logging.LogFactory;
import org.testng.annotations.AfterClass;
import org.testng.annotations.Test;
-import java.util.Arrays;
-
-import static junit.framework.Assert.assertEquals;
-
/**
* // TODO: Document this
*
* @author Mircea.Markus at jboss.com
* @since 4.1
*/
- at Test(testName = "client.hotrod.ForceReturnValueTest", groups = "functional", enabled = false, description = "TODO To be re-enabled when we have a multithreaded HotRod server impl")
+ at Test(testName = "client.hotrod.ForceReturnValueTest", groups = "functional")
public class ForceReturnValueTest extends SingleCacheManagerTest {
- private Cache cache;
RemoteCache remoteCache;
Modified: trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/HotRodServerStarter.java
===================================================================
--- trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/HotRodServerStarter.java 2010-04-16 12:55:16 UTC (rev 1700)
+++ trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/HotRodServerStarter.java 2010-04-16 14:29:21 UTC (rev 1701)
@@ -13,20 +13,13 @@
* @since 4.1
*/
public class HotRodServerStarter {
- private static ThreadLocal<Integer> ports = new ThreadLocal<Integer>() {
- /**
- * This needs to be different than the one used in the server tests in order to make sure that there's no clash.
- */
- private AtomicInteger uniquePort = new AtomicInteger(11312);
+ /**
+ * This needs to be different than the one used in the server tests in order to make sure that there's no clash.
+ */
+ private static final AtomicInteger uniquePort = new AtomicInteger(11312);
- @Override
- protected Integer initialValue() {
- return uniquePort.addAndGet(100);
- }
- };
-
public static HotRodServer startHotRodServer(CacheManager cacheManager) {
- return HotRodTestingUtil.startHotRodServer(cacheManager, ports.get());
+ return HotRodTestingUtil.startHotRodServer(cacheManager, uniquePort.incrementAndGet());
}
}
Added: trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/RoundRobinBalancingIntegrationTest.java
===================================================================
--- trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/RoundRobinBalancingIntegrationTest.java (rev 0)
+++ trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/RoundRobinBalancingIntegrationTest.java 2010-04-16 14:29:21 UTC (rev 1701)
@@ -0,0 +1,235 @@
+package org.infinispan.client.hotrod;
+
+import org.infinispan.Cache;
+import org.infinispan.client.hotrod.exceptions.TransportException;
+import org.infinispan.client.hotrod.impl.transport.tcp.RoundRobinBalancingStrategy;
+import org.infinispan.client.hotrod.impl.transport.tcp.TcpTransportFactory;
+import org.infinispan.server.hotrod.HotRodServer;
+import org.infinispan.test.MultipleCacheManagersTest;
+import org.infinispan.test.TestingUtil;
+import org.infinispan.test.fwk.TestCacheManagerFactory;
+import org.infinispan.util.logging.Log;
+import org.infinispan.util.logging.LogFactory;
+import org.testng.annotations.AfterTest;
+import org.testng.annotations.Test;
+
+import java.net.InetSocketAddress;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.testng.AssertJUnit.assertEquals;
+
+/**
+ * // TODO: Document this
+ *
+ * @author Mircea.Markus at jboss.com
+ * @since 4.1
+ */
+ at Test(testName = "client.hotrod.RoundRobinBalancingTest")
+public class RoundRobinBalancingIntegrationTest extends MultipleCacheManagersTest {
+
+ private static Log log = LogFactory.getLog(RoundRobinBalancingIntegrationTest.class);
+
+ Cache c1;
+ Cache c2;
+ Cache c3;
+ private HotRodServer hotRodServer1;
+ private HotRodServer hotRodServer2;
+ private HotRodServer hotRodServer3;
+
+ RemoteCache<String, String> remoteCache;
+ private Cache c4;
+ private HotRodServer hotRodServer4;
+
+ @Override
+ protected void assertSupportedConfig() {
+ return;
+ }
+
+ @Override
+ protected void createCacheManagers() throws Throwable {
+ c1 = TestCacheManagerFactory.createLocalCacheManager().getCache();
+ c2 = TestCacheManagerFactory.createLocalCacheManager().getCache();
+ c3 = TestCacheManagerFactory.createLocalCacheManager().getCache();
+ registerCacheManager(c1.getCacheManager(), c2.getCacheManager(), c3.getCacheManager());
+
+ hotRodServer1 = HotRodServerStarter.startHotRodServer(c1.getCacheManager());
+ hotRodServer2 = HotRodServerStarter.startHotRodServer(c2.getCacheManager());
+ hotRodServer3 = HotRodServerStarter.startHotRodServer(c3.getCacheManager());
+
+ log.trace("Server 1 port: " + hotRodServer1.getPort());
+ log.trace("Server 2 port: " + hotRodServer2.getPort());
+ log.trace("Server 3 port: " + hotRodServer3.getPort());
+ String servers = getServersString(hotRodServer1, hotRodServer2, hotRodServer3);
+ log.trace("Server list is: " + servers);
+ RemoteCacheManager remoteCacheManager = new RemoteCacheManager(servers);
+ remoteCache = remoteCacheManager.getCache();
+ }
+
+ @AfterTest(alwaysRun = true)
+ public void tearDown() {
+ hotRodServer1.stop();
+ hotRodServer2.stop();
+ hotRodServer3.stop();
+ hotRodServer4.stop();
+
+
+ c1.getCacheManager().stop();
+ c2.getCacheManager().stop();
+ c3.getCacheManager().stop();
+ c4.getCacheManager().stop();
+ }
+
+ public void testRoundRubinLoadBalancing() {
+ remoteCache.put("k1", "v1");
+ remoteCache.put("k2", "v2");
+ remoteCache.put("k3", "v3");
+
+ assertEquals(1, c1.size());
+ assertEquals(1, c2.size());
+ assertEquals(1, c3.size());
+
+ assertEquals("v1", remoteCache.get("k1"));
+ assertEquals("v2", remoteCache.get("k2"));
+ assertEquals("v3", remoteCache.get("k3"));
+
+ remoteCache.put("k4", "v1");
+ remoteCache.put("k5", "v2");
+ remoteCache.put("k6", "v3");
+ remoteCache.put("k7", "v1");
+ remoteCache.put("k8", "v2");
+ remoteCache.put("k9", "v3");
+
+ assertEquals(3, c1.size());
+ assertEquals(3, c2.size());
+ assertEquals(3, c3.size());
+ }
+
+ @Test(dependsOnMethods = "testRoundRubinLoadBalancing")
+ public void testAddNewHotrodServer() {
+ c4 = TestCacheManagerFactory.createLocalCacheManager().getCache();
+ hotRodServer4 = HotRodServerStarter.startHotRodServer(c4.getCacheManager());
+ registerCacheManager(c4.getCacheManager());
+
+ List<InetSocketAddress> serverAddresses = new ArrayList<InetSocketAddress>();
+ serverAddresses.add(new InetSocketAddress("localhost", hotRodServer1.getPort()));
+ serverAddresses.add(new InetSocketAddress("localhost", hotRodServer2.getPort()));
+ serverAddresses.add(new InetSocketAddress("localhost", hotRodServer3.getPort()));
+ serverAddresses.add(new InetSocketAddress("localhost", hotRodServer4.getPort()));
+
+ RoundRobinBalancingStrategy balancer = getBalancer();
+ balancer.setServers(serverAddresses);
+
+ remoteCache.put("k1", "v1");
+ remoteCache.put("k2", "v2");
+ remoteCache.put("k3", "v3");
+ remoteCache.put("k4", "v4");
+
+ assertEquals(1, c1.size());
+ assertEquals(1, c2.size());
+ assertEquals(1, c3.size());
+ assertEquals(1, c4.size());
+
+ assertEquals("v1", remoteCache.get("k1"));
+ assertEquals("v2", remoteCache.get("k2"));
+ assertEquals("v3", remoteCache.get("k3"));
+ assertEquals("v4", remoteCache.get("k4"));
+
+ remoteCache.put("k5", "v2");
+ remoteCache.put("k6", "v3");
+ remoteCache.put("k7", "v1");
+ remoteCache.put("k8", "v2");
+ remoteCache.put("k9", "v3");
+ remoteCache.put("k10", "v3");
+ remoteCache.put("k11", "v3");
+ remoteCache.put("k12", "v3");
+
+ assertEquals(3, c1.size());
+ assertEquals(3, c2.size());
+ assertEquals(3, c3.size());
+ assertEquals(3, c4.size());
+ }
+
+ @Test(dependsOnMethods = "testAddNewHotrodServer")
+ public void testStopServer() {
+ remoteCache.put("k1", "v1");
+ remoteCache.put("k2", "v2");
+ remoteCache.put("k3", "v3");
+ remoteCache.put("k4", "v4");
+
+ assertEquals(1, c1.size());
+ assertEquals(1, c2.size());
+ assertEquals(1, c3.size());
+ assertEquals(1, c4.size());
+
+ assertEquals("v1", remoteCache.get("k1"));
+ assertEquals("v2", remoteCache.get("k2"));
+ assertEquals("v3", remoteCache.get("k3"));
+ assertEquals("v4", remoteCache.get("k4"));
+
+ hotRodServer4.stop();
+
+ try {
+ remoteCache.put("k5", "v1");
+ remoteCache.put("k6", "v2");
+ remoteCache.put("k7", "v3");
+ remoteCache.put("k8", "v4");
+ assert false : "exception expected as balancer is still redirecting to failed node";
+ } catch (TransportException e) {
+ //expected
+ }
+ }
+
+ @Test(dependsOnMethods = "testStopServer")
+ public void testRemoveServers() {
+ List<InetSocketAddress> serverAddresses = new ArrayList<InetSocketAddress>();
+ serverAddresses.add(new InetSocketAddress("localhost", hotRodServer1.getPort()));
+ serverAddresses.add(new InetSocketAddress("localhost", hotRodServer2.getPort()));
+
+ RoundRobinBalancingStrategy balancer = getBalancer();
+ balancer.setServers(serverAddresses);
+
+ remoteCache.put("k1", "v1");
+ remoteCache.put("k2", "v2");
+ remoteCache.put("k3", "v3");
+ remoteCache.put("k4", "v4");
+
+ assertEquals(2, c1.size());
+ assertEquals(2, c2.size());
+ assertEquals(0, c3.size());
+ assertEquals(0, c4.size());
+
+ assertEquals("v1", remoteCache.get("k1"));
+ assertEquals("v2", remoteCache.get("k2"));
+ assertEquals("v3", remoteCache.get("k3"));
+ assertEquals("v4", remoteCache.get("k4"));
+
+ remoteCache.put("k5", "v2");
+ remoteCache.put("k6", "v3");
+ remoteCache.put("k7", "v1");
+ remoteCache.put("k8", "v2");
+ remoteCache.put("k9", "v3");
+ remoteCache.put("k10", "v3");
+ remoteCache.put("k11", "v3");
+ remoteCache.put("k12", "v3");
+
+ assertEquals(6, c1.size());
+ assertEquals(6, c2.size());
+ assertEquals(0, c3.size());
+ assertEquals(0, c4.size());
+
+ }
+
+ private RoundRobinBalancingStrategy getBalancer() {
+ TcpTransportFactory transportFactory = (TcpTransportFactory) TestingUtil.extractField(remoteCache.getRemoteCacheManager(), "transportFactory");
+ return (RoundRobinBalancingStrategy) TestingUtil.extractField(transportFactory, "balancer");
+ }
+
+ private String getServersString(HotRodServer... servers) {
+ StringBuilder builder = new StringBuilder();
+ for (HotRodServer server : servers) {
+ builder.append("localhost").append(':').append(server.getPort()).append(";");
+ }
+ return builder.toString();
+ }
+}
Added: trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/RoundRobinBalancingStrategyTest.java
===================================================================
--- trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/RoundRobinBalancingStrategyTest.java (rev 0)
+++ trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/RoundRobinBalancingStrategyTest.java 2010-04-16 14:29:21 UTC (rev 1701)
@@ -0,0 +1,120 @@
+package org.infinispan.client.hotrod;
+
+import org.infinispan.client.hotrod.impl.transport.tcp.RoundRobinBalancingStrategy;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.testng.AssertJUnit.assertEquals;
+
+/**
+ * // TODO: Document this
+ *
+ * @author Mircea.Markus at jboss.com
+ * @since 4.1
+ */
+ at Test (groups = "unit", testName = "client.hotrod.RoundRobinBalancingStrategyTest")
+public class RoundRobinBalancingStrategyTest {
+
+
+ InetSocketAddress addr1 = new InetSocketAddress("localhost",1111);
+ InetSocketAddress addr2 = new InetSocketAddress("localhost",2222);
+ InetSocketAddress addr3 = new InetSocketAddress("localhost",3333);
+ InetSocketAddress addr4 = new InetSocketAddress("localhost",4444);
+ private List<InetSocketAddress> defaultServers;
+ private RoundRobinBalancingStrategy strategy;
+
+ @BeforeMethod
+ public void setUp() {
+ strategy = new RoundRobinBalancingStrategy();
+ defaultServers = new ArrayList<InetSocketAddress>();
+ defaultServers.add(addr1);
+ defaultServers.add(addr2);
+ defaultServers.add(addr3);
+ strategy.setServers(defaultServers);
+ }
+
+ public void simpleTest() {
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ assertEquals(addr3, strategy.nextServer());
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ assertEquals(addr3, strategy.nextServer());
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ assertEquals(addr3, strategy.nextServer());
+ }
+
+ public void testAddServer() {
+ List<InetSocketAddress> newServers = new ArrayList<InetSocketAddress>(defaultServers);
+ newServers.add(addr4);
+ strategy.setServers(newServers);
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ assertEquals(addr3, strategy.nextServer());
+ assertEquals(addr4, strategy.nextServer());
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ assertEquals(addr3, strategy.nextServer());
+ assertEquals(addr4, strategy.nextServer());
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ assertEquals(addr3, strategy.nextServer());
+ }
+
+ public void testRemoveServer() {
+ List<InetSocketAddress> newServers = new ArrayList<InetSocketAddress>(defaultServers);
+ newServers.remove(addr3);
+ strategy.setServers(newServers);
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ }
+
+ public void testRemoveServerAfterActivity() {
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ assertEquals(addr3, strategy.nextServer());
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ List<InetSocketAddress> newServers = new ArrayList<InetSocketAddress>(defaultServers);
+ newServers.remove(addr3);
+ strategy.setServers(newServers);
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ }
+
+ public void testAddServerAfterActivity() {
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ assertEquals(addr3, strategy.nextServer());
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ List<InetSocketAddress> newServers = new ArrayList<InetSocketAddress>(defaultServers);
+ newServers.add(addr4);
+ strategy.setServers(newServers);
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ assertEquals(addr3, strategy.nextServer());
+ assertEquals(addr4, strategy.nextServer());
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ assertEquals(addr3, strategy.nextServer());
+ assertEquals(addr4, strategy.nextServer());
+ assertEquals(addr1, strategy.nextServer());
+ assertEquals(addr2, strategy.nextServer());
+ assertEquals(addr3, strategy.nextServer());
+ }
+}
Modified: trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/ServerShutdownTest.java
===================================================================
--- trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/ServerShutdownTest.java 2010-04-16 12:55:16 UTC (rev 1700)
+++ trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/ServerShutdownTest.java 2010-04-16 14:29:21 UTC (rev 1701)
@@ -18,7 +18,6 @@
@Test(testName = "client.hotrod.ServerShutdownTest", groups = "functional")
public class ServerShutdownTest {
- @Test(enabled = false)
public void testServerShutdownWithConnectedClient() {
CacheManager cacheManager = TestCacheManagerFactory.createLocalCacheManager();
HotRodServer hotrodServer = HotRodServerStarter.startHotRodServer(cacheManager);
More information about the infinispan-commits
mailing list