From fe3e99e4e1c4658ce8ebe6ef0646cabb3fcaee4e Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Fri, 23 May 2025 11:48:46 +0200 Subject: [PATCH] Find out RTSP container IP instead of using host.docker.internal --- .../io/openvidu/test/e2e/OpenViduTestE2e.java | 39 ++++++++++++------- 1 file changed, 24 insertions(+), 15 deletions(-) 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 7293dd4c..c9948e31 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 @@ -36,6 +36,9 @@ import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.containers.wait.strategy.WaitStrategy; import org.testcontainers.utility.DockerImageName; +import com.github.dockerjava.api.command.InspectContainerResponse; +import com.github.dockerjava.api.model.ContainerNetwork; + import io.livekit.server.IngressServiceClient; import io.livekit.server.RoomServiceClient; import io.openvidu.test.browsers.BrowserUser; @@ -185,11 +188,11 @@ public class OpenViduTestE2e { GenericContainer rtspServerContainer = new GenericContainer<>(DockerImageName.parse(RTSP_SERVER_IMAGE)) .withCreateContainerCmdModifier(cmd -> cmd.withName("rtsp-" + Math.random() * 100000)) - .withEnv(Map.of("MTX_LOGLEVEL", "info", "MTX_PROTOCOLS", "tcp", "MTX_RTSPADDRESS", ":8554", "MTX_HLS", - "no", "MTX_RTSP", "yes", "MTX_WEBRTC", "yes", "MTX_SRT", "no", "MTX_RTMP", "no", "MTX_API", - "no")) - .withExposedPorts(8889, 8554).waitingFor(Wait.forHttp("/").forPort(8889).forStatusCode(404)); - rtspServerContainer.setPortBindings(Arrays.asList("8554:8554")); + .withEnv(Map.of("MTX_LOGLEVEL", "info", "MTX_PROTOCOLS", "tcp", "MTX_RTSPADDRESS", ":" + RTSP_SRT_PORT, + "MTX_HLS", "no", "MTX_RTSP", "yes", "MTX_WEBRTC", "yes", "MTX_SRT", "no", "MTX_RTMP", "no", + "MTX_API", "no")) + .withExposedPorts(8889, RTSP_SRT_PORT).waitingFor(Wait.forHttp("/").forPort(8889).forStatusCode(404)); + rtspServerContainer.setPortBindings(Arrays.asList(RTSP_SRT_PORT + ":" + RTSP_SRT_PORT)); rtspServerContainer.start(); containers.add(rtspServerContainer); @@ -226,7 +229,13 @@ public class OpenViduTestE2e { waitUntilLog(rtspServerContainer, regex, 15); } - return "rtsp://host.docker.internal:" + RTSP_SRT_PORT + "/" + RTSP_PATH; + String containerIp = "host.docker.internal"; + InspectContainerResponse containerInfo = rtspServerContainer.getCurrentContainerInfo(); + if (containerInfo != null) { + ContainerNetwork network = containerInfo.getNetworkSettings().getNetworks().values().iterator().next(); + containerIp = network.getIpAddress(); + } + return "rtsp://" + containerIp + ":" + RTSP_SRT_PORT + "/" + RTSP_PATH; } /** @@ -296,17 +305,17 @@ public class OpenViduTestE2e { private String getFileUrl(boolean withVideo, boolean withAudio, boolean lossless) throws Exception { String fileUrl; if (withAudio && withVideo) { - fileUrl = lossless ? - "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_640x360_30fps_normal_fastdecode.mkv" : - "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_1080p_60fps_normal.mp4"; + fileUrl = lossless + ? "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_640x360_30fps_normal_fastdecode.mkv" + : "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_1080p_60fps_normal.mp4"; } else if (!withAudio && withVideo) { - fileUrl = lossless ? - "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_640x360_30fps_normal_noaudio_fastdecode.mkv" : - "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_1080p_60fps_normal_noaudio.mp4"; + fileUrl = lossless + ? "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_640x360_30fps_normal_noaudio_fastdecode.mkv" + : "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_1080p_60fps_normal_noaudio.mp4"; } else if (withAudio) { - fileUrl = lossless ? - "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_1080p_60fps_normal_onlyaudio_fastdecode.flac" : - "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_1080p_60fps_normal_onlyaudio.mp3"; + fileUrl = lossless + ? "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_1080p_60fps_normal_onlyaudio_fastdecode.flac" + : "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_1080p_60fps_normal_onlyaudio.mp3"; } else { throw new Exception("Must have audio or video"); }