This is an automated email from the ASF dual-hosted git repository.

afs pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git


The following commit(s) were added to refs/heads/main by this push:
     new b126bb8f2d Change GSP tests to allow per-test server configuration
b126bb8f2d is described below

commit b126bb8f2d721175d5d5eae42d822b2cda40a080
Author: Andy Seaborne <[email protected]>
AuthorDate: Wed Oct 7 17:28:05 2026 +0100

    Change GSP tests to allow per-test server configuration
---
 .../jena/sparql/exec/http/TS_SparqlExecHttp.java   |   1 -
 .../org/apache/jena/sparql/exec/http/TestGSP.java  | 251 +++++++++++++--------
 .../org/apache/jena/sparql/exec/http/TestGSP2.java |  63 ------
 3 files changed, 157 insertions(+), 158 deletions(-)

diff --git 
a/jena-integration-tests/src/test/java/org/apache/jena/sparql/exec/http/TS_SparqlExecHttp.java
 
b/jena-integration-tests/src/test/java/org/apache/jena/sparql/exec/http/TS_SparqlExecHttp.java
index ff83e12919..fa19024e83 100644
--- 
a/jena-integration-tests/src/test/java/org/apache/jena/sparql/exec/http/TS_SparqlExecHttp.java
+++ 
b/jena-integration-tests/src/test/java/org/apache/jena/sparql/exec/http/TS_SparqlExecHttp.java
@@ -27,7 +27,6 @@ import org.junit.platform.suite.api.Suite;
 @Suite
 @SelectClasses({
     TestGSP.class
-    , TestGSP2.class
     , TestDSP.class
     , TestGSPDirect.class
     , TestModelStore.class
diff --git 
a/jena-integration-tests/src/test/java/org/apache/jena/sparql/exec/http/TestGSP.java
 
b/jena-integration-tests/src/test/java/org/apache/jena/sparql/exec/http/TestGSP.java
index 7b7db060d8..634e08c7ed 100644
--- 
a/jena-integration-tests/src/test/java/org/apache/jena/sparql/exec/http/TestGSP.java
+++ 
b/jena-integration-tests/src/test/java/org/apache/jena/sparql/exec/http/TestGSP.java
@@ -25,12 +25,11 @@ import static 
org.apache.jena.fuseki.test.HttpTest.expect400;
 import static org.apache.jena.fuseki.test.HttpTest.expect404;
 import static org.junit.jupiter.api.Assertions.*;
 
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import org.apache.jena.atlas.web.HttpException;
 import org.apache.jena.fuseki.main.FusekiServer;
+import org.apache.jena.fuseki.main.FusekiTestLib;
 import org.apache.jena.graph.Graph;
 import org.apache.jena.graph.Node;
 import org.apache.jena.graph.NodeFactory;
@@ -41,6 +40,8 @@ import org.apache.jena.riot.RDFParser;
 import org.apache.jena.riot.WebContent;
 import org.apache.jena.sparql.core.DatasetGraph;
 import org.apache.jena.sparql.core.DatasetGraphFactory;
+import org.apache.jena.sparql.exec.QueryExec;
+import org.apache.jena.sparql.exec.RowSet;
 import org.apache.jena.sparql.graph.GraphFactory;
 import org.apache.jena.sparql.sse.SSE;
 import org.apache.jena.sparql.util.IsoMatcher;
@@ -49,44 +50,50 @@ public class TestGSP {
 
     static String DIR = "testing/RDFLink/";
 
-    private FusekiServer server = null;
     private final boolean verbose = false;
 
     private final String dsName = "/data";
 
-    @BeforeEach
-    public void makeServer() {
+    public FusekiServer createServer() {
         DatasetGraph dsg = DatasetGraphFactory.createTxnMem();
-        server = FusekiServer.create()
+        FusekiServer server = FusekiServer.create()
+                .port(0)
                 .verbose(verbose)
                 .enablePing(true)
-                //.addServlet(data, holder)
                 .add(dsName, dsg)
                 .build()
                 .start();
+        return server;
     }
 
-    @AfterEach
-    public void releaseServer() {
-        if ( server != null )
-            server.stop();
-    }
-
-    private String url(String path) {
+    private String url(FusekiServer server, String path) {
         return server.datasetURL(path);
     }
 
     // GSP endpoint
-    private String gspServiceURL() {
-        return url(dsName);
+    private String gspServiceURL(String datasetURL) {
+        return datasetURL;
+    }
+
+    private String defaultGraphURL(String datasetURL) {
+        return gspServiceURL(datasetURL) + "?default";
     }
 
-    private String defaultGraphURL() {
-        return gspServiceURL() + "?default";
+    private String namedGraphURL(String datasetURL) {
+        return gspServiceURL(datasetURL) + "?graph=http://example/g";;
     }
 
-    private String namedGraphURL() {
-        return gspServiceURL() + "?graph=http://example/g";;
+    @FunctionalInterface
+    interface Action { void run(String datasetURL); }
+
+    private void withServerURL(Action action) {
+        FusekiServer server = createServer().start();
+        try {
+            String datasetURL = server.datasetURL(dsName);
+            action.run(datasetURL);
+        } finally {
+            server.stop();
+        }
     }
 
     private static Graph graph1 = SSE.parseGraph("(graph (:s :p :x) (:s :p 
1))");
@@ -109,125 +116,151 @@ public class TestGSP {
 
     @Test
     public void gsp_put_get_01() {
-        GSP.service(gspServiceURL()).defaultGraph().PUT(graph);
-        Graph g = GSP.service(gspServiceURL()).defaultGraph().GET();
-        assertNotNull(g);
-        assertTrue(IsoMatcher.isomorphic(graph, g));
+        withServerURL(datasetURL->{
+            GSP.service(datasetURL).defaultGraph().PUT(graph);
+            Graph g = 
GSP.service(gspServiceURL(datasetURL)).defaultGraph().GET();
+            assertNotNull(g);
+            assertTrue(IsoMatcher.isomorphic(graph, g));
+        });
     }
 
     @Test
     public void gsp_bad_put_01() {
-        // No .defaultGraph
-        assertThrows(HttpException.class, 
()->GSP.service(gspServiceURL()).PUT(graph));
+        withServerURL(datasetURL->{
+            assertThrows(HttpException.class, 
()->GSP.service(gspServiceURL(datasetURL)).PUT(graph));
+        });
     }
 
     @Test
     public void gsp_bad_get_err_02() {
-        // No .defaultGraph
-        assertThrows(HttpException.class, 
()->GSP.service(gspServiceURL()).GET());
+        withServerURL(datasetURL -> {
+            assertThrows(HttpException.class, () -> 
GSP.service(gspServiceURL(datasetURL)).GET());
+        });
     }
 
     @Test
     public void gsp_post_get_ct_01() {
-        String graphName = "http://example/graph";;
-        GSP.service(gspServiceURL()).graphName(graphName).POST(graph);
-        Graph g1 = 
GSP.service(gspServiceURL()).defaultGraph().acceptHeader("application/rdf+xml").GET();
-        assertNotNull(g1);
-        assertTrue(g1.isEmpty());
-
-        Graph g2 = 
GSP.service(gspServiceURL()).graphName(graphName).acceptHeader("application/rdf+xml").GET();
-        assertNotNull(g2);
-        assertFalse(g2.isEmpty());
-        assertTrue(IsoMatcher.isomorphic(graph, g2));
+        withServerURL(datasetURL -> {
+            String graphName = "http://example/graph";;
+            
GSP.service(gspServiceURL(datasetURL)).graphName(graphName).POST(graph);
+            Graph g1 = 
GSP.service(gspServiceURL(datasetURL)).defaultGraph().acceptHeader("application/rdf+xml").GET();
+            assertNotNull(g1);
+            assertTrue(g1.isEmpty());
+
+            Graph g2 = 
GSP.service(gspServiceURL(datasetURL)).graphName(graphName).acceptHeader("application/rdf+xml").GET();
+            assertNotNull(g2);
+            assertFalse(g2.isEmpty());
+            assertTrue(IsoMatcher.isomorphic(graph, g2));
+        });
     }
 
     @Test
     public void gsp_put_get_ct_02() {
-        
GSP.service(gspServiceURL()).defaultGraph().contentType(RDFFormat.NTRIPLES).PUT(graph);
-        Graph g1 = 
GSP.service(gspServiceURL()).defaultGraph().accept(Lang.RDFXML).GET();
-        assertNotNull(g1);
-        assertFalse(g1.isEmpty());
-        assertTrue(IsoMatcher.isomorphic(graph, g1));
+        withServerURL(datasetURL->{
+            
GSP.service(gspServiceURL(datasetURL)).defaultGraph().contentType(RDFFormat.NTRIPLES).PUT(graph);
+            Graph g1 = 
GSP.service(gspServiceURL(datasetURL)).defaultGraph().accept(Lang.RDFXML).GET();
+            assertNotNull(g1);
+            assertFalse(g1.isEmpty());
+            assertTrue(IsoMatcher.isomorphic(graph, g1));
+        });
     }
 
     @Test
     public void gsp_put_delete_01() {
-        GSP.service(gspServiceURL()).defaultGraph().PUT(graph);
-        Graph g1 = GSP.service(gspServiceURL()).defaultGraph().GET();
-        assertFalse(g1.isEmpty());
-
-        GSP.service(gspServiceURL()).defaultGraph().DELETE();
-        Graph g2 = GSP.service(gspServiceURL()).defaultGraph().GET();
-        assertTrue(g2.isEmpty());
-
-        // And just to make sure ...
-        String s2 = HttpOp.httpGetString(defaultGraphURL(), 
WebContent.contentTypeNTriples);
-        // Default always exists so this is the empty graph in N-triples.
-        assertTrue(s2.isEmpty());
+        withServerURL(datasetURL->{
+            GSP.service(gspServiceURL(datasetURL)).defaultGraph().PUT(graph);
+            Graph g1 = 
GSP.service(gspServiceURL(datasetURL)).defaultGraph().GET();
+            assertFalse(g1.isEmpty());
+
+            GSP.service(gspServiceURL(datasetURL)).defaultGraph().DELETE();
+            Graph g2 = 
GSP.service(gspServiceURL(datasetURL)).defaultGraph().GET();
+            assertTrue(g2.isEmpty());
+
+            // And just to make sure ...
+            String s2 = HttpOp.httpGetString(defaultGraphURL(datasetURL), 
WebContent.contentTypeNTriples);
+            // Default always exists so this is the empty graph in N-triples.
+            assertTrue(s2.isEmpty());
+        });
     }
 
     @Test
     public void gsp_dft_ct_1() {
-        
GSP.service(gspServiceURL()).defaultGraph().contentType(RDFFormat.RDFXML).PUT(DIR
 + "data-rdfxml");
+        withServerURL(datasetURL->{
+            
GSP.service(gspServiceURL(datasetURL)).defaultGraph().contentType(RDFFormat.RDFXML).PUT(DIR
 + "data-rdfxml");
+        });
     }
 
     @Test
     public void gsp_dft_ct_2() {
-        
GSP.service(gspServiceURL()).defaultGraph().contentTypeHeader(WebContent.contentTypeRDFXML).PUT(DIR
 + "data-rdfxml");
+        withServerURL(datasetURL->{
+            
GSP.service(gspServiceURL(datasetURL)).defaultGraph().contentTypeHeader(WebContent.contentTypeRDFXML).PUT(DIR
 + "data-rdfxml");
+        });
     }
 
     // ----------------------------------------
 
     @Test
     public void gspHead_dataset_1() {
-        // Base URL, default content type => N-Quads (dump format)
-        String h = HttpOp.httpHead(gspServiceURL(), null);
-        assertNotNull(h);
-        assertEquals(Lang.NQUADS.getHeaderString(), h);
+        withServerURL(datasetURL->{
+// Base URL, default content type => N-Quads (dump format)
+            String h = HttpOp.httpHead(gspServiceURL(datasetURL), null);
+            assertNotNull(h);
+            assertEquals(Lang.NQUADS.getHeaderString(), h);
+        });
     }
 
     @Test
     public void gspHead_dataset_2() {
-        String ct = Lang.TRIG.getHeaderString();
-        String h = HttpOp.httpHead(gspServiceURL(), ct);
-        assertNotNull(h);
-        assertEquals(ct, h);
+        withServerURL(datasetURL->{
+            String ct = Lang.TRIG.getHeaderString();
+            String h = HttpOp.httpHead(gspServiceURL(datasetURL), ct);
+            assertNotNull(h);
+            assertEquals(ct, h);
+        });
     }
 
     @Test
     public void gspHead_graph_1() {
-        String target = defaultGraphURL();
-        String h = HttpOp.httpHead(target, null);
-        assertNotNull(h);
-        // "Traditional default".
-        assertEquals(Lang.RDFXML.getHeaderString(), h);
+        withServerURL(datasetURL->{
+            String target = defaultGraphURL(datasetURL);
+            String h = HttpOp.httpHead(target, null);
+            assertNotNull(h);
+            // "Traditional default".
+            assertEquals(Lang.RDFXML.getHeaderString(), h);
+        });
     }
 
     @Test
     public void gspHead_graph_2() {
-        String target = defaultGraphURL();
-        String ct = Lang.TTL.getHeaderString();
-        String h = HttpOp.httpHead(target, ct);
-        assertNotNull(h);
-        assertEquals(ct, h);
+        withServerURL(datasetURL->{
+            String target = defaultGraphURL(datasetURL);
+            String ct = Lang.TTL.getHeaderString();
+            String h = HttpOp.httpHead(target, ct);
+            assertNotNull(h);
+            assertEquals(ct, h);
+        });
     }
 
     @Test
     public void gsp_union_get() {
-        Node gn1 = NodeFactory.createURI("http://example/graph1";);
-        Node gn2 = NodeFactory.createURI("http://example/graph2";);
-        GSP.service(gspServiceURL()).graphName(gn1).PUT(graph1);
-        GSP.service(gspServiceURL()).graphName(gn2).PUT(graph2);
-        // get union
-
-        Graph g = GSP.service(gspServiceURL()).graphName("union").GET();
-        assertEquals(3, g.size());
+        withServerURL(datasetURL->{
+            Node gn1 = NodeFactory.createURI("http://example/graph1";);
+            Node gn2 = NodeFactory.createURI("http://example/graph2";);
+            GSP.service(gspServiceURL(datasetURL)).graphName(gn1).PUT(graph1);
+            GSP.service(gspServiceURL(datasetURL)).graphName(gn2).PUT(graph2);
+            // get union
+
+            Graph g = 
GSP.service(gspServiceURL(datasetURL)).graphName("union").GET();
+            assertEquals(3, g.size());
+        });
     }
 
     @Test
     public void gsp_union_post() {
-        expect400(() -> {
-            GSP.service(gspServiceURL()).graphName("union").POST(graph1);
+        withServerURL(datasetURL->{
+            expect400(() -> {
+                
GSP.service(gspServiceURL(datasetURL)).graphName("union").POST(graph1);
+            });
         });
     }
 
@@ -235,18 +268,48 @@ public class TestGSP {
 
     @Test
     public void gsp_404_put_delete_get() {
-        String graphName = "http://example/graph2";;
-        Node gn = NodeFactory.createURI("http://example/graph2";);
-        GSP.service(gspServiceURL()).graphName(gn).PUT(graph);
-        Graph g = GSP.service(gspServiceURL()).graphName(graphName).GET();
-        assertFalse(g.isEmpty());
-        GSP.service(gspServiceURL()).graphName(gn).DELETE();
-        expect404(() -> 
GSP.service(gspServiceURL()).graphName(graphName).GET());
+        withServerURL(datasetURL->{
+            String graphName = "http://example/graph2";;
+            Node gn = NodeFactory.createURI("http://example/graph2";);
+            GSP.service(gspServiceURL(datasetURL)).graphName(gn).PUT(graph);
+            Graph g = 
GSP.service(gspServiceURL(datasetURL)).graphName(graphName).GET();
+            assertFalse(g.isEmpty());
+            GSP.service(gspServiceURL(datasetURL)).graphName(gn).DELETE();
+            expect404(() -> 
GSP.service(gspServiceURL(datasetURL)).graphName(graphName).GET());
+        });
     }
 
     @Test
     public void gsp_404_graph() {
-        String graphName = "http://example/graph404";;
-        expect404(() -> 
GSP.service(gspServiceURL()).graphName(graphName).GET());
+        withServerURL(datasetURL->{
+            String graphName = "http://example/graph404";;
+            expect404(() -> 
GSP.service(gspServiceURL(datasetURL)).graphName(graphName).GET());
+        });
+    }
+
+    @Test public void gsp_config_general_dataset() {
+        // Issue GH-4292
+        // DatasetGraphMapLink
+        DatasetGraph dsg = DatasetGraphFactory.createGeneral();
+        FusekiServer server = FusekiServer.create().port(0).add(dsName, 
dsg).build();
+        server.start();
+
+        String URL = server.datasetURL(dsName);
+        Node gn = NodeFactory.createURI("urn:ns:missing");
+        try {
+            // Expect 404
+            FusekiTestLib.expect404(()->
+                GSP.service(URL+"/data").graphName(gn).DELETE()
+                );
+            // GET 400
+            //GSP.service(URL+"/data").graphName(gn).GET();
+
+            QueryExec qExec = QueryExecHTTP.service(URL).query("SELECT * { 
GRAPH ?g { } }").build();
+            RowSet rowSet = qExec.select();
+            // No named graphs expected
+            assertFalse(rowSet.hasNext(), "No named graphs expected");
+        } finally {
+            server.stop();
+        }
     }
 }
diff --git 
a/jena-integration-tests/src/test/java/org/apache/jena/sparql/exec/http/TestGSP2.java
 
b/jena-integration-tests/src/test/java/org/apache/jena/sparql/exec/http/TestGSP2.java
deleted file mode 100644
index 8bb525f034..0000000000
--- 
a/jena-integration-tests/src/test/java/org/apache/jena/sparql/exec/http/TestGSP2.java
+++ /dev/null
@@ -1,63 +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
- *
- *   https://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.
- *
- *   SPDX-License-Identifier: Apache-2.0
- */
-
-package org.apache.jena.sparql.exec.http;
-
-import static org.junit.jupiter.api.Assertions.assertFalse;
-
-import org.junit.jupiter.api.Test;
-
-import org.apache.jena.fuseki.main.FusekiServer;
-import org.apache.jena.fuseki.main.FusekiTestLib;
-import org.apache.jena.graph.Node;
-import org.apache.jena.graph.NodeFactory;
-import org.apache.jena.sparql.core.DatasetGraph;
-import org.apache.jena.sparql.core.DatasetGraphFactory;
-import org.apache.jena.sparql.exec.QueryExec;
-import org.apache.jena.sparql.exec.RowSet;
-
-/** GSP tests with specific server setup */
-public class TestGSP2 {
-    @Test public void gsp_config_general_dataset() {
-        // Issue GH-4292
-        // DatasetGraphMapLink
-        DatasetGraph dsg = DatasetGraphFactory.createGeneral();
-        FusekiServer server = FusekiServer.create().port(0).add("/ds", 
dsg).build();
-        server.start();
-        String URL = server.datasetURL("/ds");
-        Node gn = NodeFactory.createURI("urn:ns:missing");
-        try {
-            // Expect 404
-            FusekiTestLib.expect404(()->
-                GSP.service(URL+"/data").graphName(gn).DELETE()
-                );
-            // GET 400
-            //GSP.service(URL+"/data").graphName(gn).GET();
-
-            QueryExec qExec = QueryExecHTTP.service(URL).query("SELECT * { 
GRAPH ?g { } }").build();
-            RowSet rowSet = qExec.select();
-            // No named graphs expected
-            assertFalse(rowSet.hasNext(), "No named graphs expected");
-        } finally {
-            server.stop();
-        }
-    }
-}

Reply via email to