diff --git a/code/common/service-client/src/main/java/nu/marginalia/client/AbstractClient.java b/code/common/service-client/src/main/java/nu/marginalia/client/AbstractClient.java index bd4bc790..19905ecf 100644 --- a/code/common/service-client/src/main/java/nu/marginalia/client/AbstractClient.java +++ b/code/common/service-client/src/main/java/nu/marginalia/client/AbstractClient.java @@ -43,7 +43,7 @@ public abstract class AbstractClient implements AutoCloseable { } public AbstractClient(ServiceDescriptor service, int timeout, Supplier gsonProvider) { - this(RouteProvider.fromService(service), timeout, gsonProvider); + this(new RouteProvider(service), timeout, gsonProvider); } public AbstractClient(RouteProvider routeProvider, diff --git a/code/common/service-client/src/main/java/nu/marginalia/client/route/RouteProvider.java b/code/common/service-client/src/main/java/nu/marginalia/client/route/RouteProvider.java index 0f28fb9d..c3423f8c 100644 --- a/code/common/service-client/src/main/java/nu/marginalia/client/route/RouteProvider.java +++ b/code/common/service-client/src/main/java/nu/marginalia/client/route/RouteProvider.java @@ -2,10 +2,28 @@ package nu.marginalia.client.route; import nu.marginalia.service.descriptor.ServiceDescriptor; -public interface RouteProvider { - ServiceRoute findRoute(int node); +public class RouteProvider { + private static int defaultPort = 80; - static RouteProvider fromService(ServiceDescriptor serviceDescriptor) { - return (n) -> new ServiceRoute(serviceDescriptor.getHostName(n), 80); + private final ServiceDescriptor descriptor; + + public RouteProvider(ServiceDescriptor descriptor) { + this.descriptor = descriptor; + } + + ServiceRoute findRoute(int node) { + return new ServiceRoute(descriptor.getHostName(node), defaultPort); + } + + public static RouteProvider fromService(ServiceDescriptor serviceDescriptor) { + return new RouteProvider(serviceDescriptor); + } + + // Access exists for testing + public static void setDefaultPort(int port) { + defaultPort = port; + } + public static void resetDefaultPort() { + defaultPort = 80; } } diff --git a/code/services-core/executor-service/src/test/java/nu/marginalia/executor/ExecutorSvcApiIntegrationTest.java b/code/services-core/executor-service/src/test/java/nu/marginalia/executor/ExecutorSvcApiIntegrationTest.java index 45729cc3..08922793 100644 --- a/code/services-core/executor-service/src/test/java/nu/marginalia/executor/ExecutorSvcApiIntegrationTest.java +++ b/code/services-core/executor-service/src/test/java/nu/marginalia/executor/ExecutorSvcApiIntegrationTest.java @@ -8,6 +8,7 @@ import nu.marginalia.actor.Actor; import nu.marginalia.actor.ActorControlService; import nu.marginalia.actor.task.CrawlJobExtractorActor; import nu.marginalia.client.Context; +import nu.marginalia.client.route.RouteProvider; import nu.marginalia.control.process.ProcessOutboxes; import nu.marginalia.control.process.ProcessService; import nu.marginalia.storage.FileStorageService; @@ -44,11 +45,17 @@ public class ExecutorSvcApiIntegrationTest { @BeforeAll public static void setUpAll() { + RouteProvider.setDefaultPort(port); var injector = Guice.createInjector(new TestModule()); testInstances = injector.getInstance(TestInstances.class); injector.getInstance(Initialization.class).setReady(); } + @AfterAll + public static void tearDownAll() { + RouteProvider.resetDefaultPort(); + } + @BeforeEach public void setUp() { Mockito.reset(testInstances.actorControlService);