package org.infinispan.client.hotrod;
import org.infinispan.client.hotrod.impl.transport.tcp.TcpTransportFactory;
import org.infinispan.client.hotrod.test.MultiHotRodServersTest;
import org.infinispan.config.Configuration;
import org.infinispan.config.Configuration.CacheMode;
import org.testng.annotations.Test;
import java.lang.reflect.Method;
import java.net.SocketAddress;
import java.util.SortedMap;
import static org.infinispan.test.TestingUtil.extractField;
import static org.infinispan.test.TestingUtil.v;
import static org.testng.AssertJUnit.assertEquals;
/**
* Tests that verify that Hot Rod clients work as expected when virtual nodes are enabled.
*
* @author Galder ZamarreƱo
* @since 5.0
*/
@Test(groups = "functional", testName = "client.hotrod.VirtualNodesTest")
public class VirtualNodesTest extends MultiHotRodServersTest {
@Override
protected void createCacheManagers() throws Throwable {
Configuration config = getDefaultClusteredConfig(CacheMode.DIST_SYNC).fluent()
.clustering().hash().numVirtualNodes(500).numOwners(1).build();
createHotRodServers(2, config);
}
public void testNumVirtualNodesInClient(Method m) {
RemoteCacheManager client = client(0);
client.getCache().put(1, v(m));
TcpTransportFactory tf = (TcpTransportFactory) extractField(
client, "transportFactory");
SortedMap<Integer, SocketAddress> positions = (SortedMap<Integer, SocketAddress>)
extractField(tf.getConsistentHash(), "positions");
assertEquals(1000, positions.size());
}
}