MARMOTTA-438: ported to junit4 runners

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

Branch: refs/heads/master
Commit: 9150ef744105d61d177f633ffbdd02a4a50c5958
Parents: e36815b
Author: Sergio Fernández <[email protected]>
Authored: Wed Apr 2 17:17:27 2014 +0200
Committer: Sergio Fernández <[email protected]>
Committed: Wed Apr 2 17:17:27 2014 +0200

----------------------------------------------------------------------
 .../platform/ldp/testsuite/LdpManifestTest.java |   3 +-
 .../platform/ldp/testsuite/LdpTestCase.java     |  12 +-
 .../ldp/testsuite/LdpTestCaseRunner.java        |  61 ++++++++++
 .../platform/ldp/testsuite/LdpTestCases.java    |  56 ++++++++-
 .../ldp/testsuite/LdpTestCasesExecutor.java     | 114 -------------------
 .../ldp/testsuite/LdpTestCasesRunner.java       |  99 ++++++++++++++++
 .../ldp/testsuite/LdpTestCasesUtils.java        |  46 +++++++-
 7 files changed, 263 insertions(+), 128 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/9150ef74/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpManifestTest.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpManifestTest.java
 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpManifestTest.java
index 50fb767..9d7afbd 100644
--- 
a/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpManifestTest.java
+++ 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpManifestTest.java
@@ -19,6 +19,7 @@ package org.apache.marmotta.platform.ldp.testsuite;
 
 import org.junit.*;
 import org.openrdf.model.Statement;
+import org.openrdf.model.vocabulary.RDF;
 import org.openrdf.repository.Repository;
 import org.openrdf.repository.RepositoryConnection;
 import org.openrdf.repository.RepositoryException;
