package org.multiverse.stms.gamma.integration.isolation; import org.junit.Test; import org.multiverse.api.TxnExecutor; import org.multiverse.stms.gamma.LeanGammaTxnExecutor; import org.multiverse.stms.gamma.transactions.GammaTxnConfig; import org.multiverse.stms.gamma.transactions.fat.FatFixedLengthGammaTxnFactory; public class LongRefReadConsistency_FatFixedLengthGammaTxn_StressTest extends LongRefReadConsistency_AbstractTest { private int refCount; private boolean poorMansReadConsistency; @Test public void poormansReadConsistency_with2Refs() { refCount = 2; poorMansReadConsistency = true; run(refCount); } @Test public void poormansReadConsistency_with4Refs() { refCount = 4; poorMansReadConsistency = true; run(refCount); } @Test public void poormansReadConsistency_with8Refs() { poorMansReadConsistency = true; refCount = 8; run(refCount); } @Test public void poormansReadConsistency_with16Refs() { poorMansReadConsistency = true; refCount = 16; run(refCount); } @Test public void poormansReadConsistency_with32Refs() { poorMansReadConsistency = true; refCount = 32; run(refCount); } @Test public void poormansReadConsistency_with64Refs() { poorMansReadConsistency = true; refCount = 64; run(refCount); } @Test public void richmansReadConsistency_with2Refs() { refCount = 2; poorMansReadConsistency = false; run(refCount); } @Test public void richmansReadConsistency_with4Refs() { refCount = 4; poorMansReadConsistency = false; run(refCount); } @Test public void richmansReadConsistency_with8Refs() { poorMansReadConsistency = false; refCount = 8; run(refCount); } @Test public void richmansReadConsistency_with16Refs() { poorMansReadConsistency = false; refCount = 16; run(refCount); } @Test public void richmansReadConsistency_with32Refs() { poorMansReadConsistency = false; refCount = 32; run(refCount); } @Test public void richmansReadConsistency_with64Refs() { poorMansReadConsistency = false; refCount = 64; run(refCount); } @Override protected TxnExecutor createReadBlock() { GammaTxnConfig config = new GammaTxnConfig(stm, refCount) .setSpeculative(false) .setDirtyCheckEnabled(false) .setMaximumPoorMansConflictScanLength(poorMansReadConsistency ? Integer.MAX_VALUE : 0); return new LeanGammaTxnExecutor(new FatFixedLengthGammaTxnFactory(config)); } @Override protected TxnExecutor createWriteBlock() { GammaTxnConfig config = new GammaTxnConfig(stm, refCount) .setDirtyCheckEnabled(false) .setSpeculative(false) .setMaximumPoorMansConflictScanLength(poorMansReadConsistency ? Integer.MAX_VALUE : 0); return new LeanGammaTxnExecutor(new FatFixedLengthGammaTxnFactory(config)); } }