You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2018/01/04 20:46:20 UTC
[06/14] jena git commit: Fix to work with tests. Cleanup.
http://git-wip-us.apache.org/repos/asf/jena/blob/edab900a/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TransSystem.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TransSystem.java b/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TransSystem.java
deleted file mode 100644
index 3c3bb2e..0000000
--- a/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TransSystem.java
+++ /dev/null
@@ -1,674 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.tdb.extra ;
-
-import static java.lang.Math.max ;
-import static java.lang.Math.min ;
-import static java.lang.String.format ;
-import static org.apache.jena.tdb.transaction.TransTestLib.count ;
-
-import java.util.Iterator ;
-import java.util.concurrent.* ;
-import java.util.concurrent.atomic.AtomicInteger ;
-
-import org.apache.jena.atlas.lib.FileOps ;
-import org.apache.jena.atlas.lib.Lib ;
-import org.apache.jena.atlas.lib.RandomLib ;
-import org.apache.jena.atlas.lib.StrUtils ;
-import org.apache.jena.datatypes.xsd.XSDDatatype ;
-import org.apache.jena.graph.Node ;
-import org.apache.jena.graph.NodeFactory ;
-import org.apache.jena.query.* ;
-import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.rdf.model.Statement ;
-import org.apache.jena.sparql.core.DatasetGraph ;
-import org.apache.jena.sparql.core.Quad ;
-import org.apache.jena.sparql.sse.SSE ;
-import org.apache.jena.tdb.ConfigTest ;
-import org.apache.jena.tdb.StoreConnection ;
-import org.apache.jena.tdb.TDBException ;
-import org.apache.jena.tdb.base.block.FileMode ;
-import org.apache.jena.tdb.base.file.Location ;
-import org.apache.jena.tdb.sys.SystemTDB ;
-import org.apache.jena.tdb.transaction.DatasetGraphTxn ;
-import org.apache.jena.tdb.transaction.SysTxnState ;
-import org.apache.jena.tdb.transaction.TransactionManager ;
-import org.junit.AfterClass ;
-import org.junit.BeforeClass ;
-import org.slf4j.Logger ;
-import org.slf4j.LoggerFactory ;
-
-/** System testing of the transactions. */
-public class T_TransSystem
-{
- static { org.apache.jena.atlas.logging.LogCtl.setLog4j() ; }
- private static Logger log = LoggerFactory.getLogger(T_TransSystem.class) ;
-
- /* Notes:
- * MS Windows does not allow memory mapped files to be deleted during the run of a JVM.
- * This means we can't delete a database and reuse it's directory (see clean()).
- * Therefore, this test program this does not run on MS Windows 64 bit mode.
- */
-
- static boolean MEM = true ;
- static String location = true ? "/mnt/ssd1/tmp/DB163" : ConfigTest.getTestingDirDB() ; // Using an SSD here is very helpful
- //static String location = ConfigTest.getTestingDirDB() ; // Using an SSD here is very helpful
- static final Location LOC = MEM ? Location.mem() : Location.create(location) ;
-
- static {
- //SystemTDB.isWindows
- if ( false )
- SystemTDB.setFileMode(FileMode.direct) ;
-
- if ( SystemTDB.isWindows && SystemTDB.fileMode() == FileMode.mapped )
- log.error("**** Running with file mapped mode on MS Windows - expected test failure") ;
-
- FileOps.ensureDir(location) ;
- }
-
- private static boolean inlineProgress = false ; // Set true so that every transaction print a letter for what it does.
- private static boolean silent = false ; // No progress output
-
- static {
- //TransactionManager.DEBUG = inlineProgress ; // This cause one character details to be printed.
- if ( TransactionManager.DEBUG != inlineProgress )
- log.warn("TransactionManager.DEBUG != inlineProgress (need change source code to make DEBUG not final)" ) ;
-
-
- // Various flags (may not still exist)
- //ObjectFileStorage.logging = true ;
- // FileBase.DEBUG = inlineProgress ;
- //NodeTableTrans.FIXUP = true ;
- //NodeTableTrans.APPEND_LOG = true ;
- // See also log4j.properties.
- }
-
- static final int Iterations = MEM ? 10000 : 10000 ;
- // Output style.
- static boolean logging = false ;
-
- // XXX Switch to threads choosing a mix of actions.
- // Jena-163 - good number choice?
- // 1/0/2 8/10 3/3/10 4
-
- static final int numReaderTasks = 5 ; // 5
- static final int numWriterTasksA = 3 ; // 3
- static final int numWriterTasksC = 5 ; // 5
-
- static final int readerSeqRepeats = 4 ; // 8
- static final int readerMaxPause = 20 ; // 20
-
- static final int writerAbortSeqRepeats = 4 ; // 4
- static final int writerCommitSeqRepeats = 4 ; // 4
- static final int writerMaxPause = 20 ; // 20
-
- static final int numThreadsInPool = 4 ; // If <= 0 then use an unbounded thread pool.
- private static ExecutorService execService = null ;
-
- private static int iteration = 0 ;
- private static int numIterationsPerBlock = 100 ;
- private static int colCount = 0 ;
- private static int colMax = 200 ;
-
- // Queue treads starting
- private static Semaphore startPoint ;
- // Queue threads finishing.
- private static CountDownLatch doneSignal ;
-
- /** TODO
- * Ideally: better mixes of R, C and A.
- * One thread, processes a list of RCA choices.
- * Different mixes to different threads.
- *
- * Random data
- */
-
- public static void main(String...args) throws InterruptedException
- {
- String x = (MEM?"memory":"disk["+SystemTDB.fileMode()+"]") ;
-
- // Make colMax >= numIterationsPerBlock in detailEveryTransaction = false mode
- if ( !inlineProgress )
- colMax = numIterationsPerBlock ;
-
- if ( logging )
- log.info("START ({}, {} iterations)", x, Iterations) ;
- else
- printf("START (%s, %d iterations)\n", x, Iterations) ;
-
- for ( iteration = 0 ; iteration < Iterations ; iteration++ )
- {
- clean() ;
-
- execService = ( numThreadsInPool > 0 )
- ? Executors.newFixedThreadPool(numThreadsInPool)
- : Executors.newCachedThreadPool() ;
-
- startTestIteration() ;
-
- try {
- new T_TransSystem().manyReaderAndOneWriter() ;
- } catch (TDBException ex)
- {
- System.err.println() ;
- ex.printStackTrace(System.err) ;
- System.err.println() ;
- }
-
- // Should already be shutdown.
- execService.shutdown() ;
- if ( ! execService.awaitTermination(30, TimeUnit.SECONDS) )
- System.err.println("Shutdown didn't complete in time") ;
- endTestIteration() ;
- }
-
- endTest() ;
- if (logging)
- log.info("FINISH ({})", iteration) ;
- else
- println("FINISH") ;
- }
-
- static class Reader implements Callable<Object>
- {
- private final int repeats ;
- private final int maxpause ;
- private final StoreConnection sConn ;
-
- Reader(StoreConnection sConn, int numSeqRepeats, int pause)
- {
- this.repeats = numSeqRepeats ;
- this.maxpause = pause ;
- this.sConn = sConn ;
- }
-
- @Override
- public Object call()
- {
- start() ;
- DatasetGraphTxn dsg = null ;
- try
- {
- int id = gen.incrementAndGet() ;
- for (int i = 0; i < repeats; i++)
- {
- dsg = sConn.begin(ReadWrite.READ) ;
- log.debug("reader start " + id + "/" + i) ;
-
- // Original T_TransSystem code
-// int x1 = count("SELECT * { ?s ?p ?o }", dsg) ;
-// pause(maxpause) ;
-// int x2 = count("SELECT * { ?s ?p ?o }", dsg) ;
-// if (x1 != x2) log.warn(format("READER: %s Change seen: %d/%d : id=%d: i=%d",
-// dsg.getTransaction().getLabel(), x1, x2, id, i)) ;
-
- // Add in an abort.
- long start = System.currentTimeMillis();
- int x1 = count("SELECT * { ?s ?p ?o }", dsg) ;
- pause(maxpause) ;
-
- String qs1 = StrUtils.strjoinNL("PREFIX afn: <http://jena.apache.org/ARQ/function#>",
- "SELECT * { {FILTER(afn:wait(10))} UNION {?s ?p ?o }}") ;
- String qs2 = StrUtils.strjoinNL("DESCRIBE ?s { ?s ?p ?o }") ;
- try {
- //countWithAbort(qs1, dsg, 5) ;
- describeWithAbort(qs2, dsg, -1) ;
- } catch (QueryCancelledException e)
- {
- txn("X", dsg);
- }
-
- log.debug("reader finish " + id + "/" + i) ;
- dsg.end() ;
- txn("R", dsg) ;
- dsg = null ;
- }
- return null ;
- } catch (RuntimeException ex)
- {
- System.out.flush() ;
- System.err.println() ;
- ex.printStackTrace(System.err) ;
- if ( dsg != null )
- {
- dsg.abort() ;
- dsg.end() ;
- txn("E", dsg) ;
- dsg = null ;
- }
- System.exit(2) ;
- return null ;
- }
- finally { doneSignal.countDown(); }
- }
- }
-
- public static int countWithAbort(String queryStr, DatasetGraph dsg, long abortTime)
- {
- int counter = 0 ;
- Query query = QueryFactory.create(queryStr, Syntax.syntaxARQ) ;
- try(QueryExecution qExec = QueryExecutionFactory.create(query, DatasetFactory.wrap(dsg))) {
- qExec.setTimeout(abortTime);
- ResultSet rs = qExec.execSelect() ;
- for (; rs.hasNext() ; )
- {
- rs.nextBinding() ;
- counter++ ;
- }
- return counter ;
- }
- }
-
- public static int describeWithAbort(String queryStr, DatasetGraph dsg, long abortTime)
- {
- int counter = 0 ;
- Query query = QueryFactory.create(queryStr, Syntax.syntaxARQ) ;
- try(QueryExecution qExec = QueryExecutionFactory.create(query, DatasetFactory.wrap(dsg))) {
- qExec.setTimeout(abortTime);
- Model model = qExec.execDescribe();
- //ResultSet rs = qExec.execSelect() ;
- for(Iterator<Statement> stmIterator = model.listStatements(); stmIterator.hasNext();) {
- stmIterator.next();
- counter++;
- }
- return counter ;
- }
- }
-
-
- static class Writer implements Callable<Object>
- {
- private final int repeats ;
- private final int maxpause ;
- private final StoreConnection sConn ;
- private final boolean commit ;
-
- protected Writer(StoreConnection sConn, int numSeqRepeats, int pause, boolean commit)
- {
- this.repeats = numSeqRepeats ;
- this.maxpause = pause ;
- this.sConn = sConn ;
- this.commit = commit ;
- }
-
- @Override
- public Object call()
- {
- start() ;
-
- DatasetGraphTxn dsg = null ;
- try {
- int id = gen.incrementAndGet() ;
- for ( int i = 0 ; i < repeats ; i++ )
- {
- dsg = sConn.begin(ReadWrite.WRITE) ;
- log.debug("writer start "+id+"/"+i) ;
-
- int x1 = count("SELECT * { ?s ?p ?o }", dsg) ;
- int z = change(dsg, id, i) ;
- pause(maxpause) ;
- int x2 = count("SELECT * { ?s ?p ?o }", dsg) ;
- if ( x1+z != x2 )
- {
- TransactionManager txnMgr = dsg.getTransaction().getTxnMgr() ;
- SysTxnState state = txnMgr.state() ;
- String label = dsg.getTransaction().getLabel() ;
- log.warn(format("WRITER: %s Change seen: %d + %d != %d : id=%d: i=%d", label, x1, z, x2, id, i)) ;
- log.warn(state.toString()) ;
- dsg.abort() ;
- dsg.end() ;
- dsg = null ;
- return null ;
- }
- if (commit)
- {
- dsg.commit() ;
- txn("C", dsg) ;
- }
- else
- {
- dsg.abort() ;
- txn("A", dsg) ;
- }
- SysTxnState state = sConn.getTransMgrState() ;
- log.debug(state.toString()) ;
- log.debug("writer finish "+id+"/"+i) ;
- Lib.sleep(20) ;
- dsg.end() ;
- dsg = null ;
- }
- return null ;
- }
- catch (RuntimeException ex)
- {
- txn("E", dsg) ;
- System.err.println() ;
- ex.printStackTrace(System.err) ;
- System.exit(1) ;
- if ( dsg != null )
- {
- dsg.abort() ;
- dsg.end() ;
- dsg = null ;
- }
-
- return null ;
- }
- finally { doneSignal.countDown(); }
- }
-
- // return the delta.
- protected int change(DatasetGraphTxn dsg, int id, int i)
- {
- return changeProc(dsg, id, i) ;
- }
- }
-
- public static void start()
- {
- if ( startPoint != null )
- {
- try { startPoint.acquire() ; }
- catch (InterruptedException e) { e.printStackTrace(); }
- }
- pause(10) ;
- }
-
- @BeforeClass
- public static void beforeClass()
- {
- if ( ! LOC.isMem() )
- FileOps.clearDirectory(LOC.getDirectoryPath()) ;
- StoreConnection.reset() ;
- StoreConnection sConn = StoreConnection.make(LOC) ;
- DatasetGraphTxn dsg = sConn.begin(ReadWrite.WRITE) ;
- dsg.add(q1) ;
- dsg.add(q2) ;
- initCount = 2 ;
- dsg.commit() ;
- dsg.end() ;
- }
-
- @AfterClass
- public static void afterClass() {}
-
- private static void clean()
- {
- StoreConnection.release(LOC) ;
- if ( ! LOC.isMem() )
- {
- FileOps.clearDirectory(LOC.getDirectoryPath()) ;
- // Clean because it's new.
- //LOC = Location.create(ConfigTest.getTestingDirUnique()) ;
- }
- }
-
- private StoreConnection sConn ;
- protected synchronized StoreConnection getStoreConnection()
- {
-
-
- StoreConnection sConn = StoreConnection.make(LOC) ;
- //sConn.getTransMgr().recording(true) ;
- return sConn ;
- }
-
- public T_TransSystem() {}
-
- //@Test
- public void manyRead()
- {
- final StoreConnection sConn = getStoreConnection() ;
- Callable<?> proc = new Reader(sConn, 50, 200) ; // Number of repeats, max pause
-
- for ( int i = 0 ; i < 5 ; i++ )
- execService.submit(proc) ;
- try
- {
- execService.shutdown() ;
- execService.awaitTermination(100, TimeUnit.SECONDS) ;
- } catch (InterruptedException e)
- {
- e.printStackTrace(System.err) ;
- }
- }
-
- //@Test
- public void manyReaderAndOneWriter()
- {
- final StoreConnection sConn = getStoreConnection() ;
-
- Callable<?> procR = new Reader(sConn, readerSeqRepeats, readerMaxPause) ; // Number of repeats, max pause
- Callable<?> procW_a = new Writer(sConn, writerAbortSeqRepeats, writerMaxPause, false) ; // Number of repeats, max pause, commit.
- Callable<?> procW_c = new Writer(sConn, writerCommitSeqRepeats, writerMaxPause, true) ; // Number of repeats, max pause, commit.
-
- // All threads start and queue on this - otherwise the thread start up as the executeor is loaded.
- // That can lead to uninterstin sequences of actions.
- startPoint = null ; //new Semaphore(0) ;
-
- int RN1 = 1 ;
- int RN2 = min(1, numReaderTasks) ;
- int RN3 = max(numReaderTasks - RN1 - RN2,0);
-
- int WC1 = numWriterTasksC/2 ;
- int WC2 = 2 ;
- int WC3 = numWriterTasksC - WC1 - WC2 ;
-
- int WA1 = numWriterTasksA/2 ;
- int WA2 = numWriterTasksA - WA1 ;
-
- //System.out.println(RN1 + " " + RN2 + " " + RN3 + " " + WC1 + " " + WC2 + " " + WA1 + " " + WA2) ;
- int N = max(RN1,0) + max(RN2,0) + max(RN3,0) + max(WC1,0) + max(WC2,0) + max(WA1,0) + max(WA2,0) ;
- //System.out.println(N) ;
- doneSignal = new CountDownLatch(N) ;
-
- // Define the query mix.
- submit(execService, procW_c, WC1, "COMMIT-") ;
- submit(execService, procW_a, WA1, "ABORT-") ;
- submit(execService, procR, RN1, "READ-") ;
- submit(execService, procW_c, WC2, "COMMIT-") ;
- submit(execService, procR, RN2, "READ-") ;
- submit(execService, procW_a, WA2, "ABORT-") ;
- submit(execService, procR, RN3, "READ-") ;
- submit(execService, procW_c, WC3, "COMMIT-") ;
-
- if ( startPoint != null )
- // Let them all go.
- startPoint.release(4000) ;
-
- // Wait until all done.
- try { doneSignal.await() ; }
- catch (InterruptedException e) { e.printStackTrace(System.err) ; }
-
- try {
- // This is an orderly shutdown so followed by the awaitTermination
- // should wait for all threads, making the CountDownLatch unnecessary.
- // CountDownLatch added as a precaution while searching for JENA-163
- // which seems to see occasional uncleared out node journal files.
- execService.shutdown() ;
- if ( ! execService.awaitTermination(100, TimeUnit.SECONDS) )
- System.err.println("Bad shutdown") ;
- } catch (InterruptedException e)
- {
- e.printStackTrace(System.err) ;
- }
- }
-
- static class Callable2Runnable<T> implements Runnable
- {
- private Callable<T> callable ;
-
- Callable2Runnable(Callable<T> callable) { this.callable = callable ; }
-
- @Override public void run() { try { callable.call() ; } catch (Exception ex) {} }
- }
-
- private static int counter = 0 ;
- private <T> void submit(ExecutorService execService, Callable<T> proc, int numTasks, String label)
- {
- for ( int i = 0 ; i < numTasks ; i++ )
- {
- execService.submit(proc) ;
-// counter++ ;
-// Thread t = new Thread(new Callable2Runnable<T>(proc), label+counter) ;
-// t.start();
- }
- }
-
- static int changeProc(DatasetGraphTxn dsg, int id, int i)
- {
- int count = 0 ;
- int maxN = 500 ;
- int N = RandomLib.qrandom.nextInt(maxN) ;
- for ( int j = 0 ; j < N; j++ )
- {
- Quad q = genQuad(id*maxN+j) ;
- if ( ! dsg.contains(q) )
- {
- dsg.add(q) ;
- count++ ;
- }
- }
- log.debug("Change = "+dsg.getDefaultGraph().size()) ;
- return count ;
- }
-
- static void pause(int maxInternal)
- {
- int x = (int)Math.round(Math.random()*maxInternal) ;
- Lib.sleep(x) ;
- }
-
- static Quad genQuad(int value)
- {
- Node g1 = q.getGraph() ;
- int n1 = (int)Math.round(Math.random()*10000) ;
- int n2 = (int)Math.round(Math.random()*10000) ;
-
- Node g = Quad.defaultGraphNodeGenerated ; // urn:x-arq:DefaultGraphNode
- Node s = NodeFactory.createURI("S") ;
- Node p = NodeFactory.createURI("P"+value) ;
- // Integer - that gets inlined.
- Node o = NodeFactory.createLiteral(Integer.toString(value), XSDDatatype.XSDinteger) ;
- return new Quad(g,s,p,o) ;
- }
-
- static void txn(String label, DatasetGraphTxn dsg )
- {
- if ( ! inlineProgress )
- return ;
- checkCol() ;
- print(label) ;
- //print("["+dsg.getTransaction().getTxnId()+"]") ;
- colCount += label.length() ;
- }
-
- private static void startTestIteration()
- {
- checkCol() ;
- if ( iteration%numIterationsPerBlock == 0 )
- {
- if ( colCount != 0 )
- {
- println() ;
- colCount = 0 ;
- }
-
- printf("%03d: ", iteration) ;
- if ( inlineProgress )
- println() ;
- }
- }
-
- private static void endTestIteration()
- {
- if ( ! inlineProgress )
- {
- checkCol() ;
- printf(".") ;
- colCount += 1 ;
- }
- else
- {
- println() ;
- colCount = 0 ;
- }
- }
-
- private static void checkCol()
- {
- if ( colCount == colMax )
- {
- println() ;
- colCount = 0 ;
- }
- }
-
- private static void endTest()
- {
- if ( colCount > 0 || iteration%numIterationsPerBlock != 0 )
- {
- println() ;
- colCount = 0 ;
- }
- println() ;
- }
-
- private static void print(String str)
- {
- if ( silent ) return ;
- System.out.print(str) ;
- }
-
- private static void println(String string)
- {
- if ( silent ) return ;
- print(string) ;
- println() ;
- }
-
- private static void println()
- {
- if ( silent ) return ;
- printf("\n") ;
- System.out.flush() ;
- }
-
- private static void printf(String string, Object...args)
- {
- if ( silent ) return ;
- System.out.printf(string, args) ;
- }
-
- static Quad q = SSE.parseQuad("(_ <s> <p> <o>) ") ;
-
- static Quad q1 = SSE.parseQuad("(_ <s> <p> <o1>)") ;
-
- static Quad q2 = SSE.parseQuad("(_ <s> <p> <o2>)") ;
-
- static Quad q3 = SSE.parseQuad("(_ <s> <p> <o3>)") ;
-
- static Quad q4 = SSE.parseQuad("(_ <s> <p> <o4>)") ;
-
- private static int initCount = -1 ;
-
- //static final Location LOC = Location.create(ConfigTest.getTestingDirDB()) ;
- static final AtomicInteger gen = new AtomicInteger() ;
-
-}
http://git-wip-us.apache.org/repos/asf/jena/blob/edab900a/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TransSystemMultiDatasets.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TransSystemMultiDatasets.java b/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TransSystemMultiDatasets.java
deleted file mode 100644
index c668a59..0000000
--- a/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TransSystemMultiDatasets.java
+++ /dev/null
@@ -1,553 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.tdb.extra;
-
-import static java.lang.String.format ;
-import static org.apache.jena.tdb.transaction.TransTestLib.count ;
-
-import java.io.File ;
-import java.util.ArrayList ;
-import java.util.Random ;
-import java.util.concurrent.Callable ;
-import java.util.concurrent.ExecutorService ;
-import java.util.concurrent.Executors ;
-import java.util.concurrent.TimeUnit ;
-import java.util.concurrent.atomic.AtomicInteger ;
-
-import org.apache.jena.atlas.lib.FileOps ;
-import org.apache.jena.atlas.lib.Lib ;
-import org.apache.jena.atlas.lib.RandomLib ;
-import org.apache.jena.datatypes.xsd.XSDDatatype ;
-import org.apache.jena.graph.Node ;
-import org.apache.jena.graph.NodeFactory ;
-import org.apache.jena.query.ReadWrite ;
-import org.apache.jena.shared.Lock ;
-import org.apache.jena.sparql.core.DatasetGraph ;
-import org.apache.jena.sparql.core.Quad ;
-import org.apache.jena.sparql.sse.SSE ;
-import org.apache.jena.tdb.ConfigTest ;
-import org.apache.jena.tdb.StoreConnection ;
-import org.apache.jena.tdb.TDBFactory ;
-import org.apache.jena.tdb.base.block.FileMode ;
-import org.apache.jena.tdb.base.file.Location ;
-import org.apache.jena.tdb.sys.SystemTDB ;
-import org.apache.jena.tdb.transaction.DatasetGraphTxn ;
-import org.apache.jena.tdb.transaction.SysTxnState ;
-import org.apache.jena.tdb.transaction.TransactionManager ;
-import org.junit.AfterClass ;
-import org.junit.BeforeClass ;
-import org.slf4j.Logger ;
-import org.slf4j.LoggerFactory ;
-
-/** System testing using multiple datasets of the transactions. */
-public class T_TransSystemMultiDatasets
-{
- // Use this to flip between FileMode.direct and FileMode.mapped
- static { SystemTDB.setFileMode(FileMode.mapped) ; }
- static { org.apache.jena.atlas.logging.LogCtl.setLog4j() ; }
- private static Logger log = LoggerFactory.getLogger(T_TransSystemMultiDatasets.class) ;
-
- static boolean MEM = false ;
- static boolean USE_TRANSACTIONS = false ;
-
- static final int NUM_DATASETS = 3 ;
- static final ArrayList<Location> LOCATIONS = new ArrayList<>() ;
-
- static {
- for ( int i = 0; i < NUM_DATASETS; i++ )
- LOCATIONS.add(createLocation()) ;
- }
-
- private static int count_datasets = 0 ;
- static Location createLocation() {
- return MEM ? Location.mem() : Location.create(ConfigTest.getTestingDirDB() + File.separator + "DB-" + ++count_datasets) ;
- }
-
- static final int Iterations = MEM ? 1000 : 100 ;
- // Output style.
- static boolean inlineProgress = true ; // (! log.isDebugEnabled()) && Iterations > 20 ;
- static boolean logging = ! inlineProgress ; // (! log.isDebugEnabled()) && Iterations > 20 ;
-
- static final int numReaderTasks = 10 ;
- static final int numWriterTasksA = 10 ;
- static final int numWriterTasksC = 10 ;
-
- static final int readerSeqRepeats = 8 ;
- static final int readerMaxPause = 50 ;
-
- static final int writerAbortSeqRepeats = 4 ;
- static final int writerCommitSeqRepeats = 4 ;
- static final int writerMaxPause = 25 ;
-
-
- public static void main(String...args)
- {
- if ( logging )
- log.info("START ("+ (MEM?"memory":"disk") + ", {} iterations)", Iterations) ;
- else
- printf("START (%s, %d iterations)\n", (MEM?"memory":"disk"), Iterations) ;
-
- int N = (Iterations < 10) ? 1 : Iterations / 10 ;
- N = Math.min(N, 100) ;
- int i ;
-
- for ( i = 0 ; i < Iterations ; i++ )
- {
- clean() ;
-
- if (!inlineProgress && logging)
- log.info(format("Iteration: %d\n", i)) ;
- if ( inlineProgress )
- {
- if ( i%N == 0 )
- printf("%03d: ",i) ;
- printf(".") ;
- if ( i%N == (N-1) )
- println() ;
- }
- new T_TransSystemMultiDatasets().manyReaderAndOneWriter() ;
- }
- if ( inlineProgress )
- {
- if ( i%N != 0 )
- System.out.println() ;
- println() ;
- printf("DONE (%03d)\n",i) ;
- }
- if (logging)
- log.info("FINISH ({})", i) ;
- else
- printf("FINISH") ;
- }
-
- private static void clean()
- {
- for ( Location location : LOCATIONS ) {
- StoreConnection.release(location) ;
- if ( ! location.isMem() )
- FileOps.clearDirectory(location.getDirectoryPath()) ;
- }
- }
-
- static class ReaderTx implements Callable<Object>
- {
- private final int repeats ;
- private final int maxpause ;
- private final T_TransSystemMultiDatasets tts ;
-
- ReaderTx(T_TransSystemMultiDatasets tts, int numSeqRepeats, int pause)
- {
- this.repeats = numSeqRepeats ;
- this.maxpause = pause ;
- this.tts = tts ;
- }
-
- @Override
- public Object call()
- {
- StoreConnection sConn = tts.getStoreConnection() ;
- DatasetGraphTxn dsg = null ;
- try
- {
- int id = gen.incrementAndGet() ;
- for (int i = 0; i < repeats; i++)
- {
- dsg = sConn.begin(ReadWrite.READ) ;
- log.debug("reader start " + id + "/" + i) ;
-
- int x1 = count("SELECT * { ?s ?p ?o }", dsg) ;
- pause(maxpause) ;
- int x2 = count("SELECT * { ?s ?p ?o }", dsg) ;
- // Eclispe Kepler (3.4) bug - otherwise the dsg.end() below
- // gets a warning ("The variable dsg can only be null at this location")/
- // which is wrong.
- dsg.getClass() ;
- if ( x1 != x2 )
- log.warn(format("READER: %s Change seen: %d/%d : id=%d: i=%d", dsg.getTransaction().getLabel(),
- x1, x2, id, i)) ;
- dsg.end() ;
- log.debug("reader finish " + id + "/" + i) ;
- dsg = null ;
- }
- return null ;
- } catch (RuntimeException ex)
- {
- ex.printStackTrace(System.err) ;
- if ( dsg != null )
- {
- dsg.abort() ;
- dsg.end() ;
- dsg = null ;
- }
- return null ;
- }
- }
- }
-
- static abstract class WriterTx implements Callable<Object>
- {
- private final int repeats ;
- private final int maxpause ;
- private final T_TransSystemMultiDatasets tts ;
- private final boolean commit ;
-
- protected WriterTx(T_TransSystemMultiDatasets tts, int numSeqRepeats, int pause, boolean commit)
- {
- this.repeats = numSeqRepeats ;
- this.maxpause = pause ;
- this.tts = tts ;
- this.commit = commit ;
- }
-
- @Override
- public Object call()
- {
- StoreConnection sConn = tts.getStoreConnection() ;
- DatasetGraphTxn dsg = null ;
- try {
- int id = gen.incrementAndGet() ;
- for ( int i = 0 ; i < repeats ; i++ )
- {
- log.debug("writer start "+id+"/"+i) ;
- dsg = sConn.begin(ReadWrite.WRITE) ;
-
- int x1 = count("SELECT * { ?s ?p ?o }", dsg) ;
- int z = change(dsg, id, i) ;
- pause(maxpause) ;
- int x2 = count("SELECT * { ?s ?p ?o }", dsg) ;
- if ( x1+z != x2 )
- {
- TransactionManager txnMgr = dsg.getTransaction().getTxnMgr() ;
- SysTxnState state = txnMgr.state() ;
- String label = dsg.getTransaction().getLabel() ;
- log.warn(format("WRITER: %s Change seen: %d + %d != %d : id=%d: i=%d", label, x1, z, x2, id, i)) ;
- log.warn(state.toString()) ;
- dsg.abort() ;
- dsg.end() ;
- dsg = null ;
- return null ;
- }
- if (commit)
- dsg.commit() ;
- else
- dsg.abort() ;
- SysTxnState state = sConn.getTransMgrState() ;
- log.debug(state.toString()) ;
- log.debug("writer finish "+id+"/"+i) ;
- dsg.end() ;
- dsg = null ;
- }
- return null ;
- }
- catch (RuntimeException ex)
- {
- ex.printStackTrace(System.err) ;
- if ( dsg != null )
- {
- dsg.abort() ;
- dsg.end() ;
- dsg = null ;
- }
- return null ;
- }
- }
-
- // return the delta.
- protected abstract int change(DatasetGraphTxn dsg, int id, int i) ;
- }
-
- static class Reader implements Callable<Object>
- {
- private final int repeats ;
- private final int maxpause ;
- private final T_TransSystemMultiDatasets tts ;
-
- Reader(T_TransSystemMultiDatasets tts, int numSeqRepeats, int pause)
- {
- this.repeats = numSeqRepeats ;
- this.maxpause = pause ;
- this.tts = tts ;
- }
-
- @Override
- public Object call()
- {
- DatasetGraph dsg = null ;
- Lock lock = null ;
- try
- {
- dsg = tts.getDatasetGraph() ;
- lock = dsg.getLock() ;
- int id = gen.incrementAndGet() ;
- for (int i = 0; i < repeats; i++)
- {
- try {
- lock.enterCriticalSection(Lock.READ) ;
- log.debug("reader start " + id + "/" + i) ;
-
- int x1 = count("SELECT * { ?s ?p ?o }", dsg) ;
- pause(maxpause) ;
- int x2 = count("SELECT * { ?s ?p ?o }", dsg) ;
- if (x1 != x2) log.warn(format("READER: %s Change seen: %d/%d : id=%d: i=%d",
- "read-" + i, x1, x2, id, i)) ;
- log.debug("reader finish " + id + "/" + i) ;
- } catch (RuntimeException ex)
- {
- log.debug("reader error " + id + "/" + i) ;
- ex.printStackTrace() ;
- } finally {
- lock.leaveCriticalSection() ;
- }
- }
- return null ;
- } catch (RuntimeException ex)
- {
- ex.printStackTrace(System.err) ;
- return null ;
- }
- }
- }
-
- static abstract class Writer implements Callable<Object>
- {
- private final int repeats ;
- private final int maxpause ;
- private final T_TransSystemMultiDatasets tts ;
-
- protected Writer(T_TransSystemMultiDatasets tts, int numSeqRepeats, int pause)
- {
- this.repeats = numSeqRepeats ;
- this.maxpause = pause ;
- this.tts = tts ;
- }
-
- @Override
- public Object call()
- {
- DatasetGraph dsg = null ;
- Lock lock = null ;
- try {
- dsg = tts.getDatasetGraph() ;
- lock = dsg.getLock() ;
- int id = gen.incrementAndGet() ;
- for ( int i = 0 ; i < repeats ; i++ )
- {
- try {
- lock.enterCriticalSection(Lock.WRITE) ;
- log.debug("writer start "+id+"/"+i) ;
-
- int x1 = count("SELECT * { ?s ?p ?o }", dsg) ;
- int z = change(dsg, id, i) ;
- pause(maxpause) ;
- int x2 = count("SELECT * { ?s ?p ?o }", dsg) ;
- if ( x1+z != x2 )
- {
- log.warn(format("WRITER: %s Change seen: %d + %d != %d : id=%d: i=%d", "write-" + i, x1, z, x2, id, i)) ;
- return null ;
- }
- log.debug("writer finish "+id+"/"+i) ;
- } catch (RuntimeException ex)
- {
- log.debug("writer error "+id+"/"+i) ;
- System.err.println(ex.getMessage()) ;
- ex.printStackTrace() ;
- } finally {
- lock.leaveCriticalSection() ;
- }
- }
- return null ;
- }
- catch (RuntimeException ex)
- {
- ex.printStackTrace(System.err) ;
- return null ;
- }
- }
-
- // return the delta.
- protected abstract int change(DatasetGraph dsg, int id, int i) ;
- }
-
- @BeforeClass
- public static void beforeClass()
- {
- for ( Location location : LOCATIONS ) {
- if ( ! location.isMem() )
- FileOps.clearDirectory(location.getDirectoryPath()) ;
- }
- StoreConnection.reset() ;
- }
-
- @AfterClass
- public static void afterClass() {}
-
- private StoreConnection sConn ;
- private static Random random = new Random(System.currentTimeMillis()) ;
-
- protected synchronized StoreConnection getStoreConnection()
- {
- StoreConnection sConn = StoreConnection.make(LOCATIONS.get(random.nextInt(NUM_DATASETS))) ;
- //sConn.getTransMgr().recording(true) ;
- return sConn ;
- }
-
- protected synchronized DatasetGraph getDatasetGraph()
- {
- DatasetGraph dsg = TDBFactory.createDatasetGraph(LOCATIONS.get(random.nextInt(NUM_DATASETS))) ;
-
- if ( dsg == null )
- throw new RuntimeException("DatasetGraph is null!") ;
-
- return dsg ;
- }
-
- public T_TransSystemMultiDatasets() {}
-
- //@Test
- public void manyRead()
- {
- final StoreConnection sConn = getStoreConnection() ;
- Callable<?> proc = new ReaderTx(this, 50, 200) ; // Number of repeats, max pause
-
- for ( int i = 0 ; i < 5 ; i++ )
- execService.submit(proc) ;
- try
- {
- execService.shutdown() ;
- execService.awaitTermination(100, TimeUnit.SECONDS) ;
- } catch (InterruptedException e)
- {
- e.printStackTrace();
- }
- }
-
- //@Test
- public void manyReaderAndOneWriter()
- {
- Callable<?> procRTx = new ReaderTx(this, readerSeqRepeats, readerMaxPause) ; // Number of repeats, max pause
- Callable<?> procWTx_a = new WriterTx(this, writerAbortSeqRepeats, writerMaxPause, false) // Number of repeats, max pause, commit.
- {
- @Override
- protected int change(DatasetGraphTxn dsg, int id, int i)
- { return changeProc(dsg, id, i) ; }
- } ;
- Callable<?> procWTx_c = new WriterTx(this, writerCommitSeqRepeats, writerMaxPause, true) // Number of repeats, max pause, commit.
- {
- @Override
- protected int change(DatasetGraphTxn dsg, int id, int i)
- { return changeProc(dsg, id, i) ; }
- } ;
-
- Callable<?> procR = new Reader(this, readerSeqRepeats, readerMaxPause) ;
- Callable<?> procW = new Writer(this, writerCommitSeqRepeats, writerMaxPause)
- {
- @Override
- protected int change(DatasetGraph dsg, int id, int i)
- { return changeProc(dsg, id, i) ; }
- } ;
-
- if ( USE_TRANSACTIONS ) {
- submit(execService, procRTx, numReaderTasks) ;
- submit(execService, procWTx_c, numWriterTasksC) ;
- submit(execService, procWTx_a, numWriterTasksA) ;
- } else {
- submit(execService, procR, numReaderTasks) ;
- submit(execService, procW, numWriterTasksC) ;
- }
-
- try
- {
- execService.shutdown() ;
- execService.awaitTermination(100, TimeUnit.SECONDS) ;
- } catch (InterruptedException e)
- {
- e.printStackTrace();
- }
- }
-
- private void submit(ExecutorService execService2, Callable<?> proc, int numTasks)
- {
- for ( int i = 0 ; i < numTasks ; i++ )
- execService.submit(proc) ;
- }
-
- static int changeProc(DatasetGraph dsg, int id, int i)
- {
- int count = 0 ;
- int maxN = 500 ;
- int N = RandomLib.qrandom.nextInt(maxN) ;
- for ( int j = 0 ; j < N; j++ )
- {
- Quad q = genQuad(id*maxN+j) ;
- if ( ! dsg.contains(q) )
- {
- dsg.add(q) ;
- count++ ;
- }
- }
- log.debug("Change = "+dsg.getDefaultGraph().size()) ;
- return count ;
- }
-
- static void pause(int maxInternal)
- {
- int x = (int)Math.round(Math.random()*maxInternal) ;
- Lib.sleep(x) ;
- }
-
- static Quad genQuad(int value)
- {
- Quad q1 = SSE.parseQuad("(_ <s> <p> <o>)") ;
- Node g1 = q.getGraph() ;
-
- Node g = Quad.defaultGraphNodeGenerated ; // urn:x-arq:DefaultGraphNode
- Node s = NodeFactory.createURI("S") ;
- Node p = NodeFactory.createURI("P") ;
- Node o = NodeFactory.createLiteral(Integer.toString(value), XSDDatatype.XSDinteger) ;
- return new Quad(g,s,p,o) ;
- }
-
- private static void println()
- {
- printf("\n") ; System.out.flush() ;
- }
-
- private static void printf(String string, Object...args)
- {
- System.out.printf(string, args) ;
- }
-
- private ExecutorService execService = Executors.newCachedThreadPool() ;
-
- static Quad q = SSE.parseQuad("(_ <s> <p> <o>) ") ;
-
- static Quad q1 = SSE.parseQuad("(_ <s> <p> <o1>)") ;
-
- static Quad q2 = SSE.parseQuad("(_ <s> <p> <o2>)") ;
-
- static Quad q3 = SSE.parseQuad("(_ <s> <p> <o3>)") ;
-
- static Quad q4 = SSE.parseQuad("(_ <s> <p> <o4>)") ;
-
- private static int initCount = -1 ;
-
- //static final Location LOC = Location.create(ConfigTest.getTestingDirDB()) ;
- static final AtomicInteger gen = new AtomicInteger() ;
-
-}
http://git-wip-us.apache.org/repos/asf/jena/blob/edab900a/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TxnDeadlockTest.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TxnDeadlockTest.java b/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TxnDeadlockTest.java
deleted file mode 100644
index a3f4413..0000000
--- a/jena-tdb/src/test/java/org/apache/jena/tdb/extra/T_TxnDeadlockTest.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.tdb.extra;
-
-import java.security.SecureRandom ;
-import java.util.Iterator ;
-import java.util.concurrent.CountDownLatch ;
-import java.util.concurrent.ExecutorService ;
-import java.util.concurrent.Executors ;
-import java.util.concurrent.atomic.AtomicInteger ;
-
-import org.apache.jena.atlas.logging.LogCtl ;
-import org.apache.jena.graph.Node ;
-import org.apache.jena.graph.NodeFactory ;
-import org.apache.jena.query.ReadWrite ;
-import org.apache.jena.sparql.core.Quad ;
-import org.apache.jena.tdb.StoreConnection ;
-import org.apache.jena.tdb.base.file.Location ;
-import org.apache.jena.tdb.transaction.DatasetGraphTxn ;
-import org.apache.jena.tdb.transaction.TransactionManager ;
-
-public class T_TxnDeadlockTest {
-
- static {
- LogCtl.setLog4j() ;
- //Log.enable("TDB") ;
- if ( false ) LogCtl.enable(TransactionManager.class) ;
- //Log.enable(LockMRSW.class) ;
- }
-
- private static final int CONCURRENT_RANDOM_OPERATIONS = 1000;
-
- private static final SecureRandom numberGenerator = new SecureRandom();
-
- public static void main(String ... argv)
- {
- for(int i = 0 ; i < 1000 ; i++ )
- {
- System.out.println("Loop = "+i) ;
- new T_TxnDeadlockTest().test() ;
- }
- }
-
- //@Test
- public void test() {
- final StoreConnection storeConnection =
- StoreConnection.make(Location.mem());
-
- //ExecutorService executor = Executors.newCachedThreadPool() ; // Not seen blocking.
- // 4 blocks maybe 1 in 4 times
- // 8 blocks (quad core) 2 in 3 times.
- ExecutorService executor = Executors.newFixedThreadPool(8) ;
-
- final AtomicInteger nbQuadruplesAdded = new AtomicInteger();
-
- final CountDownLatch doneSignal =
- new CountDownLatch(CONCURRENT_RANDOM_OPERATIONS);
-
- for (int i = 0; i < CONCURRENT_RANDOM_OPERATIONS; i++) {
- executor.execute(new Runnable() {
- @Override
- public void run() {
- try {
- if (numberGenerator.nextInt(2) == 0) {
- DatasetGraphTxn txnGraph =
- storeConnection.begin(ReadWrite.WRITE);
- txnGraph.add(new Quad(
- NodeFactory.createURI("http://jena-example.org/"
- + numberGenerator.nextInt()),
- NodeFactory.createURI("http://jena-example.org/"
- + numberGenerator.nextInt()),
- NodeFactory.createURI("http://jena-example.org/"
- + numberGenerator.nextInt()),
- NodeFactory.createURI("http://jena-example.org/"
- + numberGenerator.nextInt())));
- txnGraph.commit();
- txnGraph.end();
- nbQuadruplesAdded.incrementAndGet();
- } else {
- DatasetGraphTxn txnGraph =
- storeConnection.begin(ReadWrite.READ);
- txnGraph.find(Node.ANY, Node.ANY, Node.ANY, Node.ANY);
- //Iterator<Quad> iter = txnGraph.find(Node.ANY, Node.ANY, Node.ANY, Node.ANY);
- //Iter.count(iter) ; // Consume
- txnGraph.end();
- }
- } finally {
- doneSignal.countDown();
- }
- }
- });
- }
-
- // shutdown is orderly so sync'ing up before the shutdown is nice but not needed.
- try {
- doneSignal.await();
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- } finally {
- executor.shutdown();
- }
-
- DatasetGraphTxn txnGraph =
- storeConnection.begin(ReadWrite.READ);
- Iterator<Quad> result = txnGraph.find(
- Node.ANY, Node.ANY, Node.ANY, Node.ANY);
-
- long count = 0;
- while (result.hasNext()) {
- result.next();
- count++;
- }
-
- txnGraph.end();
-
- StoreConnection.release(storeConnection.getLocation());
-
- //System.out.println() ;
- System.out.println("FINISHED") ;
-
-// // This is unsafe - the quad adds may generate duplicates (ity's unlikly 4 random number reoccur but it's possible).
-// Assert.assertEquals(count, nbQuadruplesAdded.get());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/jena/blob/edab900a/jena-tdb/src/test/java/org/apache/jena/tdb/store/AbstractStoreConnections.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/org/apache/jena/tdb/store/AbstractStoreConnections.java b/jena-tdb/src/test/java/org/apache/jena/tdb/store/AbstractStoreConnections.java
index d4deaf3..4bae910 100644
--- a/jena-tdb/src/test/java/org/apache/jena/tdb/store/AbstractStoreConnections.java
+++ b/jena-tdb/src/test/java/org/apache/jena/tdb/store/AbstractStoreConnections.java
@@ -21,7 +21,7 @@ package org.apache.jena.tdb.store;
import org.apache.jena.atlas.iterator.Iter ;
import org.apache.jena.atlas.junit.BaseTest ;
import org.apache.jena.query.Dataset ;
-import org.apache.jena.query.ReadWrite ;
+import org.apache.jena.query.TxnType;
import org.apache.jena.rdf.model.Model ;
import org.apache.jena.sparql.core.DatasetGraph ;
import org.apache.jena.sparql.core.Quad ;
@@ -70,7 +70,7 @@ public abstract class AbstractStoreConnections extends BaseTest
// Expel.
StoreConnection sConn = getStoreConnection() ;
assertTrue(sConn.isValid());
- DatasetGraphTxn dsgW1 = sConn.begin(ReadWrite.WRITE) ;
+ DatasetGraphTxn dsgW1 = sConn.begin(TxnType.WRITE) ;
dsgW1.commit() ;
dsgW1.end() ;
StoreConnection.release(sConn.getLocation()) ;
@@ -81,8 +81,8 @@ public abstract class AbstractStoreConnections extends BaseTest
public void store_1() {
// Expel.
StoreConnection sConn = getStoreConnection() ;
- DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.READ) ;
- DatasetGraphTxn dsgW1 = sConn.begin(ReadWrite.WRITE) ;
+ DatasetGraphTxn dsgR1 = sConn.begin(TxnType.READ) ;
+ DatasetGraphTxn dsgW1 = sConn.begin(TxnType.WRITE) ;
dsgW1.add(q1) ;
dsgW1.commit() ;
dsgW1.end() ;
@@ -101,7 +101,7 @@ public abstract class AbstractStoreConnections extends BaseTest
public void store_2() {
// Expel.
StoreConnection sConn = getStoreConnection() ;
- DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.READ) ;
+ DatasetGraphTxn dsgR1 = sConn.begin(TxnType.READ) ;
StoreConnection.release(sConn.getLocation()) ;
}
@@ -109,15 +109,15 @@ public abstract class AbstractStoreConnections extends BaseTest
public void store_3() {
// Expel.
StoreConnection sConn = getStoreConnection() ;
- DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.WRITE) ;
+ DatasetGraphTxn dsgR1 = sConn.begin(TxnType.WRITE) ;
StoreConnection.release(sConn.getLocation()) ;
}
@Test
public void store_4() {
StoreConnection sConn = getStoreConnection() ;
- DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.READ) ;
- DatasetGraphTxn dsgW1 = sConn.begin(ReadWrite.WRITE) ;
+ DatasetGraphTxn dsgR1 = sConn.begin(TxnType.READ) ;
+ DatasetGraphTxn dsgW1 = sConn.begin(TxnType.WRITE) ;
dsgW1.add(q1) ;
dsgW1.commit() ;
dsgW1.end() ;
@@ -127,12 +127,12 @@ public abstract class AbstractStoreConnections extends BaseTest
sConn = null ;
StoreConnection sConn2 = getStoreConnection() ;
- DatasetGraphTxn dsgW2 = sConn2.begin(ReadWrite.WRITE) ;
+ DatasetGraphTxn dsgW2 = sConn2.begin(TxnType.WRITE) ;
dsgW2.add(q2) ;
dsgW2.commit() ;
dsgW2.end() ;
- DatasetGraphTxn dsgR2 = sConn2.begin(ReadWrite.READ) ;
+ DatasetGraphTxn dsgR2 = sConn2.begin(TxnType.READ) ;
long x = Iter.count(dsgR2.find()) ;
assertEquals(2, x) ;
}
@@ -160,7 +160,7 @@ public abstract class AbstractStoreConnections extends BaseTest
StoreConnection sConn = getStoreConnection() ;
Location loc = sConn.getLocation() ;
- DatasetGraphTxn dsgTxn = sConn.begin(ReadWrite.WRITE) ;
+ DatasetGraphTxn dsgTxn = sConn.begin(TxnType.WRITE) ;
dsgTxn.add(q1) ;
assertTrue(dsgTxn.contains(q1)) ;
@@ -175,7 +175,7 @@ public abstract class AbstractStoreConnections extends BaseTest
DatasetGraph dsg2 = sConn.getBaseDataset() ;
assertTrue(dsg2.contains(q1)) ;
- DatasetGraphTxn dsgTxn2 = sConn.begin(ReadWrite.READ) ;
+ DatasetGraphTxn dsgTxn2 = sConn.begin(TxnType.READ) ;
assertTrue(dsgTxn2.contains(q1)) ;
dsgTxn2.end() ;
}
@@ -196,7 +196,7 @@ public abstract class AbstractStoreConnections extends BaseTest
assertTrue(dsg.contains(q)) ;
}
- DatasetGraphTxn dsgTxn = sConn.begin(ReadWrite.WRITE) ;
+ DatasetGraphTxn dsgTxn = sConn.begin(TxnType.WRITE) ;
if ( nonTxnData )
assertTrue(dsgTxn.contains(q)) ;
dsgTxn.add(q1) ;
@@ -224,7 +224,7 @@ public abstract class AbstractStoreConnections extends BaseTest
assertTrue(dsg2.contains(q)) ;
assertTrue(dsg2.contains(q1)) ;
- DatasetGraphTxn dsgTxn2 = sConn2.begin(ReadWrite.READ) ;
+ DatasetGraphTxn dsgTxn2 = sConn2.begin(TxnType.READ) ;
if ( nonTxnData )
assertTrue(dsgTxn2.contains(q)) ;
assertTrue(dsgTxn2.contains(q1)) ;
@@ -232,7 +232,7 @@ public abstract class AbstractStoreConnections extends BaseTest
// Check API methods work.
Dataset ds = TDBFactory.createDataset(loc) ;
- ds.begin(ReadWrite.READ) ;
+ ds.begin(TxnType.READ) ;
Model m = (q.isDefaultGraph() ? ds.getDefaultModel() : ds.getNamedModel("g")) ;
assertEquals(nonTxnData ? 2 : 1, m.size()) ;
ds.end() ;
http://git-wip-us.apache.org/repos/asf/jena/blob/edab900a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTrans.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTrans.java b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTrans.java
index 0b36d13..5309391 100644
--- a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTrans.java
+++ b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTrans.java
@@ -49,7 +49,7 @@ public abstract class AbstractTestObjectFileTrans extends BaseTest
@Before
public void setup()
{
- txn = new Transaction(null, 5, TxnType.WRITE, ReadWrite.WRITE, ++count, null, tm) ;
+ txn = new Transaction(null, 5, TxnType.WRITE, ReadWrite.WRITE, ++count, TxnType.WRITE, null, tm) ;
file1 = createFile("base") ;
//file2 = createFile("log") ;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/edab900a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTransComplex.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTransComplex.java b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTransComplex.java
index 3e46643..5cecb5e 100644
--- a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTransComplex.java
+++ b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTransComplex.java
@@ -48,7 +48,7 @@ public abstract class AbstractTestObjectFileTransComplex extends BaseTest
@Before
public void setup()
{
- txn = new Transaction(null, 5, TxnType.WRITE, ReadWrite.WRITE, ++count, null, tm) ;
+ txn = new Transaction(null, 5, TxnType.WRITE, ReadWrite.WRITE, ++count, TxnType.WRITE, null, tm) ;
file1 = createFile("base") ;
file2 = createFile("log") ;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/edab900a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestTransSeq.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestTransSeq.java b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestTransSeq.java
index f341996..ba3fbd2 100644
--- a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestTransSeq.java
+++ b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestTransSeq.java
@@ -162,8 +162,6 @@ public abstract class AbstractTestTransSeq extends BaseTest
assertTrue(dsg.contains(q1)) ;
assertTrue(dsg.contains(q2)) ;
}
-
-
@Test public void trans_readBlock_01()
{
@@ -180,10 +178,6 @@ public abstract class AbstractTestTransSeq extends BaseTest
assertFalse(dsgR1.contains(q)) ;
dsgR1.end() ;
- //**** Not hitting the queue ****
- // Order of tweaking counters?
- // also writer and counters?
-
DatasetGraphTxn dsgR2 = sConn.begin(TxnType.READ) ;
assertTrue(dsgR2.contains(q)) ;
dsgR2.end() ;
http://git-wip-us.apache.org/repos/asf/jena/blob/edab900a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransPromoteTDB.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransPromoteTDB.java b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransPromoteTDB.java
index e71d990..4027765 100644
--- a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransPromoteTDB.java
+++ b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransPromoteTDB.java
@@ -18,6 +18,7 @@
package org.apache.jena.tdb.transaction ;
+import org.apache.jena.sparql.JenaTransactionException;
import org.apache.jena.sparql.core.DatasetGraph ;
import org.apache.jena.sparql.transaction.AbstractTestTransPromote ;
import org.apache.jena.tdb.TDB ;
@@ -44,7 +45,7 @@ public class TestTransPromoteTDB extends AbstractTestTransPromote {
}
@Override
- protected Class<TDBTransactionException> getTransactionExceptionClass() {
- return TDBTransactionException.class ;
+ protected Class<JenaTransactionException> getTransactionExceptionClass() {
+ return JenaTransactionException.class ;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/jena/blob/edab900a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransactionTDB.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransactionTDB.java b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransactionTDB.java
index e63cf66..1a036ab 100644
--- a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransactionTDB.java
+++ b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransactionTDB.java
@@ -61,7 +61,8 @@ public class TestTransactionTDB extends AbstractTestTransactionLifecycle
private static Triple triple1 = SSE.parseTriple("(<s> <p> <o>)") ;
- @Test public void transaction_50() {
+ @Test
+ public void transaction_50() {
// This assumes you have two datasets on the same location.
// That's not necessarily true for uncached memory datasets,
// where you get two separate datasets so changes to one are