Repository: jena Updated Branches: refs/heads/master b5d0c49d6 -> 0d5629478
Split ServerTest into ServerCtl and ServerTestData. Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/6d63d21d Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/6d63d21d Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/6d63d21d Branch: refs/heads/master Commit: 6d63d21dbf6b2163a1e7ad79aee87b0bcb7c90f9 Parents: be13685 Author: Andy Seaborne <a...@apache.org> Authored: Sat Oct 15 18:29:30 2016 +0100 Committer: Andy Seaborne <a...@apache.org> Committed: Sat Oct 15 18:34:51 2016 +0100 ---------------------------------------------------------------------- .../java/org/apache/jena/fuseki/ServerCtl.java | 167 +++++++++++++++++-- .../java/org/apache/jena/fuseki/ServerTest.java | 130 --------------- .../org/apache/jena/fuseki/ServerTestData.java | 45 +++++ .../java/org/apache/jena/fuseki/TS_Fuseki.java | 2 +- .../java/org/apache/jena/fuseki/TestAuth.java | 3 +- .../java/org/apache/jena/fuseki/TestQuery.java | 89 +++++----- .../apache/jena/fuseki/TestSPARQLProtocol.java | 61 +++---- .../fuseki/http/TestDatasetAccessorHTTP.java | 133 +++++++-------- .../http/TestDatasetGraphAccessorHTTP.java | 6 +- .../org/apache/jena/fuseki/http/TestHttpOp.java | 18 +- 10 files changed, 349 insertions(+), 305 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerCtl.java ---------------------------------------------------------------------- diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerCtl.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerCtl.java index da957a4..2c91bd5 100644 --- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerCtl.java +++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerCtl.java @@ -18,39 +18,113 @@ package org.apache.jena.fuseki; +import static org.apache.jena.fuseki.ServerCtl.ServerScope.CLASS ; +import static org.apache.jena.fuseki.ServerCtl.ServerScope.SUITE ; +import static org.apache.jena.fuseki.ServerCtl.ServerScope.TEST ; + +import java.io.IOException ; +import java.net.ServerSocket ; +import java.util.concurrent.atomic.AtomicInteger ; + import org.apache.http.client.HttpClient ; import org.apache.http.impl.client.CloseableHttpClient ; import org.apache.jena.atlas.io.IO ; +import org.apache.jena.fuseki.server.DatasetRegistry ; import org.apache.jena.riot.web.HttpOp ; +import org.apache.jena.sparql.core.DatasetGraph ; +import org.apache.jena.sparql.core.DatasetGraphFactory ; +import org.apache.jena.sparql.modify.request.Target ; +import org.apache.jena.sparql.modify.request.UpdateDrop ; +import org.apache.jena.system.Txn ; +import org.apache.jena.update.Update ; +import org.apache.jena.update.UpdateExecutionFactory ; +import org.apache.jena.update.UpdateProcessor ; +/** + * Manage a single server for use wth tests. It supports three modes: + * <ul> + * <li>One server for a whole test suite + * <li>One server per test class + * <li>One server per individual test + * </ul> + * One server per individual test can be troublesome due to connections not closing down + * fast enough (left in TCP state {@code TIME_WAIT} which is 2 minutes) and also can be slow. + * One server per test class is a good compromise. + * <p> The data in the server is always reseet between tests. + * <p> + * Using a connection pooling HttpClient (see {@link HttpOp#createPoolingHttpClient()}) is important, + * both for test performance and for reducing the TCP connection load on the operarting system. + * <p> + * Usage: + * </p> + * <p> + * In the test suite, put: + * + * <pre> + * {@literal @BeforeClass} static public void beforeSuiteClass() { ServerCtl.ctlBeforeTestSuite(); } + * {@literal @AfterClass} static public void afterSuiteClass() { ServerCtl.ctlAfterTestSuite(); } + * </pre> + * <p> + * In the test class, put: + * <pre> + * {@literal @BeforeClass} public static void ctlBeforeClass() { ServerCtl.ctlBeforeClass(); } + * {@literal @AfterClass} public static void ctlAfterClass() { ServerCtl.ctlAfterClass(); } + * {@literal @Before} public void ctlBeforeTest() { ServerCtl.ctlBeforeTest(); } + * {@literal @After} public void ctlAfterTest() { ServerCtl.ctlAfterTest(); } + * </pre> + */ public class ServerCtl { static { Fuseki.init(); } - - /* Put this in each test class using the Fuseki server: + + /* Cut&Paste versions: + + Test suite (TS_*) + @BeforeClass static public void beforeSuiteClass() { ServerCtl.ctlBeforeTestSuite(); } + @AfterClass static public void afterSuiteClass() { ServerCtl.ctlAfterTestSuite(); } + + Test class (Test*) @BeforeClass public static void ctlBeforeClass() { ServerCtl.ctlBeforeClass(); } @AfterClass public static void ctlAfterClass() { ServerCtl.ctlAfterClass(); } @Before public void ctlBeforeTest() { ServerCtl.ctlBeforeTest(); } - @After public void ctlAfterTest() { ServerCtl.ctlAfterTest(); } + @After public void ctlAfterTest() { ServerCtl.ctlAfterTest(); } + */ static HttpClient defaultHttpClient = HttpOp.getDefaultHttpClient(); - // 2 choices: server over whole test suite or server over each test class. - // Preferred "true" - stop-start server between test classes. // Note: it is import to cleanly close a PoolingHttpClient across server restarts - // otherwise the pooled connections remian for the old server. + // otherwise the pooled connections remain for the old server. + + /*package : for import static */ enum ServerScope { SUITE, CLASS, TEST } + private static ServerScope serverScope = ServerScope.CLASS ; + private static int currentPort = choosePort() ; + + public static int port() { + return currentPort ; + } + + // Whether to use a transaction on the dataset or to use SPARQL Update. + static boolean CLEAR_DSG_DIRECTLY = true ; + static private DatasetGraph dsgTesting ; + + // Abstraction that runs a SPARQL server for tests. + public static final String urlRoot() { return "http://localhost:"+port()+"/" ; } + public static final String datasetPath() { return "/dataset" ; } + public static final String serviceUpdate() { return "http://localhost:"+port()+datasetPath()+"/update" ; } + public static final String serviceQuery() { return "http://localhost:"+port()+datasetPath()+"/query" ; } + public static final String serviceREST() { return "http://localhost:"+port()+datasetPath()+"/data" ; } + - static final boolean SERVER_PER_CLASS = true ; public static void ctlBeforeTestSuite() { - if ( ! SERVER_PER_CLASS ) { + if ( serverScope == SUITE ) { setPoolingHttpClient() ; - ServerTest.allocServer(); + allocServer(); } } public static void ctlAfterTestSuite() { - if ( ! SERVER_PER_CLASS ) { - ServerTest.freeServer(); + if ( serverScope == SUITE ) { + freeServer(); resetDefaultHttpClient() ; } } @@ -59,9 +133,9 @@ public class ServerCtl { * Setup for the tests by allocating a Fuseki instance to work with */ public static void ctlBeforeClass() { - if ( SERVER_PER_CLASS ) { + if ( serverScope == CLASS ) { setPoolingHttpClient() ; - ServerTest.allocServer(); + allocServer(); } } @@ -69,8 +143,8 @@ public class ServerCtl { * Clean up after tests by de-allocating the Fuseki instance */ public static void ctlAfterClass() { - if ( SERVER_PER_CLASS ) { - ServerTest.freeServer(); + if ( serverScope == CLASS ) { + freeServer(); resetDefaultHttpClient() ; } } @@ -79,13 +153,21 @@ public class ServerCtl { * Placeholder. */ public static void ctlBeforeTest() { + if ( serverScope == TEST ) { + setPoolingHttpClient() ; + allocServer(); + } } /** * Clean up after each test by resetting the Fuseki dataset */ public static void ctlAfterTest() { - ServerTest.resetServer(); + if ( serverScope == TEST ) { + freeServer(); + resetDefaultHttpClient() ; + } else + resetServer(); } /** Set a PoolingHttpClient */ @@ -105,4 +187,57 @@ public class ServerCtl { IO.close((CloseableHttpClient)hc) ; HttpOp.setDefaultHttpClient(newHttpClient) ; } + + @SuppressWarnings("deprecation") + private static EmbeddedFusekiServer1 server = null ; + + // reference count of start/stop server + private static AtomicInteger countServer = new AtomicInteger() ; + + /*package*/ static void allocServer() { + if ( countServer.getAndIncrement() == 0 ) + setupServer() ; + } + + /*package*/ static void freeServer() { + if ( countServer.decrementAndGet() == 0 ) + teardownServer() ; + } + + @SuppressWarnings("deprecation") + protected static void setupServer() { + dsgTesting = DatasetGraphFactory.createTxnMem() ; + server = EmbeddedFusekiServer1.create(currentPort, dsgTesting, datasetPath()) ; + server.start() ; + } + + @SuppressWarnings("deprecation") + protected static void teardownServer() { + DatasetRegistry.get().clear() ; + if ( server != null ) + server.stop() ; + server = null ; + } + + /*package*/ static void resetServer() { + if (countServer.get() == 0) + throw new RuntimeException("No server started!"); + if ( CLEAR_DSG_DIRECTLY ) { + Txn.executeWrite(dsgTesting, ()->dsgTesting.clear()) ; + } else { + Update clearRequest = new UpdateDrop(Target.ALL) ; + UpdateProcessor proc = UpdateExecutionFactory.createRemote(clearRequest, serviceUpdate()) ; + try {proc.execute() ; } + catch (Throwable e) {e.printStackTrace(); throw e;} + } + } + + /** Choose an unused port for a server to listen on */ + public static int choosePort() { + try (ServerSocket s = new ServerSocket(0)) { + return s.getLocalPort(); + } catch (IOException ex) { + throw new FusekiException("Failed to find a port for tests!"); + } + } } http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTest.java ---------------------------------------------------------------------- diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTest.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTest.java deleted file mode 100644 index 38b51bb..0000000 --- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTest.java +++ /dev/null @@ -1,130 +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.jena.fuseki; - -import java.io.IOException ; -import java.net.ServerSocket ; -import java.util.concurrent.atomic.AtomicInteger; - -import org.apache.jena.fuseki.server.DatasetRegistry ; -import org.apache.jena.graph.Graph ; -import org.apache.jena.graph.Node ; -import org.apache.jena.graph.NodeFactory ; -import org.apache.jena.rdf.model.Model ; -import org.apache.jena.rdf.model.ModelFactory ; -import org.apache.jena.sparql.core.DatasetGraph ; -import org.apache.jena.sparql.core.DatasetGraphFactory ; -import org.apache.jena.sparql.modify.request.Target ; -import org.apache.jena.sparql.modify.request.UpdateDrop ; -import org.apache.jena.sparql.sse.SSE ; -import org.apache.jena.system.Txn ; -import org.apache.jena.update.Update ; -import org.apache.jena.update.UpdateExecutionFactory ; -import org.apache.jena.update.UpdateProcessor ; - -/** Manage a server for testing. - * Example for one server per test suite: - * <pre> - \@BeforeClass public static void beforeClass() { ServerTest.allocServer() ; } - \@AfterClass public static void afterClass() { ServerTest.freeServer() ; } - \@After public void after() { ServerTest.resetServer() ; } - </pre> - */ -public class ServerTest -{ - static { Fuseki.init(); } - - // Abstraction that runs a SPARQL server for tests. - public static final int port = choosePort() ; // Different to the Fuseki2 test ports. - public static final String urlRoot = "http://localhost:"+port+"/" ; - public static final String datasetPath = "/dataset" ; - public static final String serviceUpdate = "http://localhost:"+port+datasetPath+"/update" ; - public static final String serviceQuery = "http://localhost:"+port+datasetPath+"/query" ; - public static final String serviceREST = "http://localhost:"+port+datasetPath+"/data" ; - - public static final String gn1 = "http://graph/1" ; - public static final String gn2 = "http://graph/2" ; - public static final String gn99 = "http://graph/99" ; - - public static final Node n1 = NodeFactory.createURI("http://graph/1") ; - public static final Node n2 = NodeFactory.createURI("http://graph/2") ; - public static final Node n99 = NodeFactory.createURI("http://graph/99") ; - - public static final Graph graph1 = SSE.parseGraph("(base <http://example/> (graph (<x> <p> 1)))") ; - public static final Graph graph2 = SSE.parseGraph("(base <http://example/> (graph (<x> <p> 2)))") ; - - public static final Model model1 = ModelFactory.createModelForGraph(graph1) ; - public static final Model model2 = ModelFactory.createModelForGraph(graph2) ; - - @SuppressWarnings("deprecation") - private static EmbeddedFusekiServer1 server = null ; - - // reference count of start/stop server - private static AtomicInteger countServer = new AtomicInteger() ; - - /*package*/ static void allocServer() { - if ( countServer.getAndIncrement() == 0 ) - setupServer() ; - } - - /*package*/ static void freeServer() { - if ( countServer.decrementAndGet() == 0 ) - teardownServer() ; - } - - // Whether to use a transaction on the dataset or to use SPARQL Update. - static boolean CLEAR_DSG_DIRECTLY = true ; - static private DatasetGraph dsgTesting ; - - @SuppressWarnings("deprecation") - protected static void setupServer() { - dsgTesting = DatasetGraphFactory.createTxnMem() ; - server = EmbeddedFusekiServer1.create(port, dsgTesting, datasetPath) ; - server.start() ; - } - - @SuppressWarnings("deprecation") - protected static void teardownServer() { - DatasetRegistry.get().clear() ; - if ( server != null ) - server.stop() ; - server = null ; - } - - /*package*/ static void resetServer() { - if (countServer.get() == 0) - throw new RuntimeException("No server started!"); - if ( CLEAR_DSG_DIRECTLY ) { - Txn.executeWrite(dsgTesting, ()->dsgTesting.clear()) ; - } else { - Update clearRequest = new UpdateDrop(Target.ALL) ; - UpdateProcessor proc = UpdateExecutionFactory.createRemote(clearRequest, ServerTest.serviceUpdate) ; - try {proc.execute() ; } - catch (Throwable e) {e.printStackTrace(); throw e;} - } - } - - static int choosePort() { - try (ServerSocket s = new ServerSocket(0)) { - return s.getLocalPort(); - } catch (IOException ex) { - throw new FusekiException("Failed to find a port for tests!"); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTestData.java ---------------------------------------------------------------------- diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTestData.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTestData.java new file mode 100644 index 0000000..ad4c937 --- /dev/null +++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTestData.java @@ -0,0 +1,45 @@ +/* + * 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.jena.fuseki; + +import org.apache.jena.graph.Graph ; +import org.apache.jena.graph.Node ; +import org.apache.jena.graph.NodeFactory ; +import org.apache.jena.rdf.model.Model ; +import org.apache.jena.rdf.model.ModelFactory ; +import org.apache.jena.sparql.sse.SSE ; + +/** Data for testing */ +public class ServerTestData +{ + public static final String gn1 = "http://graph/1" ; + public static final String gn2 = "http://graph/2" ; + public static final String gn99 = "http://graph/99" ; + + public static final Node n1 = NodeFactory.createURI("http://graph/1") ; + public static final Node n2 = NodeFactory.createURI("http://graph/2") ; + public static final Node n99 = NodeFactory.createURI("http://graph/99") ; + + public static final Graph graph1 = SSE.parseGraph("(base <http://example/> (graph (<x> <p> 1)))") ; + public static final Graph graph2 = SSE.parseGraph("(base <http://example/> (graph (<x> <p> 2)))") ; + + public static final Model model1 = ModelFactory.createModelForGraph(graph1) ; + public static final Model model2 = ModelFactory.createModelForGraph(graph2) ; +} + http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java ---------------------------------------------------------------------- diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java index 8cfe649..10ef87a 100644 --- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java +++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java @@ -36,7 +36,7 @@ import org.junit.runners.Suite ; , TestAuth.class }) -public class TS_Fuseki extends ServerTest +public class TS_Fuseki extends ServerTestData { @BeforeClass static public void beforeClass() { http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestAuth.java ---------------------------------------------------------------------- diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestAuth.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestAuth.java index a2e9928..27cb936 100644 --- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestAuth.java +++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestAuth.java @@ -68,7 +68,7 @@ import org.junit.Test ; public class TestAuth { // Use different port etc because sometimes the previous testing servers // don't release ports fast enough (OS issue / Linux) - public static final int authPort = ServerTest.choosePort() ; + public static final int authPort = ServerCtl.choosePort() ; public static final String authUrlRoot = "http://localhost:"+authPort+"/" ; public static final String authDatasetPath = "/authDataset" ; public static final String authServiceUpdate = "http://localhost:"+authPort+authDatasetPath+"/update" ; @@ -98,7 +98,6 @@ public class TestAuth { LogCtl.setLevel("org.eclipse.jetty", "WARN"); DatasetGraph dsg = DatasetGraphFactory.create(); - // This must agree with ServerTest ServerConfig conf = FusekiConfig.defaultConfiguration(authDatasetPath, dsg, true, true); conf.port = authPort ; conf.pagesPort = authPort ; http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestQuery.java ---------------------------------------------------------------------- diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestQuery.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestQuery.java index 7124592..894f3bc 100644 --- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestQuery.java +++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestQuery.java @@ -18,83 +18,74 @@ package org.apache.jena.fuseki; +import static org.apache.jena.fuseki.ServerCtl.serviceQuery ; +import static org.apache.jena.fuseki.ServerTestData.gn1 ; +import static org.apache.jena.fuseki.ServerTestData.model1 ; +import static org.apache.jena.fuseki.ServerTestData.model2 ; + import java.io.IOException ; import java.net.HttpURLConnection ; import java.net.URL ; -import static org.apache.jena.fuseki.ServerTest.* ; -import org.junit.AfterClass ; -import org.junit.Assert ; -import org.junit.BeforeClass ; -import org.junit.Test ; import org.apache.jena.atlas.junit.BaseTest ; import org.apache.jena.query.* ; import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.engine.binding.Binding ; -import org.apache.jena.sparql.sse.Item ; -import org.apache.jena.sparql.sse.SSE ; -import org.apache.jena.sparql.sse.builders.BuilderResultSet ; import org.apache.jena.sparql.util.Convert ; +import org.junit.* ; +import org.junit.Test ; public class TestQuery extends BaseTest { - protected static ResultSet rs1 = null ; - static { - Item item = SSE.parseItem("(resultset (?s ?p ?o) (row (?s <x>)(?p <p>)(?o 1)))") ; - rs1 = BuilderResultSet.build(item) ; - } + @BeforeClass public static void ctlBeforeClass() { ServerCtl.ctlBeforeClass(); } + @AfterClass public static void ctlAfterClass() { ServerCtl.ctlAfterClass(); } + @Before public void ctlBeforeTest() { ServerCtl.ctlBeforeTest(); } + @After public void ctlAfterTest() { ServerCtl.ctlAfterTest(); } - // DRY - test protocol? - @BeforeClass public static void beforeClass() { - ServerTest.allocServer() ; - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST) ; + @Before public void beforeClass() { + DatasetAccessor du = DatasetAccessorFactory.createHTTP(ServerCtl.serviceREST()) ; du.putModel(model1) ; du.putModel(gn1, model2) ; } - @AfterClass public static void afterClass() { - ServerTest.freeServer() ; - } - - @Test public void query_01() - { + @Test + public void query_01() { execQuery("SELECT * {?s ?p ?o}", 1) ; } - - @Test public void query_recursive_01() - { - String query = "SELECT * WHERE { SERVICE <" + serviceQuery + "> { ?s ?p ?o . BIND(?o AS ?x) } }"; - try(QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, query)) { - ResultSet rs = qExec.execSelect(); - - Var x = Var.alloc("x"); + + @Test + public void query_recursive_01() { + String query = "SELECT * WHERE { SERVICE <" + serviceQuery() + "> { ?s ?p ?o . BIND(?o AS ?x) } }" ; + try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery(), query)) { + ResultSet rs = qExec.execSelect() ; + + Var x = Var.alloc("x") ; while (rs.hasNext()) { - Binding b = rs.nextBinding(); - Assert.assertNotNull(b.get(x)); + Binding b = rs.nextBinding() ; + Assert.assertNotNull(b.get(x)) ; } } } - - @Test public void query_with_params_01() - { - String query = "ASK { }"; - try(QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery + "?output=json", query)) { - boolean result = qExec.execAsk(); - Assert.assertTrue(result); + + @Test + public void query_with_params_01() { + String query = "ASK { }" ; + try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery() + "?output=json", query)) { + boolean result = qExec.execAsk() ; + Assert.assertTrue(result) ; } } - - @Test public void request_id_header_01() throws IOException - { + + @Test + public void request_id_header_01() throws IOException { String qs = Convert.encWWWForm("ASK{}") ; - URL u = new URL(serviceQuery+"?query="+qs); - HttpURLConnection conn = (HttpURLConnection) u.openConnection(); - Assert.assertTrue(conn.getHeaderField("Fuseki-Request-ID") != null); + URL u = new URL(serviceQuery() + "?query=" + qs) ; + HttpURLConnection conn = (HttpURLConnection)u.openConnection() ; + Assert.assertTrue(conn.getHeaderField("Fuseki-Request-ID") != null) ; } - private void execQuery(String queryString, int exceptedRowCount) - { - QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, queryString) ; + private void execQuery(String queryString, int exceptedRowCount) { + QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery(), queryString) ; ResultSet rs = qExec.execSelect() ; int x = ResultSetFormatter.consume(rs) ; assertEquals(exceptedRowCount, x) ; http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestSPARQLProtocol.java ---------------------------------------------------------------------- diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestSPARQLProtocol.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestSPARQLProtocol.java index b58d8db..e377be8 100644 --- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestSPARQLProtocol.java +++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestSPARQLProtocol.java @@ -18,7 +18,7 @@ package org.apache.jena.fuseki; -import static org.apache.jena.fuseki.ServerTest.* ; +import static org.apache.jena.fuseki.ServerTestData.* ; import org.apache.jena.atlas.junit.BaseTest ; import org.apache.jena.query.* ; import org.apache.jena.riot.WebContent ; @@ -28,61 +28,62 @@ import org.apache.jena.update.UpdateExecutionFactory ; import org.apache.jena.update.UpdateFactory ; import org.apache.jena.update.UpdateProcessor ; import org.apache.jena.update.UpdateRequest ; +import org.junit.After ; import org.junit.AfterClass ; +import org.junit.Before ; import org.junit.BeforeClass ; import org.junit.Test ; +import static org.apache.jena.fuseki.ServerCtl.* ; public class TestSPARQLProtocol extends BaseTest { - @BeforeClass public static void beforeClass() - { - ServerTest.allocServer() ; + @BeforeClass public static void ctlBeforeClass() { ServerCtl.ctlBeforeClass(); } + @AfterClass public static void ctlAfterClass() { ServerCtl.ctlAfterClass(); } + @Before public void ctlBeforeTest() { ServerCtl.ctlBeforeTest(); } + @After public void ctlAfterTest() { ServerCtl.ctlAfterTest(); } + + @Before + public void before() { // Load some data. - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST) ; + DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST()) ; du.putModel(model1) ; du.putModel(gn1, model2) ; } - - @AfterClass public static void afterClass() - { - ServerTest.freeServer() ; - } - - static String query(String base, String queryString) - { - return base+"?query="+Convert.encWWWForm(queryString) ; + + static String query(String base, String queryString) { + return base + "?query=" + Convert.encWWWForm(queryString) ; } - - @Test public void query_01() - { + + @Test + public void query_01() { Query query = QueryFactory.create("SELECT * { ?s ?p ?o }") ; - QueryExecution qexec = QueryExecutionFactory.sparqlService(serviceQuery, query) ; + QueryExecution qexec = QueryExecutionFactory.sparqlService(serviceQuery(), query) ; ResultSet rs = qexec.execSelect() ; int x = ResultSetFormatter.consume(rs) ; - assertTrue( x != 0 ) ; + assertTrue(x != 0) ; } - @Test public void query_02() - { + @Test + public void query_02() { Query query = QueryFactory.create("SELECT * { ?s ?p ?o }") ; - QueryEngineHTTP engine = QueryExecutionFactory.createServiceRequest(serviceQuery, query) ; + QueryEngineHTTP engine = QueryExecutionFactory.createServiceRequest(serviceQuery(), query) ; engine.setSelectContentType(WebContent.contentTypeResultsJSON) ; ResultSet rs = engine.execSelect() ; int x = ResultSetFormatter.consume(rs) ; - assertTrue( x != 0 ) ; + assertTrue(x != 0) ; } - @Test public void update_01() - { + @Test + public void update_01() { UpdateRequest update = UpdateFactory.create("INSERT DATA {}") ; - UpdateProcessor proc = UpdateExecutionFactory.createRemote(update, serviceUpdate) ; + UpdateProcessor proc = UpdateExecutionFactory.createRemote(update, serviceUpdate()) ; proc.execute() ; } - - @Test public void update_02() - { + + @Test + public void update_02() { UpdateRequest update = UpdateFactory.create("INSERT DATA {}") ; - UpdateProcessor proc = UpdateExecutionFactory.createRemoteForm(update, serviceUpdate) ; + UpdateProcessor proc = UpdateExecutionFactory.createRemoteForm(update, serviceUpdate()) ; proc.execute() ; } } http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetAccessorHTTP.java ---------------------------------------------------------------------- diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetAccessorHTTP.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetAccessorHTTP.java index 7b2e168..675eec5 100644 --- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetAccessorHTTP.java +++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetAccessorHTTP.java @@ -18,12 +18,18 @@ package org.apache.jena.fuseki.http; -import static org.apache.jena.fuseki.ServerTest.* ; +import static org.apache.jena.fuseki.ServerCtl.datasetPath ; +import static org.apache.jena.fuseki.ServerCtl.port ; +import static org.apache.jena.fuseki.ServerCtl.serviceREST ; +import static org.apache.jena.fuseki.ServerTestData.gn1 ; +import static org.apache.jena.fuseki.ServerTestData.gn2 ; +import static org.apache.jena.fuseki.ServerTestData.gn99 ; +import static org.apache.jena.fuseki.ServerTestData.model1 ; +import static org.apache.jena.fuseki.ServerTestData.model2 ; import org.apache.jena.atlas.junit.BaseTest ; import org.apache.jena.atlas.web.HttpException ; import org.apache.jena.fuseki.ServerCtl ; -import org.apache.jena.fuseki.ServerTest ; import org.apache.jena.query.DatasetAccessor ; import org.apache.jena.query.DatasetAccessorFactory ; import org.apache.jena.rdf.model.Model ; @@ -32,87 +38,83 @@ import org.apache.jena.riot.web.HttpOp ; import org.apache.jena.web.HttpSC ; import org.junit.* ; - public class TestDatasetAccessorHTTP extends BaseTest { - static final String datasetURI_not_1 = "http://localhost:"+port+"/junk" ; - static final String datasetURI_not_2 = serviceREST+"/not" ; - static final String datasetURI_not_3 = "http://localhost:"+port+datasetPath+"/not/data" ; - @BeforeClass public static void ctlBeforeClass() { ServerCtl.ctlBeforeClass(); } @AfterClass public static void ctlAfterClass() { ServerCtl.ctlAfterClass(); } @Before public void ctlBeforeTest() { ServerCtl.ctlBeforeTest(); } @After public void ctlAfterTest() { ServerCtl.ctlAfterTest(); } - @Test(expected=HttpException.class) - public void test_ds_1() - { + final String datasetURI_not_1 = "http://localhost:"+port()+"/junk" ; + final String datasetURI_not_2 = serviceREST()+"/not" ; + final String datasetURI_not_3 = "http://localhost:"+port()+datasetPath()+"/not/data" ; + + @Test(expected = HttpException.class) + public void test_ds_1() { // Can't GET the dataset service. try { - HttpOp.execHttpGet(serviceREST) ; - } catch (HttpException ex) { + HttpOp.execHttpGet(serviceREST()) ; + } + catch (HttpException ex) { assertTrue(HttpSC.isClientError(ex.getResponseCode())) ; throw ex ; } } - - @Test(expected=HttpException.class) - public void test_ds_2() - { + + @Test(expected = HttpException.class) + public void test_ds_2() { try { HttpOp.execHttpGet(datasetURI_not_1) ; - } catch (HttpException ex) { + } + catch (HttpException ex) { assertEquals(HttpSC.NOT_FOUND_404, ex.getResponseCode()) ; throw ex ; } } - @Test(expected=HttpException.class) - public void test_ds_3() - { + @Test(expected = HttpException.class) + public void test_ds_3() { try { HttpOp.execHttpGet(datasetURI_not_2) ; - } catch (HttpException ex) { + } + catch (HttpException ex) { assertEquals(HttpSC.NOT_FOUND_404, ex.getResponseCode()) ; throw ex ; } } @Test - public void test_404_1() - { + public void test_404_1() { // Not the right service. DatasetAccessor du = DatasetAccessorFactory.createHTTP(datasetURI_not_1) ; Model graph = du.getModel(gn99) ; - assertNull(graph) ; + assertNull(graph) ; } @Test - public void test_404_2() - { + public void test_404_2() { DatasetAccessor du = DatasetAccessorFactory.createHTTP(datasetURI_not_2) ; Model graph = du.getModel(gn99) ; assertNull(graph) ; } @Test - public void test_404_3() - { + public void test_404_3() { // Right service, wrong graph - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST) ; + DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST()) ; Model graph = du.getModel(gn99) ; assertNull(graph) ; } - @Test public void head_01() - { + @Test + public void head_01() { DatasetAccessor du = create() ; boolean b = du.containsModel(gn1) ; assertFalse("Blank remote dataset as a named graph", b) ; } - @Test public void head_02() - { + @Test + public void head_02() { DatasetAccessor du = create() ; du.putModel(gn1, model1) ; boolean exists = du.containsModel(gn1) ; @@ -126,36 +128,36 @@ public class TestDatasetAccessorHTTP extends BaseTest du.deleteModel(gn1) ; } - @Test public void get_01() - { + @Test + public void get_01() { DatasetAccessor du = create() ; Model graph = du.getModel() ; assertTrue(graph.isEmpty()) ; } - - @Test public void get_02() - { + + @Test + public void get_02() { DatasetAccessor du = create() ; Model graph = du.getModel(gn1) ; assertNull(graph) ; } - @Test public void delete_01() - { + @Test + public void delete_01() { DatasetAccessor du = create() ; du.deleteDefault() ; } - @Test public void delete_02() - { + @Test + public void delete_02() { DatasetAccessor du = create() ; du.deleteModel(gn1) ; boolean exists = du.containsModel(gn1) ; assertFalse("Expected gn1 not to exist", exists) ; } - @Test public void put_01() - { + @Test + public void put_01() { DatasetAccessor du = create() ; du.putModel(model1) ; Model graph = du.getModel() ; @@ -165,31 +167,31 @@ public class TestDatasetAccessorHTTP extends BaseTest graph = du.getModel() ; assertTrue(graph.isEmpty()) ; } - - @Test public void put_02() - { + + @Test + public void put_02() { DatasetAccessor du = create() ; du.putModel(gn1, model1) ; boolean exists = du.containsModel(gn1) ; assertTrue(exists) ; exists = du.containsModel(gn2) ; assertFalse("Expected gn2 not to exist", exists) ; - + Model graph = du.getModel() ; assertTrue(graph.isEmpty()) ; graph = du.getModel(gn1) ; assertTrue(graph.isIsomorphicWith(model1)) ; - + du.deleteModel(gn1) ; exists = du.containsModel(gn1) ; assertFalse("Expected gn1 not to exist", exists) ; - + graph = du.getModel(gn1) ; assertNull(graph) ; } - @Test public void put_03() - { + @Test + public void put_03() { DatasetAccessor du = create() ; du.putModel(model1) ; du.putModel(model2) ; // PUT overwrites @@ -202,17 +204,17 @@ public class TestDatasetAccessorHTTP extends BaseTest assertTrue(graph.isEmpty()) ; } - @Test public void post_01() - { + @Test + public void post_01() { DatasetAccessor du = create() ; du.putModel(model1) ; du.add(model2) ; // POST appends Model graph = du.getModel() ; - + Model graph3 = ModelFactory.createDefaultModel() ; graph3.add(model1) ; graph3.add(model2) ; - + assertFalse(graph.isIsomorphicWith(model1)) ; assertFalse(graph.isIsomorphicWith(model2)) ; assertTrue(graph.isIsomorphicWith(graph3)) ; @@ -222,17 +224,17 @@ public class TestDatasetAccessorHTTP extends BaseTest assertTrue(graph.isEmpty()) ; } - @Test public void post_02() - { + @Test + public void post_02() { DatasetAccessor du = create() ; du.add(model1) ; du.add(model2) ; Model graph = du.getModel() ; - + Model graph3 = ModelFactory.createDefaultModel() ; graph3.add(model1) ; graph3.add(model2) ; - + assertFalse(graph.isIsomorphicWith(model1)) ; assertFalse(graph.isIsomorphicWith(model2)) ; assertTrue(graph.isIsomorphicWith(graph3)) ; @@ -241,9 +243,9 @@ public class TestDatasetAccessorHTTP extends BaseTest graph = du.getModel() ; assertTrue(graph.isEmpty()) ; } - - @Test public void clearup_1() - { + + @Test + public void clearup_1() { DatasetAccessor du = create() ; du.deleteDefault() ; du.deleteModel(gn1) ; @@ -251,8 +253,7 @@ public class TestDatasetAccessorHTTP extends BaseTest du.deleteModel(gn99) ; } - static DatasetAccessor create() - { - return DatasetAccessorFactory.createHTTP(ServerTest.serviceREST) ; + static DatasetAccessor create() { + return DatasetAccessorFactory.createHTTP(serviceREST()) ; } } http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorHTTP.java ---------------------------------------------------------------------- diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorHTTP.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorHTTP.java index ef548d6..328c9e4 100644 --- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorHTTP.java +++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorHTTP.java @@ -19,7 +19,6 @@ package org.apache.jena.fuseki.http; import org.apache.jena.fuseki.ServerCtl ; -import org.apache.jena.fuseki.ServerTest ; import org.apache.jena.web.AbstractTestDatasetGraphAccessor ; import org.apache.jena.web.DatasetGraphAccessor ; import org.apache.jena.web.DatasetGraphAccessorHTTP ; @@ -36,8 +35,7 @@ public class TestDatasetGraphAccessorHTTP extends AbstractTestDatasetGraphAccess @After public void ctlAfterTest() { ServerCtl.ctlAfterTest(); } @Override - protected DatasetGraphAccessor getDatasetUpdater() - { - return new DatasetGraphAccessorHTTP(ServerTest.serviceREST) ; + protected DatasetGraphAccessor getDatasetUpdater() { + return new DatasetGraphAccessorHTTP(ServerCtl.serviceREST()) ; } } http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java ---------------------------------------------------------------------- diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java index ad3acc9..48b9b67 100644 --- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java +++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java @@ -18,6 +18,11 @@ package org.apache.jena.fuseki.http; +import static org.apache.jena.fuseki.ServerCtl.serviceQuery ; +import static org.apache.jena.fuseki.ServerCtl.serviceREST ; +import static org.apache.jena.fuseki.ServerCtl.serviceUpdate ; +import static org.apache.jena.fuseki.ServerCtl.urlRoot ; + import java.io.IOException ; import org.apache.jena.atlas.io.IO ; @@ -26,7 +31,6 @@ import org.apache.jena.atlas.lib.IRILib ; import org.apache.jena.atlas.web.HttpException ; import org.apache.jena.atlas.web.TypedInputStream ; import org.apache.jena.fuseki.ServerCtl ; -import org.apache.jena.fuseki.ServerTest ; import org.apache.jena.riot.WebContent ; import org.apache.jena.riot.web.HttpOp ; import org.apache.jena.sparql.engine.http.Params ; @@ -43,10 +47,10 @@ public class TestHttpOp extends BaseTest { @Before public void ctlBeforeTest() { ServerCtl.ctlBeforeTest(); } @After public void ctlAfterTest() { ServerCtl.ctlAfterTest(); } - static String pingURL = ServerTest.urlRoot + "ping.txt" ; - static String graphURL = ServerTest.serviceREST + "?default" ; - static String queryURL = ServerTest.serviceQuery ; - static String updateURL = ServerTest.serviceUpdate ; + static String pingURL = urlRoot() + "ping.txt" ; + static String graphURL = serviceREST() + "?default" ; + static String queryURL = serviceQuery() ; + static String updateURL = serviceUpdate() ; static String simpleQuery = queryURL+"?query="+IRILib.encodeUriComponent("ASK{}") ; // Basic operations @@ -59,7 +63,7 @@ public class TestHttpOp extends BaseTest { @Test(expected=HttpException.class) public void httpGet_02() { try { - TypedInputStream in = HttpOp.execHttpGet(ServerTest.urlRoot+"does-not-exist") ; + TypedInputStream in = HttpOp.execHttpGet(urlRoot()+"does-not-exist") ; IO.close(in) ; } catch(HttpException ex) { assertEquals(HttpSC.NOT_FOUND_404, ex.getResponseCode()) ; @@ -74,7 +78,7 @@ public class TestHttpOp extends BaseTest { } @Test public void httpGet_04() { - String x = HttpOp.execHttpGetString(ServerTest.urlRoot+"does-not-exist") ; + String x = HttpOp.execHttpGetString(urlRoot()+"does-not-exist") ; assertNull(x) ; }