package org.infinispan.api.batch;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.test.SingleCacheManagerTest;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.infinispan.transaction.LockingMode;
import org.infinispan.transaction.TransactionMode;
import org.testng.annotations.Test;
@Test(groups = "functional", testName = "api.batch.LockInBatchTest")
public class LockInBatchTest extends SingleCacheManagerTest {
@Override
protected EmbeddedCacheManager createCacheManager() throws Exception {
ConfigurationBuilder dccc = getDefaultClusteredCacheConfig(CacheMode.LOCAL, false);
dccc.transaction().transactionMode(TransactionMode.TRANSACTIONAL).lockingMode(LockingMode.PESSIMISTIC);
dccc.invocationBatching().enable(true);
return TestCacheManagerFactory.createCacheManager(dccc);
}
public void testLockWithBatchingRollback() {
cache.startBatch();
cache.getAdvancedCache().lock("k");
assertTrue(lockManager().isLocked("k"));
cache().endBatch(false);
assertFalse(lockManager().isLocked("k"));
}
public void testLockWithBatchingCommit() {
cache.startBatch();
cache.getAdvancedCache().lock("k");
assertTrue(lockManager().isLocked("k"));
cache().endBatch(true);
assertFalse(lockManager().isLocked("k"));
}
public void testLockWithTmRollback() throws Throwable {
tm().begin();
cache.getAdvancedCache().lock("k");
assertTrue(lockManager().isLocked("k"));
tm().rollback();
assertFalse(lockManager().isLocked("k"));
}
public void testLockWithTmCommit() throws Throwable {
tm().begin();
cache.getAdvancedCache().lock("k");
assertTrue(lockManager().isLocked("k"));
tm().commit();
assertFalse(lockManager().isLocked("k"));
}
}