package org.infinispan.server.test.cs.file; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import org.infinispan.arquillian.core.InfinispanResource; import org.infinispan.arquillian.core.RemoteInfinispanServer; import org.infinispan.client.hotrod.RemoteCache; import org.infinispan.server.test.category.CacheStore; import org.infinispan.server.test.util.RemoteCacheManagerFactory; import org.infinispan.server.test.util.RemoteInfinispanMBeans; import org.jboss.arquillian.container.test.api.ContainerController; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; /** * The goal is to test that the file-store is really preserving data after server kills/shutdowns. * The path configuration and expiration is tested in ExampleConfigs (we can't test there the server restarts because all the * caches in the example configuration have purge=true). * * @author Martin Gencur * */ @RunWith(Arquillian.class) @Category(CacheStore.class) public class FileCacheStoreIT { final String CONTAINER = "standalone-filecs"; @InfinispanResource(CONTAINER) RemoteInfinispanServer server; @ArquillianResource ContainerController controller; @Test public void testSurviveRestart() throws Exception { RemoteCacheManagerFactory rcmFactory = new RemoteCacheManagerFactory(); RemoteInfinispanMBeans s = RemoteInfinispanMBeans.create(server, CONTAINER, "default", "local"); controller.start(CONTAINER); RemoteCache<Object, Object> rc = rcmFactory.createCache(s); rc.clear(); assertNull(rc.get("k1")); rc.put("k1", "v1"); rc.put("k2", "v2"); rc.put("k3", "v3"); assertEquals("v1", rc.get("k1")); assertEquals("v2", rc.get("k2")); assertEquals("v3", rc.get("k3")); controller.kill(CONTAINER); controller.start(CONTAINER); assertEquals("v2", rc.get("k2")); assertEquals("v3", rc.get("k3")); assertNull(rc.get("k1")); //maxEntries was 2, this entry should be lost as the oldest entries are removed controller.stop(CONTAINER); rcmFactory.stopManagers(); } }