package org.multiverse.stms.gamma.integration.isolation;
import org.junit.Test;
import org.multiverse.api.TxnExecutor;
import org.multiverse.api.LockMode;
import org.multiverse.stms.gamma.LeanGammaTxnExecutor;
import org.multiverse.stms.gamma.transactions.GammaTxnConfig;
import org.multiverse.stms.gamma.transactions.fat.FatFixedLengthGammaTxnFactory;
public class MoneyTransfer_FatFixedLengthGammaTxn_StressTest extends MoneyTransfer_AbstractTest {
private LockMode lockMode;
private int accountCount;
@Test
public void when10AccountsAnd2ThreadsAndOptimistic() {
lockMode = LockMode.None;
accountCount = 10;
run(accountCount, 2);
}
@Test
public void when10AccountsAnd2ThreadsAndPessimistic() {
lockMode = LockMode.Exclusive;
accountCount = 10;
run(accountCount, 2);
}
@Test
public void when100AccountAnd10ThreadsAndOptimistic() {
lockMode = LockMode.None;
accountCount = 100;
run(accountCount, 10);
}
@Test
public void when100AccountAnd10ThreadsAndPessimistic() {
lockMode = LockMode.Exclusive;
accountCount = 100;
run(accountCount, 10);
}
@Test
public void when30AccountsAnd30ThreadsAndOptimistic() {
lockMode = LockMode.None;
accountCount = 30;
run(accountCount, 30);
}
@Override
protected TxnExecutor newTxnExecutor() {
GammaTxnConfig config = new GammaTxnConfig(stm, accountCount)
.setReadLockMode(lockMode);
return new LeanGammaTxnExecutor(new FatFixedLengthGammaTxnFactory(config));
}
}