@@ -57,7 +58,7 @@ public class LdpManifestTest {
             conn.begin();
             //ValueFactory vf = conn.getValueFactory();
             Assert.assertFalse(conn.isEmpty());
-            RepositoryResult<Statement> statements = conn.getStatements(null, 
null, null, false);
+            RepositoryResult<Statement> statements = conn.getStatements(null, 
RDF.TYPE, 
conn.getValueFactory().createURI("http://www.w3.org/2006/03/test-description#";, 
"TestCase"), false);
             Assert.assertTrue(statements.hasNext());
             statements.close();
             //TODO: check test cases are actually there

http://git-wip-us.apache.org/repos/asf/marmotta/blob/9150ef74/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCase.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCase.java
 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCase.java
index 33ec7e9..176494b 100644
--- 
a/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCase.java
+++ 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCase.java
@@ -17,18 +17,19 @@
 
 package org.apache.marmotta.platform.ldp.testsuite;
 
-import junit.framework.TestCase;
 import org.openrdf.model.URI;
 
 import java.util.List;
 
+import static org.junit.Assert.assertEquals;
+
 /**
  * LDP Test Case
  *
  * @author Sergio Fernández
  * @see <a 
href="http://www.w3.org/TR/ldp-test-cases/#test-case-description";>LDP Tests 
Cases</a>
  */
-public class LdpTestCase extends TestCase {
+public class LdpTestCase /* extends TestCase */ {
 
     /**
      * Test Case Uniform Resource Identifier
@@ -88,7 +89,7 @@ public class LdpTestCase extends TestCase {
     private URI testAssertion;
 
     public LdpTestCase(URI uri, String label) {
-        super(label);
+        //super(label);
         this.uri = uri;
         this.label = label;
     }
@@ -181,9 +182,4 @@ public class LdpTestCase extends TestCase {
         this.testAssertion = testAssertion;
     }
 
-    @Override
-    protected void runTest() throws Throwable {
-        assertEquals(label.substring(3), uri.getLocalName().substring(2));
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/9150ef74/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCaseRunner.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCaseRunner.java
 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCaseRunner.java
new file mode 100644
index 0000000..051952b
--- /dev/null
+++ 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCaseRunner.java
@@ -0,0 +1,61 @@
+/*
+ * 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.testsuite;
+
+import org.junit.runner.Description;
+import org.junit.runner.Runner;
+import org.junit.runner.notification.RunNotifier;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * LDP Test Case JUnit Runner
+ *
+ * @author Sergio Fernández
+ */
+public class LdpTestCaseRunner extends Runner {
+
+    private LdpTestCase testCase;
+
+    public LdpTestCaseRunner(LdpTestCase testCase) {
+        this.testCase = testCase;
+    }
+
+    @Override
+    public Description getDescription() {
+        return Description.createSuiteDescription(testCase.getLabel());
+    }
+
+    @Override
+    public void run(RunNotifier notifier) {
+        notifier.fireTestRunStarted(getDescription());
+        try {
+            run();
+        } catch (Exception e) {
+            //TODO
+            //notifier.fireTestFailure(e);
+        }
+        notifier.fireTestFinished(getDescription());
+    }
+
+    private void run() {
+        assertEquals(testCase.getLabel().substring(3), 
testCase.getUri().getLocalName().substring(2));
+        //TODO: actual execution
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/marmotta/blob/9150ef74/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCases.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCases.java
 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCases.java
index 247c21d..9091c00 100644
--- 
a/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCases.java
+++ 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCases.java
@@ -17,11 +17,28 @@
 
 package org.apache.marmotta.platform.ldp.testsuite;
 
+import com.jayway.restassured.RestAssured;
+import org.apache.commons.io.IOUtils;
+import org.apache.marmotta.platform.core.exception.io.MarmottaImportException;
+import org.apache.marmotta.platform.core.test.base.JettyMarmotta;
+import org.apache.marmotta.platform.ldp.webservices.LdpWebService;
+import org.junit.*;
+import org.junit.runner.RunWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.ws.rs.core.UriBuilder;
+import java.io.IOException;
+import java.net.URISyntaxException;
+
 /**
- * LDP Test Cases metadata (updated on April 2, 2014)
+ * LDP Test Cases
  *
  * @author Sergio Fernández
+ *
+ * @see <a 
href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/Test%20Cases/LDP%20Test%20Cases.html";>LDP
 Test Cases</a>
  */
+@RunWith(LdpTestCasesRunner.class)
 public class LdpTestCases {
 
     public final static String FILES_PATH = "/testsuite/";
@@ -30,4 +47,41 @@ public class LdpTestCases {
 
     public final static String MANIFEST_CACHE = "LDP-Test-Cases-WD-20140402";
 
+    private static Logger log = LoggerFactory.getLogger(LdpTestCases.class);
+
+    private static JettyMarmotta marmotta;
+
+    private static String baseUrl;
+
+    private static String testResourceTTL;
+
+    @BeforeClass
+    public static void setup() throws MarmottaImportException, 
URISyntaxException, IOException {
+        marmotta = new JettyMarmotta("/marmotta", LdpWebService.class);
+        RestAssured.baseURI = "http://localhost";;
+        RestAssured.port = marmotta.getPort();
+        RestAssured.basePath = marmotta.getContext();
+        baseUrl = 
UriBuilder.fromUri("http://localhost";).port(marmotta.getPort()).path(marmotta.getContext()).build().toString();
+
+        //initialization
+        testResourceTTL = 
IOUtils.toString(LdpTestCases.class.getResourceAsStream("/test.ttl"), "utf8");
+    }
+
+    @Before
+    public void before() {
+        log.warn("before");
+    }
+
+    @After
+    public void after() {
+        log.warn("after");
+    }
+
+    @AfterClass
+    public static void shutdown() {
+        //marmotta.shutdown();
+        marmotta = null;
+        testResourceTTL = null;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/9150ef74/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCasesExecutor.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCasesExecutor.java
 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCasesExecutor.java
deleted file mode 100644
index 1dd0900..0000000
--- 
a/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCasesExecutor.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * 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.testsuite;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.junit.runner.RunWith;
-import org.junit.runners.AllTests;
-import org.openrdf.model.URI;
-import org.openrdf.query.*;
-import org.openrdf.repository.Repository;
-import org.openrdf.repository.RepositoryConnection;
-import org.openrdf.repository.RepositoryException;
-import org.openrdf.rio.RDFParseException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-
-/**
- * LDP Test Cases Executor
- *
- * @author Sergio Fernández
- */
-@RunWith(AllTests.class)
-public final class LdpTestCasesExecutor {
-
-    private static Logger log = 
LoggerFactory.getLogger(LdpTestCasesExecutor.class);
-
-    public static TestSuite suite() {
-        TestSuite suite = new TestSuite();
-        for (Test test : buildTestCasesFromManifest()) {
-            suite.addTest(test);
-        }
-        return suite;
-    }
-
-    private static Collection<Test> buildTestCasesFromManifest() {
-        Collection<Test> tests = new ArrayList<>();
-
-        try {
-            Repository repo = LdpTestCasesUtils.loadData();
-            RepositoryConnection conn = repo.getConnection();
-            try {
-                conn.begin();
-
-                //TODO: this query is not final, it needs to evolve in 
parallel with the test cases
-                String testCasesQuery =
-                        "PREFIX dc: <http://purl.org/dc/terms/> \n" +
-                        "PREFIX foaf: <http://xmlns.com/foaf/0.1/> \n" +
-                        "PREFIX ht: <http://www.w3.org/2011/http#> \n" +
-                        "PREFIX owl: <http://www.w3.org/2002/07/owl#> \n" +
-                        "PREFIX rdf: 
<http://www.w3.org/1999/02/22-rdf-syntax-ns#> \n" +
-                        "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
\n" +
-                        "PREFIX td: 
<http://www.w3.org/2006/03/test-description#> \n" +
-                        "PREFIX tn: 
<http://ldp.example.org/NewTestDefinitions#> \n\n" +
-                        "SELECT ?tc ?label \n" +
-                        "WHERE { \n" +
-                        "  ?tc a td:TestCase ; \n" +
-                        "      rdfs:label ?label . \n" +
-                        "}";
-                TupleQuery tupleQuery = 
conn.prepareTupleQuery(QueryLanguage.SPARQL, testCasesQuery);
-                TupleQueryResult results = tupleQuery.evaluate();
-                try {
-                    while (results.hasNext()) {
-                        BindingSet bindings = results.next();
-                        LdpTestCase testCase = new 
LdpTestCase((URI)bindings.getValue("tc"), 
bindings.getValue("label").stringValue());
-
-                        //TODO
-
-                        tests.add(testCase);
-                    }
-                } finally {
-                    results.close();
-                }
-            } catch (RepositoryException e) {
-                log.error("Error loading test cases: {}", e.getMessage(), e);
-                return tests;
-            } catch (QueryEvaluationException | MalformedQueryException e) {
-                log.error("Error performing test cases' query: {}", 
e.getMessage(), e);
-                return tests;
-            } finally {
-                conn.commit();
-                conn.close();
-            }
-        } catch (RDFParseException | IOException e) {
-            log.error("Error loading test cases: {}", e.getMessage(), e);
-            return tests;
-        } catch (RepositoryException e) {
-            log.error("Error connecting with the repository: {}", 
e.getMessage(), e);
-            return tests;
-        }
-
-        return tests;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/marmotta/blob/9150ef74/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCasesRunner.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCasesRunner.java
 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCasesRunner.java
new file mode 100644
index 0000000..c54cacb
--- /dev/null
+++ 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCasesRunner.java
@@ -0,0 +1,99 @@
+/*
+ * 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.testsuite;
+
+import org.junit.runner.Runner;
+import org.junit.runners.Suite;
+import org.openrdf.model.URI;
+import org.openrdf.query.*;
+import org.openrdf.repository.Repository;
+import org.openrdf.repository.RepositoryConnection;
+import org.openrdf.repository.RepositoryException;
+import org.openrdf.rio.RDFParseException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * LDP Test Cases JUnit Runner
+ *
+ * @author Sergio Fernández
+ */
+public class LdpTestCasesRunner extends Suite {
+
+    private static Logger log = 
LoggerFactory.getLogger(LdpTestCasesRunner.class);
+
+    public LdpTestCasesRunner(Class<?> klass) throws Throwable {
+        super(klass, buildTestCasesFromManifest());
+    }
+
+    private static List<Runner> buildTestCasesFromManifest() {
+        List<Runner> runners = new ArrayList<>();
+
+        try {
+            Repository repo = LdpTestCasesUtils.loadData();
+            RepositoryConnection conn = repo.getConnection();
+            try {
+                conn.begin();
+
+                //TODO: this query is not final, it needs to evolve in 
parallel with the test cases
+                String testCasesQuery = 
LdpTestCasesUtils.getNormativeNamespacesSparql() + "\n" +
+                        "SELECT ?tc ?label \n" +
+                        "WHERE { \n" +
+                        "  ?tc a td:TestCase ; \n" +
+                        "      rdfs:label ?label . \n" +
+                        "}";
+                TupleQuery tupleQuery = 
conn.prepareTupleQuery(QueryLanguage.SPARQL, testCasesQuery);
+                TupleQueryResult results = tupleQuery.evaluate();
+                try {
+                    while (results.hasNext()) {
+                        BindingSet bindings = results.next();
+                        LdpTestCase testCase = new 
LdpTestCase((URI)bindings.getValue("tc"), 
bindings.getValue("label").stringValue());
+                        //TODO: set more data to the test case
+                        runners.add(new LdpTestCaseRunner(testCase));
+                    }
+                } finally {
+                    results.close();
+                }
+                conn.commit();
+            } catch (RepositoryException e) {
+                log.error("Error loading test cases: {}", e.getMessage(), e);
+                return runners;
+            } catch (QueryEvaluationException | MalformedQueryException e) {
+                log.error("Error performing test cases' query: {}", 
e.getMessage(), e);
+                return runners;
+            } finally {
+                conn.close();
+            }
+        } catch (RDFParseException | IOException e) {
+            log.error("Error loading test cases: {}", e.getMessage(), e);
+            return runners;
+        } catch (RepositoryException e) {
+            log.error("Error connecting with the repository: {}", 
e.getMessage(), e);
+            return runners;
+        }
+
+        log.info("Initialized LDP test suite with {} test cases", 
runners.size());
+        return runners;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/marmotta/blob/9150ef74/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCasesUtils.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCasesUtils.java
 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCasesUtils.java
index 7ff982e..66eead6 100644
--- 
a/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCasesUtils.java
+++ 
b/platform/marmotta-ldp/src/test/java/org/apache/marmotta/platform/ldp/testsuite/LdpTestCasesUtils.java
@@ -27,6 +27,9 @@ import org.openrdf.sail.memory.MemoryStore;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Properties;
 
 /**
@@ -71,21 +74,56 @@ public class LdpTestCasesUtils {
     }
 
     /**
-     * Add some normative namespaces
+     * Get normative namespaces
      *
-     * @param conn target connection
      * @throws IOException
      * @throws RepositoryException
      *
      * @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>
      */
-    public static void addNormativeNamespaces(RepositoryConnection conn) 
throws IOException, RepositoryException {
+    public static Map<String,String> getNormativeNamespaces() throws 
IOException {
         String path = LdpTestCases.FILES_PATH + "namespaces.properties";
+        Map<String,String> prefixes = new HashMap<>();
         Properties properties = new Properties();
         properties.load(LdpTestCasesUtils.class.getResourceAsStream(path));
         for(String key : properties.stringPropertyNames()) {
             String value = properties.getProperty(key);
-            conn.setNamespace(value, key);
+            prefixes.put(key, value);
+        }
+        return Collections.unmodifiableMap(prefixes);
+    }
+
+    /**
+     * Get normative namespaces with SPARQL syntax
+     *
+     * @throws IOException
+     */
+    public static String getNormativeNamespacesSparql() throws IOException {
+        StringBuffer sb = new StringBuffer();
+        Map<String, String> normativeNamespaces = getNormativeNamespaces();
+        for (Map.Entry<String, String> entry : normativeNamespaces.entrySet()) 
{
+            //PREFIX dc: <http://purl.org/dc/terms/>
+            sb.append("PREFIX ");
+            sb.append(entry.getKey());
+            sb.append(": <");
+            sb.append(entry.getValue());
+            sb.append("> \n");
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Add normative namespaces
+     *
+     * @param conn target connection
+     * @throws IOException
+     * @throws RepositoryException
+     */
+    public static void addNormativeNamespaces(RepositoryConnection conn) 
throws IOException, RepositoryException {
+        Map<String, String> normativeNamespaces = getNormativeNamespaces();
+        for (Map.Entry<String, String> entry : normativeNamespaces.entrySet()) 
{
+            conn.setNamespace(entry.getValue(), entry.getKey());
         }
     }
+
 }

Reply via email to