You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ja...@apache.org on 2013/05/07 10:33:06 UTC

[3/6] git commit: Added Tests for MARMOTTA-236

Added Tests for MARMOTTA-236

Project: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/commit/e532b8aa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/tree/e532b8aa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/diff/e532b8aa

Branch: refs/heads/develop
Commit: e532b8aa890ef5e19ab2d65272add13723585ea4
Parents: 4f41c8f
Author: Jakob Frank <ja...@apache.org>
Authored: Tue May 7 10:24:48 2013 +0200
Committer: Jakob Frank <ja...@apache.org>
Committed: Tue May 7 10:24:48 2013 +0200

----------------------------------------------------------------------
 .../concurrent/ConcurrentFacadingTest.java         |  172 +++++++++++++++
 1 files changed, 172 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/e532b8aa/commons/sesame-tools-facading/src/test/java/org/apache/marmotta/commons/sesame/facading/concurrent/ConcurrentFacadingTest.java
----------------------------------------------------------------------
diff --git a/commons/sesame-tools-facading/src/test/java/org/apache/marmotta/commons/sesame/facading/concurrent/ConcurrentFacadingTest.java b/commons/sesame-tools-facading/src/test/java/org/apache/marmotta/commons/sesame/facading/concurrent/ConcurrentFacadingTest.java
new file mode 100644
index 0000000..a8cdfcd
--- /dev/null
+++ b/commons/sesame-tools-facading/src/test/java/org/apache/marmotta/commons/sesame/facading/concurrent/ConcurrentFacadingTest.java
@@ -0,0 +1,172 @@
+package org.apache.marmotta.commons.sesame.facading.concurrent;
+
+import java.util.UUID;
+
+import org.apache.marmotta.commons.sesame.facading.AbstractFacadingTest;
+import org.apache.marmotta.commons.sesame.facading.FacadingFactory;
+import org.apache.marmotta.commons.sesame.facading.api.Facading;
+import org.apache.marmotta.commons.sesame.facading.concurrent.model.FooFacade;
+import org.apache.marmotta.commons.sesame.facading.concurrent.model.TypeFacade;
+import org.apache.marmotta.commons.sesame.repository.ResourceUtils;
+import org.apache.marmotta.commons.vocabulary.DCTERMS;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.openrdf.model.URI;
+import org.openrdf.model.vocabulary.RDF;
+import org.openrdf.repository.RepositoryConnection;
+import org.openrdf.repository.RepositoryException;
+
+public class ConcurrentFacadingTest extends AbstractFacadingTest {
+
+    private URI subject;
+
+    @Before
+    public void init() {
+        subject = repositoryRDF.getValueFactory().createURI("http://example.com/rdf/" + UUID.randomUUID().toString());
+    }
+
+    @Test
+    public void testParallelConnections() throws RepositoryException {
+        final URI type = repositoryRDF.getValueFactory().createURI(DCTERMS.Agent.stringValue()+"#", UUID.randomUUID().toString());
+        final RepositoryConnection cX = repositoryRDF.getConnection(),
+                cO = repositoryRDF.getConnection();
+        try {
+            cX.begin();
+            cO.begin();
+
+            cX.add(subject, RDF.TYPE, type);
+            Assert.assertTrue (cX.hasStatement(subject, RDF.TYPE, type, false));
+            Assert.assertFalse(cO.hasStatement(subject, RDF.TYPE, type, false));
+
+            cX.commit();
+            Assert.assertTrue(cO.hasStatement(subject, RDF.TYPE, type, false));
+
+            cO.commit();
+        } finally {
+            if (cX.isActive()) cX.rollback();
+            if (cO.isActive()) cO.rollback();
+            cX.close();
+            cO.close();
+        }
+    }
+
+    @Test
+    public void testParallelFacading() throws RepositoryException {
+        final RepositoryConnection fc = repositoryRDF.getConnection();
+        try {
+            fc.begin();
+            final Facading facading = FacadingFactory.createFacading(fc);
+
+            final FooFacade ff = facading.createFacade(subject, FooFacade.class);
+
+            Assert.assertNull(ff.getString());
+            final String v = UUID.randomUUID().toString(); 
+            ff.setString(v);
+            Assert.assertEquals(v, ff.getString());
+
+            final RepositoryConnection fc2 = repositoryRDF.getConnection();
+            try {
+                fc2.begin();
+
+                final Facading f2 = FacadingFactory.createFacading(fc2);
+                Assert.assertNull(f2.createFacade(subject, FooFacade.class).getString());
+
+                fc2.commit();
+            } finally {
+                if (fc2.isActive()) fc2.rollback();
+                fc2.close();
+            }
+
+            fc.commit();
+
+            final RepositoryConnection fc3 = repositoryRDF.getConnection();
+            try {
+                fc3.begin();
+
+                final Facading f3 = FacadingFactory.createFacading(fc3);
+                Assert.assertEquals(v, f3.createFacade(subject, FooFacade.class).getString());
+
+                fc3.commit();
+            } finally {
+                if (fc3.isActive()) fc3.rollback();
+                fc3.close();
+            }
+        } finally {
+            if (fc.isActive()) fc.rollback();
+            fc.close();
+        }
+    }
+
+    @Test
+    public void testParallelFacadingType() throws RepositoryException {
+        final RepositoryConnection mainCon = repositoryRDF.getConnection();
+        try {
+            mainCon.begin();
+            Assert.assertFalse(ResourceUtils.hasType(mainCon, subject, TypeFacade.TYPE));
+            
+            final Facading facading = FacadingFactory.createFacading(mainCon);
+            Assert.assertFalse(facading.isFacadeable(subject, TypeFacade.class));
+            Assert.assertFalse(ResourceUtils.hasType(mainCon, subject, TypeFacade.TYPE));
+
+
+            final TypeFacade ff = facading.createFacade(subject, TypeFacade.class);
+            Assert.assertTrue(facading.isFacadeable(subject, TypeFacade.class));
+            Assert.assertTrue(ResourceUtils.hasType(mainCon, subject, TypeFacade.TYPE));
+
+            Assert.assertNull(ff.getTitle());
+            final String v = UUID.randomUUID().toString(); 
+            ff.setTitle(v);
+            Assert.assertEquals(v, ff.getTitle());
+            Assert.assertTrue(ResourceUtils.hasType(mainCon, subject, TypeFacade.TYPE));
+            Assert.assertTrue(facading.isFacadeable(subject, TypeFacade.class));
+
+            { // before-commit
+                final RepositoryConnection subCon_1 = repositoryRDF.getConnection();
+                try {
+                    subCon_1.begin();
+                    Assert.assertFalse(ResourceUtils.hasType(subCon_1, subject, TypeFacade.TYPE));
+
+                    final Facading f_1 = FacadingFactory.createFacading(subCon_1);
+                    Assert.assertFalse(f_1.isFacadeable(subject, TypeFacade.class));
+
+                    final TypeFacade tf_1 = f_1.createFacade(subject, TypeFacade.class);
+                    Assert.assertNull(tf_1.getTitle());
+                    Assert.assertTrue(f_1.isFacadeable(subject, TypeFacade.class));
+                    Assert.assertTrue(ResourceUtils.hasType(subCon_1, subject, TypeFacade.TYPE));
+
+                    subCon_1.rollback();
+                } finally {
+                    if (subCon_1.isActive()) subCon_1.rollback();
+                    subCon_1.close();
+                }
+            }
+
+            mainCon.commit();
+
+            { // after-commit
+                final RepositoryConnection subCon_2 = repositoryRDF.getConnection();
+                try {
+                    subCon_2.begin();
+                    Assert.assertTrue(ResourceUtils.hasType(subCon_2, subject, TypeFacade.TYPE));
+
+                    final Facading f_2 = FacadingFactory.createFacading(subCon_2);
+                    Assert.assertTrue(f_2.isFacadeable(subject, TypeFacade.class));
+
+                    Assert.assertEquals(v, f_2.createFacade(subject, TypeFacade.class).getTitle());
+                    Assert.assertTrue(ResourceUtils.hasType(subCon_2, subject, TypeFacade.TYPE));
+                    Assert.assertTrue(f_2.isFacadeable(subject, TypeFacade.class));
+
+                    subCon_2.commit();
+                } finally {
+                    if (subCon_2.isActive()) subCon_2.rollback();
+                    subCon_2.close();
+                }
+            }
+        } finally {
+            if (mainCon.isActive()) mainCon.rollback();
+            mainCon.close();
+        }
+    }
+
+}