package org.infinispan.api;
import static org.testng.Assert.assertTrue;
import static org.testng.AssertJUnit.assertEquals;
import org.infinispan.Cache;
import org.infinispan.cache.impl.AbstractDelegatingCache;
import org.infinispan.cache.impl.SimpleCacheImpl;
import org.infinispan.commons.CacheConfigurationException;
import org.infinispan.configuration.CustomInterceptorConfigTest;
import org.infinispan.configuration.cache.Configuration;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.configuration.cache.Index;
import org.infinispan.distexec.DefaultExecutorService;
import org.infinispan.interceptors.base.BaseCustomInterceptor;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.infinispan.transaction.TransactionMode;
import org.testng.annotations.Test;
/**
* @author Radim Vansa <rvansa@redhat.com>
*/
@Test(groups = "functional", testName = "api.SimpleCacheTest")
public class SimpleCacheTest extends APINonTxTest {
@Override
protected EmbeddedCacheManager createCacheManager() throws Exception {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.simpleCache(true);
EmbeddedCacheManager cm = TestCacheManagerFactory.createCacheManager(cb);
cache = AbstractDelegatingCache.unwrapCache(cm.getCache());
assertTrue(cache instanceof SimpleCacheImpl);
return cm;
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testAddInterceptor() {
cache().getAdvancedCache().addInterceptor(new CustomInterceptorConfigTest.DummyInterceptor(), 0);
}
@Test(expectedExceptions = CacheConfigurationException.class)
public void testDistributedExecutor() {
new DefaultExecutorService(cache()).submit(() -> null);
}
@Test(expectedExceptions = CacheConfigurationException.class)
public void testTransactions() {
new ConfigurationBuilder().simpleCache(true)
.transaction().transactionMode(TransactionMode.TRANSACTIONAL).build();
}
@Test(expectedExceptions = CacheConfigurationException.class)
public void testInterceptors() {
new ConfigurationBuilder().simpleCache(true)
.customInterceptors().addInterceptor().interceptor(new BaseCustomInterceptor()).build();
}
@Test(expectedExceptions = CacheConfigurationException.class)
public void testBatching() {
new ConfigurationBuilder().simpleCache(true).invocationBatching().enable(true).build();
}
@Test(expectedExceptions = CacheConfigurationException.class, expectedExceptionsMessageRegExp = "ISPN000381: This configuration is not supported for simple cache")
public void testIndexing() {
new ConfigurationBuilder().simpleCache(true).indexing().index(Index.LOCAL).build();
}
@Test(expectedExceptions = CacheConfigurationException.class)
public void testStoreAsBinary() {
new ConfigurationBuilder().simpleCache(true).storeAsBinary().enabled(true).build();
}
@Test(expectedExceptions = CacheConfigurationException.class)
public void testCompatibility() {
new ConfigurationBuilder().simpleCache(true).compatibility().enabled(true).build();
}
public void testStatistics() {
Configuration cfg = new ConfigurationBuilder().simpleCache(true).jmxStatistics().enabled(true).build();
String name = "statsCache";
cacheManager.defineConfiguration(name, cfg);
Cache<Object, Object> cache = cacheManager.getCache(name);
assertEquals(0L, cache.getAdvancedCache().getStats().getStores());
cache.put("key", "value");
assertEquals(1L, cache.getAdvancedCache().getStats().getStores());
}
}