package org.infinispan.statetransfer; import org.infinispan.configuration.cache.CacheMode; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.test.TestingUtil; import org.infinispan.test.fwk.CleanupAfterMethod; import org.infinispan.transaction.LockingMode; import org.infinispan.transaction.TransactionMode; import org.infinispan.transaction.lookup.EmbeddedTransactionManagerLookup; import org.infinispan.util.concurrent.IsolationLevel; import org.testng.annotations.Test; /** * Test for ISPN-2362 and ISPN-2502 in replicated mode. Uses a cluster which initially has 2 nodes * and then a third is added to test consistency of state transfer. * Tests several operations both in an optimistic tx cluster (with write-skew check enabled) and in a pessimistic tx one. * * @author anistor@redhat.com * @since 5.2 */ @Test(groups = "functional", testName = "statetransfer.ReplStateTransferOnJoinConsistencyTest") @CleanupAfterMethod public class ReplStateTransferOnJoinConsistencyTest extends DistStateTransferOnJoinConsistencyTest { @Override protected ConfigurationBuilder createConfigurationBuilder(boolean isOptimistic) { ConfigurationBuilder builder = getDefaultClusteredCacheConfig(CacheMode.REPL_SYNC, true, true); builder.transaction().transactionMode(TransactionMode.TRANSACTIONAL) .transactionManagerLookup(new EmbeddedTransactionManagerLookup()); if (isOptimistic) { builder.transaction().lockingMode(LockingMode.OPTIMISTIC) .locking().isolationLevel(IsolationLevel.REPEATABLE_READ); } else { builder.transaction().lockingMode(LockingMode.PESSIMISTIC); } builder.clustering().l1().disable().locking().lockAcquisitionTimeout(TestingUtil.shortTimeoutMillis()); builder.clustering().hash().numSegments(10) .stateTransfer().fetchInMemoryState(true).awaitInitialTransfer(false); return builder; } }