From 6d63d21dbf6b2163a1e7ad79aee87b0bcb7c90f9 Mon Sep 17 00:00:00 2001 From: Andy Seaborne Date: Sat, 15 Oct 2016 18:29:30 +0100 Subject: [PATCH 1/5] Split ServerTest into ServerCtl and ServerTestData. --- .../org/apache/jena/fuseki/ServerCtl.java | 167 ++++++++++++++++-- .../org/apache/jena/fuseki/ServerTest.java | 130 -------------- .../apache/jena/fuseki/ServerTestData.java | 45 +++++ .../org/apache/jena/fuseki/TS_Fuseki.java | 2 +- .../java/org/apache/jena/fuseki/TestAuth.java | 3 +- .../org/apache/jena/fuseki/TestQuery.java | 89 +++++----- .../jena/fuseki/TestSPARQLProtocol.java | 61 +++---- .../fuseki/http/TestDatasetAccessorHTTP.java | 133 +++++++------- .../http/TestDatasetGraphAccessorHTTP.java | 6 +- .../apache/jena/fuseki/http/TestHttpOp.java | 18 +- 10 files changed, 349 insertions(+), 305 deletions(-) delete mode 100644 jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTest.java create mode 100644 jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTestData.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 da957a4c739..2c91bd530a0 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: + * + * 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. + *

The data in the server is always reseet between tests. + *

+ * 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. + *

+ * Usage: + *

+ *

+ * In the test suite, put: + * + *

+ *  {@literal @BeforeClass} static public void beforeSuiteClass() { ServerCtl.ctlBeforeTestSuite(); } 
+ *  {@literal @AfterClass}  static public void afterSuiteClass()  { ServerCtl.ctlAfterTestSuite(); }
+ * 
+ *

+ * In the test class, put: + *

