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 2012/01/19 14:43:12 UTC
svn commit: r1233372 - in /incubator/jena/Jena2/TDB/trunk: src-dev/dev/
src/main/java/com/hp/hpl/jena/tdb/ src/test/java/com/hp/hpl/jena/tdb/
src/test/java/com/hp/hpl/jena/tdb/migrate/
src/test/java/com/hp/hpl/jena/tdb/transaction/
Author: andy
Date: Thu Jan 19 13:43:11 2012
New Revision: 1233372
URL: http://svn.apache.org/viewvc?rev=1233372&view=rev
Log:
Sort out running tests on transactional datasets (partial).
Added:
incubator/jena/Jena2/TDB/trunk/src-dev/dev/TestTxn.java
incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/migrate/AbstractTestTransaction.java
incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransactionTDB.java
Modified:
incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDB.java
incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactoryTxn.java
incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/TestTDBFactory.java
incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TS_Transaction.java
Added: incubator/jena/Jena2/TDB/trunk/src-dev/dev/TestTxn.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src-dev/dev/TestTxn.java?rev=1233372&view=auto
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src-dev/dev/TestTxn.java (added)
+++ incubator/jena/Jena2/TDB/trunk/src-dev/dev/TestTxn.java Thu Jan 19 13:43:11 2012
@@ -0,0 +1,133 @@
+/**
+ * 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 dev;
+
+import org.junit.Test ;
+import org.openjena.atlas.junit.BaseTest ;
+
+import com.hp.hpl.jena.graph.Triple ;
+import com.hp.hpl.jena.query.Dataset ;
+import com.hp.hpl.jena.query.DatasetFactory ;
+import com.hp.hpl.jena.query.ReadWrite ;
+import com.hp.hpl.jena.sparql.core.DatasetGraph ;
+import com.hp.hpl.jena.sparql.sse.SSE ;
+import com.hp.hpl.jena.tdb.DatasetGraphTransaction ;
+import com.hp.hpl.jena.tdb.TDBFactory ;
+import com.hp.hpl.jena.tdb.TDBFactoryTxn ;
+import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
+
+public class TestTxn extends BaseTest
+{
+// static final String DIR = ConfigTest.getTestingDirDB() ;
+//
+// @Before public void before()
+// {
+// FileOps.clearDirectory(DIR) ;
+// }
+//
+// @After public void after()
+// {
+// FileOps.clearDirectory(DIR) ;
+// }
+//
+ protected Dataset create()
+ {
+ DatasetGraph dsg = TDBFactory.createDatasetGraph() ;
+ dsg = TDBFactoryTxn.XcreateDatasetGraph() ;
+
+ if ( dsg instanceof DatasetGraphTDB )
+ dsg = new DatasetGraphTransaction((DatasetGraphTDB)dsg) ;
+ return DatasetFactory.create(dsg) ;
+ }
+
+ private static Triple triple1 = SSE.parseTriple("(<s> <p> <o>)") ;
+
+ @Test public void factoryTxn1()
+ {
+ Dataset ds = create() ;
+ ds.begin(ReadWrite.READ) ;
+ assertTrue(ds.isInTransaction()) ;
+ ds.end() ;
+ assertFalse(ds.isInTransaction()) ;
+ }
+
+ @Test public void factoryTxn2()
+ {
+ Dataset ds = create() ;
+ ds.begin(ReadWrite.WRITE) ;
+ assertTrue(ds.isInTransaction()) ;
+ ds.commit() ;
+ assertFalse(ds.isInTransaction()) ;
+ }
+
+ @Test public void factoryTxn3()
+ {
+ Dataset ds = create() ;
+ ds.begin(ReadWrite.WRITE) ;
+ assertTrue(ds.isInTransaction()) ;
+ ds.abort() ;
+ assertFalse(ds.isInTransaction()) ;
+ }
+
+ @Test public void factoryTxn4()
+ {
+ Dataset ds = create() ;
+ ds.begin(ReadWrite.WRITE) ;
+ assertTrue(ds.isInTransaction()) ;
+ ds.commit() ;
+ assertFalse(ds.isInTransaction()) ;
+ ds.end() ;
+ assertFalse(ds.isInTransaction()) ;
+ }
+
+ @Test public void factoryTxn5()
+ {
+ Dataset ds = create() ;
+ ds.begin(ReadWrite.WRITE) ;
+ assertTrue(ds.isInTransaction()) ;
+ ds.abort() ;
+ assertFalse(ds.isInTransaction()) ;
+ ds.end() ;
+ assertFalse(ds.isInTransaction()) ;
+ }
+
+
+ @Test public void factoryTxn10()
+ {
+ Dataset ds1 = create() ;
+ Dataset ds2 = create() ;
+
+ ds1.begin(ReadWrite.WRITE) ;
+ ds1.getDefaultModel().getGraph().add(triple1) ;
+
+ ds2.begin(ReadWrite.READ) ;
+ assertTrue(ds2.getDefaultModel().isEmpty()) ;
+ ds2.commit() ;
+
+ ds1.commit() ;
+
+ ds2.begin(ReadWrite.READ) ;
+ assertFalse(ds2.getDefaultModel().isEmpty()) ;
+ assertEquals(1, ds2.getDefaultModel().size()) ;
+ ds2.commit() ;
+
+ }
+
+}
+
Modified: incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDB.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDB.java?rev=1233372&r1=1233371&r2=1233372&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDB.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDB.java Thu Jan 19 13:43:11 2012
@@ -144,18 +144,24 @@ public class TDB
{
// Should be: SystemARQ.sync(dataset) ;
if ( dataset instanceof DatasetGraphTDB )
+ {
syncObject(dataset) ;
- else
+ return ;
+ }
+ if ( dataset instanceof DatasetGraphTransaction )
+ {
+ // Can't sync transactional dataset graphs.
+ return ;
+ }
+
+ // May be a general purpose dataset with TDB objects in it.
+ Iterator<Node> iter = dataset.listGraphNodes() ;
+ iter = Iter.toList(iter).iterator() ; // Avoid iterator concurrency.
+ for ( ; iter.hasNext() ; )
{
- // May be a general purpose dataset with TDB objects in it.
- Iterator<Node> iter = dataset.listGraphNodes() ;
- iter = Iter.toList(iter).iterator() ; // Avoid iterator concurrency.
- for ( ; iter.hasNext() ; )
- {
- Node n = iter.next();
- Graph g = dataset.getGraph(n) ;
- sync(g) ;
- }
+ Node n = iter.next();
+ Graph g = dataset.getGraph(n) ;
+ sync(g) ;
}
}
Modified: incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactoryTxn.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactoryTxn.java?rev=1233372&r1=1233371&r2=1233372&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactoryTxn.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactoryTxn.java Thu Jan 19 13:43:11 2012
@@ -26,35 +26,35 @@ import com.hp.hpl.jena.tdb.assembler.Voc
import com.hp.hpl.jena.tdb.base.file.Location ;
import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
-/** Public factory for creating objects datasets backed by TDB storage which support transactions */
-class TDBFactoryTxn
+/** factory for creating objects datasets backed by TDB storage which support transactions */
+public class TDBFactoryTxn
{
// This is TDBFactory with a different maker.??
// Assembler versions
/** Create a Dataset that supports transactions */
- public static Dataset createDataset(Location location)
+ public static Dataset XcreateDataset(Location location)
{
- return DatasetFactory.create(createDatasetGraph(location)) ;
+ return DatasetFactory.create(XcreateDatasetGraph(location)) ;
}
/** Create a Dataset that supports transactions */
- public static Dataset createDataset(String location)
+ public static Dataset XcreateDataset(String location)
{
- return DatasetFactory.create(createDatasetGraph(location)) ;
+ return DatasetFactory.create(XcreateDatasetGraph(location)) ;
}
/** Create a Dataset that supports transactions but runs in-memory (for creating test cases)*/
- public static Dataset createDataset()
+ public static Dataset XcreateDataset()
{
- return createDataset(Location.mem()) ;
+ return XcreateDataset(Location.mem()) ;
}
/** Read the assembler file and create a dataset with transctional capabilities.
* Assumes the file contains exactly one definition of a TDB dataset.
*/
- public static Dataset assembleDataset(String assemblerFile)
+ public static Dataset XassembleDataset(String assemblerFile)
{
Dataset ds = (Dataset)AssemblerUtils.build(assemblerFile, VocabTDB.tDatasetTDB) ;
DatasetGraphTDB dsg = (DatasetGraphTDB)(ds.asDatasetGraph()) ;
@@ -79,24 +79,23 @@ class TDBFactoryTxn
}
/** Create a DatasetGraph that supports transactions */
- public static DatasetGraphTransaction createDatasetGraph(String location)
+ public static DatasetGraphTransaction XcreateDatasetGraph(String location)
{
- return createDatasetGraph(new Location(location)) ;
+ return XcreateDatasetGraph(new Location(location)) ;
}
/** Create a Dataset that supports transactions */
- public static DatasetGraphTransaction createDatasetGraph(Location location)
+ public static DatasetGraphTransaction XcreateDatasetGraph(Location location)
{
return _create(location) ;
}
/** Create a Dataset that supports transactions but runs in-memory (for creating test cases)*/
- public static DatasetGraphTransaction createDatasetGraph()
+ public static DatasetGraphTransaction XcreateDatasetGraph()
{
- return createDatasetGraph(Location.mem()) ;
+ return XcreateDatasetGraph(Location.mem()) ;
}
- // OLD
private static DatasetGraphTransaction _create(Location location)
{
// No need to cache StoreConnection does all that.
@@ -108,32 +107,5 @@ class TDBFactoryTxn
// No need to cache StoreConnection does all that.
return new DatasetGraphTransaction(dsg) ;
}
-
-// // NEW
-// static class TDBMakerTxn implements DatasetGraphMakerTDB
-// {
-//
-// @Override
-// public DatasetGraphTDB createDatasetGraph()
-// {
-// //return new DatasetGraphTransaction(Location.mem()) ;
-// return null ;
-// }
-//
-// @Override
-// public DatasetGraphTDB createDatasetGraph(Location location)
-// {
-// return null ;
-// }
-//
-// @Override
-// public void releaseDatasetGraph(DatasetGraphTDB dataset)
-// {}
-//
-// @Override
-// public void releaseLocation(Location location)
-// {}
-// }
-
}
Modified: incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/TestTDBFactory.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/TestTDBFactory.java?rev=1233372&r1=1233371&r2=1233372&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/TestTDBFactory.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/TestTDBFactory.java Thu Jan 19 13:43:11 2012
@@ -20,18 +20,14 @@ package com.hp.hpl.jena.tdb;
import org.junit.AfterClass ;
import org.junit.BeforeClass ;
-import org.junit.Test;
+import org.junit.Test ;
import org.openjena.atlas.junit.BaseTest ;
import org.openjena.atlas.lib.FileOps ;
-import com.hp.hpl.jena.graph.Triple ;
-import com.hp.hpl.jena.query.Dataset ;
-import com.hp.hpl.jena.query.ReadWrite ;
-import com.hp.hpl.jena.sparql.sse.SSE ;
-import com.hp.hpl.jena.tdb.base.file.Location;
-import com.hp.hpl.jena.tdb.store.DatasetGraphTDB;
-import com.hp.hpl.jena.tdb.sys.DatasetGraphMakerTDB;
-import com.hp.hpl.jena.tdb.sys.TDBMaker;
+import com.hp.hpl.jena.tdb.base.file.Location ;
+import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
+import com.hp.hpl.jena.tdb.sys.DatasetGraphMakerTDB ;
+import com.hp.hpl.jena.tdb.sys.TDBMaker ;
public class TestTDBFactory extends BaseTest
{
@@ -74,35 +70,4 @@ public class TestTDBFactory extends Base
assertNotSame(dg3, dg2) ;
assertSame(dg3, dg0) ;
}
-
- // StoreConnection no longer applies caching to in-memory datasets.
-// @Test public void factoryTxn1()
-// {
-// DatasetGraphTransaction dg1 = TDBFactoryTxn.createDatasetGraph(Location.mem()) ;
-// DatasetGraphTransaction dg2 = TDBFactoryTxn.createDatasetGraph(Location.mem()) ;
-// assertSame(dg1.get(), dg2.get()) ;
-// }
-
- private static Triple triple1 = SSE.parseTriple("(<s> <p> <o>)") ;
-
- @Test public void factoryTxn2()
- {
- Dataset ds1 = TDBFactoryTxn.createDataset(DIR) ;
- Dataset ds2 = TDBFactoryTxn.createDataset(DIR) ;
-
- ds1.begin(ReadWrite.WRITE) ;
- ds1.getDefaultModel().getGraph().add(triple1) ;
-
- ds2.begin(ReadWrite.READ) ;
- assertTrue(ds2.getDefaultModel().isEmpty()) ;
- ds2.commit() ;
-
- ds1.commit() ;
-
- ds2.begin(ReadWrite.READ) ;
- assertFalse(ds2.getDefaultModel().isEmpty()) ;
- assertEquals(1, ds2.getDefaultModel().size()) ;
- ds2.commit() ;
-
- }
}
Added: incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/migrate/AbstractTestTransaction.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/migrate/AbstractTestTransaction.java?rev=1233372&view=auto
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/migrate/AbstractTestTransaction.java (added)
+++ incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/migrate/AbstractTestTransaction.java Thu Jan 19 13:43:11 2012
@@ -0,0 +1,114 @@
+/**
+ * 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.migrate;
+
+import org.junit.Test ;
+import org.openjena.atlas.junit.BaseTest ;
+
+import com.hp.hpl.jena.graph.Triple ;
+import com.hp.hpl.jena.query.Dataset ;
+import com.hp.hpl.jena.query.ReadWrite ;
+import com.hp.hpl.jena.sparql.sse.SSE ;
+
+public abstract class AbstractTestTransaction extends BaseTest
+{
+ //MIGRATE
+ protected abstract Dataset create() ;
+
+ private static Triple triple1 = SSE.parseTriple("(<s> <p> <o>)") ;
+
+ @Test public void factoryTxn0()
+ {
+ Dataset ds = create() ;
+ assertTrue(ds.supportsTransactions()) ;
+ }
+
+ @Test public void factoryTxn1()
+ {
+ Dataset ds = create() ;
+ ds.begin(ReadWrite.READ) ;
+ assertTrue(ds.isInTransaction()) ;
+ ds.end() ;
+ assertFalse(ds.isInTransaction()) ;
+ }
+
+ @Test public void factoryTxn2()
+ {
+ Dataset ds = create() ;
+ ds.begin(ReadWrite.WRITE) ;
+ assertTrue(ds.isInTransaction()) ;
+ ds.commit() ;
+ assertFalse(ds.isInTransaction()) ;
+ }
+
+ @Test public void factoryTxn3()
+ {
+ Dataset ds = create() ;
+ ds.begin(ReadWrite.WRITE) ;
+ assertTrue(ds.isInTransaction()) ;
+ ds.abort() ;
+ assertFalse(ds.isInTransaction()) ;
+ }
+
+ @Test public void factoryTxn4()
+ {
+ Dataset ds = create() ;
+ ds.begin(ReadWrite.WRITE) ;
+ assertTrue(ds.isInTransaction()) ;
+ ds.commit() ;
+ assertFalse(ds.isInTransaction()) ;
+ ds.end() ;
+ assertFalse(ds.isInTransaction()) ;
+ }
+
+ @Test public void factoryTxn5()
+ {
+ Dataset ds = create() ;
+ ds.begin(ReadWrite.WRITE) ;
+ assertTrue(ds.isInTransaction()) ;
+ ds.abort() ;
+ assertFalse(ds.isInTransaction()) ;
+ ds.end() ;
+ assertFalse(ds.isInTransaction()) ;
+ }
+
+
+ @Test public void factoryTxn10()
+ {
+ Dataset ds1 = create() ;
+ Dataset ds2 = create() ;
+
+ ds1.begin(ReadWrite.WRITE) ;
+ ds1.getDefaultModel().getGraph().add(triple1) ;
+
+ ds2.begin(ReadWrite.READ) ;
+ assertTrue(ds2.getDefaultModel().isEmpty()) ;
+ ds2.commit() ;
+
+ ds1.commit() ;
+
+ ds2.begin(ReadWrite.READ) ;
+ assertFalse(ds2.getDefaultModel().isEmpty()) ;
+ assertEquals(1, ds2.getDefaultModel().size()) ;
+ ds2.commit() ;
+
+ }
+
+}
+
Modified: incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TS_Transaction.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TS_Transaction.java?rev=1233372&r1=1233371&r2=1233372&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TS_Transaction.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TS_Transaction.java Thu Jan 19 13:43:11 2012
@@ -36,6 +36,7 @@ import org.junit.runners.Suite ;
, TestTransSequentialMem.class
, TestTransSequentialDisk.class
, TestTransRestart.class
+ //, TestTransactionTDB.class
})
public class TS_Transaction
{
Added: incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransactionTDB.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransactionTDB.java?rev=1233372&view=auto
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransactionTDB.java (added)
+++ incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransactionTDB.java Thu Jan 19 13:43:11 2012
@@ -0,0 +1,52 @@
+/**
+ * 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.query.Dataset ;
+import com.hp.hpl.jena.tdb.ConfigTest ;
+import com.hp.hpl.jena.tdb.TDBFactory ;
+import com.hp.hpl.jena.tdb.TDBFactoryTxn ;
+import com.hp.hpl.jena.tdb.migrate.AbstractTestTransaction ;
+
+public class TestTransactionTDB extends AbstractTestTransaction
+{
+ static final String DIR = ConfigTest.getTestingDirDB() ;
+
+ @Before public void before()
+ {
+ FileOps.clearDirectory(DIR) ;
+ }
+
+ @After public void after()
+ {
+ FileOps.clearDirectory(DIR) ;
+ }
+
+ @Override
+ protected Dataset create()
+ {
+ //return TDBFactory.createDataset(DIR) ;
+ return TDBFactoryTxn.XcreateDataset(DIR) ;
+ }
+}
+