From 22c718e0bf9b223170023d88b54a6b188898c4f0 Mon Sep 17 00:00:00 2001 From: Alexander Schwartz Date: Wed, 15 Oct 2025 18:04:24 +0200 Subject: [PATCH] Attempting to stabilize ExternalInfinispanTest Signed-off-by: Alexander Schwartz --- .../junit5/extension/InfinispanContainer.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/quarkus/tests/junit5/src/main/java/org/keycloak/it/junit5/extension/InfinispanContainer.java b/quarkus/tests/junit5/src/main/java/org/keycloak/it/junit5/extension/InfinispanContainer.java index 0636f9655a6..678e34eeebe 100644 --- a/quarkus/tests/junit5/src/main/java/org/keycloak/it/junit5/extension/InfinispanContainer.java +++ b/quarkus/tests/junit5/src/main/java/org/keycloak/it/junit5/extension/InfinispanContainer.java @@ -17,10 +17,16 @@ package org.keycloak.it.junit5.extension; +import java.io.IOException; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.net.SocketAddress; import java.util.Arrays; import org.keycloak.connections.infinispan.InfinispanConnectionProvider; +import com.github.dockerjava.api.command.InspectContainerResponse; import org.infinispan.client.hotrod.RemoteCacheManager; import org.infinispan.commons.configuration.StringConfiguration; import org.jboss.logging.Logger; @@ -91,6 +97,28 @@ public class InfinispanContainer extends org.infinispan.server.test.core.Infinis }); } + @Override + protected void containerIsStopped(InspectContainerResponse containerInfo) { + while(true) { + try { + try (Socket socket = new Socket()) { + InetAddress inetAddress = InetAddress.getByName("localhost"); + SocketAddress socketAddress = new InetSocketAddress(inetAddress, Integer.parseInt(PORT)); + socket.bind(socketAddress); + socket.close(); + break; + } + } catch (IOException e) { + logger().warn("The socket is still bound"); + try { + Thread.sleep(1000); + } catch (InterruptedException ex) { + throw new RuntimeException(ex); + } + } + } + } + @Override public void stop() { logger().info("Stopping ISPN container");