MARMOTTA-438: more work on test suite execution
Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/49b6b3c0 Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/49b6b3c0 Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/49b6b3c0 Branch: refs/heads/ldp Commit: 49b6b3c0dcc89731c423cb01ac7e14b4f19e5a20 Parents: c3b393e Author: Sergio Fernández <[email protected]> Authored: Tue Apr 15 16:31:38 2014 +0200 Committer: Sergio Fernández <[email protected]> Committed: Tue Apr 15 16:31:38 2014 +0200 ---------------------------------------------------------------------- .../platform/ldp/services/LdpServiceImpl.java | 1 + .../ldp/testsuite/LdpTestCaseRunner.java | 20 ++++- .../platform/ldp/testsuite/LdpTestCases.java | 2 +- .../ldp/testsuite/LdpTestCasesRunner.java | 82 +++++++++++--------- 4 files changed, 66 insertions(+), 39 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/marmotta/blob/49b6b3c0/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/services/LdpServiceImpl.java ---------------------------------------------------------------------- diff --git a/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/services/LdpServiceImpl.java b/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/services/LdpServiceImpl.java index 75d7923..8d28aae 100644 --- a/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/services/LdpServiceImpl.java +++ b/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/services/LdpServiceImpl.java @@ -44,6 +44,7 @@ import org.openrdf.rio.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.annotation.PostConstruct; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; import javax.ws.rs.core.EntityTag; http://git-wip-us.apache.org/repos/asf/marmotta/blob/49b6b3c0/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 index 79a6079..3c2f36b 100644 --- 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 @@ -70,14 +70,30 @@ public class LdpTestCaseRunner extends Runner { notifier.fireTestFinished(getDescription()); } + /** + * Actual test case run method, which build the test case execution + * on the fly based on + */ private void run() { Assume.assumeNotNull(baseUrl); assertNotNull(testCase); assertNotNull(testCase.getUri()); String context = buildContext(testCase); - log.info("Executing LDP Test Case {} over context {}...", testCase.getUri().getLocalName(), context); + log.warn("Executing LDP Test Case {} over context {}...", testCase.getUri().getLocalName(), context); - //TODO: actual test case execution + //basic pre-checking + //RestAssured.expect().statusCode(200).get(baseUrl); //TODO: clarify this (root container?) + RestAssured.expect().statusCode(404).get(context); + + //load all information of the test cases + readTestCase(testCase); + + //actual test case execution + + } + + private void readTestCase(LdpTestCase testCase) { + //TODO: read all details } private String buildContext(LdpTestCase testCase) { http://git-wip-us.apache.org/repos/asf/marmotta/blob/49b6b3c0/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 c60aba4..ace1b23 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 @@ -53,7 +53,7 @@ public class LdpTestCases { @Override protected void before() throws Throwable { - marmotta = new JettyMarmotta("/marmotta-ldp", LdpWebService.class); + marmotta = new JettyMarmotta("/marmotta", LdpWebService.class); RestAssured.baseURI = "http://localhost"; RestAssured.port = marmotta.getPort(); RestAssured.basePath = marmotta.getContext(); http://git-wip-us.apache.org/repos/asf/marmotta/blob/49b6b3c0/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 index f9fc57a..4cb18a7 100644 --- 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 @@ -18,6 +18,7 @@ package org.apache.marmotta.platform.ldp.testsuite; import org.apache.commons.lang3.StringUtils; +import org.apache.marmotta.platform.ldp.webservices.LdpWebService; import org.junit.rules.TestRule; import org.junit.runner.Runner; import org.junit.runner.notification.RunNotifier; @@ -37,6 +38,7 @@ import java.io.IOException; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -50,9 +52,28 @@ public class LdpTestCasesRunner extends Suite { private LdpTestCases.MarmottaResource marmotta; + private Repository repo; + + private List<Runner> runners; + public LdpTestCasesRunner(Class<?> klass) throws Throwable { - super(klass, buildTestCasesFromManifest()); + super(klass, Collections.EMPTY_LIST); + + //load test cases manifest + repo = loadManifest(); + //get children runners for each test cases from manifest + RepositoryConnection conn = repo.getConnection(); + try { + conn.begin(); + runners = buildTestCasesFromManifest(conn); + log.info("Initialized LDP test suite with {} test cases", runners.size()); + conn.commit(); + } finally { + conn.close(); + } + + //get embedded marmotta from rules //TODO: it should be an easier way to do it... for (TestRule rule : this.classRules()) { if (LdpTestCases.MarmottaResource.class.equals(rule.getClass())) { @@ -63,55 +84,44 @@ public class LdpTestCasesRunner extends Suite { } @Override + protected List<Runner> getChildren() { + return Collections.unmodifiableList(runners); + } + + @Override protected void runChild(Runner runner, RunNotifier notifier) { if (runner instanceof LdpTestCaseRunner) { - ((LdpTestCaseRunner)runner).setBaseUrl(marmotta.baseUrl); + ((LdpTestCaseRunner)runner).setBaseUrl(marmotta.baseUrl + LdpWebService.PATH); } super.runChild(runner, notifier); } - private static List<Runner> buildTestCasesFromManifest() throws Throwable { - List<Runner> runners = new ArrayList<>(); - + private Repository loadManifest() throws RepositoryException, RDFParseException, IOException { String path = LdpTestCases.ROOT_PATH + LdpTestCases.MANIFEST_CACHE + ".ttl"; + return LdpTestCasesUtils.loadData(path, RDFFormat.TURTLE); + } + + private static List<Runner> buildTestCasesFromManifest(RepositoryConnection conn) throws Throwable { + List<Runner> runners = new ArrayList<>(); try { - Repository repo = LdpTestCasesUtils.loadData(path, RDFFormat.TURTLE); - RepositoryConnection conn = repo.getConnection(); + String testCasesQuery = LdpTestCasesUtils.getNormativeNamespacesSparql()+ "\n" + + "SELECT ?tc WHERE { ?tc a td:TestCase }"; + TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, testCasesQuery); + TupleQueryResult results = tupleQuery.evaluate(); try { - conn.begin(); - - String testCasesQuery = LdpTestCasesUtils.getNormativeNamespacesSparql()+ "\n" - + "SELECT ?tc WHERE { ?tc a td:TestCase }"; - 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")); - runners.add(new LdpTestCaseRunner(testCase)); - } - } finally { - results.close(); + while (results.hasNext()) { + BindingSet bindings = results.next(); + LdpTestCase testCase = new LdpTestCase((URI)bindings.getValue("tc")); + runners.add(new LdpTestCaseRunner(testCase)); } - 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(); + results.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.error("Error loading test cases: {}", e.getMessage(), e); + } catch (QueryEvaluationException | MalformedQueryException e) { + log.error("Error performing test cases' query: {}", e.getMessage(), e); } - - log.info("Initialized LDP test suite with {} test cases", runners.size()); return runners; }
