From ccfb991664bb8dc895b66362d260d7710663dd58 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 +- .../jkube/kit/remotedev/RemoteDevelopmentService.java | 3 ++- .../kit/remotedev/RemoteDevelopmentServiceTest.java | 11 +++++++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.jenkins/pipelines/java-8.Jenkinsfile b/.jenkins/pipelines/java-8.Jenkinsfile index bb6ade18d8..9079a36d49 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 -X 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..42547953e7 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,13 @@ 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(); + try (Socket socket = new Socket("localhost", localPortInUse.getLocalPort())) { + assertThat(socket.isBound()).isTrue(); + assertThat(socket.isClosed()).isFalse(); + remoteDevelopmentService.start(); + } } }) .hasMessageContaining("Local port '" + localPort + "' is already in use (remote-host)");