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/18 16:46:36 UTC
svn commit: r1147905 - in /incubator/jena/Experimental/TxTDB/trunk:
src-dev/tx/ src/test/java/com/hp/hpl/jena/tdb/transaction/
Author: andy
Date: Mon Jul 18 14:46:35 2011
New Revision: 1147905
URL: http://svn.apache.org/viewvc?rev=1147905&view=rev
Log:
More tests
Added:
incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/AbstractTestTransSeq.java (with props)
incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSequentialDisk.java (with props)
incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSequentialMem.java (contents, props changed)
- copied, changed from r1147770, incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestTransactions.java
Removed:
incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestTransactions.java
Modified:
incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TS_Transaction.java
Added: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/AbstractTestTransSeq.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/AbstractTestTransSeq.java?rev=1147905&view=auto
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/AbstractTestTransSeq.java (added)
+++ incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/AbstractTestTransSeq.java Mon Jul 18 14:46:35 2011
@@ -0,0 +1,282 @@
+/**
+ * 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 com.hp.hpl.jena.tdb.transaction;
+
+import java.util.ArrayList ;
+import java.util.List ;
+
+import org.junit.Test ;
+import org.openjena.atlas.junit.BaseTest ;
+
+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 ;
+import com.hp.hpl.jena.tdb.ReadWrite ;
+import com.hp.hpl.jena.tdb.StoreConnection ;
+import com.hp.hpl.jena.tdb.TDBException ;
+
+/** Basic tests and tests of ordering (single thread) */
+public abstract class AbstractTestTransSeq 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) ;
+
+ static final String DIR = ConfigTest.getTestingDirDB() ;
+
+ private StoreConnection sConn ;
+
+ protected abstract StoreConnection getStoreConnection() ;
+
+ // Basics.
+
+ @Test public void trans_01()
+ {
+ StoreConnection sConn = getStoreConnection() ;
+ DatasetGraphTxn dsg = sConn.begin(ReadWrite.READ) ;
+ dsg.close() ;
+ }
+
+
+ @Test public void trans_02()
+ {
+ StoreConnection sConn = getStoreConnection() ;
+ DatasetGraphTxn dsg = sConn.begin(ReadWrite.WRITE) ;
+ try {
+ dsg.add(q) ;
+ assertTrue(dsg.contains(q)) ;
+ dsg.commit() ;
+ } finally { dsg.close() ; }
+ }
+
+ @Test public void trans_03()
+ {
+ // WRITE-commit-READ
+ StoreConnection sConn = getStoreConnection() ;
+ DatasetGraphTxn dsg = sConn.begin(ReadWrite.WRITE) ;
+
+ dsg.add(q) ;
+ assertTrue(dsg.contains(q)) ;
+ dsg.commit() ;
+ dsg.close() ;
+
+ DatasetGraphTxn dsg2 = sConn.begin(ReadWrite.READ) ;
+ assertTrue(dsg2.contains(q)) ;
+ dsg2.close() ;
+ }
+
+ @Test public void trans_04()
+ {
+ // WRITE-abort-READ
+ 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() ;
+ }
+
+
+ @Test (expected=TDBException.class)
+ public void trans_05()
+ {
+ // READ
+ StoreConnection sConn = getStoreConnection() ;
+ DatasetGraphTxn dsg = sConn.begin(ReadWrite.READ) ;
+ dsg.add(q) ;
+ }
+
+ @Test public void trans_06()
+ {
+ // READ before WRITE remains seeing old view - READ before WRITE starts
+ StoreConnection sConn = getStoreConnection() ;
+ DatasetGraphTxn dsgR = sConn.begin(ReadWrite.READ) ;
+ DatasetGraphTxn dsgW = sConn.begin(ReadWrite.WRITE) ;
+
+ dsgW.add(q) ;
+ dsgW.commit() ;
+ dsgW.close() ;
+
+ assertFalse(dsgR.contains(q)) ;
+ dsgR.close() ;
+ }
+
+ @Test public void trans_07()
+ {
+ // READ before WRITE remains seeing old view - READ after WRITE starts
+ StoreConnection sConn = getStoreConnection() ;
+ DatasetGraphTxn dsgW = sConn.begin(ReadWrite.WRITE) ;
+ DatasetGraphTxn dsgR = sConn.begin(ReadWrite.READ) ;
+
+ dsgW.add(q) ;
+ dsgW.commit() ;
+ dsgW.close() ;
+
+ assertFalse(dsgR.contains(q)) ;
+ dsgR.close() ;
+ }
+
+ @Test public void trans_08()
+ {
+ StoreConnection sConn = getStoreConnection() ;
+ DatasetGraphTxn dsgW = sConn.begin(ReadWrite.WRITE) ;
+ dsgW.add(q) ;
+
+ DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.READ) ;
+ assertFalse(dsgR1.contains(q)) ;
+
+ dsgW.commit() ;
+ dsgW.close() ;
+
+ DatasetGraphTxn dsgR2 = sConn.begin(ReadWrite.READ) ;
+
+ assertFalse(dsgR1.contains(q)) ; // Before view
+ assertTrue(dsgR2.contains(q)) ; // After view
+ dsgR1.close() ;
+ dsgR2.close() ;
+ }
+
+
+ @Test public void trans_09()
+ {
+ StoreConnection sConn = getStoreConnection() ;
+ DatasetGraphTxn dsgW1 = sConn.begin(ReadWrite.WRITE) ;
+ dsgW1.add(q1) ;
+ dsgW1.commit() ;
+ dsgW1.close() ;
+
+ DatasetGraphTxn dsgW2 = sConn.begin(ReadWrite.WRITE) ;
+ dsgW2.add(q2) ;
+ dsgW2.commit() ;
+ dsgW2.close() ;
+
+ DatasetGraphTxn dsgR2 = sConn.begin(ReadWrite.READ) ;
+
+ assertTrue(dsgR2.contains(q1)) ;
+ assertTrue(dsgR2.contains(q2)) ;
+
+ dsgR2.close() ;
+ }
+
+ @Test public void trans_10()
+ {
+ StoreConnection sConn = getStoreConnection() ;
+ DatasetGraphTxn dsgW1 = sConn.begin(ReadWrite.WRITE) ;
+ dsgW1.add(q1) ;
+ dsgW1.commit() ;
+ dsgW1.close() ;
+
+ DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.READ) ;
+ DatasetGraphTxn dsgW2 = sConn.begin(ReadWrite.WRITE) ;
+ dsgW2.add(q2) ;
+ dsgW2.commit() ;
+ dsgW2.close() ;
+
+ DatasetGraphTxn dsgR2 = sConn.begin(ReadWrite.READ) ;
+ assertTrue(dsgR1.contains(q1)) ;
+ assertFalse(dsgR1.contains(q2)) ;
+
+ assertTrue(dsgR2.contains(q1)) ;
+ assertTrue(dsgR2.contains(q2)) ;
+
+ dsgR1.close() ;
+ dsgR2.close() ;
+ }
+
+ @Test (expected=TDBTransactionException.class)
+ public void trans_20()
+ {
+ // Two WRITE
+ StoreConnection sConn = getStoreConnection() ;
+ DatasetGraphTxn dsgW1 = sConn.begin(ReadWrite.WRITE) ;
+ DatasetGraphTxn dsgW2 = sConn.begin(ReadWrite.WRITE) ;
+ }
+
+ 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() ; }
+ }
+
+}
+
Propchange: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/AbstractTestTransSeq.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TS_Transaction.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TS_Transaction.java?rev=1147905&r1=1147904&r2=1147905&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TS_Transaction.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TS_Transaction.java Mon Jul 18 14:46:35 2011
@@ -16,6 +16,8 @@ import org.junit.runners.Suite ;
, TestObjectFileTransMem.class
, TestObjectFileTransStorage.class
, TestNodeTableTrans.class
+ , TestTransSequentialMem.class
+ , TestTransSequentialDisk.class
})
public class TS_Transaction
{
Added: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSequentialDisk.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSequentialDisk.java?rev=1147905&view=auto
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSequentialDisk.java (added)
+++ incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSequentialDisk.java Mon Jul 18 14:46:35 2011
@@ -0,0 +1,47 @@
+/**
+ * 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 com.hp.hpl.jena.tdb.transaction;
+
+import org.junit.After ;
+import org.junit.Before ;
+import org.openjena.atlas.lib.FileOps ;
+
+import com.hp.hpl.jena.tdb.StoreConnection ;
+import com.hp.hpl.jena.tdb.base.file.Location ;
+
+/** Basic tests and tests of ordering (single thread) */
+public class TestTransSequentialDisk extends AbstractTestTransSeq
+{
+ static final Location LOC = new Location(DIR) ;
+
+ @Before public void setup()
+ {
+ FileOps.clearDirectory(DIR) ;
+ StoreConnection.reset() ;
+ }
+
+ @After public void teardown() {}
+
+ @Override
+ protected StoreConnection getStoreConnection()
+ {
+ return StoreConnection.make(LOC) ;
+ }
+}
+
Propchange: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSequentialDisk.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSequentialMem.java (from r1147770, incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestTransactions.java)
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSequentialMem.java?p2=incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSequentialMem.java&p1=incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestTransactions.java&r1=1147770&r2=1147905&rev=1147905&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestTransactions.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSequentialMem.java Mon Jul 18 14:46:35 2011
@@ -16,183 +16,28 @@
* limitations under the License.
*/
-package tx;
-
-import java.util.ArrayList ;
-import java.util.List ;
+package com.hp.hpl.jena.tdb.transaction;
import org.junit.After ;
import org.junit.Before ;
-import org.junit.Test ;
-import org.openjena.atlas.junit.BaseTest ;
-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 ;
-import com.hp.hpl.jena.tdb.ReadWrite ;
import com.hp.hpl.jena.tdb.StoreConnection ;
import com.hp.hpl.jena.tdb.base.file.Location ;
-public class TestTransactions extends BaseTest
+/** Basic tests and tests of ordering (single thread) */
+public class TestTransSequentialMem extends AbstractTestTransSeq
{
-
-
- 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 = MEMORY ? Location.mem() : new Location(DIR) ;
-
- private StoreConnection sConn ;
-
@Before public void setup()
{
- if ( ! MEMORY )
- FileOps.clearDirectory(DIR) ;
StoreConnection.reset() ;
}
+
+ @After public void teardown() {}
- @After public void teardown() {}
-
- // Basics.
-
- @Test public void trans_01()
- {
- 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 = getStoreConnection() ;
- DatasetGraphTxn dsg = sConn.begin(ReadWrite.WRITE) ;
- try {
- dsg.add(q) ;
- assertTrue(dsg.contains(q)) ;
- dsg.commit() ;
- } finally { dsg.close() ; }
- }
-
-
-
- @Test public void trans_03()
+ @Override
+ protected StoreConnection getStoreConnection()
{
- StoreConnection sConn = getStoreConnection() ;
- DatasetGraphTxn dsg = sConn.begin(ReadWrite.WRITE) ;
-
- dsg.add(q) ;
- assertTrue(dsg.contains(q)) ;
- dsg.commit() ;
- dsg.close() ;
-
- DatasetGraphTxn dsg2 = sConn.begin(ReadWrite.READ) ;
- assertTrue(dsg2.contains(q)) ;
- dsg2.close() ;
+ return StoreConnection.make(Location.mem()) ;
}
-
- @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
-
-
-
}
Propchange: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSequentialMem.java
------------------------------------------------------------------------------
svn:mime-type = text/plain