From 1111c62bfe07186f7601fd071d3c2ec7d7e43165 Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Tue, 21 Feb 2023 14:53:35 +0100 Subject: [PATCH] openvidu-test-e2e: get container IP using DockerClient --- .../test/e2e/MediaNodeDockerUtils.java | 2 +- .../io/openvidu/test/e2e/OpenViduTestE2e.java | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/MediaNodeDockerUtils.java b/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/MediaNodeDockerUtils.java index 30d7c7e1..3d459fb0 100644 --- a/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/MediaNodeDockerUtils.java +++ b/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/MediaNodeDockerUtils.java @@ -22,7 +22,7 @@ public class MediaNodeDockerUtils { dockerClient.removeContainerCmd(containerId).withForce(true).exec(); } - public static String getMediaNodeIp(String containerId) { + public static String getContainerIp(String containerId) { DockerClient dockerClient = getDockerClient(); return dockerClient.inspectContainerCmd(containerId).exec().getNetworkSettings().getNetworks().get("bridge") .getIpAddress(); diff --git a/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/OpenViduTestE2e.java b/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/OpenViduTestE2e.java index dfb1acdf..20eec37f 100644 --- a/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/OpenViduTestE2e.java +++ b/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/OpenViduTestE2e.java @@ -864,8 +864,9 @@ public class OpenViduTestE2e { * https://github.com/tiangolo/nginx-rtmp-docker * * @return The IP address of the Docker container + * @throws InterruptedException */ - protected static String startRtmpServer() throws IOException, TimeoutException { + protected static String startRtmpServer() throws IOException, TimeoutException, InterruptedException { File file = writeRtmpServerConfigInFile(); String dockerRunCommand = "docker run -d --name broadcast-nginx -p 1935:1935 -v " + file.getAbsolutePath() + ":/etc/nginx/nginx.conf tiangolo/nginx-rtmp"; @@ -879,16 +880,19 @@ public class OpenViduTestE2e { } protected static String waitForContainerIpAddress(String containerNameOrId, int secondsTimeout) - throws TimeoutException, UnknownHostException { + throws TimeoutException, UnknownHostException, InterruptedException { long currentTime = System.currentTimeMillis(); long maxTime = currentTime + (secondsTimeout * 1000); + InetAddressValidator validator = InetAddressValidator.getInstance(); while (System.currentTimeMillis() < maxTime) { - String ip = commandLine.executeCommand( - "docker container inspect -f '{{ .NetworkSettings.IPAddress }}' " + containerNameOrId, 3); - InetAddressValidator validator = InetAddressValidator.getInstance(); - if (validator.isValid(ip)) { - return ip; + try { + String ip = MediaNodeDockerUtils.getContainerIp(containerNameOrId); + if (validator.isValid(ip)) { + return ip; + } + } catch (Exception e) { } + Thread.sleep(50); } throw new TimeoutException(); }