package org.infinispan.persistence; import static org.testng.AssertJUnit.assertEquals; import org.infinispan.Cache; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.manager.EmbeddedCacheManager; import org.infinispan.persistence.dummy.DummyInMemoryStore; import org.infinispan.persistence.dummy.DummyInMemoryStoreConfigurationBuilder; import org.infinispan.persistence.spi.CacheLoader; import org.infinispan.persistence.spi.CacheWriter; import org.infinispan.persistence.support.DelegatingCacheLoader; import org.infinispan.persistence.support.DelegatingCacheWriter; import org.infinispan.test.AbstractCacheTest; import org.infinispan.test.TestingUtil; import org.infinispan.test.fwk.TestCacheManagerFactory; import org.testng.annotations.Test; /** * @author Mircea Markus * @since 6.0 */ @Test(groups = "functional", testName = "persistence.InitCountTest") public class InitCountTest extends AbstractCacheTest { public void testInitInvocationCountNoDelegate() { test(false); } public void testInitInvocationCountWithDelegate() { test(true); } /** * @param async set to true means the cache store instance is placed under an DelegatingCacheWriter */ private void test(boolean async) { ConfigurationBuilder dcc = TestCacheManagerFactory.getDefaultCacheConfiguration(true); DummyInMemoryStoreConfigurationBuilder builder = dcc.persistence().addStore(DummyInMemoryStoreConfigurationBuilder.class); if (async) { builder.async().enable(); } EmbeddedCacheManager cacheManager = TestCacheManagerFactory.createCacheManager(dcc); Cache<Object,Object> cache = cacheManager.getCache(); try { CacheLoader firstLoader = TestingUtil.getFirstLoader(cache); CacheLoader undelegatedLoader = firstLoader instanceof DelegatingCacheLoader ? ((DelegatingCacheLoader) firstLoader).undelegate() : firstLoader; CacheWriter firstWriter = TestingUtil.getFirstWriter(cache); CacheWriter undelegatedWriter = firstWriter instanceof DelegatingCacheWriter ? ((DelegatingCacheWriter) firstWriter).undelegate() : firstWriter; assertEquals(1, ((DummyInMemoryStore)undelegatedLoader).getInitCount()); assertEquals(1, ((DummyInMemoryStore)undelegatedWriter).getInitCount()); } finally { TestingUtil.killCacheManagers(cacheManager); } } }