package org.infinispan.tx;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertFalse;
import org.infinispan.Cache;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.configuration.global.GlobalConfiguration;
import org.infinispan.configuration.global.GlobalConfigurationBuilder;
import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.test.AbstractCacheTest;
import org.infinispan.test.TestingUtil;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.infinispan.transaction.TransactionMode;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
@Test (groups = "functional", testName = "tx.DefaultEnlistmentModeTest")
public class DefaultEnlistmentModeTest extends AbstractCacheTest {
private DefaultCacheManager dcm;
@AfterMethod
protected void destroyCacheManager() {
TestingUtil.killCacheManagers(dcm);
}
public void testDefaultEnlistment() {
ConfigurationBuilder builder = getLocalBuilder();
builder.transaction().transactionMode(TransactionMode.TRANSACTIONAL);
dcm = new DefaultCacheManager(getGlobalConfig(), builder.build());
Cache<Object,Object> cache = dcm.getCache();
assertFalse(cache.getCacheConfiguration().transaction().useSynchronization());
assertFalse(cache.getCacheConfiguration().transaction().recovery().enabled());
cache.put("k", "v");
assertEquals("v", cache.get("k"));
}
public void testXAEnlistment() {
ConfigurationBuilder builder = getLocalBuilder();
builder.transaction()
.transactionMode(TransactionMode.TRANSACTIONAL)
.useSynchronization(false);
dcm = new DefaultCacheManager(getGlobalConfig(), builder.build());
Cache<Object,Object> cache = dcm.getCache();
assertFalse(cache.getCacheConfiguration().transaction().useSynchronization());
assertFalse(cache.getCacheConfiguration().transaction().recovery().enabled());
cache.put("k", "v");
assertEquals("v", cache.get("k"));
}
public void testXAEnlistmentNoRecovery() {
ConfigurationBuilder builder = getLocalBuilder();
builder.transaction()
.transactionMode(TransactionMode.TRANSACTIONAL)
.useSynchronization(false)
.recovery().disable();
dcm = new DefaultCacheManager(getGlobalConfig(), builder.build());
Cache<Object,Object> cache = dcm.getCache();
assertFalse(cache.getCacheConfiguration().transaction().useSynchronization());
assertFalse(cache.getCacheConfiguration().transaction().recovery().enabled());
}
private ConfigurationBuilder getLocalBuilder() {
ConfigurationBuilder builder = TestCacheManagerFactory.getDefaultCacheConfiguration(true);
builder.clustering().cacheMode(CacheMode.LOCAL);
return builder;
}
private GlobalConfiguration getGlobalConfig() {
return new GlobalConfigurationBuilder().globalJmxStatistics().allowDuplicateDomains(true).build();
}
}