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()