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 504fce57b9 GH-2340: Remove the server-per-testsuite switch from Fuseki 
tests and replace with default 'on'
504fce57b9 is described below

commit 504fce57b93816a866ad9fae1faffc3569ca69ad
Author: Thomas Thelen <[email protected]>
AuthorDate: Thu Aug 6 20:21:28 2026 -0700

    GH-2340: Remove the server-per-testsuite switch from Fuseki tests and 
replace with default 'on'
---
 .../apache/jena/fuseki/main/ConfigureTests.java    |   2 -
 .../org/apache/jena/fuseki/main/TS_FusekiMain.java |   3 -
 .../fuseki/main/TestFusekiShaclValidation.java     |  75 ++---------
 .../fuseki/main/TestFusekiShaclValidation2.java    | 138 ---------------------
 .../fuseki/main/TestFusekiStdReadOnlySetup.java    |  82 +++---------
 .../jena/fuseki/main/TestFusekiStdSetup.java       |  70 ++---------
 .../rdfconnection/TestRDFConnectionRemote.java     | 101 +++------------
 7 files changed, 53 insertions(+), 418 deletions(-)

diff --git 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/ConfigureTests.java
 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/ConfigureTests.java
index 0b4ec7aff0..ff9a6eeca5 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/ConfigureTests.java
+++ 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/ConfigureTests.java
@@ -22,7 +22,5 @@
 package org.apache.jena.fuseki.main;
 
 public class ConfigureTests {
-    public static final boolean OneServerPerTestSuite = false;
-    public static final boolean CloseTestServers = false;
     public static final boolean VerboseServer = false;
 }
diff --git 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TS_FusekiMain.java
 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TS_FusekiMain.java
index 5efd592975..7ef94bcab7 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TS_FusekiMain.java
+++ 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TS_FusekiMain.java
@@ -65,9 +65,6 @@ import org.apache.jena.fuseki.main.sys.TestFusekiModules;
   , TestMetrics.class
   , TestFusekiShaclValidation.class
 
-  // Temporary independent test due for tarcking failures.
-  , TestFusekiShaclValidation2.class
-
 })
 public class TS_FusekiMain {}
 
diff --git 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiShaclValidation.java
 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiShaclValidation.java
index b0f76026cd..33472e66ef 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiShaclValidation.java
+++ 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiShaclValidation.java
@@ -21,7 +21,6 @@
 
 package org.apache.jena.fuseki.main;
 
-import static org.apache.jena.fuseki.main.ConfigureTests.OneServerPerTestSuite;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
@@ -32,88 +31,34 @@ import org.apache.jena.http.HttpRDF;
 import org.apache.jena.rdfconnection.RDFConnection;
 import org.apache.jena.riot.RDFDataMgr;
 import org.apache.jena.shacl.ValidationReport;
