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"));
}
// ====