package org.infinispan.client.hotrod.retry;
import static java.util.stream.IntStream.range;
import static org.infinispan.server.hotrod.test.HotRodTestingUtil.hotRodCacheConfiguration;
import static org.testng.AssertJUnit.assertEquals;
import java.util.TreeMap;
import org.infinispan.client.hotrod.RemoteCache;
import org.infinispan.client.hotrod.test.HotRodClientTestingUtil;
import org.infinispan.client.hotrod.test.MultiHotRodServersTest;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.testng.annotations.Test;
@Test(testName = "client.hotrod.retry.PutAllRetryTest", groups = "functional")
public class PutAllRetryTest extends MultiHotRodServersTest {
@Override
protected void createCacheManagers() throws Throwable {
createHotRodServers(3, getCacheConfiguration());
}
private ConfigurationBuilder getCacheConfiguration() {
ConfigurationBuilder builder = getDefaultClusteredCacheConfig(CacheMode.DIST_SYNC, false);
builder.clustering().hash().numOwners(2);
return hotRodCacheConfiguration(builder);
}
@Override
protected int maxRetries() {
return 10;
}
@Test
public void testFailOver() throws InterruptedException {
RemoteCache<Integer, String> remoteCache = clients.get(0).getCache();
int size = 1000;
TreeMap<Integer, String> dataMap = new TreeMap<>();
range(0, size).forEach(num -> dataMap.put(num, "value" + num));
remoteCache.putAll(dataMap.subMap(0, size / 2));
HotRodClientTestingUtil.killServers(servers.get(0));
remoteCache.putAll(dataMap.subMap(size / 2, size));
assertEquals(size, remoteCache.size());
}
}