@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()) ; }
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 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 txnThread_1() { ThreadAction t = ThreadTxn.threadTxnRead(counter, ()->{}) ; t.run(); }
@Test public void action_02() { AtomicInteger x = new AtomicInteger(0) ; ThreadAction action = ThreadAction.create(null, ()->x.incrementAndGet(), null) ; assertEquals(0, x.get()) ; action.run() ; assertEquals(1, x.get()) ; }
@Test(expected=AssertionError.class) public void libTxnThread_3() { ThreadAction t = ThreadTxn.threadTxnWrite(unit, ()-> fail("")) ; t.run() ; }
@Test(expected=AssertionError.class) public void txnThread_3() { ThreadAction t = ThreadTxn.threadTxnWrite(counter, ()-> fail("")) ; t.run() ; }
@Test public void threadTrans_02() { transInt.begin(ReadWrite.READ) ; threadRead("[02]", transInt, InitValue).run() ; transInt.end(); }
@Test public void threadTrans_02() { transInt.begin(ReadWrite.READ) ; threadRead("[02]", transInt, InitValue).run() ; transInt.end(); }
@Test public void txn_nested_13() { Txn.exec(counter, TxnType.READ_COMMITTED_PROMOTE, ()->{ // Does not block promote ThreadAction.create( ()->Txn.executeWrite(counter, ()->counter.inc()) ).run(); // Can promote outer. Txn.exec(counter, TxnType.WRITE, ()->{}); }); }
@Test(expected=JenaTransactionException.class) public void txn_nested_12() { Txn.exec(counter, TxnType.READ_PROMOTE, ()->{ // Block promote by doing a W txn on another thread. ThreadAction.create( ()->Txn.executeWrite(counter, ()->counter.inc()) ).run(); // Can not promote outer. Txn.exec(counter, TxnType.WRITE, ()->{}); }); }
@Test public void transObjectFile_7() { ThreadTxn.threadTxnWriteAbort(transactional, ()->{ long x1 = transBinData.write(bytes1) ; }).run() ; Txn.executeRead(transactional, ()->{ assertEquals(0L, transBinData.length()) ; }) ; }
@Test public void txn_threaded_01() { Txn.exec(counter, TxnType.READ_PROMOTE, ()->{ ThreadAction a = ThreadTxn.threadTxnWrite(counter, ()->{}); a.run(); // Blocks promotion. boolean b = counter.promote(); assertFalse(b); assertEquals(ReadWrite.READ, counter.transactionMode()); }); }
@Test public void txnThread_10() { long x1 = counter.get() ; ThreadAction t = ThreadTxn.threadTxnWrite(counter, ()->{ counter.inc() ;}) ; long x2 = counter.get() ; assertEquals("x2", x1, x2) ; t.run() ; long x3 = counter.get() ; assertEquals("x3", x1+1, x3) ; }
@Test public void libTxnThread_10() { long x1 = counter1.get() ; ThreadAction t = ThreadTxn.threadTxnWrite(unit, ()->{ counter1.inc() ;}) ; long x2 = counter1.get() ; assertEquals("x2", x1, x2) ; t.run() ; long x3 = counter1.get() ; assertEquals("x3", x1+1, x3) ; }
@Test public void libTxnThread_10() { long x1 = counter1.get() ; ThreadAction t = ThreadTxn.threadTxnWrite(unit, ()->{ counter1.inc() ;}) ; long x2 = counter1.get() ; assertEquals("x2", x1, x2) ; t.run() ; long x3 = counter1.get() ; assertEquals("x3", x1+1, x3) ; }
@Test public void libTxnThread_12() { long x1 = counter1.get() ; ThreadAction t = ThreadTxn.threadTxnRead(unit, () -> { long z1 = counter1.get() ; assertEquals("Thread", x1, z1) ; }) ; Txn.executeWrite(unit, ()->counter1.inc()) ; t.run() ; long x2 = counter1.get() ; assertEquals("after::", x1+1, x2) ; } }
@Test public void libTxnThread_12() { long x1 = counter1.get() ; ThreadAction t = ThreadTxn.threadTxnRead(unit, () -> { long z1 = counter1.get() ; assertEquals("Thread", x1, z1) ; }) ; Txn.executeWrite(unit, ()->counter1.inc()) ; t.run() ; long x2 = counter1.get() ; assertEquals("after::", x1+1, x2) ; } }
@Test public void libTxnThread_11() { long x1 = counter1.get() ; Txn.executeWrite(unit, ()->{ counter1.inc(); // Read the "before" state ThreadAction t = ThreadTxn.threadTxnRead(unit, ()->{ long z1 = counter1.get() ; assertEquals("Thread read", x1, z1) ; }) ; counter1.inc(); t.run(); }) ; long x2 = counter1.get() ; assertEquals("after", x1+2, x2) ; }