void threadRead(String expected) { AtomicReference<String> result = new AtomicReference<>() ; ThreadTxn.threadTxnRead(transactional, ()-> { String s = transBlob.getString() ; result.set(s); }).run(); Assert.assertEquals(expected, result.get()); }
Objects.requireNonNull(action) ; ThreadAction threadAction = new ThreadAction(action) ; threadAction.trigger() ;
/** Create a {@code ThreadAction}. * @param action The main action run when {@link #run()} called. * @return ThreadAction */ public static ThreadAction create(Runnable action) { return create(null, action, null) ; }
private static ThreadAction create(Transactional trans, TxnType txnType, Runnable action, boolean isCommitBefore, boolean isCommitAfter) { return ThreadAction.create ( beforeAction(trans, txnType, isCommitBefore) , action , afterAction(trans, txnType, isCommitAfter) ) ; }
void threadRead(String expected) { AtomicReference<String> result = new AtomicReference<>() ; ThreadTxn.threadTxnRead(transactional, ()-> { String s = transBlob.getString() ; result.set(s); }).run(); Assert.assertEquals(expected, result.get()); }
@Test public void txn_coord_disable_writers_1() { AtomicInteger counter1 = new AtomicInteger(0) ; AtomicInteger counter2 = new AtomicInteger(0) ; txnMgr.blockWriters(); ThreadAction threadTxn1 = ThreadTxn.threadTxnRead(unit, ()->counter1.incrementAndGet()) ; threadTxn1.run() ; assertEquals(1, counter1.get()) ; }
@Test public void action_03() { AtomicInteger before = new AtomicInteger(0) ; AtomicInteger runnable = new AtomicInteger(0) ; AtomicInteger after = new AtomicInteger(0) ; ThreadAction action = ThreadAction.create(()->before.incrementAndGet(), ()->runnable.incrementAndGet(), ()->after.incrementAndGet()) ; action.run() ; assertEquals(1, before.get()) ; assertEquals(1, runnable.get()) ; assertEquals(1, after.get()) ; }
@Test public void txnThread_1() { ThreadAction t = ThreadTxn.threadTxnRead(counter, ()->{}) ; t.run(); }
@Test public void action_07() { AtomicInteger before = new AtomicInteger(0) ; AtomicInteger runnable = new AtomicInteger(0) ; AtomicInteger after = new AtomicInteger(0) ; ThreadAction action = ThreadAction.create(()->before.incrementAndGet(), ()->runnable.incrementAndGet() , ()->{ after.incrementAndGet(); bang() ; } ) ; action.run() ; assertEquals(1, before.get()) ; assertEquals(1, runnable.get()) ; assertEquals(1, after.get()) ; }
@Test public void txn_coord_disable_writers_1() { AtomicInteger counter1 = new AtomicInteger(0) ; AtomicInteger counter2 = new AtomicInteger(0) ; txnMgr.blockWriters(); ThreadAction threadTxn1 = ThreadTxn.threadTxnRead(unit, ()->counter1.incrementAndGet()) ; threadTxn1.run() ; assertEquals(1, counter1.get()) ; }
@Test public void action_04() { AtomicInteger before = new AtomicInteger(0) ; AtomicInteger runnable = new AtomicInteger(0) ; AtomicInteger after = new AtomicInteger(0) ; ThreadAction action = ThreadAction.create (()->{ before.incrementAndGet() ; bang() ; }, ()->runnable.incrementAndGet(), ()->after.incrementAndGet()) ; action.run() ; assertEquals(1, before.get()) ; assertEquals(0, runnable.get()) ; assertEquals(0, after.get()) ; }
@Test public void libTxnThread_1() { ThreadAction t = ThreadTxn.threadTxnRead(unit, ()->{}) ; t.run(); }
@Test(expected=TestThreadActionException.class) public void action_05() { AtomicInteger before = new AtomicInteger(0) ; AtomicInteger runnable = new AtomicInteger(0) ; AtomicInteger after = new AtomicInteger(0) ; ThreadAction action = ThreadAction.create(()->before.incrementAndGet(), ()->{ runnable.incrementAndGet() ; bang() ; } , ()->after.incrementAndGet()) ; action.run() ; assertEquals(1, before.get()) ; assertEquals(1, runnable.get()) ; assertEquals(0, after.get()) ; }
@Test public void libTxnThread_1() { ThreadAction t = ThreadTxn.threadTxnRead(unit, ()->{}) ; t.run(); }
@Test public void action_06() { AtomicInteger before = new AtomicInteger(0) ; AtomicInteger runnable = new AtomicInteger(0) ; AtomicInteger after = new AtomicInteger(0) ; ThreadAction action = ThreadAction.create(()->before.incrementAndGet(), ()->{ runnable.incrementAndGet() ; bang() ; } , ()->after.incrementAndGet()) ; try { action.run() ; } catch (TestThreadActionException ex) {} assertEquals(1, before.get()) ; assertEquals(1, runnable.get()) ; assertEquals(1, after.get()) ; }
@Test public void threadTrans_04() { Semaphore semaBefore1 = new Semaphore(0, true) ; Semaphore semaBefore2 = new Semaphore(0, true) ; Semaphore semaAfter = new Semaphore(0, true) ; ThreadAction async1 = threadRead("[04/1]", transInt, InitValue); ThreadAction async2 = threadRead("[04/2]", transInt, InitValue); ThreadAction async3 = threadRead("[04/3]", transInt, InitValue); Txn.executeWrite(transInt, transInt::inc); ThreadAction async4 = threadRead("[04/3]", transInt, InitValue+1); async1.run() ; Txn.executeWrite(transInt, transInt::inc); // ++ async2.run() ; async4.run() ; Txn.executeWrite(transInt, transInt::inc); // ++ async3.run() ; readTxn("[04/4]", transInt, InitValue+3) ; } }
@Test public void threadTrans_04() { Semaphore semaBefore1 = new Semaphore(0, true) ; Semaphore semaBefore2 = new Semaphore(0, true) ; Semaphore semaAfter = new Semaphore(0, true) ; ThreadAction async1 = threadRead("[04/1]", transInt, InitValue); ThreadAction async2 = threadRead("[04/2]", transInt, InitValue); ThreadAction async3 = threadRead("[04/3]", transInt, InitValue); Txn.executeWrite(transInt, transInt::inc); ThreadAction async4 = threadRead("[04/3]", transInt, InitValue+1); async1.run() ; Txn.executeWrite(transInt, transInt::inc); // ++ async2.run() ; async4.run() ; Txn.executeWrite(transInt, transInt::inc); // ++ async3.run() ; readTxn("[04/4]", transInt, InitValue+3) ; } }