package org.multiverse.stms.gamma; import org.junit.Before; import org.junit.Test; import org.multiverse.api.Txn; import org.multiverse.api.TxnExecutor; import org.multiverse.api.callables.TxnVoidCallable; import org.multiverse.stms.gamma.transactions.GammaTxn; import org.multiverse.stms.gamma.transactions.GammaTxnFactory; import static org.junit.Assert.*; import static org.multiverse.TestUtils.assertIsActive; import static org.multiverse.api.TxnThreadLocal.clearThreadLocalTxn; import static org.multiverse.api.TxnThreadLocal.getThreadLocalTxn; public class LeanGammaTxnExecutor_integrationTest { private GammaStm stm; @Before public void setUp() { clearThreadLocalTxn(); stm = new GammaStm(); } @Test public void whenExecutedThenTxnThreadLocalSet() { GammaTxnFactory transactionFactory = stm.newTxnFactoryBuilder().newTransactionFactory(); TxnExecutor executor = new LeanGammaTxnExecutor(transactionFactory); executor.execute(new TxnVoidCallable() { @Override public void call(Txn tx) throws Exception { assertNotNull(tx); assertIsActive((GammaTxn) tx); assertSame(tx, getThreadLocalTxn()); } }); assertNull(getThreadLocalTxn()); } }