package org.infinispan.jcache; import static org.infinispan.client.hotrod.test.HotRodClientTestingUtil.killServers; import static org.infinispan.jcache.util.JCacheTestingUtil.createCacheWithProperties; import static org.infinispan.server.hotrod.test.HotRodTestingUtil.hotRodCacheConfiguration; import static org.infinispan.test.TestingUtil.replaceComponent; import java.lang.reflect.Method; import java.util.Properties; import java.util.concurrent.TimeUnit; import javax.cache.Cache; import javax.cache.Caching; import org.infinispan.client.hotrod.test.HotRodClientTestingUtil; import org.infinispan.configuration.cache.CacheMode; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.jcache.util.JCacheTestingUtil; import org.infinispan.server.hotrod.HotRodServer; import org.infinispan.test.fwk.CleanupAfterMethod; import org.infinispan.util.TimeService; import org.testng.annotations.AfterClass; import org.testng.annotations.Test; /** * @author Matej Cimbora */ @Test(testName = "org.infinispan.jcache.JCacheTwoCachesExpirationTest", groups = "functional") @CleanupAfterMethod public class JCacheTwoCachesExpirationTest extends AbstractTwoCachesExpirationTest { private HotRodServer hotRodServer1; private HotRodServer hotRodServer2; private Cache cache1; private Cache cache2; private ClassLoader testSpecificClassLoader; @Override protected void createCacheManagers() throws Throwable { createClusteredCaches(2, "expiry", getExpiryCacheConfig()); cacheManagers.forEach(cm -> replaceComponent(cm, TimeService.class, controlledTimeService, true)); hotRodServer1 = HotRodClientTestingUtil.startHotRodServer(cacheManagers.get(0)); hotRodServer2 = HotRodClientTestingUtil.startHotRodServer(cacheManagers.get(1)); testSpecificClassLoader = new JCacheTestingUtil.TestClassLoader(JCacheTwoCachesExpirationTest.class.getClassLoader()); Properties properties = new Properties(); properties.put("infinispan.client.hotrod.server_list", hotRodServer1.getHost() + ":" + hotRodServer1.getPort()); cache1 = createCacheWithProperties(Caching.getCachingProvider(testSpecificClassLoader), JCacheTwoCachesExpirationTest.class, "expiry", properties); properties = new Properties(); properties.put("infinispan.client.hotrod.server_list", hotRodServer2.getHost() + ":" + hotRodServer2.getPort()); cache2 = createCacheWithProperties(Caching.getCachingProvider(testSpecificClassLoader), JCacheTwoCachesExpirationTest.class, "expiry", properties); waitForClusterToForm("expiry"); } protected static org.infinispan.configuration.cache.ConfigurationBuilder getExpiryCacheConfig() { ConfigurationBuilder builder = getDefaultClusteredCacheConfig(CacheMode.DIST_SYNC); builder.expiration().lifespan(EXPIRATION_TIMEOUT).wakeUpInterval(100, TimeUnit.MILLISECONDS); return hotRodCacheConfiguration(builder); } @AfterClass @Override protected void destroy() { super.destroy(); killServers(hotRodServer1, hotRodServer2); Caching.getCachingProvider(testSpecificClassLoader).close(); } @Override public Cache getCache1(Method m) { return cache1; } @Override public Cache getCache2(Method m) { return cache2; } }