MARMOTTA-438: improving the generic infrastructure

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

Branch: refs/heads/develop
Commit: 709786234b1efa0dc1c09de88ddf034eff046d01
Parents: b76ed21
Author: Sergio Fernández <[email protected]>
Authored: Mon Mar 17 16:49:24 2014 +0100
Committer: Sergio Fernández <[email protected]>
Committed: Mon Mar 17 16:49:24 2014 +0100

----------------------------------------------------------------------
 .../testsuite/LdpAbstractTestSuite.java         | 100 ++++++++++++++++---
 .../testsuite/LdpResourcesTestSuite.java        |  22 ++++
 .../resources/testsuite/namespaces.properties   |  26 +++++
 3 files changed, 136 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/70978623/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/webservices/testsuite/LdpAbstractTestSuite.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/webservices/testsuite/LdpAbstractTestSuite.java
 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/webservices/testsuite/LdpAbstractTestSuite.java
index e2453c3..3d091f0 100644
--- 
a/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/webservices/testsuite/LdpAbstractTestSuite.java
+++ 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/webservices/testsuite/LdpAbstractTestSuite.java
@@ -1,18 +1,41 @@
+/*
+ * 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 org.apache.marmotta.platform.ldp.webservices.testsuite;
 
+import org.junit.After;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.rules.TestName;
 import org.openrdf.repository.Repository;
 import org.openrdf.repository.RepositoryConnection;
 import org.openrdf.repository.RepositoryException;
 import org.openrdf.repository.sail.SailRepository;
 import org.openrdf.rio.RDFFormat;
 import org.openrdf.rio.RDFParseException;
-import org.openrdf.rio.Rio;
 import org.openrdf.sail.memory.MemoryStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Properties;
 
 /**
  * LDP Abstract Test Suite
@@ -24,6 +47,28 @@ public abstract class LdpAbstractTestSuite {
 
     protected static Logger log = 
LoggerFactory.getLogger(LdpAbstractTestSuite.class);
 
+    public final static String FILES_PATH = "/testsuite/";
+
+    protected Repository repo;
+
+    @Rule
+    public TestName name = new TestName();
+
+    @Before
+    public final void before() throws RepositoryException, RDFParseException, 
IOException {
+        log.info("initializing test case {}...", name.getMethodName());
+        repo = loadData(name.getMethodName());
+        Assume.assumeNotNull(repo);
+    }
+
+    @After
+    public final void after() throws RepositoryException {
+        if (repo != null) {
+            repo.shutDown();
+            repo = null;
+        }
+    }
+
     /**
      * Load a dataset into a new in-memory repository
      *
@@ -33,7 +78,7 @@ public abstract class LdpAbstractTestSuite {
      * @throws RepositoryException
      * @throws IOException
      */
-    protected Repository loadDataset(String file) throws RDFParseException, 
RepositoryException, IOException {
+    protected Repository loadData(String file) throws RDFParseException, 
RepositoryException, IOException {
         log.debug("creating new in-memory repository...");
         Repository repo = new SailRepository(new MemoryStore());
         repo.initialize();
@@ -41,7 +86,9 @@ public abstract class LdpAbstractTestSuite {
         try {
             conn.begin();
             conn.clear();
-            loadDataset(conn, file);
+            conn.clearNamespaces();
+            addNormativeNamespaces(conn);
+            loadData(conn, file);
             conn.commit();
         } finally {
             conn.close();
@@ -53,21 +100,50 @@ public abstract class LdpAbstractTestSuite {
      * Load a dataset to the connection passed
      *
      * @param conn connection
-     * @param file file name
+     * @param tc test case identifier
      * @throws RDFParseException
      * @throws RepositoryException
      * @throws IOException
      */
-    protected void loadDataset(RepositoryConnection conn, String file) throws 
RDFParseException, RepositoryException, IOException {
-        log.debug("loading dataset from {}...", file);
-        InputStream dataset = getClass().getResourceAsStream(file);
-        try {
-            conn.add(dataset, "", Rio.getParserFormatForFileName(file));
+    protected void loadData(RepositoryConnection conn, String tc) throws 
RDFParseException, RepositoryException, IOException {
+        log.debug("loading test case {}...", tc);
+        String path = FILES_PATH + "TC-" + tc + ".ttl";
+        InputStream is = getClass().getResourceAsStream(path);
+        if (is == null) {
+            log.error("Data for test case {} not found where expected ({})", 
tc, path);
+        } else {
+            try {
+                conn.add(is, "", RDFFormat.TURTLE);
+            } finally {
+                is.close();
+            }
+            log.debug("data for test case {} successfully loaded", tc);
         }
-        finally {
-            dataset.close();
+    }
+
+    /**
+     * Add some normative namespaces
+     *
+     * @param conn target connection
+     * @see <a 
href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/Test%20Cases/LDP%20Test%20Cases.html#h3_namespaces-used";>Sec.
 4.1 Namespaces used</a>
+     */
+    private void addNormativeNamespaces(RepositoryConnection conn) {
+        Properties properties = new Properties();
+        String path = FILES_PATH + "namespaces.properties";
+        try {
+            properties.load(getClass().getResourceAsStream(path));
+            for(String key : properties.stringPropertyNames()) {
+                String value = properties.getProperty(key);
+                try {
+                    conn.setNamespace(value, key);
+                } catch (RepositoryException e) {
+                    log.error("Error adding namespace {}: {}", key, 
e.getMessage());
+                }
+            }
+        } catch (IOException | NullPointerException e) {
+            log.error("Error loading normative namespaces at {}: {}", path, 
e.getMessage());
         }
-        log.debug("dataset successfully loaded");
+
     }
 
 }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/70978623/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/webservices/testsuite/LdpResourcesTestSuite.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/webservices/testsuite/LdpResourcesTestSuite.java
 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/webservices/testsuite/LdpResourcesTestSuite.java
index 6861189..6c7ed93 100644
--- 
a/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/webservices/testsuite/LdpResourcesTestSuite.java
+++ 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/webservices/testsuite/LdpResourcesTestSuite.java
@@ -1,5 +1,24 @@
+/*
+ * 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 org.apache.marmotta.platform.ldp.webservices.testsuite;
 
+import org.junit.Test;
+
 /**
  * LDPRs Test Suite
  *
@@ -7,6 +26,9 @@ package org.apache.marmotta.platform.ldp.webservices.testsuite;
  */
 public class LdpResourcesTestSuite extends LdpAbstractTestSuite {
 
+    @Test
+    public void R1() {
 
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/70978623/platform/marmotta-ldp/src/test/resources/testsuite/namespaces.properties
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-ldp/src/test/resources/testsuite/namespaces.properties 
b/platform/marmotta-ldp/src/test/resources/testsuite/namespaces.properties
new file mode 100644
index 0000000..3d4f2f6
--- /dev/null
+++ b/platform/marmotta-ldp/src/test/resources/testsuite/namespaces.properties
@@ -0,0 +1,26 @@
+# 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.
+
+cnt=http://www.w3.org/2011/content#
+dc=http://purl.org/dc/terms/
+doap=http://usefulinc.com/ns/doap#
+earl=http://www.w3.org/ns/earl#
+foaf=http://xmlns.com/foaf/0.1/
+ht=http://www.w3.org/2011/http#
+httph=http://www.w3.org/2011/http-headers#
+ldptc=http://www.w3.org/TR/ldp/TestCases#
+td=http://www.w3.org/2006/03/test-description#
+tn=http://ldp.example.org/NewTestDefinitions#

Reply via email to