+ * {@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(); }
+ * 
+ */ 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 static void ctlAfterTestSuite() { * 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 static void ctlBeforeClass() { * 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 static void ctlAfterClass() { * 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 @@ private static void setHttpClient(HttpClient newHttpClient) { 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!"); + } + } } 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 38b51bb4040..00000000000 --- 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: - *
-    \@BeforeClass public static void beforeClass() { ServerTest.allocServer() ; }
-    \@AfterClass  public static void afterClass()  { ServerTest.freeServer() ; }
-    \@After       public void after()              { ServerTest.resetServer() ; }
-    
- */ -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 (graph (

1)))") ; - public static final Graph graph2 = SSE.parseGraph("(base (graph (

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 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 00000000000..ad4c9371a9a --- /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 (graph (

1)))") ; + public static final Graph graph2 = SSE.parseGraph("(base (graph (

2)))") ; + + public static final Model model1 = ModelFactory.createModelForGraph(graph1) ; + public static final Model model2 = ModelFactory.createModelForGraph(graph2) ; +} + 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 8cfe64936b8..10ef87a5212 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 @@ , TestAuth.class }) -public class TS_Fuseki extends ServerTest +public class TS_Fuseki extends ServerTestData { @BeforeClass static public void beforeClass() { 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 a2e9928aa9d..27cb936a4cb 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 @@ 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 static void setup() throws IOException { 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 ; 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 71245924233..894f3bc8178 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 )(?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) ; 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 b58d8dba847..e377be8f078 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.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() ; } } 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 7b2e1681652..675eec58e29 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.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 void test_404_3() 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 void test_404_3() 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 void test_404_3() 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 void test_404_3() 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 void test_404_3() 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 void test_404_3() du.deleteModel(gn99) ; } - static DatasetAccessor create() - { - return DatasetAccessorFactory.createHTTP(ServerTest.serviceREST) ; + static DatasetAccessor create() { + return DatasetAccessorFactory.createHTTP(serviceREST()) ; } } 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 ef548d6d08e..328c9e4fde9 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()) ; } } 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 ad3acc91a24..48b9b67f704 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.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 void httpGet_02() { } @Test public void httpGet_04() { - String x = HttpOp.execHttpGetString(ServerTest.urlRoot+"does-not-exist") ; + String x = HttpOp.execHttpGetString(urlRoot()+"does-not-exist") ; assertNull(x) ; } From 355d4c4dc4e878033cc6a7c03bf77c46f96ee90a Mon Sep 17 00:00:00 2001 From: Andy Seaborne Date: Sat, 15 Oct 2016 18:35:20 +0100 Subject: [PATCH 2/5] Align to redesigned Fuseki tests (ServerCtl). --- .../jena/jdbc/remote/RemoteEndpointDriver.java | 1 - .../remote/metadata/RemoteEndpointMetadata.java | 1 - .../TestRemoteEndpointConnection.java | 7 +++---- .../TestRemoteEndpointConnectionWithAuth.java | 16 ++++++++-------- ...estRemoteEndpointConnectionWithGraphUris.java | 7 +++---- ...moteEndpointConnectionWithResultSetTypes.java | 7 +++---- .../metadata/TestRemoteConnectionMetadata.java | 3 +-- .../results/TestRemoteEndpointResults.java | 5 ++--- .../TestRemoteEndpointResultsWithAuth.java | 14 +++++++------- .../TestRemoteEndpointResultsWithGraphUris.java | 5 ++--- ...tRemoteEndpointResultsWithResultSetTypes.java | 5 ++--- .../statements/TestRemoteEndpointStatements.java | 3 +-- 12 files changed, 32 insertions(+), 42 deletions(-) diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/main/java/org/apache/jena/jdbc/remote/RemoteEndpointDriver.java b/jena-jdbc/jena-jdbc-driver-remote/src/main/java/org/apache/jena/jdbc/remote/RemoteEndpointDriver.java index 2526cae2ceb..3729d978cfe 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/main/java/org/apache/jena/jdbc/remote/RemoteEndpointDriver.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/main/java/org/apache/jena/jdbc/remote/RemoteEndpointDriver.java @@ -35,7 +35,6 @@ import org.apache.jena.jdbc.JenaDriver; import org.apache.jena.jdbc.connections.JenaConnection; import org.apache.jena.jdbc.remote.connections.RemoteEndpointConnection; -import org.apache.jena.riot.web.HttpOp; import org.apache.jena.system.JenaSystem ; /** diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/main/java/org/apache/jena/jdbc/remote/metadata/RemoteEndpointMetadata.java b/jena-jdbc/jena-jdbc-driver-remote/src/main/java/org/apache/jena/jdbc/remote/metadata/RemoteEndpointMetadata.java index d9fd7944aee..5fde4ca6e39 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/main/java/org/apache/jena/jdbc/remote/metadata/RemoteEndpointMetadata.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/main/java/org/apache/jena/jdbc/remote/metadata/RemoteEndpointMetadata.java @@ -33,7 +33,6 @@ public class RemoteEndpointMetadata extends JenaMetadata { private Version jdbc; - @SuppressWarnings("unused") private RemoteEndpointConnection remoteConn; /** diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnection.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnection.java index dcc4f3c2c1d..e7b91075625 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnection.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnection.java @@ -21,7 +21,6 @@ import java.sql.SQLException; import org.apache.jena.fuseki.ServerCtl ; -import org.apache.jena.fuseki.ServerTest; import org.apache.jena.jdbc.JdbcCompatibility; import org.apache.jena.jdbc.connections.JenaConnection; import org.apache.jena.jdbc.utils.TestUtils; @@ -50,14 +49,14 @@ protected boolean supportsTimeouts() { @Override protected JenaConnection getConnection() throws SQLException { - return new RemoteEndpointConnection(ServerTest.serviceQuery, ServerTest.serviceUpdate, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT); + return new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT); } @Override protected JenaConnection getConnection(Dataset ds) throws SQLException { // Set up the dataset - TestUtils.copyToRemoteDataset(ds, ServerTest.serviceREST); - return new RemoteEndpointConnection(ServerTest.serviceQuery, ServerTest.serviceUpdate, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT); + TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceREST()); + return new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT); } diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithAuth.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithAuth.java index 62a76def785..2d75c82fc0c 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithAuth.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithAuth.java @@ -28,7 +28,7 @@ import org.apache.http.client.HttpClient; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.HttpClients; -import org.apache.jena.fuseki.ServerTest ; +import org.apache.jena.fuseki.ServerCtl ; import org.apache.jena.fuseki.server.FusekiConfig ; import org.apache.jena.fuseki.server.SPARQLServer ; import org.apache.jena.fuseki.server.ServerConfig ; @@ -81,9 +81,9 @@ public static void setup() throws IOException { DatasetGraph dsg = DatasetGraphFactory.create(); // This must agree with ServerTest - ServerConfig conf = FusekiConfig.defaultConfiguration(ServerTest.datasetPath, dsg, true, false); - conf.port = ServerTest.port; - conf.pagesPort = ServerTest.port; + ServerConfig conf = FusekiConfig.defaultConfiguration(ServerCtl.datasetPath(), dsg, true, false); + conf.port = ServerCtl.port(); + conf.pagesPort = ServerCtl.port(); conf.authConfigFile = realmFile.getAbsolutePath(); server = new SPARQLServer(conf); @@ -96,7 +96,7 @@ public static void setup() throws IOException { @After public void cleanupTest() { Update clearRequest = new UpdateDrop(Target.ALL) ; - UpdateProcessor proc = UpdateExecutionFactory.createRemote(clearRequest, ServerTest.serviceUpdate, client) ; + UpdateProcessor proc = UpdateExecutionFactory.createRemote(clearRequest, ServerCtl.serviceUpdate(), client) ; proc.execute() ; } @@ -118,7 +118,7 @@ protected boolean supportsTimeouts() { @Override protected JenaConnection getConnection() throws SQLException { - return new RemoteEndpointConnection(ServerTest.serviceQuery, ServerTest.serviceUpdate, null, null, null, null, + return new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), null, null, null, null, client, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, null, null); } @@ -126,8 +126,8 @@ protected JenaConnection getConnection() throws SQLException { @Override protected JenaConnection getConnection(Dataset ds) throws SQLException { // Set up the dataset - TestUtils.copyToRemoteDataset(ds, ServerTest.serviceREST, client); - return new RemoteEndpointConnection(ServerTest.serviceQuery, ServerTest.serviceUpdate, null, null, null, null, + TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceREST(), client); + return new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), null, null, null, null, client, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, null, null); } diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithGraphUris.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithGraphUris.java index b6183e1d5bc..95f82d34751 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithGraphUris.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithGraphUris.java @@ -24,7 +24,6 @@ import java.util.List; import org.apache.jena.fuseki.ServerCtl ; -import org.apache.jena.fuseki.ServerTest; import org.apache.jena.jdbc.JdbcCompatibility; import org.apache.jena.jdbc.connections.JenaConnection; import org.apache.jena.jdbc.utils.TestUtils; @@ -60,7 +59,7 @@ protected boolean supportsTimeouts() { protected JenaConnection getConnection() throws SQLException { List defaultGraphs = new ArrayList(); defaultGraphs.add(DEFAULT_GRAPH_URI); - return new RemoteEndpointConnection(ServerTest.serviceQuery, ServerTest.serviceUpdate, defaultGraphs, null, + return new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), defaultGraphs, null, defaultGraphs, null, null, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, null, null); } @@ -80,8 +79,8 @@ protected JenaConnection getConnection(Dataset ds) throws SQLException { // Set up the dataset ds = TestUtils.renameGraph(ds, null, DEFAULT_GRAPH_URI); Assert.assertEquals(0, ds.getDefaultModel().size()); - TestUtils.copyToRemoteDataset(ds, ServerTest.serviceREST); - return new RemoteEndpointConnection(ServerTest.serviceQuery, ServerTest.serviceUpdate, defaultGraphs, namedGraphs, + TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceREST()); + return new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), defaultGraphs, namedGraphs, defaultGraphs, namedGraphs, null, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, null, null); } diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithResultSetTypes.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithResultSetTypes.java index 0fbb1482e08..b2396d739cd 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithResultSetTypes.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithResultSetTypes.java @@ -21,7 +21,6 @@ import java.sql.SQLException; import org.apache.jena.fuseki.ServerCtl ; -import org.apache.jena.fuseki.ServerTest; import org.apache.jena.jdbc.JdbcCompatibility; import org.apache.jena.jdbc.connections.JenaConnection; import org.apache.jena.jdbc.utils.TestUtils; @@ -51,13 +50,13 @@ protected boolean supportsTimeouts() { @Override protected JenaConnection getConnection() throws SQLException { - return new RemoteEndpointConnection(ServerTest.serviceQuery, ServerTest.serviceUpdate, null, null, null, null, null, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, WebContent.contentTypeTextTSV, WebContent.contentTypeRdfJson); + return new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), null, null, null, null, null, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, WebContent.contentTypeTextTSV, WebContent.contentTypeRdfJson); } @Override protected JenaConnection getConnection(Dataset ds) throws SQLException { // Set up the dataset - TestUtils.copyToRemoteDataset(ds, ServerTest.serviceREST); - return new RemoteEndpointConnection(ServerTest.serviceQuery, ServerTest.serviceUpdate, null, null, null, null, null, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, WebContent.contentTypeTextTSV, WebContent.contentTypeRdfJson); + TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceREST()); + return new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), null, null, null, null, null, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, WebContent.contentTypeTextTSV, WebContent.contentTypeRdfJson); } } diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/metadata/TestRemoteConnectionMetadata.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/metadata/TestRemoteConnectionMetadata.java index e3e6c86571e..bc83bbef7b3 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/metadata/TestRemoteConnectionMetadata.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/metadata/TestRemoteConnectionMetadata.java @@ -24,7 +24,6 @@ import java.util.List; import org.apache.jena.fuseki.ServerCtl ; -import org.apache.jena.fuseki.ServerTest; import org.apache.jena.jdbc.JdbcCompatibility; import org.apache.jena.jdbc.connections.JenaConnection; import org.apache.jena.jdbc.metadata.results.AbstractDatabaseMetadataTests; @@ -47,7 +46,7 @@ public class TestRemoteConnectionMetadata extends AbstractDatabaseMetadataTests @Override protected JenaConnection getConnection() throws SQLException { - return new RemoteEndpointConnection(ServerTest.serviceQuery, ServerTest.serviceUpdate, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT); + return new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT); } @Override diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResults.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResults.java index fe56c28356c..7de87c31c68 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResults.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResults.java @@ -23,7 +23,6 @@ import java.sql.Statement; import org.apache.jena.fuseki.ServerCtl ; -import org.apache.jena.fuseki.ServerTest; import org.apache.jena.jdbc.JdbcCompatibility; import org.apache.jena.jdbc.connections.JenaConnection; import org.apache.jena.jdbc.remote.connections.RemoteEndpointConnection; @@ -54,7 +53,7 @@ public class TestRemoteEndpointResults extends AbstractRemoteEndpointResultSetTe @BeforeClass public static void setup() throws SQLException { ServerCtl.ctlBeforeClass(); - connection = new RemoteEndpointConnection(ServerTest.serviceQuery, ServerTest.serviceUpdate, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT); + connection = new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT); connection.setJdbcCompatibilityLevel(JdbcCompatibility.HIGH); } @@ -75,7 +74,7 @@ protected ResultSet createResults(Dataset ds, String query) throws SQLException @Override protected ResultSet createResults(Dataset ds, String query, int resultSetType) throws SQLException { - TestUtils.copyToRemoteDataset(ds, ServerTest.serviceREST); + TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceREST()); Statement stmt = connection.createStatement(resultSetType, ResultSet.CONCUR_READ_ONLY); return stmt.executeQuery(query); } diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithAuth.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithAuth.java index f4241e5398f..8f7b8a1bff4 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithAuth.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithAuth.java @@ -30,7 +30,7 @@ import org.apache.http.client.HttpClient; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.HttpClients; -import org.apache.jena.fuseki.ServerTest; +import org.apache.jena.fuseki.ServerCtl ; import org.apache.jena.fuseki.server.FusekiConfig; import org.apache.jena.fuseki.server.SPARQLServer; import org.apache.jena.fuseki.server.ServerConfig; @@ -88,15 +88,15 @@ public static void setup() throws SQLException, IOException { DatasetGraph dsg = DatasetGraphFactory.create(); // This must agree with ServerTest - ServerConfig conf = FusekiConfig.defaultConfiguration(ServerTest.datasetPath, dsg, true, false); - conf.port = ServerTest.port; - conf.pagesPort = ServerTest.port; + ServerConfig conf = FusekiConfig.defaultConfiguration(ServerCtl.datasetPath(), dsg, true, false); + conf.port = ServerCtl.port(); + conf.pagesPort = ServerCtl.port(); conf.authConfigFile = realmFile.getAbsolutePath(); server = new SPARQLServer(conf); server.start(); - connection = new RemoteEndpointConnection(ServerTest.serviceQuery, ServerTest.serviceUpdate, null, null, null, null, + connection = new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), null, null, null, null, client, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, null, null); connection.setJdbcCompatibilityLevel(JdbcCompatibility.HIGH); } @@ -107,7 +107,7 @@ public static void setup() throws SQLException, IOException { @After public void cleanupTest() { Update clearRequest = new UpdateDrop(Target.ALL) ; - UpdateProcessor proc = UpdateExecutionFactory.createRemote(clearRequest, ServerTest.serviceUpdate, client) ; + UpdateProcessor proc = UpdateExecutionFactory.createRemote(clearRequest, ServerCtl.serviceUpdate(), client) ; proc.execute() ; } @@ -133,7 +133,7 @@ protected ResultSet createResults(Dataset ds, String query) throws SQLException @Override protected ResultSet createResults(Dataset ds, String query, int resultSetType) throws SQLException { - TestUtils.copyToRemoteDataset(ds, ServerTest.serviceREST, client); + TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceREST(), client); Statement stmt = connection.createStatement(resultSetType, ResultSet.CONCUR_READ_ONLY); return stmt.executeQuery(query); } diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithGraphUris.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithGraphUris.java index 7d7e5549ef5..9cfb46aa3c8 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithGraphUris.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithGraphUris.java @@ -25,7 +25,6 @@ import org.apache.jena.ext.com.google.common.collect.Lists; import org.apache.jena.fuseki.ServerCtl ; -import org.apache.jena.fuseki.ServerTest; import org.apache.jena.jdbc.JdbcCompatibility; import org.apache.jena.jdbc.connections.JenaConnection; import org.apache.jena.jdbc.remote.connections.RemoteEndpointConnection; @@ -63,7 +62,7 @@ public class TestRemoteEndpointResultsWithGraphUris extends AbstractRemoteEndpoi public static void setup() throws SQLException { ServerCtl.ctlBeforeClass(); List defaultGraphUris = Lists.newArrayList(DEFAULT_GRAPH_URI); - connection = new RemoteEndpointConnection(ServerTest.serviceQuery, ServerTest.serviceUpdate, defaultGraphUris, null, defaultGraphUris, null, null, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, null, null); + connection = new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), defaultGraphUris, null, defaultGraphUris, null, null, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, null, null); connection.setJdbcCompatibilityLevel(JdbcCompatibility.HIGH); } @@ -85,7 +84,7 @@ protected ResultSet createResults(Dataset ds, String query) throws SQLException @Override protected ResultSet createResults(Dataset ds, String query, int resultSetType) throws SQLException { ds = TestUtils.renameGraph(ds, null, DEFAULT_GRAPH_URI); - TestUtils.copyToRemoteDataset(ds, ServerTest.serviceREST); + TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceREST()); Statement stmt = connection.createStatement(resultSetType, ResultSet.CONCUR_READ_ONLY); return stmt.executeQuery(query); } diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithResultSetTypes.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithResultSetTypes.java index 5cc0b4c68b4..2076193ca3a 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithResultSetTypes.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithResultSetTypes.java @@ -23,7 +23,6 @@ import java.sql.Statement; import org.apache.jena.fuseki.ServerCtl ; -import org.apache.jena.fuseki.ServerTest; import org.apache.jena.jdbc.JdbcCompatibility; import org.apache.jena.jdbc.connections.JenaConnection; import org.apache.jena.jdbc.remote.connections.RemoteEndpointConnection; @@ -55,7 +54,7 @@ public class TestRemoteEndpointResultsWithResultSetTypes extends AbstractRemoteE @BeforeClass public static void setup() throws SQLException { ServerCtl.ctlBeforeClass(); - connection = new RemoteEndpointConnection(ServerTest.serviceQuery, ServerTest.serviceUpdate, null, null, null, null, null, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, WebContent.contentTypeTextTSV, WebContent.contentTypeRdfJson); + connection = new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), null, null, null, null, null, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, WebContent.contentTypeTextTSV, WebContent.contentTypeRdfJson); connection.setJdbcCompatibilityLevel(JdbcCompatibility.HIGH); } @@ -76,7 +75,7 @@ protected ResultSet createResults(Dataset ds, String query) throws SQLException @Override protected ResultSet createResults(Dataset ds, String query, int resultSetType) throws SQLException { - TestUtils.copyToRemoteDataset(ds, ServerTest.serviceREST); + TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceREST()); Statement stmt = connection.createStatement(resultSetType, ResultSet.CONCUR_READ_ONLY); return stmt.executeQuery(query); } diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/statements/TestRemoteEndpointStatements.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/statements/TestRemoteEndpointStatements.java index b04fbaf058b..9b64cce5e6b 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/statements/TestRemoteEndpointStatements.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/statements/TestRemoteEndpointStatements.java @@ -21,7 +21,6 @@ import java.sql.SQLException; import org.apache.jena.fuseki.ServerCtl ; -import org.apache.jena.fuseki.ServerTest; import org.apache.jena.jdbc.JdbcCompatibility; import org.apache.jena.jdbc.connections.JenaConnection; import org.apache.jena.jdbc.remote.connections.RemoteEndpointConnection; @@ -44,7 +43,7 @@ public class TestRemoteEndpointStatements extends AbstractJenaStatementTests { @Override protected JenaConnection getConnection() throws SQLException { - return new RemoteEndpointConnection(ServerTest.serviceQuery, ServerTest.serviceUpdate, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT); + return new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT); } From dc27c2b0a503ff04bd7dcd9787d49b2ae714c020 Mon Sep 17 00:00:00 2001 From: Andy Seaborne Date: Sat, 15 Oct 2016 20:00:16 +0100 Subject: [PATCH 3/5] Remove extends. --- .../src/test/java/org/apache/jena/fuseki/TS_Fuseki.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 10ef87a5212..1f235c4a01a 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 @@ , TestAuth.class }) -public class TS_Fuseki extends ServerTestData +public class TS_Fuseki { @BeforeClass static public void beforeClass() { From 7c3a5cfd683426cc02b671c129878c45a6aebb30 Mon Sep 17 00:00:00 2001 From: Andy Seaborne Date: Sun, 16 Oct 2016 15:53:34 +0100 Subject: [PATCH 4/5] Port ServerCtl to Fuseki2. Make naming and use consistent --- .../org/apache/jena/fuseki/ServerCtl.java | 2 +- .../org/apache/jena/fuseki/TestQuery.java | 2 +- .../jena/fuseki/TestSPARQLProtocol.java | 2 +- .../fuseki/http/TestDatasetAccessorHTTP.java | 10 +- .../http/TestDatasetGraphAccessorHTTP.java | 2 +- .../apache/jena/fuseki/http/TestHttpOp.java | 4 +- .../jena/fuseki/AbstractFusekiTest.java | 18 +- .../org/apache/jena/fuseki/ServerCtl.java | 287 ++++++++++++++++++ .../org/apache/jena/fuseki/ServerTest.java | 126 -------- .../org/apache/jena/fuseki/TS_Fuseki.java | 8 + .../org/apache/jena/fuseki/TestAdmin.java | 62 ++-- .../java/org/apache/jena/fuseki/TestAuth.java | 7 +- .../apache/jena/fuseki/TestDatasetOps.java | 30 +- .../apache/jena/fuseki/TestFileUpload.java | 27 +- .../jena/fuseki/TestHttpOperations.java | 32 +- .../apache/jena/fuseki/TestHttpOptions.java | 13 +- .../org/apache/jena/fuseki/TestQuery.java | 112 ++++--- .../jena/fuseki/TestSPARQLProtocol.java | 34 +-- .../jena/fuseki/TestServerReadOnly.java | 32 +- .../fuseki/http/TestDatasetAccessorHTTP.java | 37 +-- .../http/TestDatasetGraphAccessorHTTP.java | 18 +- .../apache/jena/fuseki/http/TestHttpOp.java | 21 +- .../TestRemoteEndpointConnection.java | 2 +- .../TestRemoteEndpointConnectionWithAuth.java | 2 +- ...RemoteEndpointConnectionWithGraphUris.java | 2 +- ...eEndpointConnectionWithResultSetTypes.java | 2 +- .../results/TestRemoteEndpointResults.java | 2 +- .../TestRemoteEndpointResultsWithAuth.java | 2 +- ...estRemoteEndpointResultsWithGraphUris.java | 2 +- ...moteEndpointResultsWithResultSetTypes.java | 2 +- 30 files changed, 520 insertions(+), 382 deletions(-) create mode 100644 jena-fuseki2/jena-fuseki-core/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 2c91bd530a0..43878b28cb2 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 @@ -112,7 +112,7 @@ public static int 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" ; } + public static final String serviceGSP() { return "http://localhost:"+port()+datasetPath()+"/data" ; } public static void ctlBeforeTestSuite() { 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 894f3bc8178..79110484bac 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 @@ -43,7 +43,7 @@ public class TestQuery extends BaseTest @After public void ctlAfterTest() { ServerCtl.ctlAfterTest(); } @Before public void beforeClass() { - DatasetAccessor du = DatasetAccessorFactory.createHTTP(ServerCtl.serviceREST()) ; + DatasetAccessor du = DatasetAccessorFactory.createHTTP(ServerCtl.serviceGSP()) ; du.putModel(model1) ; du.putModel(gn1, model2) ; } 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 e377be8f078..c41808c7ebe 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 @@ -45,7 +45,7 @@ public class TestSPARQLProtocol extends BaseTest @Before public void before() { // Load some data. - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST()) ; + DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP()) ; du.putModel(model1) ; du.putModel(gn1, model2) ; } 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 675eec58e29..f505e6a2e3b 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 @@ -20,7 +20,7 @@ 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.ServerCtl.serviceGSP ; import static org.apache.jena.fuseki.ServerTestData.gn1 ; import static org.apache.jena.fuseki.ServerTestData.gn2 ; import static org.apache.jena.fuseki.ServerTestData.gn99 ; @@ -46,14 +46,14 @@ public class TestDatasetAccessorHTTP extends BaseTest @After public void ctlAfterTest() { ServerCtl.ctlAfterTest(); } final String datasetURI_not_1 = "http://localhost:"+port()+"/junk" ; - final String datasetURI_not_2 = serviceREST()+"/not" ; + final String datasetURI_not_2 = serviceGSP()+"/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()) ; + HttpOp.execHttpGet(serviceGSP()) ; } catch (HttpException ex) { assertTrue(HttpSC.isClientError(ex.getResponseCode())) ; @@ -101,7 +101,7 @@ public void test_404_2() { @Test public void test_404_3() { // Right service, wrong graph - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST()) ; + DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP()) ; Model graph = du.getModel(gn99) ; assertNull(graph) ; } @@ -254,6 +254,6 @@ public void clearup_1() { } static DatasetAccessor create() { - return DatasetAccessorFactory.createHTTP(serviceREST()) ; + return DatasetAccessorFactory.createHTTP(serviceGSP()) ; } } 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 328c9e4fde9..0c4bb1aee5d 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 @@ -36,6 +36,6 @@ public class TestDatasetGraphAccessorHTTP extends AbstractTestDatasetGraphAccess @Override protected DatasetGraphAccessor getDatasetUpdater() { - return new DatasetGraphAccessorHTTP(ServerCtl.serviceREST()) ; + return new DatasetGraphAccessorHTTP(ServerCtl.serviceGSP()) ; } } 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 48b9b67f704..361c37ba4e1 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 @@ -19,7 +19,7 @@ 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.serviceGSP ; import static org.apache.jena.fuseki.ServerCtl.serviceUpdate ; import static org.apache.jena.fuseki.ServerCtl.urlRoot ; @@ -48,7 +48,7 @@ public class TestHttpOp extends BaseTest { @After public void ctlAfterTest() { ServerCtl.ctlAfterTest(); } static String pingURL = urlRoot() + "ping.txt" ; - static String graphURL = serviceREST() + "?default" ; + static String graphURL = serviceGSP() + "?default" ; static String queryURL = serviceQuery() ; static String updateURL = serviceUpdate() ; static String simpleQuery = queryURL+"?query="+IRILib.encodeUriComponent("ASK{}") ; diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/AbstractFusekiTest.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/AbstractFusekiTest.java index 3f1aa174e66..7ccfba90720 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/AbstractFusekiTest.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/AbstractFusekiTest.java @@ -19,6 +19,7 @@ package org.apache.jena.fuseki; import org.apache.jena.atlas.junit.BaseTest ; +import org.junit.After ; import org.junit.AfterClass ; import org.junit.Before ; import org.junit.BeforeClass ; @@ -30,18 +31,9 @@ public class AbstractFusekiTest extends BaseTest { - @BeforeClass - public static void allocServerForSuite() { - ServerTest.allocServer() ; - } - - @AfterClass - public static void freeServerForSuite() { - ServerTest.freeServer() ; - } - - @Before public void resetServer() { - ServerTest.resetServer() ; - } + @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(); } } diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerCtl.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerCtl.java new file mode 100644 index 00000000000..cc6d97a94db --- /dev/null +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerCtl.java @@ -0,0 +1,287 @@ +/** + * 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 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.nio.file.Paths ; +import java.util.Collection ; +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.atlas.iterator.Iter ; +import org.apache.jena.atlas.lib.FileOps ; +import org.apache.jena.fuseki.jetty.JettyFuseki ; +import org.apache.jena.fuseki.jetty.JettyServerConfig ; +import org.apache.jena.fuseki.server.* ; +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.tdb.base.file.Location ; +import org.apache.jena.update.Update ; +import org.apache.jena.update.UpdateExecutionFactory ; +import org.apache.jena.update.UpdateProcessor ; + +/** + * Manage a single server for use with tests. It supports three modes: + *

    + *
  • One server for a whole test suite + *
  • One server per test class + *
  • One server per individual test + *
+ * 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. + *

The data in the server is always reseet between tests. + *

+ * 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. + *

+ * Usage: + *

+ *

+ * In the test suite, put: + * + *

+ *  {@literal @BeforeClass} static public void beforeSuiteClass() { ServerCtl.ctlBeforeTestSuite(); } 
+ *  {@literal @AfterClass}  static public void afterSuiteClass()  { ServerCtl.ctlAfterTestSuite(); }
+ * 
+ *

+ * In the test class, put: + *

+ * {@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(); }
+ * 
+ */ +public class ServerCtl { + static { Fuseki.init(); } + + /* 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(); } + + */ + + static HttpClient defaultHttpClient = HttpOp.getDefaultHttpClient(); + + // Note: it is import to cleanly close a PoolingHttpClient across server restarts + // 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 urlDataset() { return "http://localhost:"+port()+datasetPath() ; } + + 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 serviceGSP() { return "http://localhost:"+port()+datasetPath()+"/data" ; } + + + public static void ctlBeforeTestSuite() { + if ( serverScope == SUITE ) { + setPoolingHttpClient() ; + allocServer(); + } + } + + public static void ctlAfterTestSuite() { + if ( serverScope == SUITE ) { + freeServer(); + resetDefaultHttpClient() ; + } + } + + /** + * Setup for the tests by allocating a Fuseki instance to work with + */ + public static void ctlBeforeClass() { + if ( serverScope == CLASS ) { + setPoolingHttpClient() ; + allocServer(); + } + } + + /** + * Clean up after tests by de-allocating the Fuseki instance + */ + public static void ctlAfterClass() { + if ( serverScope == CLASS ) { + freeServer(); + resetDefaultHttpClient() ; + } + } + + /** + * Placeholder. + */ + public static void ctlBeforeTest() { + if ( serverScope == TEST ) { + setPoolingHttpClient() ; + allocServer(); + } + } + + /** + * Clean up after each test by resetting the Fuseki dataset + */ + public static void ctlAfterTest() { + if ( serverScope == TEST ) { + freeServer(); + resetDefaultHttpClient() ; + } else + resetServer(); + } + + /** Set a PoolingHttpClient */ + private static void setPoolingHttpClient() { + setHttpClient(HttpOp.createPoolingHttpClient()) ; + } + + /** Restore the original setup */ + private static void resetDefaultHttpClient() { + setHttpClient(defaultHttpClient); + } + + /** Set the HttpClient - close the old one if appropriate */ + /*package*/ static void setHttpClient(HttpClient newHttpClient) { + HttpClient hc = HttpOp.getDefaultHttpClient() ; + if ( hc instanceof CloseableHttpClient ) + IO.close((CloseableHttpClient)hc) ; + HttpOp.setDefaultHttpClient(newHttpClient) ; + } + + // reference count of start/stop server + private static AtomicInteger countServer = new AtomicInteger() ; + private static JettyFuseki server = null ; + + /*package*/ static void allocServer() { + if ( countServer.getAndIncrement() == 0 ) + setupServer(true) ; + } + + /*package*/ static void freeServer() { + if ( countServer.decrementAndGet() == 0 ) + teardownServer() ; + } + + protected static void setupServer(boolean updateable) { + FusekiEnv.FUSEKI_HOME = Paths.get(TS_Fuseki.FusekiTestHome).toAbsolutePath() ; + FileOps.ensureDir("target"); + FileOps.ensureDir(TS_Fuseki.FusekiTestHome); + FileOps.ensureDir(TS_Fuseki.FusekiTestBase) ; + FusekiEnv.FUSEKI_BASE = Paths.get(TS_Fuseki.FusekiTestBase).toAbsolutePath() ; + setupServer(port(), null, datasetPath(), updateable) ; + } + + public static void setupServer(int port, String authConfigFile, String datasetPath, boolean updateable) { + SystemState.location = Location.mem() ; + SystemState.init$() ; + + ServerInitialConfig params = new ServerInitialConfig() ; + dsgTesting = DatasetGraphFactory.createTxnMem() ; + params.dsg = dsgTesting ; + params.datasetPath = datasetPath ; + params.allowUpdate = updateable ; + + FusekiServerListener.initialSetup = params ; + + JettyServerConfig config = make(port, true, true) ; + config.authConfigFile = authConfigFile ; + JettyFuseki.initializeServer(config); + JettyFuseki.instance.start() ; + server = JettyFuseki.instance ; + } + + /*package*/ static void teardownServer() { + if ( server != null ) + server.stop() ; + server = null ; + // Clear out the registry. + Collection keys = Iter.toList(DataAccessPointRegistry.get().keys().iterator()) ; + for (String k : keys) + DataAccessPointRegistry.get().remove(k) ; + // Clear configuration directory. + FileOps.clearAll(FusekiServer.dirConfiguration.toFile()) ; + } + + /*package*/ static JettyServerConfig make(int port, boolean allowUpdate, boolean listenLocal) { + JettyServerConfig config = new JettyServerConfig() ; + // Avoid any persistent record. + config.port = port ; + config.contextPath = "/" ; + config.loopback = listenLocal ; + config.jettyConfigFile = null ; + config.enableCompression = true ; + config.verboseLogging = false ; + return config ; + } + + /*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!"); + } + } +} diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerTest.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerTest.java index d36f1047e6b..cd832cc03fa 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerTest.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerTest.java @@ -18,31 +18,12 @@ package org.apache.jena.fuseki ; -import java.io.IOException ; -import java.net.ServerSocket ; -import java.nio.file.Paths ; -import java.util.Arrays ; -import java.util.Collection ; - -import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.lib.FileOps ; -import org.apache.jena.fuseki.server.* ; -import org.apache.jena.fuseki.jetty.JettyServerConfig ; -import org.apache.jena.fuseki.jetty.JettyFuseki ; 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.tdb.base.file.Location ; -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: @@ -54,15 +35,6 @@ * */ public class ServerTest { - // Abstraction that runs a SPARQL server for tests. - public static final int port = choosePort(3535, 3534, 3735, 9035, 9135, 10035) ; - public static final String urlRoot = "http://localhost:" + port + "/" ; - public static final String datasetPath = "/dataset" ; - public static final String urlDataset = "http://localhost:" + port + datasetPath ; - public static final String serviceUpdate = urlDataset + "/update" ; - public static final String serviceQuery = urlDataset + "/query" ; - public static final String serviceGSP = urlDataset + "/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" ; @@ -76,102 +48,4 @@ public class ServerTest { public static final Model model1 = ModelFactory.createModelForGraph(graph1) ; public static final Model model2 = ModelFactory.createModelForGraph(graph2) ; - - private static JettyFuseki server = null ; - - // reference count of start/stop server - private static int countServer = 0 ; - - // This will cause there to be one server over all tests. - // Must be after initialization of counters - // static { allocServer() ; } - - static public void allocServer() { - allocServer(true) ; - } - - static public void allocServer(boolean updateable) { - if ( countServer == 0 ) - setupServer(updateable) ; - countServer++ ; - } - - static public void freeServer() { - if ( countServer >= 0 ) { - countServer-- ; - if ( countServer == 0 ) - teardownServer() ; - } - } - - protected static void setupServer(boolean updateable) { - FusekiEnv.FUSEKI_HOME = Paths.get(TS_Fuseki.FusekiTestHome).toAbsolutePath() ; - FileOps.ensureDir("target"); - FileOps.ensureDir(TS_Fuseki.FusekiTestHome); - FileOps.ensureDir(TS_Fuseki.FusekiTestBase) ; - FusekiEnv.FUSEKI_BASE = Paths.get(TS_Fuseki.FusekiTestBase).toAbsolutePath() ; - setupServer(ServerTest.port, null, ServerTest.datasetPath, updateable) ; - } - - protected static void setupServer(int port, String authConfigFile, String datasetPath, boolean updateable) { - SystemState.location = Location.mem() ; - SystemState.init$() ; - - ServerInitialConfig params = new ServerInitialConfig() ; - DatasetGraph dsg = DatasetGraphFactory.create() ; - params.dsg = dsg ; - params.datasetPath = datasetPath ; - params.allowUpdate = updateable ; - - FusekiServerListener.initialSetup = params ; - - JettyServerConfig config = make(port, true, true) ; - config.authConfigFile = authConfigFile ; - JettyFuseki.initializeServer(config); - JettyFuseki.instance.start() ; - server = JettyFuseki.instance ; - } - - public static JettyServerConfig make(int port, boolean allowUpdate, boolean listenLocal) { - JettyServerConfig config = new JettyServerConfig() ; - // Avoid any persistent record. - config.port = port ; - config.contextPath = "/" ; - config.loopback = listenLocal ; - config.jettyConfigFile = null ; - config.enableCompression = true ; - config.verboseLogging = false ; - return config ; - } - - protected static void teardownServer() { - if ( server != null ) - server.stop() ; - server = null ; - // Clear out the registry. - Collection keys = Iter.toList(DataAccessPointRegistry.get().keys().iterator()) ; - for (String k : keys) - DataAccessPointRegistry.get().remove(k) ; - // Clear configuration directory. - FileOps.clearAll(FusekiServer.dirConfiguration.toFile()) ; - } - - public static void resetServer() { - Update clearRequest = new UpdateDrop(Target.ALL) ; - UpdateProcessor proc = UpdateExecutionFactory.createRemote(clearRequest, ServerTest.serviceUpdate) ; - proc.execute() ; - } - - // Imperfect probing for a port. - // There is a race condition on finding a free port and using it in the tests. - private static int choosePort(int... ports) { - for (int port : ports) { - try { - ServerSocket s = new ServerSocket(port) ; - s.close(); - return s.getLocalPort() ; // OK to call after close. - } catch (IOException ex) { } - } - throw new FusekiException("Failed to find a port in :"+Arrays.asList(ports)) ; - } } diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java index 9424eb8145f..c5af2490b2e 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java @@ -25,6 +25,7 @@ import org.apache.jena.fuseki.http.TestDatasetGraphAccessorHTTP ; import org.apache.jena.fuseki.http.TestHttpOp ; import org.apache.jena.fuseki.server.FusekiEnv ; +import org.junit.AfterClass ; import org.junit.BeforeClass ; import org.junit.runner.RunWith ; import org.junit.runners.Suite ; @@ -69,5 +70,12 @@ public class TS_Fuseki extends ServerTest LogCtl.setLevel(Fuseki.actionLogName, "WARN"); LogCtl.setLevel(Fuseki.requestLogName, "WARN"); LogCtl.setLevel(Fuseki.servletRequestLogName,"WARN"); + + ServerCtl.ctlBeforeTestSuite(); + } + + @AfterClass + static public void afterSuiteClass() { + ServerCtl.ctlAfterTestSuite() ; } } \ No newline at end of file diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestAdmin.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestAdmin.java index bc023095903..f447960ce94 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestAdmin.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestAdmin.java @@ -18,8 +18,6 @@ package org.apache.jena.fuseki; -import static org.apache.jena.fuseki.ServerTest.datasetPath ; -import static org.apache.jena.fuseki.ServerTest.urlRoot ; import static org.apache.jena.fuseki.mgt.MgtConst.opDatasets ; import static org.apache.jena.fuseki.mgt.MgtConst.opListBackups ; import static org.apache.jena.fuseki.mgt.MgtConst.opPing ; @@ -60,17 +58,17 @@ public class TestAdmin extends AbstractFusekiTest { // --- Ping @Test public void ping_1() { - execHttpGet(ServerTest.urlRoot+"$/"+opPing) ; + execHttpGet(ServerCtl.urlRoot()+"$/"+opPing) ; } @Test public void ping_2() { - execHttpPost(ServerTest.urlRoot+"$/"+opPing, null) ; + execHttpPost(ServerCtl.urlRoot()+"$/"+opPing, null) ; } // --- Server status @Test public void server_1() { - JsonValue jv = httpGetJson(ServerTest.urlRoot+"$/"+opServer) ; + JsonValue jv = httpGetJson(ServerCtl.urlRoot()+"$/"+opServer) ; JsonObject obj = jv.getAsObject() ; // Now optional : assertTrue(obj.hasKey(JsonConst.admin)) ; assertTrue(obj.hasKey(JsonConst.datasets)) ; @@ -79,17 +77,17 @@ public class TestAdmin extends AbstractFusekiTest { } @Test public void server_2() { - execHttpPost(ServerTest.urlRoot+"$/"+opServer, null) ; + execHttpPost(ServerCtl.urlRoot()+"$/"+opServer, null) ; } // --- List all datasets @Test public void list_datasets_1() { - try ( TypedInputStream in = execHttpGet(urlRoot+"$/"+opDatasets) ; ) { } + try ( TypedInputStream in = execHttpGet(ServerCtl.urlRoot()+"$/"+opDatasets) ; ) { } } @Test public void list_datasets_2() { - try ( TypedInputStream in = execHttpGet(urlRoot+"$/"+opDatasets) ) { + try ( TypedInputStream in = execHttpGet(ServerCtl.urlRoot()+"$/"+opDatasets) ) { assertEqualsIgnoreCase(WebContent.contentTypeJSON, in.getContentType()) ; JsonValue v = JSON.parseAny(in) ; assertNotNull(v.getAsObject().get("datasets")) ; @@ -99,7 +97,7 @@ public class TestAdmin extends AbstractFusekiTest { // Specific dataset @Test public void list_datasets_3() { - checkExists(datasetPath) ; + checkExists(ServerCtl.datasetPath()) ; } // Specific dataset @@ -109,7 +107,7 @@ public class TestAdmin extends AbstractFusekiTest { // Specific dataset @Test public void list_datasets_5() { - JsonValue v = getDatasetDescription(datasetPath) ; + JsonValue v = getDatasetDescription(ServerCtl.datasetPath()) ; checkJsonDatasetsOne(v.getAsObject()) ; } @@ -135,14 +133,14 @@ public class TestAdmin extends AbstractFusekiTest { { org.apache.http.entity.ContentType ct = org.apache.http.entity.ContentType.parse(WebContent.contentTypeTurtle+"; charset="+WebContent.charsetUTF8) ; HttpEntity e = new FileEntity(f, ct) ; - execHttpPost(ServerTest.urlRoot+"$/"+opDatasets, e) ; + execHttpPost(ServerCtl.urlRoot()+"$/"+opDatasets, e) ; } // Check exists. checkExists(dsTest) ; try { org.apache.http.entity.ContentType ct = org.apache.http.entity.ContentType.parse(WebContent.contentTypeTurtle+"; charset="+WebContent.charsetUTF8) ; HttpEntity e = new FileEntity(f, ct) ; - execHttpPost(ServerTest.urlRoot+"$/"+opDatasets, e) ; + execHttpPost(ServerCtl.urlRoot()+"$/"+opDatasets, e) ; } catch (HttpException ex) { assertEquals(HttpSC.CONFLICT_409, ex.getResponseCode()) ; } @@ -184,7 +182,7 @@ public class TestAdmin extends AbstractFusekiTest { @Test public void delete_dataset_1() { String name = "NoSuchDataset" ; - FusekiTest.exec404( ()-> execHttpDelete(ServerTest.urlRoot+"$/"+opDatasets+"/"+name) ) ; + FusekiTest.exec404( ()-> execHttpDelete(ServerCtl.urlRoot()+"$/"+opDatasets+"/"+name) ) ; } // ---- Active/Offline. @@ -194,11 +192,11 @@ public class TestAdmin extends AbstractFusekiTest { addTestDataset() ; checkExists(dsTest) ; - execHttpPost(ServerTest.urlRoot+"$/"+opDatasets+"/"+dsTest+"?state=offline", null) ; + execHttpPost(ServerCtl.urlRoot()+"$/"+opDatasets+"/"+dsTest+"?state=offline", null) ; checkExistsNotActive(dsTest); - execHttpPost(ServerTest.urlRoot+"$/"+opDatasets+"/"+dsTest+"?state=active", null) ; + execHttpPost(ServerCtl.urlRoot()+"$/"+opDatasets+"/"+dsTest+"?state=active", null) ; checkExists(dsTest) ; deleteDataset(dsTest) ; @@ -206,14 +204,14 @@ public class TestAdmin extends AbstractFusekiTest { @Test public void state_2() { addTestDataset() ; - execHttpPost(ServerTest.urlRoot+"$/"+opDatasets+"/"+dsTest+"?state=offline", null) ; + execHttpPost(ServerCtl.urlRoot()+"$/"+opDatasets+"/"+dsTest+"?state=offline", null) ; deleteDataset(dsTest) ; checkNotThere(dsTest) ; } @Test public void state_3() { addTestDataset() ; - FusekiTest.exec404(()->execHttpPost(ServerTest.urlRoot+"$/"+opDatasets+"/DoesNotExist?state=offline", null)) ; + FusekiTest.exec404(()->execHttpPost(ServerCtl.urlRoot()+"$/"+opDatasets+"/DoesNotExist?state=offline", null)) ; deleteDataset(dsTest) ; } @@ -224,13 +222,13 @@ public class TestAdmin extends AbstractFusekiTest { // ---- Stats @Test public void stats_1() { - JsonValue v = execGetJSON(urlRoot+"$/"+opStats) ; + JsonValue v = execGetJSON(ServerCtl.urlRoot()+"$/"+opStats) ; checkJsonStatsAll(v); } @Test public void stats_2() { addTestDataset() ; - JsonValue v = execGetJSON(urlRoot+"$/"+opStats+datasetPath) ; + JsonValue v = execGetJSON(ServerCtl.urlRoot()+"$/"+opStats+ServerCtl.datasetPath()) ; checkJsonStatsAll(v); deleteDataset(dsTest) ; } @@ -238,7 +236,7 @@ public class TestAdmin extends AbstractFusekiTest { @Test public void stats_3() { addTestDataset() ; FusekiTest.exec404(()->{ - JsonValue v = execGetJSON(urlRoot+"$/"+opStats+"/DoesNotExist") ; + JsonValue v = execGetJSON(ServerCtl.urlRoot()+"$/"+opStats+"/DoesNotExist") ; }) ; deleteDataset(dsTest) ; } @@ -253,7 +251,7 @@ public class TestAdmin extends AbstractFusekiTest { @Test public void task_2() { String x = "NoSuchTask" ; - String url = urlRoot+"$/tasks/"+x ; + String url = ServerCtl.urlRoot()+"$/tasks/"+x ; FusekiTest.exec404(()->httpGetJson(url) ) ; try { checkInTasks(x) ; @@ -278,7 +276,7 @@ public class TestAdmin extends AbstractFusekiTest { String x = execSleepTask(null, 1) ; // Check exists in the list of all tasks (should be "finished") checkInTasks(x) ; - String url = urlRoot+"$/tasks/"+x ; + String url = ServerCtl.urlRoot()+"$/tasks/"+x ; boolean finished = false ; for ( int i = 0 ; i < 10 ; i++ ) { @@ -302,7 +300,7 @@ public class TestAdmin extends AbstractFusekiTest { } @Test public void list_backups_1() { - try ( TypedInputStream in = execHttpGet(urlRoot+"$/"+opListBackups) ) { + try ( TypedInputStream in = execHttpGet(ServerCtl.urlRoot()+"$/"+opListBackups) ) { assertEqualsIgnoreCase(WebContent.contentTypeJSON, in.getContentType()) ; JsonValue v = JSON.parseAny(in) ; assertNotNull(v.getAsObject().get("backups")) ; @@ -310,12 +308,12 @@ public class TestAdmin extends AbstractFusekiTest { } private JsonValue getTask(String taskId) { - String url = urlRoot+"$/tasks/"+taskId ; + String url = ServerCtl.urlRoot()+"$/tasks/"+taskId ; return httpGetJson(url) ; } private static JsonValue getDatasetDescription(String dsName) { - try (TypedInputStream in = execHttpGet(urlRoot + "$/" + opDatasets + "/" + dsName)) { + try (TypedInputStream in = execHttpGet(ServerCtl.urlRoot() + "$/" + opDatasets + "/" + dsName)) { assertEqualsIgnoreCase(WebContent.contentTypeJSON, in.getContentType()); JsonValue v = JSON.parse(in); return v; @@ -332,11 +330,11 @@ private static void addTestDataset(String filename) { File f = new File(filename) ; org.apache.http.entity.ContentType ct = org.apache.http.entity.ContentType.parse(WebContent.contentTypeTurtle+"; charset="+WebContent.charsetUTF8) ; HttpEntity e = new FileEntity(f, ct) ; - execHttpPost(ServerTest.urlRoot+"$/"+opDatasets, e) ; + execHttpPost(ServerCtl.urlRoot()+"$/"+opDatasets, e) ; } private static void deleteDataset(String name) { - execHttpDelete(ServerTest.urlRoot+"$/"+opDatasets+"/"+name) ; + execHttpDelete(ServerCtl.urlRoot()+"$/"+opDatasets+"/"+name) ; } static class JsonResponseHandler implements HttpResponseHandler { @@ -357,7 +355,7 @@ public void handle(String baseIRI, HttpResponse response) throws IOException { } private String execSleepTask(String name, int millis) { - String url = urlRoot+"$/sleep" ; + String url = ServerCtl.urlRoot()+"$/sleep" ; if ( name != null ) { if ( name.startsWith("/") ) name = name.substring(1) ; @@ -378,7 +376,7 @@ private JsonValue httpGetJson(String url) { } private void checkTask(String x) { - String url = urlRoot+"$/tasks/"+x ; + String url = ServerCtl.urlRoot()+"$/tasks/"+x ; JsonValue v = httpGetJson(url) ; checkTask(v) ; } @@ -399,7 +397,7 @@ private void checkTask(JsonValue v) { } private void checkInTasks(String x) { - String url = urlRoot+"$/tasks" ; + String url = ServerCtl.urlRoot()+"$/tasks" ; JsonValue v = httpGetJson(url) ; assertTrue(v.isArray()) ; JsonArray array = v.getAsArray() ; @@ -421,11 +419,11 @@ private void checkInTasks(String x) { private static void askPing(String name) { if ( name.startsWith("/") ) name = name.substring(1) ; - try ( TypedInputStream in = execHttpGet(urlRoot+name+"/sparql?query=ASK%7B%7D") ) {} + try ( TypedInputStream in = execHttpGet(ServerCtl.urlRoot()+name+"/sparql?query=ASK%7B%7D") ) {} } private static void adminPing(String name) { - try ( TypedInputStream in = execHttpGet(urlRoot+"$/"+opDatasets+"/"+name) ) {} + try ( TypedInputStream in = execHttpGet(ServerCtl.urlRoot()+"$/"+opDatasets+"/"+name) ) {} } private static void checkExists(String name) { diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestAuth.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestAuth.java index 1a4f517cfd1..a86029100fc 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestAuth.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestAuth.java @@ -56,10 +56,9 @@ */ 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.port+10 ; + public static final int authPort = ServerCtl.port()+10 ; public static final String authUrlRoot = "http://localhost:"+authPort+"/" ; public static final String authDatasetPath = "/dataset" ; public static final String authServiceUpdate = "http://localhost:"+authPort+authDatasetPath+"/update" ; @@ -84,7 +83,7 @@ public static void setup() throws IOException { LogCtl.setLevel(Fuseki.actionLogName, "warn") ; LogCtl.setLevel("org.eclipse.jetty", "warn") ; - ServerTest.setupServer(authPort, realmFile.getAbsolutePath(), authDatasetPath, true); + ServerCtl.setupServer(authPort, realmFile.getAbsolutePath(), authDatasetPath, true); } /** @@ -92,7 +91,7 @@ public static void setup() throws IOException { */ @AfterClass public static void teardown() { - ServerTest.teardownServer(); + ServerCtl.teardownServer(); realmFile.delete(); } diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestDatasetOps.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestDatasetOps.java index fac056b9962..6ee42d49400 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestDatasetOps.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestDatasetOps.java @@ -18,9 +18,7 @@ package org.apache.jena.fuseki; -import static org.apache.jena.fuseki.ServerTest.serviceQuery ; -import static org.apache.jena.fuseki.ServerTest.serviceGSP ; -import static org.apache.jena.fuseki.ServerTest.urlDataset ; +import static org.apache.jena.fuseki.ServerCtl.* ; import org.apache.http.HttpEntity ; import org.apache.http.entity.EntityTemplate ; import org.apache.jena.atlas.lib.StrUtils ; @@ -61,19 +59,19 @@ protected HttpEntity datasetToHttpEntity(final DatasetGraph dsg) { } @Test public void gsp_x_01() { - gsp_x(urlDataset, urlDataset) ; + gsp_x(urlDataset(), urlDataset()) ; } @Test public void gsp_x_02() { - gsp_x(urlDataset, serviceGSP) ; + gsp_x(urlDataset(), serviceGSP()) ; } @Test public void gsp_x_03() { - gsp_x(serviceGSP, urlDataset) ; + gsp_x(serviceGSP(), urlDataset()) ; } @Test public void gsp_x_04() { - gsp_x(serviceGSP, urlDataset) ; + gsp_x(serviceGSP(), urlDataset()) ; } private void gsp_x(String outward, String inward) { @@ -89,38 +87,38 @@ private void gsp_x(String outward, String inward) { // Get dataset. Tests conneg. @Test public void gsp_x_10() { - gsp_x_ct(urlDataset, WebContent.contentTypeNQuads, WebContent.contentTypeNQuads) ; + gsp_x_ct(urlDataset(), WebContent.contentTypeNQuads, WebContent.contentTypeNQuads) ; } @Test public void gsp_x_11() { - gsp_x_ct(urlDataset, WebContent.contentTypeNQuadsAlt1, WebContent.contentTypeNQuads) ; + gsp_x_ct(urlDataset(), WebContent.contentTypeNQuadsAlt1, WebContent.contentTypeNQuads) ; } @Test public void gsp_x_12() { - gsp_x_ct(urlDataset, WebContent.contentTypeTriG, WebContent.contentTypeTriG) ; + gsp_x_ct(urlDataset(), WebContent.contentTypeTriG, WebContent.contentTypeTriG) ; } @Test public void gsp_x_13() { - gsp_x_ct(urlDataset, WebContent.contentTypeTriGAlt1, WebContent.contentTypeTriG) ; + gsp_x_ct(urlDataset(), WebContent.contentTypeTriGAlt1, WebContent.contentTypeTriG) ; } @Test public void gsp_x_14() { - gsp_x_ct(urlDataset, WebContent.defaultDatasetAcceptHeader, WebContent.contentTypeTriG) ; + gsp_x_ct(urlDataset(), WebContent.defaultDatasetAcceptHeader, WebContent.contentTypeTriG) ; } @Test public void gsp_x_15() { // Anything! - gsp_x_ct(urlDataset, WebContent.defaultRDFAcceptHeader, WebContent.contentTypeTriG) ; + gsp_x_ct(urlDataset(), WebContent.defaultRDFAcceptHeader, WebContent.contentTypeTriG) ; } - private void gsp_x_ct(String urldataset, String acceptheader, String contentTypeResponse) { + private void gsp_x_ct(String urlDataset, String acceptheader, String contentTypeResponse) { HttpEntity e = datasetToHttpEntity(data) ; - HttpOp.execHttpPut(urlDataset, e); + HttpOp.execHttpPut(urlDataset(), e); TypedInputStream in = HttpOp.execHttpGet(urlDataset, acceptheader) ; assertEqualsIgnoreCase(contentTypeResponse, in.getContentType()) ; DatasetGraph dsg = DatasetGraphFactory.create() ; @@ -133,7 +131,7 @@ public void gsp_x_20() { HttpEntity e = datasetToHttpEntity(data) ; try { - HttpOp.execHttpPost(serviceQuery, e); + HttpOp.execHttpPost(serviceQuery(), e); } catch (HttpException ex) { assertTrue(HttpSC.isClientError(ex.getResponseCode())) ; } diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestFileUpload.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestFileUpload.java index d351c7d2cb4..cfc0527d6fc 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestFileUpload.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestFileUpload.java @@ -18,7 +18,6 @@ package org.apache.jena.fuseki; -import static org.apache.jena.fuseki.ServerTest.serviceGSP ; import org.apache.jena.atlas.web.TypedInputStream ; import org.apache.jena.fuseki.http.TestDatasetAccessorHTTP ; import org.apache.jena.fuseki.http.TestHttpOp ; @@ -42,12 +41,12 @@ public class TestFileUpload extends AbstractFusekiTest { @Test public void upload_gsp_01() { - FileSender x = new FileSender(serviceGSP+"?default") ; + FileSender x = new FileSender(ServerCtl.serviceGSP()+"?default") ; x.add("D.ttl", " .", "text/turtle") ; x.send("POST") ; Model m = ModelFactory.createDefaultModel() ; - TypedInputStream in = HttpOp.execHttpGet(serviceGSP, "text/turtle") ; + TypedInputStream in = HttpOp.execHttpGet(ServerCtl.serviceGSP(), "text/turtle") ; RDFDataMgr.read(m, in, RDFLanguages.contentTypeToLang(in.getMediaType()) ) ; // which is is effectively : // DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST) ; @@ -57,13 +56,13 @@ public class TestFileUpload extends AbstractFusekiTest @Test public void upload_gsp_02() { - FileSender x = new FileSender(ServerTest.serviceGSP+"?default") ; + FileSender x = new FileSender(ServerCtl.serviceGSP()+"?default") ; x.add("D.ttl", " 123 .", "text/turtle") ; x.add("D.nt", " .", "application/n-triples") ; x.send("PUT") ; // BUG - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP) ; + DatasetAccessor du = DatasetAccessorFactory.createHTTP(ServerCtl.serviceGSP()) ; Model m = du.getModel() ; assertEquals(2, m.size()) ; } @@ -71,12 +70,12 @@ public class TestFileUpload extends AbstractFusekiTest // Extension of GSP - no graph selector => dataset @Test public void upload_gsp_03() { - FileSender x = new FileSender(ServerTest.serviceGSP) ; + FileSender x = new FileSender(ServerCtl.serviceGSP()) ; x.add("D.ttl", " .", "text/turtle") ; x.add("D.trig", " { }", "text/trig") ; x.send("POST") ; - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP) ; + DatasetAccessor du = DatasetAccessorFactory.createHTTP(ServerCtl.serviceGSP()) ; Model m = du.getModel() ; assertEquals(1, m.size()) ; } @@ -84,16 +83,16 @@ public class TestFileUpload extends AbstractFusekiTest @Test public void upload_gsp_04() { { - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP) ; + DatasetAccessor du = DatasetAccessorFactory.createHTTP(ServerCtl.serviceGSP()) ; Model m = du.getModel() ; assertEquals(0, m.size()) ; } - FileSender x = new FileSender(ServerTest.urlDataset) ; + FileSender x = new FileSender(ServerCtl.urlDataset()) ; x.add("D.ttl", " .", "text/plain") ; x.add("D.trig", " { 123,456 }", "text/plain") ; x.send("POST") ; - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP) ; + DatasetAccessor du = DatasetAccessorFactory.createHTTP(ServerCtl.serviceGSP()) ; Model m = du.getModel() ; assertEquals(1, m.size()) ; m = du.getModel("http://example/g") ; @@ -103,21 +102,21 @@ public class TestFileUpload extends AbstractFusekiTest // Via DatasetAccessor @Test public void dataset_accessor_01() { - FileSender x = new FileSender(ServerTest.urlDataset) ; + FileSender x = new FileSender(ServerCtl.urlDataset()) ; x.add("D.nq", "", "application/-n-quads") ; x.send("PUT") ; - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP) ; + DatasetAccessor du = DatasetAccessorFactory.createHTTP(ServerCtl.serviceGSP()) ; Model m = du.getModel() ; assertEquals(0, m.size()) ; } @Test public void dataset_accessor_02() { - FileSender x = new FileSender(ServerTest.urlDataset) ; + FileSender x = new FileSender(ServerCtl.urlDataset()) ; x.add("D.nq", " .", "application/n-quads") ; x.send("PUT") ; - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP) ; + DatasetAccessor du = DatasetAccessorFactory.createHTTP(ServerCtl.serviceGSP()) ; Model m = du.getModel("http://example/g") ; assertEquals(1, m.size()) ; m = du.getModel() ; diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOperations.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOperations.java index 2f5b751cbc4..71011a0d00b 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOperations.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOperations.java @@ -18,8 +18,8 @@ package org.apache.jena.fuseki ; -import static org.apache.jena.fuseki.ServerTest.* ; -import static org.apache.jena.fuseki.ServerTest.serviceUpdate ; +import static org.apache.jena.fuseki.ServerCtl.serviceQuery ; +import static org.apache.jena.fuseki.ServerCtl.serviceUpdate ; import org.apache.jena.atlas.web.HttpException ; import org.apache.jena.atlas.web.TypedInputStream ; @@ -38,7 +38,7 @@ public class TestHttpOperations extends AbstractFusekiTest { @Test public void query_by_get_1() { String qs = Convert.encWWWForm("ASK{}") ; - String u = serviceQuery+"?query=" + qs ; + String u = serviceQuery()+"?query=" + qs ; try (TypedInputStream in = HttpOp.execHttpGet(u)) { Assert.assertNotNull(in); } @@ -46,8 +46,7 @@ public void query_by_get_1() { @Test public void query_by_post_1() { - String u = serviceQuery ; - try (TypedInputStream in = HttpOp.execHttpPostStream(u, WebContent.contentTypeSPARQLQuery, "ASK{}", "*")) { + try (TypedInputStream in = HttpOp.execHttpPostStream(serviceQuery(), WebContent.contentTypeSPARQLQuery, "ASK{}", "*")) { Assert.assertNotNull(in); } } @@ -55,7 +54,7 @@ public void query_by_post_1() { @Test public void query_by_post_2() { String qs = Convert.encWWWForm("ASK{}") ; - String u = serviceQuery+"?query=" + qs ; + String u = serviceQuery()+"?query=" + qs ; try (TypedInputStream in = HttpOp.execHttpPostStream(u, null, null)) { Assert.assertNotNull(in); } @@ -63,26 +62,23 @@ public void query_by_post_2() { @Test public void query_by_form_1() { - String u = serviceQuery ; Params params = new Params().addParam("query", "ASK{}") ; - try (TypedInputStream in = HttpOp.execHttpPostFormStream(u, params, "*") ) { + try (TypedInputStream in = HttpOp.execHttpPostFormStream(serviceQuery(), params, "*") ) { Assert.assertNotNull(in); } } @Test(expected=HttpException.class) public void query_by_form_2() { - String u = serviceQuery ; Params params = new Params().addParam("foobar", "ASK{}") ; // Wrong. - try (TypedInputStream in = HttpOp.execHttpPostFormStream(u, params, "*") ) { + try (TypedInputStream in = HttpOp.execHttpPostFormStream(serviceQuery(), params, "*") ) { Assert.assertNotNull(in); } } @Test public void update_by_post_1() { - String u = serviceUpdate ; - HttpOp.execHttpPost(u, WebContent.contentTypeSPARQLUpdate, "INSERT DATA{}") ; + HttpOp.execHttpPost(serviceUpdate(), WebContent.contentTypeSPARQLUpdate, "INSERT DATA{}") ; } // POST ?request= :: Not supported. @@ -97,18 +93,16 @@ public void update_by_post_1() { @Test public void update_by_form_1() { - String u = serviceUpdate ; Params params = new Params().addParam("update", "INSERT DATA{}") ; - try (TypedInputStream in = HttpOp.execHttpPostFormStream(u, params, "*") ) { + try (TypedInputStream in = HttpOp.execHttpPostFormStream(serviceUpdate(), params, "*") ) { Assert.assertNotNull(in); } } @Test(expected=HttpException.class) public void update_by_form_2() { - String u = serviceUpdate ; Params params = new Params().addParam("query", "INSERT DATA{}") ; // Wrong paramater - try (TypedInputStream in = HttpOp.execHttpPostFormStream(u, params, "*") ) { + try (TypedInputStream in = HttpOp.execHttpPostFormStream(serviceUpdate(), params, "*") ) { Assert.assertNotNull(in); } } @@ -117,7 +111,7 @@ public void update_by_form_2() { @Test public void ds_query_by_get_1() { - String u = urlDataset ; + String u = ServerCtl.urlDataset() ; try (TypedInputStream in = HttpOp.execHttpGet(u)) { Assert.assertNotNull(in); } @@ -125,7 +119,7 @@ public void ds_query_by_get_1() { @Test public void ds_query_by_post_1() { - String u = urlDataset ; + String u = ServerCtl.urlDataset() ; try (TypedInputStream in = HttpOp.execHttpPostStream(u, WebContent.contentTypeSPARQLQuery, "ASK{}", "*")) { Assert.assertNotNull(in); } @@ -133,7 +127,7 @@ public void ds_query_by_post_1() { @Test public void ds_update_by_post_1() { - String u = urlDataset ; + String u = ServerCtl.urlDataset() ; HttpOp.execHttpPost(u, WebContent.contentTypeSPARQLUpdate, "INSERT DATA{}") ; } diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOptions.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOptions.java index 8f26d1a94c9..7c6d4cd8069 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOptions.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOptions.java @@ -18,30 +18,25 @@ package org.apache.jena.fuseki; -import static org.apache.jena.fuseki.ServerTest.serviceGSP ; -import static org.apache.jena.fuseki.ServerTest.serviceQuery ; -import static org.apache.jena.fuseki.ServerTest.serviceUpdate ; -import static org.apache.jena.fuseki.ServerTest.urlDataset ; - import org.junit.Test ; public class TestHttpOptions extends AbstractFusekiTest { @Test public void options_query() { - String v = FusekiTest.execOptions(serviceQuery) ; + String v = FusekiTest.execOptions(ServerCtl.serviceQuery()) ; FusekiTest.assertStringList(v, "GET", "OPTIONS", "POST") ; } @Test public void options_update() { - String v = FusekiTest.execOptions(serviceUpdate) ; + String v = FusekiTest.execOptions(ServerCtl.serviceUpdate()) ; FusekiTest.assertStringList(v, "OPTIONS", "POST") ; } @Test public void options_dataset_01() { - String v = FusekiTest.execOptions(urlDataset) ; + String v = FusekiTest.execOptions(ServerCtl.urlDataset()) ; // Not DELETE FusekiTest.assertStringList(v, "HEAD", "GET", "OPTIONS", "POST", "PUT") ; } @@ -53,7 +48,7 @@ public void options_dataset_02() { @Test public void options_gsp_rw() { - String v = FusekiTest.execOptions(serviceGSP+"?default") ; + String v = FusekiTest.execOptions(ServerCtl.serviceGSP()+"?default") ; FusekiTest.assertStringList(v, "GET", "OPTIONS", "HEAD", "POST", "PUT", "DELETE") ; } diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestQuery.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestQuery.java index 213ea388c14..5651b77978c 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestQuery.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestQuery.java @@ -18,19 +18,17 @@ package org.apache.jena.fuseki ; -import static org.apache.jena.fuseki.ServerTest.gn1 ; -import static org.apache.jena.fuseki.ServerTest.gn2 ; +import static org.apache.jena.fuseki.ServerCtl.serviceGSP ; +import static org.apache.jena.fuseki.ServerCtl.serviceQuery ; +import static org.apache.jena.fuseki.ServerTest.* ; import static org.apache.jena.fuseki.ServerTest.model1 ; import static org.apache.jena.fuseki.ServerTest.model2 ; -import static org.apache.jena.fuseki.ServerTest.serviceQuery ; -import static org.apache.jena.fuseki.ServerTest.serviceGSP ; import java.io.IOException ; import java.net.HttpURLConnection ; import java.net.URL ; import java.util.Iterator ; -import org.apache.jena.atlas.junit.BaseTest ; import org.apache.jena.atlas.web.AcceptList ; import org.apache.jena.atlas.web.MediaType; import org.apache.jena.graph.Node ; @@ -42,37 +40,24 @@ import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.engine.http.QueryEngineHTTP ; import org.apache.jena.sparql.resultset.ResultSetCompare ; -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.AfterClass ; import org.junit.Assert ; -import org.junit.BeforeClass ; +import org.junit.Before ; 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 )(?p

)(?o 1)))") ; - rs1 = BuilderResultSet.build(item) ; - } - - @BeforeClass - public static void beforeClass() { - ServerTest.allocServer() ; - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP) ; +public class TestQuery extends AbstractFusekiTest { + + @Before + public void before() { + DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP()) ; du.putModel(model1) ; du.putModel(gn1, model2) ; } - - @AfterClass - public static void afterClass() { - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP) ; - du.deleteDefault() ; - ServerTest.freeServer() ; - } - + + private static final AcceptList quadsOfferTest = DEF.quadsOffer ; + private static final AcceptList rdfOfferTest = DEF.rdfOffer ; + @Test public void query_01() { execQuery("SELECT * {?s ?p ?o}", 1) ; @@ -80,8 +65,8 @@ public void query_01() { @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)) { + 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()) { @@ -94,7 +79,7 @@ public void query_recursive_01() { @Test public void query_with_params_01() { String query = "ASK { }" ; - try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery + "?output=json", query)) { + try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery() + "?output=json", query)) { boolean result = qExec.execAsk() ; Assert.assertTrue(result) ; } @@ -103,19 +88,19 @@ public void query_with_params_01() { @Test public void request_id_header_01() throws IOException { String qs = Convert.encWWWForm("ASK{}") ; - URL u = new URL(serviceQuery + "?query=" + qs) ; + URL u = new URL(serviceQuery() + "?query=" + qs) ; HttpURLConnection conn = (HttpURLConnection)u.openConnection() ; Assert.assertTrue(conn.getHeaderField("Fuseki-Request-ID") != null) ; } @Test public void query_dynamic_dataset_01() { - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP) ; + DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP()) ; du.putModel(model1); du.putModel(gn1, model2); { String query = "SELECT * { ?s ?p ?o }" ; - try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery + "?output=json", query)) { + try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery() + "?output=json", query)) { ResultSet rs = qExec.execSelect() ; Node o = rs.next().getLiteral("o").asNode() ; Node n = SSE.parseNode("1") ; @@ -124,7 +109,7 @@ public void query_dynamic_dataset_01() { } { String query = "SELECT * FROM <" + gn1 + "> { ?s ?p ?o }" ; - try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery + "?output=json", query)) { + try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery() + "?output=json", query)) { ResultSet rs = qExec.execSelect() ; Node o = rs.next().getLiteral("o").asNode() ; Node n = SSE.parseNode("2") ; @@ -135,12 +120,12 @@ public void query_dynamic_dataset_01() { @Test public void query_dynamic_dataset_02() { - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP) ; + DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP()) ; du.putModel(model1); du.putModel(gn1, model1); du.putModel(gn2, model2); String query = "SELECT * FROM <"+gn1+"> FROM <"+gn2+"> { ?s ?p ?o }" ; - try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery + "?output=json", query)) { + try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery() + "?output=json", query)) { ResultSet rs = qExec.execSelect() ; int n = ResultSetFormatter.consume(rs) ; assertEquals(2, n) ; @@ -153,7 +138,7 @@ public void query_construct_quad_01() String queryString = " CONSTRUCT { GRAPH {?s ?p ?oq} } WHERE {?s ?p ?oq}" ; Query query = QueryFactory.create(queryString, Syntax.syntaxARQ); - try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, query) ) { + try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery(), query) ) { Iterator result = qExec.execConstructQuads(); Assert.assertTrue(result.hasNext()); Assert.assertEquals( "http://eg/g", result.next().getGraph().getURI()); @@ -167,7 +152,7 @@ public void query_construct_quad_02() String queryString = " CONSTRUCT { GRAPH {?s ?p ?oq} } WHERE {?s ?p ?oq}" ; Query query = QueryFactory.create(queryString, Syntax.syntaxARQ); - try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, query) ) { + try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery(), query) ) { Dataset result = qExec.execConstructDataset(); Assert.assertTrue(result.asDatasetGraph().find().hasNext()); Assert.assertEquals( "http://eg/g", result.asDatasetGraph().find().next().getGraph().getURI()); @@ -178,7 +163,7 @@ public void query_construct_quad_02() public void query_construct_01() { String query = " CONSTRUCT {?s ?p ?o} WHERE {?s ?p ?o}" ; - try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, query) ) { + try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery(), query) ) { Iterator result = qExec.execConstructTriples(); Assert.assertTrue(result.hasNext()); } @@ -188,7 +173,7 @@ public void query_construct_01() public void query_construct_02() { String query = " CONSTRUCT {?s ?p ?o} WHERE {?s ?p ?o}" ; - try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, query) ) { + try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery(), query) ) { Model result = qExec.execConstruct(); assertEquals(1, result.size()); } @@ -197,7 +182,7 @@ public void query_construct_02() @Test public void query_describe_01() { String query = "DESCRIBE ?s WHERE {?s ?p ?o}" ; - try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, query) ) { + try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery(), query) ) { Model result = qExec.execDescribe(); assertFalse(result.isEmpty()) ; } @@ -206,21 +191,27 @@ public void query_describe_01() { @Test public void query_describe_02() { String query = "DESCRIBE WHERE { }" ; - try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, query) ) { + try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery(), query) ) { Model result = qExec.execDescribe(); assertTrue(result.isEmpty()) ; } } - private static final AcceptList rdfOfferTest = DEF.rdfOffer ; - private static final AcceptList quadsOfferTest = DEF.quadsOffer ; - + // Conneg tests: + // These avoid pooling connection pooling. + // It leads to lock up if the list is long (contentTypeTriXxml seems signiifcant) + // Hence: ServerCtl.setHttpClient(null) ; + + @Test public void query_construct_conneg() { + ServerCtl.setHttpClient(null) ; + String query = " CONSTRUCT {?s ?p ?o} WHERE {?s ?p ?o}" ; for (MediaType type: rdfOfferTest.entries()){ + String contentType = type.toHeaderString(); - try ( QueryEngineHTTP qExec = (QueryEngineHTTP) QueryExecutionFactory.sparqlService(serviceQuery, query) ) { + try ( QueryEngineHTTP qExec = (QueryEngineHTTP) QueryExecutionFactory.sparqlService(serviceQuery(), query) ) { qExec.setModelContentType( contentType ); Iterator iter = qExec.execConstructTriples(); assertTrue(iter.hasNext()) ; @@ -232,11 +223,13 @@ public void query_construct_conneg() { @Test public void query_construct_quad_conneg() { + ServerCtl.setHttpClient(null) ; + String queryString = " CONSTRUCT { GRAPH ?g {?s ?p ?o} } WHERE { GRAPH ?g {?s ?p ?o}}" ; Query query = QueryFactory.create(queryString, Syntax.syntaxARQ); for (MediaType type: quadsOfferTest.entries()){ String contentType = type.toHeaderString(); - try ( QueryEngineHTTP qExec = (QueryEngineHTTP) QueryExecutionFactory.sparqlService(serviceQuery, query) ) { + try ( QueryEngineHTTP qExec = (QueryEngineHTTP) QueryExecutionFactory.sparqlService(serviceQuery(), query) ) { qExec.setDatasetContentType( contentType ); Iterator iter = qExec.execConstructQuads(); assertTrue(iter.hasNext()) ; @@ -248,10 +241,12 @@ public void query_construct_quad_conneg() { @Test public void query_describe_conneg() { + ServerCtl.setHttpClient(null) ; + String query = "DESCRIBE ?s WHERE {?s ?p ?o}" ; for (MediaType type: rdfOfferTest.entries()){ String contentType = type.toHeaderString(); - try ( QueryEngineHTTP qExec = (QueryEngineHTTP) QueryExecutionFactory.sparqlService(serviceQuery, query) ) { + try ( QueryEngineHTTP qExec = (QueryEngineHTTP) QueryExecutionFactory.sparqlService(serviceQuery(), query) ) { qExec.setModelContentType( contentType ); Model m = qExec.execDescribe() ; String x = qExec.getHttpResponseContentType() ; @@ -261,18 +256,19 @@ public void query_describe_conneg() { } } - 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) ; + try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery(), queryString) ) { + ResultSet rs = qExec.execSelect() ; + int x = ResultSetFormatter.consume(rs) ; + assertEquals(exceptedRowCount, x) ; + } } private void execQuery(String queryString, ResultSet expectedResultSet) { - QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, queryString) ; - ResultSet rs = qExec.execSelect() ; - boolean b = ResultSetCompare.equalsByTerm(rs, expectedResultSet) ; - assertTrue("Result sets different", b) ; + try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery(), queryString) ) { + ResultSet rs = qExec.execSelect() ; + boolean b = ResultSetCompare.equalsByTerm(rs, expectedResultSet) ; + assertTrue("Result sets different", b) ; + } } } diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestSPARQLProtocol.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestSPARQLProtocol.java index 32bc663afe9..a5a5be3c8d0 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestSPARQLProtocol.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestSPARQLProtocol.java @@ -18,8 +18,12 @@ package org.apache.jena.fuseki; -import static org.apache.jena.fuseki.ServerTest.*; -import org.apache.jena.atlas.junit.BaseTest; +import static org.apache.jena.fuseki.ServerCtl.serviceQuery ; +import static org.apache.jena.fuseki.ServerCtl.serviceUpdate ; +import static org.apache.jena.fuseki.ServerTest.gn1 ; +import static org.apache.jena.fuseki.ServerTest.model1 ; +import static org.apache.jena.fuseki.ServerTest.model2 ; + import org.apache.jena.query.*; import org.apache.jena.riot.WebContent; import org.apache.jena.sparql.engine.http.QueryEngineHTTP; @@ -28,27 +32,19 @@ import org.apache.jena.update.UpdateFactory; import org.apache.jena.update.UpdateProcessor; import org.apache.jena.update.UpdateRequest; -import org.junit.AfterClass; -import org.junit.BeforeClass; +import org.junit.Before ; import org.junit.Test; -public class TestSPARQLProtocol extends BaseTest +public class TestSPARQLProtocol extends AbstractFusekiTest { - @BeforeClass - public static void beforeClass() { - ServerTest.allocServer(); + @Before + public void before() { // Load some data. - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP); + DatasetAccessor du = DatasetAccessorFactory.createHTTP(ServerCtl.serviceGSP()); du.putModel(model1); du.putModel(gn1, model2); } - @AfterClass - public static void afterClass() { - ServerTest.resetServer(); - ServerTest.freeServer(); - } - static String query(String base, String queryString) { return base + "?query=" + Convert.encWWWForm(queryString); } @@ -56,7 +52,7 @@ static String query(String base, String queryString) { @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); @@ -65,7 +61,7 @@ public void query_01() { @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); @@ -75,14 +71,14 @@ public void query_02() { @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() { UpdateRequest update = UpdateFactory.create("INSERT DATA {}"); - UpdateProcessor proc = UpdateExecutionFactory.createRemoteForm(update, serviceUpdate); + UpdateProcessor proc = UpdateExecutionFactory.createRemoteForm(update, serviceUpdate()); proc.execute(); } } diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestServerReadOnly.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestServerReadOnly.java index 8e3f98ab0af..225279f864d 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestServerReadOnly.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestServerReadOnly.java @@ -18,15 +18,13 @@ package org.apache.jena.fuseki; -import static org.apache.jena.fuseki.ServerTest.serviceGSP ; -import static org.apache.jena.fuseki.ServerTest.serviceQuery ; -import static org.apache.jena.fuseki.ServerTest.serviceUpdate ; +import static org.apache.jena.fuseki.ServerCtl.serviceQuery ; +import static org.apache.jena.fuseki.ServerCtl.serviceUpdate ; import java.nio.charset.StandardCharsets ; import org.apache.http.HttpEntity ; import org.apache.http.entity.StringEntity ; -import org.apache.jena.atlas.junit.BaseTest ; import org.apache.jena.query.Query ; import org.apache.jena.query.QueryExecution ; import org.apache.jena.query.QueryExecutionFactory ; @@ -42,23 +40,25 @@ import org.junit.Test ; /** Tests on a read only server. */ -public class TestServerReadOnly extends BaseTest +public class TestServerReadOnly { // readonly server. @BeforeClass public static void allocServerForSuite() { - ServerTest.allocServer(false) ; + ServerCtl.freeServer(); + //Manage ourselves. + ServerCtl.setupServer(false) ; } @AfterClass public static void freeServerForSuite() { - ServerTest.freeServer() ; + ServerCtl.freeServer() ; } @Test public void query_readonly() { Query query = QueryFactory.create("ASK{}"); - QueryExecution qexec = QueryExecutionFactory.sparqlService(serviceQuery, query); + QueryExecution qexec = QueryExecutionFactory.sparqlService(serviceQuery(), query); qexec.execAsk() ; } @@ -66,7 +66,7 @@ public void query_readonly() { public void update_readonly() { FusekiTest.exec404( () -> { UpdateRequest update = UpdateFactory.create("INSERT DATA {}"); - UpdateProcessor proc = UpdateExecutionFactory.createRemote(update, serviceUpdate); + UpdateProcessor proc = UpdateExecutionFactory.createRemote(update, serviceUpdate()); proc.execute(); }); } @@ -77,7 +77,7 @@ public void gsp_w_readonly_POST() { // Try to write FusekiTest.execWithHttpException(HttpSC.METHOD_NOT_ALLOWED_405, ()->{ HttpEntity e = new StringEntity("", StandardCharsets.UTF_8) ; - HttpOp.execHttpPost(serviceGSP+"?default", e); + HttpOp.execHttpPost(ServerCtl.serviceGSP()+"?default", e); }) ; } @@ -86,7 +86,7 @@ public void gsp_w_readonly_PUT() { // Try to write FusekiTest.execWithHttpException(HttpSC.METHOD_NOT_ALLOWED_405, ()->{ HttpEntity e = new StringEntity("", StandardCharsets.UTF_8) ; - HttpOp.execHttpPut(serviceGSP+"?default", e); + HttpOp.execHttpPut(ServerCtl.serviceGSP()+"?default", e); }) ; } @@ -94,7 +94,7 @@ public void gsp_w_readonly_PUT() { public void gsp_w_readonly_DELETE() { // Try to write FusekiTest.execWithHttpException(HttpSC.METHOD_NOT_ALLOWED_405, ()->{ - HttpOp.execHttpDelete(serviceGSP+"?default"); + HttpOp.execHttpDelete(ServerCtl.serviceGSP()+"?default"); }) ; } @@ -103,7 +103,7 @@ public void dataset_w_readonly_POST() { // Try to write FusekiTest.execWithHttpException(HttpSC.METHOD_NOT_ALLOWED_405, ()->{ HttpEntity e = new StringEntity("", StandardCharsets.UTF_8) ; - HttpOp.execHttpPost(ServerTest.urlDataset, e) ; + HttpOp.execHttpPost(ServerCtl.urlDataset(), e) ; }) ; } @@ -112,7 +112,7 @@ public void dataset_w_readonly_PUT() { // Try to write FusekiTest.execWithHttpException(HttpSC.METHOD_NOT_ALLOWED_405, ()->{ HttpEntity e = new StringEntity("", StandardCharsets.UTF_8) ; - HttpOp.execHttpPut(ServerTest.urlDataset, e) ; + HttpOp.execHttpPut(ServerCtl.urlDataset(), e) ; }) ; } @@ -120,13 +120,13 @@ public void dataset_w_readonly_PUT() { public void dataset_w_readonly_DELETE() { // Try to write FusekiTest.execWithHttpException(HttpSC.METHOD_NOT_ALLOWED_405, ()->{ - HttpOp.execHttpDelete(ServerTest.urlDataset) ; + HttpOp.execHttpDelete(ServerCtl.urlDataset()) ; }) ; } @Test public void options_gsp_readonly() { - String v = FusekiTest.execOptions(serviceGSP+"?default") ; + String v = FusekiTest.execOptions(ServerCtl.serviceGSP()+"?default") ; FusekiTest.assertStringList(v, "GET", "OPTIONS", "HEAD") ; } diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestDatasetAccessorHTTP.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestDatasetAccessorHTTP.java index 457ab963fd9..77d019ecc0e 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestDatasetAccessorHTTP.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestDatasetAccessorHTTP.java @@ -18,41 +18,42 @@ package org.apache.jena.fuseki.http; -import static org.apache.jena.fuseki.ServerTest.* ; -import org.apache.jena.atlas.junit.BaseTest ; +import static org.apache.jena.fuseki.ServerCtl.datasetPath ; +import static org.apache.jena.fuseki.ServerCtl.port ; +import static org.apache.jena.fuseki.ServerCtl.serviceGSP ; +import static org.apache.jena.fuseki.ServerCtl.urlDataset ; +import static org.apache.jena.fuseki.ServerTest.gn1 ; +import static org.apache.jena.fuseki.ServerTest.gn2 ; +import static org.apache.jena.fuseki.ServerTest.gn99 ; +import static org.apache.jena.fuseki.ServerTest.model1 ; +import static org.apache.jena.fuseki.ServerTest.model2 ; + import org.apache.jena.atlas.web.HttpException ; +import org.apache.jena.fuseki.AbstractFusekiTest ; import org.apache.jena.fuseki.FusekiTest ; -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 ; import org.apache.jena.rdf.model.ModelFactory ; import org.apache.jena.riot.web.HttpOp ; import org.apache.jena.web.HttpSC ; -import org.junit.AfterClass ; -import org.junit.Before ; -import org.junit.BeforeClass ; import org.junit.Test ; -public class TestDatasetAccessorHTTP extends BaseTest +public class TestDatasetAccessorHTTP extends AbstractFusekiTest { //Model level testing. - static final String datasetURI_not_1 = "http://localhost:"+port+"/junk" ; - static final String datasetURI_not_2 = serviceGSP+"/not" ; - static final String datasetURI_not_3 = "http://localhost:"+port+datasetPath+"/not/data" ; - - @BeforeClass public static void beforeClass() { ServerTest.allocServer() ; } - @AfterClass public static void afterClass() { ServerTest.freeServer() ; } - @Before public void before() { ServerTest.resetServer() ; } + static final String datasetURI_not_1 = "http://localhost:"+port()+"/junk" ; + static final String datasetURI_not_2 = serviceGSP()+"/not" ; + static final String datasetURI_not_3 = "http://localhost:"+port()+datasetPath()+"/not/data" ; @Test public void test_ds_1() { // Can GET the dataset service. try { - HttpOp.execHttpGet(serviceGSP) ; + HttpOp.execHttpGet(serviceGSP()) ; } catch (HttpException ex) { assertTrue(HttpSC.isClientError(ex.getResponseCode())) ; throw ex ; @@ -92,7 +93,7 @@ public void test_404_2() public void test_404_3() { // Right service, wrong graph - DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP) ; + DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceGSP()) ; Model graph = du.getModel(gn99) ; assertNull(graph) ; } @@ -308,12 +309,12 @@ public void test_404_3() static DatasetAccessor connectToService() { - return DatasetAccessorFactory.createHTTP(ServerTest.serviceGSP) ; + return DatasetAccessorFactory.createHTTP(serviceGSP()) ; } static DatasetAccessor connectToDataset() { - return DatasetAccessorFactory.createHTTP(ServerTest.urlDataset) ; + return DatasetAccessorFactory.createHTTP(urlDataset()) ; } } diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorHTTP.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorHTTP.java index 590083da0d5..281a844506d 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorHTTP.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorHTTP.java @@ -18,26 +18,24 @@ package org.apache.jena.fuseki.http; -import org.apache.jena.fuseki.ServerTest ; +import org.apache.jena.fuseki.ServerCtl ; import org.apache.jena.web.AbstractTestDatasetGraphAccessor ; import org.apache.jena.web.DatasetGraphAccessor ; import org.apache.jena.web.DatasetGraphAccessorHTTP ; +import org.junit.After ; import org.junit.AfterClass ; import org.junit.Before ; import org.junit.BeforeClass ; public class TestDatasetGraphAccessorHTTP extends AbstractTestDatasetGraphAccessor { - @BeforeClass public static void beforeClass() { ServerTest.allocServer() ; } - @AfterClass public static void afterClass() { ServerTest.freeServer() ; } - @Before public void before() { - ServerTest.resetServer() ; - } - + @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(); } @Override - protected DatasetGraphAccessor getDatasetUpdater() - { - return new DatasetGraphAccessorHTTP(ServerTest.serviceGSP) ; + protected DatasetGraphAccessor getDatasetUpdater() { + return new DatasetGraphAccessorHTTP(ServerCtl.serviceGSP()) ; } } diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java index 062f9ef2500..2bb7206544c 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java @@ -20,11 +20,14 @@ import static org.apache.jena.fuseki.FusekiTest.exec404; import static org.apache.jena.fuseki.FusekiTest.execWithHttpException; +import static org.apache.jena.fuseki.ServerCtl.serviceGSP ; +import static org.apache.jena.fuseki.ServerCtl.serviceQuery ; +import static org.apache.jena.fuseki.ServerCtl.serviceUpdate ; +import static org.apache.jena.fuseki.ServerCtl.urlRoot ; import org.apache.jena.atlas.lib.IRILib ; import org.apache.jena.atlas.web.TypedInputStream ; import org.apache.jena.fuseki.AbstractFusekiTest ; -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 ; @@ -35,12 +38,12 @@ // especially error cases abnd unusual usage that the higher level APIs don't use. public class TestHttpOp extends AbstractFusekiTest { - static String pingURL = ServerTest.urlRoot+"$/ping" ; - static String gspServiceURL = ServerTest.serviceGSP ; - static String defaultGraphURL = ServerTest.serviceGSP+"?default" ; - static String namedGraphURL = ServerTest.serviceGSP+"?graph=http://example/g" ; - static String queryURL = ServerTest.serviceQuery ; - static String updateURL = ServerTest.serviceUpdate ; + static String pingURL = urlRoot()+"$/ping" ; + static String gspServiceURL = serviceGSP() ; + static String defaultGraphURL = serviceGSP()+"?default" ; + static String namedGraphURL = serviceGSP()+"?graph=http://example/g" ; + static String queryURL = serviceQuery() ; + static String updateURL = serviceUpdate() ; static String simpleQuery = queryURL+"?query="+IRILib.encodeUriComponent("ASK{}") ; @@ -52,7 +55,7 @@ public class TestHttpOp extends AbstractFusekiTest { @Test public void httpGet_02() { - exec404(() -> HttpOp.execHttpGet(ServerTest.urlRoot + "does-not-exist")); + exec404(() -> HttpOp.execHttpGet(urlRoot() + "does-not-exist")); } @Test public void httpGet_03() { @@ -60,7 +63,7 @@ public void httpGet_02() { } @Test public void httpGet_04() { - String x = HttpOp.execHttpGetString(ServerTest.urlRoot+"does-not-exist") ; + String x = HttpOp.execHttpGetString(urlRoot()+"does-not-exist") ; assertNull(x) ; } diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnection.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnection.java index e7b91075625..ccde0796044 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnection.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnection.java @@ -55,7 +55,7 @@ protected JenaConnection getConnection() throws SQLException { @Override protected JenaConnection getConnection(Dataset ds) throws SQLException { // Set up the dataset - TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceREST()); + TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceGSP()); return new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT); } diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithAuth.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithAuth.java index 2d75c82fc0c..08d83605f88 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithAuth.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithAuth.java @@ -126,7 +126,7 @@ protected JenaConnection getConnection() throws SQLException { @Override protected JenaConnection getConnection(Dataset ds) throws SQLException { // Set up the dataset - TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceREST(), client); + TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceGSP(), client); return new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), null, null, null, null, client, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, null, null); diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithGraphUris.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithGraphUris.java index 95f82d34751..21d73d221b7 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithGraphUris.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithGraphUris.java @@ -79,7 +79,7 @@ protected JenaConnection getConnection(Dataset ds) throws SQLException { // Set up the dataset ds = TestUtils.renameGraph(ds, null, DEFAULT_GRAPH_URI); Assert.assertEquals(0, ds.getDefaultModel().size()); - TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceREST()); + TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceGSP()); return new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), defaultGraphs, namedGraphs, defaultGraphs, namedGraphs, null, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, null, null); } diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithResultSetTypes.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithResultSetTypes.java index b2396d739cd..eca16f1d605 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithResultSetTypes.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/connections/TestRemoteEndpointConnectionWithResultSetTypes.java @@ -56,7 +56,7 @@ protected JenaConnection getConnection() throws SQLException { @Override protected JenaConnection getConnection(Dataset ds) throws SQLException { // Set up the dataset - TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceREST()); + TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceGSP()); return new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), null, null, null, null, null, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, WebContent.contentTypeTextTSV, WebContent.contentTypeRdfJson); } } diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResults.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResults.java index 7de87c31c68..009fc715427 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResults.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResults.java @@ -74,7 +74,7 @@ protected ResultSet createResults(Dataset ds, String query) throws SQLException @Override protected ResultSet createResults(Dataset ds, String query, int resultSetType) throws SQLException { - TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceREST()); + TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceGSP()); Statement stmt = connection.createStatement(resultSetType, ResultSet.CONCUR_READ_ONLY); return stmt.executeQuery(query); } diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithAuth.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithAuth.java index 8f7b8a1bff4..78b7d2bcf24 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithAuth.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithAuth.java @@ -133,7 +133,7 @@ protected ResultSet createResults(Dataset ds, String query) throws SQLException @Override protected ResultSet createResults(Dataset ds, String query, int resultSetType) throws SQLException { - TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceREST(), client); + TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceGSP(), client); Statement stmt = connection.createStatement(resultSetType, ResultSet.CONCUR_READ_ONLY); return stmt.executeQuery(query); } diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithGraphUris.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithGraphUris.java index 9cfb46aa3c8..99882496a84 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithGraphUris.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithGraphUris.java @@ -84,7 +84,7 @@ protected ResultSet createResults(Dataset ds, String query) throws SQLException @Override protected ResultSet createResults(Dataset ds, String query, int resultSetType) throws SQLException { ds = TestUtils.renameGraph(ds, null, DEFAULT_GRAPH_URI); - TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceREST()); + TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceGSP()); Statement stmt = connection.createStatement(resultSetType, ResultSet.CONCUR_READ_ONLY); return stmt.executeQuery(query); } diff --git a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithResultSetTypes.java b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithResultSetTypes.java index 2076193ca3a..b7587cb8a25 100644 --- a/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithResultSetTypes.java +++ b/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithResultSetTypes.java @@ -75,7 +75,7 @@ protected ResultSet createResults(Dataset ds, String query) throws SQLException @Override protected ResultSet createResults(Dataset ds, String query, int resultSetType) throws SQLException { - TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceREST()); + TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceGSP()); Statement stmt = connection.createStatement(resultSetType, ResultSet.CONCUR_READ_ONLY); return stmt.executeQuery(query); } From 080ff1dbd115270d4bb59b5847b98f73edf76444 Mon Sep 17 00:00:00 2001 From: Andy Seaborne Date: Sun, 16 Oct 2016 19:41:46 +0100 Subject: [PATCH 5/5] Typo --- .../src/test/java/org/apache/jena/fuseki/ServerCtl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerCtl.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerCtl.java index cc6d97a94db..39913ed5191 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerCtl.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerCtl.java @@ -99,7 +99,7 @@ Test class (Test*) static HttpClient defaultHttpClient = HttpOp.getDefaultHttpClient(); - // Note: it is import to cleanly close a PoolingHttpClient across server restarts + // Note: it is important to cleanly close a PoolingHttpClient across server restarts // otherwise the pooled connections remain for the old server. /*package : for import static */ enum ServerScope { SUITE, CLASS, TEST }