package org.infinispan.client.hotrod;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
import java.util.HashMap;
import java.util.Map;
import org.infinispan.Cache;
import org.infinispan.client.hotrod.test.MultiHotRodServersTest;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.remoting.rpc.RpcManagerImpl;
import org.testng.annotations.Test;
@Test(testName = "client.hotrod.CompatRoutingTest", groups = "functional")
public class CompatRoutingTest extends MultiHotRodServersTest {
@Override
protected void createCacheManagers() throws Throwable {
createHotRodServers(2, getCacheConfiguration());
}
private ConfigurationBuilder getCacheConfiguration() {
ConfigurationBuilder builder = getDefaultClusteredCacheConfig(CacheMode.DIST_SYNC, false);
builder.clustering().hash().numOwners(1).compatibility().enabled(true);
builder.jmxStatistics().enable();
return builder;
}
public void testGetWithCompatibility() {
RemoteCache<String, String> client = client(0).getCache();
HashMap<String, String> cachedValues = new HashMap<>();
for (int i = 0; i < 100; i++) {
String key = String.format("key-%d", i);
String value = String.format("value-%d", i);
client.put(key, value);
cachedValues.put(key, value);
}
int startRpcs = 0;
for (Cache cache : caches()) {
startRpcs += ((RpcManagerImpl) cache.getAdvancedCache().getRpcManager()).getReplicationCount();
}
assertTrue(startRpcs > 0);
for (Map.Entry<String, String> entry : cachedValues.entrySet()) {
String value = client.get(entry.getKey());
assertEquals(entry.getValue(), value);
}
int endRpcs = 0;
for (Cache cache : caches()) {
endRpcs += ((RpcManagerImpl) cache.getAdvancedCache().getRpcManager()).getReplicationCount();
}
assertEquals(startRpcs, endRpcs);
}
}