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 2011/07/17 20:41:40 UTC
svn commit: r1147697 - in /incubator/jena/Experimental/TxTDB/trunk:
src-dev/tx/ src/main/java/com/hp/hpl/jena/tdb/
src/main/java/com/hp/hpl/jena/tdb/setup/
Author: andy
Date: Sun Jul 17 18:41:40 2011
New Revision: 1147697
URL: http://svn.apache.org/viewvc?rev=1147697&view=rev
Log:
Tests
Modified:
incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java
incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestTransactions.java
incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
Modified: incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java?rev=1147697&r1=1147696&r2=1147697&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java Sun Jul 17 18:41:40 2011
@@ -4,14 +4,12 @@ package tx;
public class DevTx
{
// --------
- // To do for release 0:
- // Documentation
- // StoreConnection.Location.mem ==> directory called "--mem--" and chaos.
- // Partial reply : base reader exits - replay until blocking higher reader.
- // scan to commit, enact, scne to commit, enact, ....
+ // Tasks:
+ // * scan to commit, enact, scan to commit, enact, ....
- // Node writing happens during prepare() regardless of blockers and locks. Opps.
- // Abort() etc truncates Journal to 0 - but that might loose a pending transaction. Opps?? Happens?
+ // * Node writing happens during prepare() regardless of blockers and locks. Opps.
+ // * Abort() etc truncates Journal to 0 - but that might loose a pending transaction.
+ // Journalneeds reset markers
// Some kind of call after commit for clear up.
// Call when really commited.
// --------
Modified: incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestTransactions.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestTransactions.java?rev=1147697&r1=1147696&r2=1147697&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestTransactions.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestTransactions.java Sun Jul 17 18:41:40 2011
@@ -18,6 +18,9 @@
package tx;
+import java.util.ArrayList ;
+import java.util.List ;
+
import org.junit.After ;
import org.junit.Before ;
import org.junit.Test ;
@@ -26,7 +29,16 @@ import org.openjena.atlas.lib.FileOps ;
import com.hp.hpl.jena.graph.Node ;
import com.hp.hpl.jena.graph.Triple ;
+import com.hp.hpl.jena.query.DatasetFactory ;
+import com.hp.hpl.jena.query.Query ;
+import com.hp.hpl.jena.query.QueryExecution ;
+import com.hp.hpl.jena.query.QueryExecutionFactory ;
+import com.hp.hpl.jena.query.QueryFactory ;
+import com.hp.hpl.jena.query.ResultSet ;
+import com.hp.hpl.jena.query.Syntax ;
+import com.hp.hpl.jena.sparql.core.DatasetGraph ;
import com.hp.hpl.jena.sparql.core.Quad ;
+import com.hp.hpl.jena.sparql.core.Var ;
import com.hp.hpl.jena.sparql.util.NodeFactory ;
import com.hp.hpl.jena.tdb.ConfigTest ;
import com.hp.hpl.jena.tdb.DatasetGraphTxn ;
@@ -36,35 +48,68 @@ import com.hp.hpl.jena.tdb.base.file.Loc
public class TestTransactions extends BaseTest
{
+
+
static Node s = NodeFactory.parseNode("<s>") ;
static Node p = NodeFactory.parseNode("<p>") ;
static Node o = NodeFactory.parseNode("<o>") ;
+
+ static Node o1 = NodeFactory.parseNode("1") ;
+ static Node o2 = NodeFactory.parseNode("2") ;
+ static Node o3 = NodeFactory.parseNode("3") ;
+ static Node o4 = NodeFactory.parseNode("4") ;
+
static Node g = NodeFactory.parseNode("<g>") ;
+
static Triple t = new Triple(s,p,o) ;
+ static Triple t1 = new Triple(s,p,o1) ;
+ static Triple t2 = new Triple(s,p,o2) ;
+ static Triple t3 = new Triple(s,p,o3) ;
+ static Triple t4 = new Triple(s,p,o4) ;
+
static Quad q = new Quad(g,s,p,o) ;
+ static Quad q1 = new Quad(g,s,p,o1) ;
+ static Quad q2 = new Quad(g,s,p,o2) ;
+ static Quad q3 = new Quad(g,s,p,o3) ;
+ static Quad q4 = new Quad(g,s,p,o4) ;
+
+ // Later : AbstractTransactionBasics
+ static boolean MEMORY = true ;
static final String DIR = ConfigTest.getTestingDirDB() ;
- static final Location LOC = new Location(DIR) ;
+ static final Location LOC = MEMORY ? Location.mem() : new Location(DIR) ;
+
+ private StoreConnection sConn ;
@Before public void setup()
{
- FileOps.clearDirectory(DIR) ;
+ if ( ! MEMORY )
+ FileOps.clearDirectory(DIR) ;
StoreConnection.reset() ;
- StoreConnection sConn = StoreConnection.make(LOC) ;
}
@After public void teardown() {}
+ // Basics.
+
@Test public void trans_01()
{
- StoreConnection sConn = StoreConnection.make(LOC) ;
+ StoreConnection sConn = getStoreConnection() ;
DatasetGraphTxn dsg = sConn.begin(ReadWrite.READ) ;
dsg.close() ;
}
+ private StoreConnection getStoreConnection()
+ {
+ if ( MEMORY )
+ return StoreConnection.make(Location.mem()) ;
+ else
+ return StoreConnection.make(LOC) ;
+ }
+
@Test public void trans_02()
{
- StoreConnection sConn = StoreConnection.make(LOC) ;
+ StoreConnection sConn = getStoreConnection() ;
DatasetGraphTxn dsg = sConn.begin(ReadWrite.WRITE) ;
try {
dsg.add(q) ;
@@ -73,9 +118,11 @@ public class TestTransactions extends Ba
} finally { dsg.close() ; }
}
+
+
@Test public void trans_03()
{
- StoreConnection sConn = StoreConnection.make(LOC) ;
+ StoreConnection sConn = getStoreConnection() ;
DatasetGraphTxn dsg = sConn.begin(ReadWrite.WRITE) ;
dsg.add(q) ;
@@ -87,6 +134,65 @@ public class TestTransactions extends Ba
assertTrue(dsg2.contains(q)) ;
dsg2.close() ;
}
+
+ @Test public void trans_04()
+ {
+ StoreConnection sConn = getStoreConnection() ;
+ DatasetGraphTxn dsg = sConn.begin(ReadWrite.WRITE) ;
+
+ dsg.add(q) ;
+ assertTrue(dsg.contains(q)) ;
+ dsg.abort() ;
+ dsg.close() ;
+
+ DatasetGraphTxn dsg2 = sConn.begin(ReadWrite.READ) ;
+ assertFalse(dsg2.contains(q)) ;
+ dsg2.close() ;
+ }
+ static int count(String queryStr, DatasetGraph dsg)
+ {
+ int counter = 0 ;
+ Query query = QueryFactory.create(queryStr, Syntax.syntaxARQ) ;
+ QueryExecution qExec = QueryExecutionFactory.create(query, DatasetFactory.create(dsg)) ;
+ try {
+ ResultSet rs = qExec.execSelect() ;
+ for (; rs.hasNext() ; )
+ {
+ rs.nextBinding() ;
+ counter++ ;
+ }
+ return counter ;
+ } finally { qExec.close() ; }
+ }
+
+ // To QueryExecUtils?
+ public static List<Node> query(String queryStr, String var, DatasetGraphTxn dsg)
+ {
+ Var v = Var.alloc(var) ;
+ Query query = QueryFactory.create(queryStr, Syntax.syntaxARQ) ;
+ QueryExecution qExec = QueryExecutionFactory.create(query, DatasetFactory.create(dsg)) ;
+ List<Node> nodes = new ArrayList<Node>() ;
+ try {
+ ResultSet rs = qExec.execSelect() ;
+ for (; rs.hasNext() ; )
+ {
+ Node n = rs.nextBinding().get(v) ;
+ nodes.add(n) ;
+ }
+ return nodes ;
+ } finally { qExec.close() ; }
+ }
+
+ // Patterns.
+ // RS-RE
+ // RS-WS-WE-RS
+ // RS-WS-WE-WS-WE-RS
+
+ // Errors to catch:
+ // WS-WS
+
+
+
}
Modified: incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java?rev=1147697&r1=1147696&r2=1147697&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java Sun Jul 17 18:41:40 2011
@@ -6,6 +6,8 @@
package tx;
+import java.io.File ;
+
import org.openjena.atlas.lib.Bytes ;
import org.openjena.atlas.lib.FileOps ;
import org.openjena.atlas.logging.Log ;
@@ -26,10 +28,12 @@ import com.hp.hpl.jena.sparql.util.Query
import com.hp.hpl.jena.tdb.DatasetGraphTxn ;
import com.hp.hpl.jena.tdb.ReadWrite ;
import com.hp.hpl.jena.tdb.StoreConnection ;
+import com.hp.hpl.jena.tdb.base.file.Location ;
import com.hp.hpl.jena.tdb.base.record.Record ;
import com.hp.hpl.jena.tdb.base.record.RecordFactory ;
import com.hp.hpl.jena.tdb.setup.DatasetBuilderStd ;
import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
+import com.hp.hpl.jena.tdb.sys.Names ;
import com.hp.hpl.jena.update.UpdateAction ;
import com.hp.hpl.jena.update.UpdateFactory ;
import com.hp.hpl.jena.update.UpdateRequest ;
@@ -57,9 +61,14 @@ public class TxMain
public static void main(String... args)
{
+ // and one in-mem sConn DB
+
initFS() ;
+ // Named memory locations? OTT
+ //StoreConnection sConn = StoreConnection.make(Location.mem()) ;
StoreConnection sConn = StoreConnection.make(DBdir) ;
+
// ---- Simple
if ( false )
{
@@ -106,10 +115,14 @@ public class TxMain
// Take a blocking read connection.
DatasetGraphTxn dsgRead = sConn.begin(ReadWrite.READ) ; //dsgRead.close() ;
+ String qsCount = "SELECT (count(*) AS ?C) { ?s ?p ?o }" ;
+ String qsAll = "SELECT * { ?s ?p ?o }" ;
+ String qs = qsAll ;
+
DatasetGraphTxn dsg = sConn.begin(ReadWrite.WRITE) ;
load("D.ttl", dsg) ; // Loads 3 triples
- query("C=0", "SELECT (count(*) AS ?C) { ?s ?p ?o }", dsgRead) ;
- query("C=3", "SELECT (count(*) AS ?C) { ?s ?p ?o }", dsg) ;
+ query("C=0", qs, dsgRead) ;
+ query("C=3", qs, dsg) ;
dsg.commit() ;
dsg.close() ;
dsg = null ;
@@ -118,15 +131,15 @@ public class TxMain
// First reader still reading.
DatasetGraphTxn dsgRead2 = sConn.begin(ReadWrite.READ) ;
- //query("SELECT (count(*) AS ?C) { ?s ?p ?o }", dsgRead2) ;
- query("C=0", "SELECT (count(*) AS ?C) { ?s ?p ?o }", dsgRead) ;
+ //query(qs, dsgRead2) ;
+ query("C=0", qs, dsgRead) ;
// A writer.
DatasetGraphTxn dsg2 = sConn.begin(ReadWrite.WRITE) ;
load("D1.ttl", dsg2) ; // Loads 1 triples
- query("C=4", "SELECT (count(*) AS ?C) { ?s ?p ?o }", dsg2) ;
- query("C=3", "SELECT (count(*) AS ?C) { ?s ?p ?o }", dsgRead2) ;
- query("C=0", "SELECT (count(*) AS ?C) { ?s ?p ?o }", dsgRead) ;
+ query("C=4", qs, dsg2) ;
+ query("C=3", qs, dsgRead2) ;
+ query("C=0", qs, dsgRead) ;
dsg2.commit() ;
dsg2.close() ;
dsg2 = null ;
@@ -134,16 +147,16 @@ public class TxMain
dsgRead2.close() ;
// DatasetGraphTxn dsgRead2 = sConn.begin(ReadWrite.READ) ;
-// query("SELECT (count(*) AS ?C) { ?s ?p ?o }", dsgRead2) ;
+// query(qs, dsgRead2) ;
// dsgRead2.close() ;
dsgRead.close() ; // Transaction can now write changes to the real DB.
// ILLEGAL!!!!
- // query("SELECT (count(*) AS ?C) { ?s ?p ?o }", dsgRead) ;
+ // query(qs, dsgRead) ;
DatasetGraphTxn dsgRead3 = sConn.begin(ReadWrite.READ) ;
- query("C=4", "SELECT (count(*) AS ?C) { ?s ?p ?o }", dsgRead3) ;
+ query("C=4", qs, dsgRead3) ;
exit(0) ;
}
@@ -164,7 +177,7 @@ public class TxMain
{
//return DatasetBuilderStd.build() ;
//DatasetGraphTDB dsg = TDBFactory.createDatasetGraph(DBdir) ;
- DatasetGraphTDB dsg = DatasetBuilderStd.build(DBdir) ;
+ DatasetGraphTDB dsg = DatasetBuilderStd.build(new Location(DBdir)) ;
return dsg ;
}
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java?rev=1147697&r1=1147696&r2=1147697&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java Sun Jul 17 18:41:40 2011
@@ -39,7 +39,7 @@ public class StoreConnection
private StoreConnection(Location location)
{
- baseDSG = DatasetBuilderStd.build(location.getDirectoryPath()) ;
+ baseDSG = DatasetBuilderStd.build(location) ;
transactionManager = new TransactionManager(baseDSG) ;
}
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java?rev=1147697&r1=1147696&r2=1147697&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java Sun Jul 17 18:41:40 2011
@@ -58,11 +58,11 @@ public class DatasetBuilderStd implement
private Map<FileRef, BlockMgr> blockMgrs = new HashMap<FileRef, BlockMgr>() ;
private Map<FileRef, NodeTable> nodeTables = new HashMap<FileRef, NodeTable>() ;
- public static DatasetGraphTDB build(String dir)
+ public static DatasetGraphTDB build(Location location)
{
DatasetBuilderStd x = new DatasetBuilderStd() ;
x.setStd() ;
- return x.build(new Location(dir), null) ;
+ return x.build(location, null) ;
}
public static DatasetGraphTDB build()