From 6d330559933ee409db940ed11844d1b766360f8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?= Date: Tue, 14 Nov 2023 18:06:35 -0600 Subject: [PATCH] Keep exposed ports order in ContainerDef (#7811) Order is lost and break modules with multiple ports defined. --- .../org/testcontainers/containers/ContainerDef.java | 4 ++-- .../testcontainers/containers/GenericContainer.java | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/testcontainers/containers/ContainerDef.java b/core/src/main/java/org/testcontainers/containers/ContainerDef.java index df058945aef..5dd3abb37bd 100644 --- a/core/src/main/java/org/testcontainers/containers/ContainerDef.java +++ b/core/src/main/java/org/testcontainers/containers/ContainerDef.java @@ -32,7 +32,7 @@ class ContainerDef { @Getter private RemoteDockerImage image; - Set exposedPorts = new HashSet<>(); + Set exposedPorts = new LinkedHashSet<>(); Set portBindings = new HashSet<>(); @@ -150,7 +150,7 @@ protected void setImage(DockerImageName image) { } public Set getExposedPorts() { - return new HashSet<>(this.exposedPorts); + return new LinkedHashSet<>(this.exposedPorts); } protected void setExposedPorts(Set exposedPorts) { diff --git a/core/src/main/java/org/testcontainers/containers/GenericContainer.java b/core/src/main/java/org/testcontainers/containers/GenericContainer.java index fdd36dd9f68..929ff41a9b4 100644 --- a/core/src/main/java/org/testcontainers/containers/GenericContainer.java +++ b/core/src/main/java/org/testcontainers/containers/GenericContainer.java @@ -272,12 +272,19 @@ public void setImage(Future image) { @Override public List getExposedPorts() { - return this.containerDef.getExposedPorts().stream().map(ExposedPort::getPort).collect(Collectors.toList()); + List exposedPorts = new ArrayList<>(); + for (ExposedPort exposedPort : this.containerDef.getExposedPorts()) { + exposedPorts.add(exposedPort.getPort()); + } + return exposedPorts; } @Override public void setExposedPorts(List exposedPorts) { - this.containerDef.setExposedPorts(exposedPorts.stream().map(ExposedPort::tcp).collect(Collectors.toSet())); + this.containerDef.exposedPorts.clear(); + for (Integer exposedPort : exposedPorts) { + this.containerDef.addExposedTcpPort(exposedPort); + } } /**