package org.infinispan.client.hotrod.near;
import org.infinispan.client.hotrod.RemoteCacheManager;
import org.infinispan.client.hotrod.configuration.ConfigurationBuilder;
import org.infinispan.client.hotrod.configuration.NearCacheMode;
import org.infinispan.client.hotrod.test.SingleHotRodServerTest;
import org.testng.annotations.Test;
@Test(groups = "functional", testName = "client.hotrod.near.EvictInvalidatedNearCacheTest")
public class EvictInvalidatedNearCacheTest extends SingleHotRodServerTest {
AssertsNearCache<Integer, String> assertClient;
protected RemoteCacheManager getRemoteCacheManager() {
assertClient = createClient();
return assertClient.manager;
}
protected <K, V> AssertsNearCache<K, V> createClient() {
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.addServer().host("127.0.0.1").port(hotrodServer.getPort());
builder.nearCache().mode(getNearCacheMode()).maxEntries(2);
return AssertsNearCache.create(this.<byte[], Object>cache(), builder);
}
protected NearCacheMode getNearCacheMode() {
return NearCacheMode.INVALIDATED;
}
public void testEvictAfterReachingMax() {
assertClient.expectNoNearEvents();
assertClient.put(1, "v1").expectNearRemove(1);
assertClient.put(2, "v1").expectNearRemove(2);
assertClient.get(1, "v1").expectNearGetNull(1).expectNearPutIfAbsent(1, "v1");
assertClient.get(2, "v1").expectNearGetNull(2).expectNearPutIfAbsent(2, "v1");
assertClient.put(3, "v1").expectNearRemove(3);
assertClient.get(3, "v1").expectNearGetNull(3).expectNearPutIfAbsent(3, "v1");
assertClient.get(2, "v1").expectNearGetValue(2, "v1");
assertClient.get(3, "v1").expectNearGetValue(3, "v1");
}
}