package org.infinispan.expiration.impl; import static org.testng.AssertJUnit.assertEquals; import java.util.concurrent.TimeUnit; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.manager.EmbeddedCacheManager; import org.infinispan.test.SingleCacheManagerTest; import org.infinispan.test.TestingUtil; import org.infinispan.test.fwk.TestCacheManagerFactory; import org.infinispan.util.ControlledTimeService; import org.infinispan.util.TimeService; import org.testng.annotations.Test; @Test(groups = "functional", testName = "expiration.impl.ExpirationFunctionalTest") public class ExpirationFunctionalTest extends SingleCacheManagerTest { protected final int SIZE = 10; protected ControlledTimeService timeService = new ControlledTimeService(); protected EmbeddedCacheManager createCacheManager() throws Exception { ConfigurationBuilder builder = TestCacheManagerFactory.getDefaultCacheConfiguration(false); configure(builder); EmbeddedCacheManager cm = createCacheManager(builder); TestingUtil.replaceComponent(cm, TimeService.class, timeService, true); cache = cm.getCache(); afterCacheCreated(cm); return cm; } protected EmbeddedCacheManager createCacheManager(ConfigurationBuilder builder) { return TestCacheManagerFactory.createCacheManager(builder); } protected void configure(ConfigurationBuilder config) { config.expiration().disableReaper(); } protected void afterCacheCreated(EmbeddedCacheManager cm) { } public void testSimpleExpirationLifespan() throws Exception { for (int i = 0; i < SIZE; i++) { cache.put("key-" + i, "value-" + i, 1, TimeUnit.MILLISECONDS); } timeService.advance(2); assertEquals(0, cache.size()); } public void testSimpleExpirationMaxIdle() throws Exception { for (int i = 0; i < SIZE; i++) { cache.put("key-" + i, "value-" + i,-1, null, 1, TimeUnit.MILLISECONDS); } timeService.advance(2); assertEquals(0, cache.size()); } }