Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,6 @@
, TestMetrics.class
, TestFusekiShaclValidation.class

// Temporary independent test due for tarcking failures.
, TestFusekiShaclValidation2.class

})
public class TS_FusekiMain {}

Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -32,88 +31,34 @@
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) {}
}

// ====
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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;

Expand All @@ -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();
}

// ====
Expand Down Expand Up @@ -269,14 +223,12 @@ private static void exec(String url, Consumer<RDFLink> action) {
}

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());
}
}

Expand Down
Loading