package org.infinispan.server.test.eviction; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.List; import org.infinispan.arquillian.core.InfinispanResource; import org.infinispan.arquillian.core.RemoteInfinispanServer; import org.infinispan.arquillian.core.RunningServer; import org.infinispan.arquillian.core.WithRunningServer; import org.infinispan.client.hotrod.RemoteCache; import org.infinispan.client.hotrod.RemoteCacheManager; import org.infinispan.server.test.category.Unstable; import org.infinispan.server.test.util.ITestUtils; import org.jboss.arquillian.junit.Arquillian; import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; /** * Tests for eviction strategy configurations * <p/> * LIRS not tested, see https://issues.jboss.org/browse/ISPN-1347 */ @RunWith(Arquillian.class) @WithRunningServer({@RunningServer(name = "eviction")}) public class EvictionStrategyIT { @InfinispanResource("eviction") RemoteInfinispanServer server1; private static RemoteCacheManager remoteCacheManager; @Before public void setUp() { if (remoteCacheManager == null) { remoteCacheManager = ITestUtils.createCacheManager(server1); } } /* * Test for Eviction turned off */ @Test public void testEvictionStrategyNone() { RemoteCache<String, String> rc = remoteCacheManager.getCache("none"); rc.clear(); storeKeys(rc, "A", "B", "C"); rc.put("keyD", "D"); assertTrue("A".equals(rc.get("keyA"))); assertTrue("B".equals(rc.get("keyB"))); assertTrue("C".equals(rc.get("keyC"))); assertTrue("D".equals(rc.get("keyD"))); } /* * Test for Eviction with LRU(Least Recently used) ordering */ @Test @Category(Unstable.class) // See ISPN-4040 public void testEvictionStrategyLRU() { RemoteCache<String, String> rc = remoteCacheManager.getCache("lru"); rc.clear(); storeKeys(rc, "A", "B", "C"); assertTrue("B".equals(rc.get("keyB"))); assertTrue("A".equals(rc.get("keyA"))); rc.put("keyD", "D"); assertTrue("A".equals(rc.get("keyA"))); assertTrue("B".equals(rc.get("keyB"))); assertTrue("D".equals(rc.get("keyD"))); assertNull(rc.get("keyC")); } private void storeKeys(RemoteCache<String, String> rc, String... values) { storeKeys(rc, Arrays.asList(values)); } private void storeKeys(RemoteCache<String, String> rc, List<String> values) { for (String value : values) { rc.put("key" + value, value); } } }