This is an automated email from the ASF dual-hosted git repository.
andy 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 a2e5f53aa7 Don't fail test on bind failure of the default port
a2e5f53aa7 is described below
commit a2e5f53aa752f6c52d15b37b6a942a24a25f5058
Author: Andy Seaborne <[email protected]>
AuthorDate: Mon Feb 5 19:02:09 2024 +0000
Don't fail test on bind failure of the default port
---
.../org/apache/jena/fuseki/main/FusekiServer.java | 11 +++++++++-
.../apache/jena/fuseki/main/cmds/FusekiMain.java | 6 ++++--
.../jena/fuseki/main/TestFusekiServerBuild.java | 25 ++++++++++++++++++++--
3 files changed, 37 insertions(+), 5 deletions(-)
diff --git
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java
index bf5688849f..aebf5dc662 100644
---
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java
+++
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java
@@ -147,6 +147,16 @@ public class FusekiServer {
return new Builder(serviceDispatchRegistry);
}
+ /**
+ * Default port when running in Java via {@code FusekiServer....build()}.
+ * The server will be http://localhost:3330.
+ *
+ * This is not the command line port (3030) which the command line
programme sets.
+ *
+ * See {@link FusekiMain#defaultPort} and {@link
FusekiMain#defaultHttpsPort}.
+ */
+ public static final int DefaultServerPort = 3330;
+
private final Server server;
private int httpPort;
private int httpsPort;
@@ -375,7 +385,6 @@ public class FusekiServer {
/** FusekiServer.Builder */
public static class Builder {
- private static final int DefaultServerPort = 3330;
private static final int PortUnset = -2;
private static final int PortInactive = -3;
diff --git
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java
index 2f2b2b59ea..b5a94499f9 100644
---
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java
+++
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java
@@ -64,8 +64,10 @@ import org.apache.jena.tdb1.transaction.TransactionManager;
import org.slf4j.Logger;
public class FusekiMain extends CmdARQ {
- private static int defaultPort = 3030;
- private static int defaultHttpsPort = 3043;
+ /** Default HTTP port when running from the command line. */
+ public static int defaultPort = 3030;
+ /** Default HTTPS port when running from the command line. */
+ public static int defaultHttpsPort = 3043;
private static ArgDecl argMem = new ArgDecl(ArgDecl.NoValue,
"mem");
private static ArgDecl argUpdate = new ArgDecl(ArgDecl.NoValue,
"update", "allowUpdate");
diff --git
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiServerBuild.java
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiServerBuild.java
index 2e97e8d63f..cefa3ae31d 100644
---
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiServerBuild.java
+++
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFusekiServerBuild.java
@@ -28,9 +28,11 @@ import java.io.IOException;
import java.util.function.Consumer;
import org.apache.jena.atlas.iterator.Iter;
+import org.apache.jena.atlas.logging.Log;
import org.apache.jena.atlas.logging.LogCtl;
import org.apache.jena.atlas.web.TypedInputStream;
import org.apache.jena.fuseki.Fuseki;
+import org.apache.jena.fuseki.FusekiException;
import org.apache.jena.fuseki.server.DataAccessPointRegistry;
import org.apache.jena.fuseki.server.DataService;
import org.apache.jena.fuseki.server.Operation;
@@ -99,14 +101,33 @@ public class TestFusekiServerBuild {
// Build with defaults.
@Test public void fuseki_build_dft_port_01() {
+ // In case another unrelated Fuseki server is running on port 3330 in
another JVM,
+ // this test logs the bind failure but does not fail the test.
+ // Because this tests for "defaults", it's quite easy to have another
server running.
+
DatasetGraph dsg = dataset();
- int port = 3330; // Default port.
+ // Default embedded server port (command line default is 3030).
+ int port = FusekiServer.DefaultServerPort;
+ // Server, using the defaults.
FusekiServer server = FusekiServer.create()
.add("/ds", dsg)
.build();
try {
assertTrue(server.getDataAccessPointRegistry().isRegistered("/ds"));
- server.start();
+ try {
+ server.start();
+ } catch (FusekiException ex) {
+ //org.apache.jena.fuseki.FusekiException: java.io.IOException:
Failed to bind to 0.0.0.0/0.0.0.0:3330
+ if ( ex.getCause() instanceof IOException ex2 ) {
+ if ( ex2.getMessage().matches("Failed to bind to
.*:"+port) ) {
+ // Some other Fuseki running on this machine.
+ Log.warn(this, "Failed to bind port "+port+" - another
Fuseki running on this machine?");
+ return;
+ }
+ }
+ // Not a port binding problem - it's a real test failure.
+ throw ex;
+ }
query("http://localhost:"+port+"/ds/query", "SELECT * { ?s ?p
?o}", qExec-> {
RowSet rs = qExec.select();
assertFalse(rs.hasNext());