From cf305689e2de3d492f4464b4824d7b8bdd01f94f Mon Sep 17 00:00:00 2001 From: dyma solovei Date: Wed, 16 Jul 2025 16:50:24 +0200 Subject: [PATCH] fix: use system-assigned port for mockserver tests --- .../weaviate/integration/AuthorizationITest.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/it/java/io/weaviate/integration/AuthorizationITest.java b/src/it/java/io/weaviate/integration/AuthorizationITest.java index 30422c67a..7c847e6bd 100644 --- a/src/it/java/io/weaviate/integration/AuthorizationITest.java +++ b/src/it/java/io/weaviate/integration/AuthorizationITest.java @@ -19,14 +19,22 @@ public class AuthorizationITest extends ConcurrentTest { private ClientAndServer mockServer; @Before - public void startMockServer() { - mockServer = ClientAndServer.startClientAndServer(8080); + public void startMockServer() throws IOException { + // MockServer does not verify exclusive ownership of the port + // and using any well-known port like 8080 will produce flaky + // test results with fairly confusing errors, like: + // + // path /mockserver/verifySequence was not found + // + // if another webserver is listening to that port. + // We use 0 to let the underlying system find an available port. + mockServer = ClientAndServer.startClientAndServer(0); } @Test public void testAuthorization_apiKey() throws IOException { var transportOptions = new RestTransportOptions( - "http", "localhost", 8080, + "http", "localhost", mockServer.getLocalPort(), Collections.emptyMap(), Authorization.apiKey("my-api-key")); try (final var restClient = new DefaultRestTransport(transportOptions)) {