Skip to content

Commit eef3490

Browse files
committed
Verify UDP path is broken
1 parent 440179d commit eef3490

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

core/src/test/java/org/testcontainers/containers/GenericContainerTest.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.testcontainers.images.builder.ImageFromDockerfile;
2424

2525
import java.util.Arrays;
26+
import java.util.ArrayList;
2627
import java.util.List;
2728
import java.util.Map;
2829
import java.util.concurrent.TimeUnit;
@@ -32,6 +33,7 @@
3233
import static org.assertj.core.api.Assertions.assertThatThrownBy;
3334
import static org.hamcrest.CoreMatchers.equalTo;
3435
import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals;
36+
import static org.rnorth.visibleassertions.VisibleAssertions.assertNotNull;
3537
import static org.rnorth.visibleassertions.VisibleAssertions.assertThrows;
3638
import static org.rnorth.visibleassertions.VisibleAssertions.assertTrue;
3739
import static org.testcontainers.TestImages.TINY_IMAGE;
@@ -146,6 +148,42 @@ public void shouldWaitUntilExposedPortIsMapped() {
146148
}
147149
}
148150

151+
@Test
152+
public void shouldHonorUDPPorts() {
153+
ImageFromDockerfile image = new ImageFromDockerfile("publish-multiple")
154+
.withDockerfileFromBuilder(builder ->
155+
builder
156+
.from("testcontainers/helloworld:1.1.0")
157+
.expose(8080, 8081)
158+
.build()
159+
);
160+
161+
try (
162+
GenericContainer container = new GenericContainer<>(image)
163+
.withExposedPorts(8080, 8081)
164+
.withCreateContainerCmdModifier(cmd -> {
165+
//Add previously exposed ports
166+
List<ExposedPort> ports = new ArrayList<>();
167+
for (ExposedPort p : cmd.getExposedPorts()) {
168+
ports.add(p);
169+
}
170+
//Add and expose UDP port
171+
ports.add(ExposedPort.udp(99));
172+
cmd.withExposedPorts(ports);
173+
}
174+
)
175+
) {
176+
177+
container.start();
178+
ExposedPort expectedPort = ExposedPort.udp(99);
179+
Map<ExposedPort, Ports.Binding[]> map = container.getContainerInfo().getNetworkSettings().getPorts().getBindings();
180+
181+
assertEquals("Two TCP ports should have been exposed.", 2, container.getExposedPorts().size());
182+
assertNotNull("withExposedPorts should have exposed UDP port", map.get(expectedPort));
183+
assertTrue("UDP port 99 should have been mapped to a different port", 99 != Integer.valueOf(map.get(expectedPort)[0].getHostPortSpec()));
184+
}
185+
}
186+
149187
static class NoopStartupCheckStrategy extends StartupCheckStrategy {
150188

151189
@Override

0 commit comments

Comments
 (0)