package org.infinispan.tx.totalorder.statetransfer; import org.infinispan.configuration.cache.CacheMode; import org.infinispan.statetransfer.StateTransferFunctionalTest; import org.infinispan.transaction.TransactionProtocol; import org.infinispan.util.concurrent.IsolationLevel; import org.testng.annotations.Test; /** * @author Mircea Markus <mircea.markus@jboss.com> (C) 2011 Red Hat Inc. * @since 5.3 */ @Test(groups = "functional", testName = "tx.totalorder.statetransfer.TotalOrderStateTransferFunctionalTest") public class TotalOrderStateTransferFunctionalTest extends StateTransferFunctionalTest { protected final boolean writeSkew; protected final boolean useSynchronization; @Override public Object[] factory() { return new Object[] { new TotalOrderStateTransferFunctionalTest("dist-to-1pc-nbst", CacheMode.DIST_SYNC, false, false), new TotalOrderStateTransferFunctionalTest("dist-to-2pc-nbst", CacheMode.DIST_SYNC, true, false), new TotalOrderStateTransferFunctionalTest("repl-to-1pc-nbst", CacheMode.REPL_SYNC, true, true), new TotalOrderStateTransferFunctionalTest("repl-to-2pc-nbst", CacheMode.REPL_SYNC, true, false), }; } public TotalOrderStateTransferFunctionalTest() { this(null, null, false, false); } public TotalOrderStateTransferFunctionalTest(String cacheName, CacheMode mode, boolean writeSkew, boolean useSynchronization) { super(cacheName); this.cacheMode = mode; this.writeSkew = writeSkew; this.useSynchronization = useSynchronization; } @Override protected String parameters() { return "[" + cacheName + "]"; } protected void createCacheManagers() throws Throwable { configurationBuilder = getDefaultClusteredCacheConfig(cacheMode, true); configurationBuilder.transaction().transactionProtocol(TransactionProtocol.TOTAL_ORDER) .useSynchronization(useSynchronization) .recovery().disable(); if (writeSkew) { configurationBuilder.locking().isolationLevel(IsolationLevel.REPEATABLE_READ); } else { configurationBuilder.locking().isolationLevel(IsolationLevel.READ_COMMITTED); } configurationBuilder.clustering().stateTransfer().chunkSize(20); } }