package org.infinispan.tx; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNull; import org.infinispan.commands.remote.recovery.TxCompletionNotificationCommand; import org.infinispan.commands.tx.RollbackCommand; import org.infinispan.configuration.cache.CacheMode; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.test.MultipleCacheManagersTest; import org.infinispan.transaction.LockingMode; import org.infinispan.util.mocks.ControlledCommandFactory; import org.testng.annotations.Test; /** * @author Mircea Markus * @since 5.2 */ @Test (groups = "functional", testName = "tx.TxCompletionForRolledBackTxTest") public class TxCompletionForRolledBackTxTest extends MultipleCacheManagersTest { @Override protected void createCacheManagers() throws Throwable { ConfigurationBuilder dcc = getDefaultClusteredCacheConfig(CacheMode.DIST_SYNC, true); dcc.clustering().hash().numOwners(1).transaction().lockingMode(LockingMode.PESSIMISTIC); amend(dcc); createCluster(dcc, 2); waitForClusterToForm(); } protected void amend(ConfigurationBuilder dcc) {} public void testTxCompletionNotSentForRollback() throws Throwable { ControlledCommandFactory cf = ControlledCommandFactory.registerControlledCommandFactory(cache(1), null); tm(0).begin(); Object k = getKeyForCache(1); cache(0).put(k,"k"); tm(0).rollback(); assertNotLocked(k); assertNull(cache(0).get(k)); assertEquals(cf.received(RollbackCommand.class), 1); assertEquals(cf.received(TxCompletionNotificationCommand.class), 0); } }