-import org.apache.jena.sparql.core.DatasetGraph;
-import org.apache.jena.sparql.core.DatasetGraphFactory;
 
 @TestMethodOrder(MethodOrderer.MethodName.class)
 public class TestFusekiShaclValidation {
-    // Fuseki Main server
-    private static FusekiServer server = null;
     private static final String DIR = "testing/ShaclValidation/";
 
-    // ==== Common code: TestFusekiStdSetup, TestFusekiStdReadOnlySetup, 
TestFusekiShaclValidation
-
-    private static Object lock = new Object();
-
-    private static void sync(Runnable action) {
-        synchronized(lock) {
-            action.run();
-        }
-    }
-
-    @BeforeAll
-    public static void beforeClass() {
-        if ( OneServerPerTestSuite ) {
-            server = createServer().start();
-        }
-    }
-
-    @AfterAll
-    public static void afterClass() {
-        if ( OneServerPerTestSuite )
-            stopServer(server);
-    }
-
     @FunctionalInterface
     interface Action { void run(String datasetURL); }
 
     private void withServer(Action action) {
-        FusekiServer server = server();
+        FusekiServer server = createServer().start();
         try {
-            String datasetURL = server.datasetURL("/ds");
-            sync(()-> {
-                action.run(datasetURL);
-            });
+            action.run(server.datasetURL("/ds"));
         } finally {
-            finishWithServer(server);
+            server.stop();
         }
     }
 
     private static FusekiServer createServer() {
-        DatasetGraph dsg = DatasetGraphFactory.createTxnMem();
-        synchronized(lock) {
-            server = FusekiServer.create()
-                    .verbose(ConfigureTests.VerboseServer)
-                    // With SHACL service.
-                    .parseConfigFile(DIR+"config-validation.ttl")
-                    .port(0)
-                    .build();
-        }
-        return server;
-    }
-
-    private FusekiServer server() {
-        if ( OneServerPerTestSuite )
-            return server;
-        else
-            return createServer().start();
-    }
-
-    private void finishWithServer(FusekiServer server) {
-        if ( ConfigureTests.OneServerPerTestSuite )
-            return;
-        stopServer(server);
-    }
-
-    private static void stopServer(FusekiServer server) {
-        if ( ! ConfigureTests.CloseTestServers )
-            return;
-        sync(()->server.stop());
+        return FusekiServer.create()
+                .verbose(ConfigureTests.VerboseServer)
+                // With SHACL service.
+                .parseConfigFile(DIR+"config-validation.ttl")
+                .port(0)
+                .build();
     }
 
     private static void clearAll(RDFConnection conn) {
-        if ( !ConfigureTests.OneServerPerTestSuite )
-            try { conn.update("CLEAR ALL"); } catch (Throwable th) {}
+        try { conn.update("CLEAR ALL"); } catch (Throwable th) {}
     }
 
     // ====
diff --git 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiShaclValidation2.java
 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiShaclValidation2.java
deleted file mode 100644
index cbf0db4db8..0000000000
--- 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiShaclValidation2.java
+++ /dev/null
@@ -1,138 +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.fuseki.main;
-
-import static org.apache.jena.fuseki.main.ConfigureTests.OneServerPerTestSuite;
-
-import org.junit.jupiter.api.*;
-
-import org.apache.jena.graph.Graph;
-import org.apache.jena.http.HttpRDF;
-import org.apache.jena.rdfconnection.RDFConnection;
-import org.apache.jena.riot.RDFDataMgr;
-import org.apache.jena.shacl.ValidationReport;
-import org.apache.jena.sparql.core.DatasetGraph;
-import org.apache.jena.sparql.core.DatasetGraphFactory;
-
-public class TestFusekiShaclValidation2 {
-    // Fuseki Main server
-    private static FusekiServer server = null;
-    private static final String DIR = "testing/ShaclValidation/";
-
-    // ==== Common code: TestFusekiStdSetup, TestFusekiStdReadOnlySetup, 
TestFusekiShaclValidation
-
-    private static Object lock = new Object();
-
-    private static void sync(Runnable action) {
-        synchronized(lock) {
-            action.run();
-        }
-    }
-
-    @BeforeAll
-    public static void beforeClass() {
-        if ( OneServerPerTestSuite ) {
-            server = createServer().start();
-        }
-    }
-
-    @AfterAll
-    public static void afterClass() {
-        if ( OneServerPerTestSuite )
-            stopServer(server);
-    }
-
-    @FunctionalInterface
-    interface Action { void run(String datasetURL); }
-
-    private void withServer(Action action) {
-        FusekiServer server = server();
-        try {
-            String datasetURL = server.datasetURL("/ds");
-            sync(()-> {
-                action.run(datasetURL);
-            });
-        } finally {
-            finishWithServer(server);
-        }
-    }
-
-    private static FusekiServer createServer() {
-        DatasetGraph dsg = DatasetGraphFactory.createTxnMem();
-        synchronized(lock) {
-            server = FusekiServer.create()
-                    .verbose(ConfigureTests.VerboseServer)
-                    // With SHACL service.
-                    .parseConfigFile(DIR+"config-validation.ttl")
-                    .port(0)
-                    .build();
-        }
-        return server;
-    }
-
-    private FusekiServer server() {
-        if ( OneServerPerTestSuite )
-            return server;
-        else
-            return createServer().start();
-    }
-
-    private void finishWithServer(FusekiServer server) {
-        if ( ConfigureTests.OneServerPerTestSuite )
-            return;
-        stopServer(server);
-    }
-    private static void stopServer(FusekiServer server) {
-        if ( ! ConfigureTests.CloseTestServers )
-            return;
-        sync(()->server.stop());
-    }
-
-    private static void clearAll(RDFConnection conn) {
-        if ( !ConfigureTests.OneServerPerTestSuite )
-            try { conn.update("CLEAR ALL"); } catch (Throwable th) {}
-    }
-
-    // ==== Isolate commonly failing test.
-
-    @Test
-    public void shacl_no_data_graph() {
-        withServer((datasetURL)->{
-            try ( RDFConnection conn = RDFConnection.connect(datasetURL)) {
-                conn.put(DIR+"data1.ttl");
-                try {
-                    FusekiTestLib.expect404(()->{
-                        ValidationReport report = 
validateReport(datasetURL+"/shacl?graph=urn:abc:noGraph", DIR+"shapes1.ttl");
-                    });
-                } finally {
-                    clearAll(conn);
-                }
-            }
-        });
-    }
-
-    private static ValidationReport validateReport(String url, String 
shapesFile) {
-        Graph shapesGraph = RDFDataMgr.loadGraph(shapesFile);
-        Graph responseGraph = HttpRDF.httpPostGraphRtn(url, shapesGraph);
-        return ValidationReport.fromGraph(responseGraph);
-    }
-}
diff --git 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiStdReadOnlySetup.java
 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiStdReadOnlySetup.java
index 3b592938cc..32ee592252 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiStdReadOnlySetup.java
+++ 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiStdReadOnlySetup.java
@@ -21,11 +21,8 @@
 
 package org.apache.jena.fuseki.main;
 
-import static org.apache.jena.fuseki.main.ConfigureTests.OneServerPerTestSuite;
-
 import java.util.function.Consumer;
 
-import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 
@@ -46,8 +43,6 @@ public class TestFusekiStdReadOnlySetup {
 
     // This test suite is TestFusekiStdSetup, modified for read-only.
 
-    private static FusekiServer server = null;
-
     private static Graph data;
     private static DatasetGraph dataset;
 
@@ -60,71 +55,30 @@ public class TestFusekiStdReadOnlySetup {
         dataset.add(SSE.parseQuad("(:g :s :p 2 )"));
     }
 
-    private static Object lock = new Object();
-
-    private static void sync(Runnable action) {
-        synchronized(lock) {
-            action.run();
-        }
-    }
-
-    @BeforeAll
-    public static void beforeClass() {
-        if ( OneServerPerTestSuite ) {
-            server = createServer().start();
-        }
-    }
-
-    @AfterAll
-    public static void afterClass() {
-        if ( OneServerPerTestSuite )
-            stopServer(server);
-    }
+    // Each test runs against its own server, started and stopped by 
withServer.
 
     @FunctionalInterface
     interface Action { void run(String datasetURL); }
 
     private void withServer(Action action) {
-        FusekiServer server = server();
+        FusekiServer server = createServer().start();
         try {
             String datasetURL = server.datasetURL("/ds");
-            sync(()-> {
-                action.run(datasetURL);
-            });
+            action.run(datasetURL);
         } finally {
-            finishWithServer(server);
+            server.stop();
         }
     }
 
+    private static final boolean verbose = ConfigureTests.VerboseServer;
+
     private static FusekiServer createServer() {
         DatasetGraph dsg = DatasetGraphFactory.createTxnMem();
-        synchronized(lock) {
-            server = FusekiServer.create()
-                    .verbose(ConfigureTests.VerboseServer)
-                    .add("/ds", dsg, false)
-                    .port(0)
-                    .build();
-        }
-        return server;
-    }
-
-    private FusekiServer server() {
-        if ( OneServerPerTestSuite )
-            return server;
-        else
-            return createServer().start();
-    }
-
-    private void finishWithServer(FusekiServer server) {
-        if ( ConfigureTests.OneServerPerTestSuite )
-            return;
-        stopServer(server);
-    }
-
-    private static void stopServer(FusekiServer server) {
-        if ( ! ConfigureTests.CloseTestServers )
-            return;
-        sync(()->server.stop());
+        return FusekiServer.create()
+                .verbose(verbose)
+                .add("/ds", dsg, false)
+                .port(0)
+                .build();
     }
 
     // ====
@@ -269,14 +223,12 @@ public class TestFusekiStdReadOnlySetup {
     }
 
     private static void exec(String url, String ep, Consumer<RDFLink> action) {
-        synchronized(lock) {
-            try {
-                execEx(url, ep, action);
-            } catch (HttpException ex) {
-                handleException(ex, ex.getStatusCode(), ex.getMessage());
-            } catch (QueryExceptionHTTP ex) {
-                handleException(ex, ex.getStatusCode(), ex.getMessage());
-            }
+        try {
+            execEx(url, ep, action);
+        } catch (HttpException ex) {
+            handleException(ex, ex.getStatusCode(), ex.getMessage());
+        } catch (QueryExceptionHTTP ex) {
+            handleException(ex, ex.getStatusCode(), ex.getMessage());
         }
     }
 
diff --git 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiStdSetup.java
 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiStdSetup.java
index 90eee41113..437cb809ce 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiStdSetup.java
+++ 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiStdSetup.java
@@ -21,11 +21,8 @@
 
 package org.apache.jena.fuseki.main;
 
-import static org.apache.jena.fuseki.main.ConfigureTests.OneServerPerTestSuite;
-
 import java.util.function.Consumer;
 
-import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 
@@ -44,8 +41,6 @@ import org.apache.jena.sparql.sse.SSE;
 /** Tests for .add("/ds", dsg) */
 public class TestFusekiStdSetup {
 
-    private static FusekiServer server = null;
-
     private static Graph data;
     private static DatasetGraph dataset;
 
@@ -59,73 +54,30 @@ public class TestFusekiStdSetup {
         dataset.add(SSE.parseQuad("(:g :s :p 2 )"));
     }
 
-    // ==== Common code: TestFusekiStdSetup, TestFusekiStdReadOnlySetup, 
TestFusekiShaclValidation, TestRDFConnectionRemote
-
-    private static Object lock = new Object();
-
-    private static void sync(Runnable action) {
-        synchronized(lock) {
-            action.run();
-        }
-    }
-
-    @BeforeAll
-    public static void beforeClass() {
-        if (OneServerPerTestSuite ) {
-            server = createServer().start();
-        }
-    }
-
-    @AfterAll
-    public static void afterClass() {
-        if ( OneServerPerTestSuite )
-            stopServer(server);
-    }
+    // Each test runs against its own server, started and stopped by 
withServer.
 
     @FunctionalInterface
     interface Action { void run(String datasetURL); }
 
     private void withServer(Action action) {
-        FusekiServer server = server();
+        FusekiServer server = createServer().start();
         try {
             String datasetURL = server.datasetURL("/ds");
-            sync(()-> {
-                action.run(datasetURL);
-            });
+            action.run(datasetURL);
         } finally {
-            finishWithServer(server);
+            server.stop();
         }
     }
 
+    private static final boolean verbose = ConfigureTests.VerboseServer;
+
     private static FusekiServer createServer() {
         DatasetGraph dsg = DatasetGraphFactory.createTxnMem();
-        synchronized(lock) {
-            server = FusekiServer.create()
-                    .verbose(ConfigureTests.VerboseServer)
-                    .add("/ds", dsg, true)
-                    .port(0)
-                    .build();
-        }
-        return server;
-    }
-
-    private FusekiServer server() {
-        if ( OneServerPerTestSuite )
-            return server;
-        else
-            return createServer().start();
-    }
-
-    private void finishWithServer(FusekiServer server) {
-        if ( ConfigureTests.OneServerPerTestSuite )
-            return;
-        stopServer(server);
-    }
-
-    private static void stopServer(FusekiServer server) {
-        if ( ! ConfigureTests.CloseTestServers )
-            return;
-        sync(()->server.stop());
+        return FusekiServer.create()
+                .verbose(verbose)
+                .add("/ds", dsg, true)
+                .port(0)
+                .build();
     }
 
     // ====
diff --git 
a/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionRemote.java
 
b/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionRemote.java
index 2c5bb85452..fc70c35144 100644
--- 
a/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionRemote.java
+++ 
b/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionRemote.java
@@ -21,7 +21,6 @@
 
 package org.apache.jena.test.rdfconnection;
 
-import static org.apache.jena.fuseki.main.ConfigureTests.OneServerPerTestSuite;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
@@ -42,107 +41,37 @@ import org.apache.jena.rdfconnection.RDFConnection;
 import org.apache.jena.rdfconnection.RDFConnectionRemote;
 import org.apache.jena.sparql.core.DatasetGraph;
 import org.apache.jena.sparql.core.DatasetGraphFactory;
-import org.apache.jena.system.Txn;
 import org.apache.jena.update.UpdateException;
 import org.apache.jena.vocabulary.RDF;
 import org.apache.jena.web.HttpSC.Code;
 
 public class TestRDFConnectionRemote extends AbstractTestRDFConnection {
-    protected static FusekiServer server;
-    private static DatasetGraph serverdsg = DatasetGraphFactory.createTxnMem();
-    private static boolean localOneServerPerTestSuite = OneServerPerTestSuite;
-
-    // ==== Common code: TestFusekiStdSetup, TestFusekiStdReadOnlySetup, 
TestFusekiShaclValidation
-
-    private static Object lock = new Object();
-
-    private static void sync(Runnable action) {
-        synchronized(lock) {
-            action.run();
-        }
-    }
-
-    @BeforeAll
-    public static void beforeClass() {
-        if ( localOneServerPerTestSuite ) {
-            server = createServer().start();
-        }
-    }
-
-    @AfterAll
-    public static void afterClass() {
-        if ( localOneServerPerTestSuite )
-            stopServer(server);
-    }
-
-    // ====
+    protected FusekiServer server;
+    private final boolean verbose = ConfigureTests.VerboseServer;
 
     @BeforeEach
     public void beforeTest() {
-        if ( !ConfigureTests.OneServerPerTestSuite )
-            server = createServer();
-        // Clear server
-        Txn.executeWrite(serverdsg, ()->serverdsg.clear());
-    }
-
-    // ====
-
-    @AfterEach
-      public void afterTest() {
-          if ( !ConfigureTests.OneServerPerTestSuite ) {
-              finishWithServer(server);
-              server = null;
-          }
-      }
-
-    @FunctionalInterface
-    interface Action { void run(String datasetURL); }
-
-    protected void withServer(Action action) {
-        FusekiServer server = server();
-        try {
-            String datasetURL = server.datasetURL("/ds");
-            sync(()-> {
-                action.run(datasetURL);
-            });
-        } finally {
-            finishWithServer(server);
-        }
-    }
-
-    private static FusekiServer createServer() {
-        serverdsg = DatasetGraphFactory.createTxnMem();
+        DatasetGraph serverdsg = DatasetGraphFactory.createTxnMem();
         server = FusekiServer.create().loopback(true)
-                .verbose(true)
+                .verbose(verbose)
                 .port(0)
                 .add("/ds", serverdsg)
-                .build();
-        server.start();
-        return server;
-    }
-
-    private FusekiServer server() {
-        if ( localOneServerPerTestSuite )
-            return server;
-        else
-            return createServer().start();
+                .start();
     }
 
-    private void finishWithServer(FusekiServer server) {
-        if ( ConfigureTests.OneServerPerTestSuite )
-            return;
-        stopServer(server);
+    @AfterEach
+    public void afterTest() {
+        if ( server != null ) {
+            server.stop();
+            server = null;
+        }
     }
 
-    private static void stopServer(FusekiServer server) {
-        if ( ! ConfigureTests.CloseTestServers )
-            return;
-        sync(()->server.stop());
-    }
+    @FunctionalInterface
+    interface Action { void run(String datasetURL); }
 
-    private static void clearAll(RDFConnection conn) {
-        if ( !ConfigureTests.OneServerPerTestSuite )
-            try { conn.update("CLEAR ALL"); } catch (Throwable th) {}
+    protected void withServer(Action action) {
+        action.run(server.datasetURL("/ds"));
     }
 
     // ====

Reply via email to