package org.infinispan.client.hotrod.retry;
import static org.infinispan.server.hotrod.test.HotRodTestingUtil.hotRodCacheConfiguration;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.fail;
import org.infinispan.client.hotrod.RemoteCache;
import org.infinispan.client.hotrod.exceptions.TransportException;
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(groups = "functional", testName = "client.hotrod.retry.CompleteShutdownReplRetryTest")
public class CompleteShutdownReplRetryTest extends MultiHotRodServersTest {
@Override
protected void createCacheManagers() throws Throwable {
// Empty
}
@Override
protected int maxRetries() {
return 1;
}
public void testRetryAfterCompleteShutdown() {
ConfigurationBuilder builder = hotRodCacheConfiguration(
getDefaultClusteredCacheConfig(CacheMode.REPL_SYNC, false));
createHotRodServers(3, builder);
try {
int initialServerPort = server(0).getPort();
assertClusterSize("Cluster should be formed", 3);
RemoteCache<Integer, String> client = client(0).getCache();
client.put(1, "one");
assertEquals("one", client.get(1));
killServer(0);
assertEquals("one", client.get(1));
killServer(0);
assertEquals("one", client.get(1));
killServer(0);
try {
assertEquals("one", client.get(1));
fail("Should have thrown exception");
} catch (TransportException e) {
// Ignore, expected
}
addHotRodServer(builder, initialServerPort);
client.put(1, "one");
assertEquals("one", client.get(1));
} finally {
destroy();
}
}
}