From b9720286750a6404aada8770ee3759e2bbd6623d Mon Sep 17 00:00:00 2001 From: Rohan Kumar Date: Wed, 24 Jan 2024 17:13:33 +0530 Subject: [PATCH] test (jkube-kit/remote-dev) : Fix intermittent failures of RemoteDevelopmentServiceTest Signed-off-by: Rohan Kumar --- .jenkins/pipelines/java-8.Jenkinsfile | 2 +- .../kit/remotedev/RemoteDevelopmentService.java | 3 ++- .../remotedev/RemoteDevelopmentServiceTest.java | 15 +++++++++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/.jenkins/pipelines/java-8.Jenkinsfile b/.jenkins/pipelines/java-8.Jenkinsfile index bb6ade18d8..511668ed20 100644 --- a/.jenkins/pipelines/java-8.Jenkinsfile +++ b/.jenkins/pipelines/java-8.Jenkinsfile @@ -22,7 +22,7 @@ pipeline { exit 1 fi ''' - sh './mvnw -V -B -e install' + sh './mvnw -V -B -e install' } } } diff --git a/jkube-kit/remote-dev/src/main/java/org/eclipse/jkube/kit/remotedev/RemoteDevelopmentService.java b/jkube-kit/remote-dev/src/main/java/org/eclipse/jkube/kit/remotedev/RemoteDevelopmentService.java index b4ca62f5a7..fdf7899a71 100644 --- a/jkube-kit/remote-dev/src/main/java/org/eclipse/jkube/kit/remotedev/RemoteDevelopmentService.java +++ b/jkube-kit/remote-dev/src/main/java/org/eclipse/jkube/kit/remotedev/RemoteDevelopmentService.java @@ -16,6 +16,7 @@ import io.fabric8.kubernetes.client.KubernetesClient; import org.eclipse.jkube.kit.common.KitLogger; +import java.net.InetAddress; import java.net.ServerSocket; import java.util.concurrent.CompletableFuture; @@ -65,7 +66,7 @@ public void stop() { private void checkEnvironment() { for (RemoteService remoteService : context.getRemoteDevelopmentConfig().getRemoteServices()) { - try (ServerSocket ignore = new ServerSocket(remoteService.getLocalPort())) { + try (ServerSocket ignore = new ServerSocket(remoteService.getLocalPort(), 1, InetAddress.getByName("localhost"))) { logger.debug("Local port '%s' for remote service '%s:%s' is available", remoteService.getLocalPort(), remoteService.getHostname(), remoteService.getPort()); } catch (Exception e) { diff --git a/jkube-kit/remote-dev/src/test/java/org/eclipse/jkube/kit/remotedev/RemoteDevelopmentServiceTest.java b/jkube-kit/remote-dev/src/test/java/org/eclipse/jkube/kit/remotedev/RemoteDevelopmentServiceTest.java index 2fc692e7ea..7eedb620b0 100644 --- a/jkube-kit/remote-dev/src/test/java/org/eclipse/jkube/kit/remotedev/RemoteDevelopmentServiceTest.java +++ b/jkube-kit/remote-dev/src/test/java/org/eclipse/jkube/kit/remotedev/RemoteDevelopmentServiceTest.java @@ -23,9 +23,12 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import java.net.InetAddress; import java.net.ServerSocket; +import java.net.Socket; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.timeout; import static org.mockito.Mockito.times; @@ -118,9 +121,17 @@ void startFailsIfLocalPortInUse() { remoteDevelopmentService = new RemoteDevelopmentService( logger, kubernetesClient, RemoteDevelopmentConfig.builder().remoteService(remoteService).build()); assertThatThrownBy(() -> { - try (ServerSocket localPortInUse = new ServerSocket(localPort)) { + try (ServerSocket localPortInUse = new ServerSocket(localPort, 1, InetAddress.getByName("localhost"))) { // When - remoteDevelopmentService.start(); + System.out.println(localPortInUse.getInetAddress().getHostAddress()); + System.out.println(localPortInUse.getLocalPort()); + try (Socket socket = new Socket("localhost", localPort)) { + System.out.println(socket.getInetAddress().getHostAddress()); + System.out.println(socket.getLocalPort()); + assertThat(socket.isBound()).isTrue(); + assertThat(socket.isClosed()).isFalse(); + remoteDevelopmentService.start(); + } } }) .hasMessageContaining("Local port '" + localPort + "' is already in use (remote-host)");