From 500fd7404c07712c1f8af2d5f6ba51a048b9f6da Mon Sep 17 00:00:00 2001 From: Richard North Date: Fri, 6 Dec 2019 12:07:41 +0000 Subject: [PATCH] Improve Docker Compose error messaging (#2154) Co-Authored-By: Richard North Co-authored-by: Matthias Hahn Co-authored-by: null <38075918+HaMatthias@users.noreply.github.com> --- .../containers/DockerComposeContainer.java | 10 +++++++++- .../testcontainers/junit/DockerComposeServiceTest.java | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java index 31d84284584..7dec6399b8f 100644 --- a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java @@ -385,7 +385,15 @@ public String getServiceHost(String serviceName, Integer servicePort) { * @return a port that can be used for accessing the service container. */ public Integer getServicePort(String serviceName, Integer servicePort) { - return ambassadorContainer.getMappedPort(ambassadorPortMappings.get(getServiceInstanceName(serviceName)).get(servicePort)); + Map portMap = ambassadorPortMappings.get(getServiceInstanceName(serviceName)); + + if (portMap == null) { + throw new IllegalArgumentException("Could not get a port for '" + serviceName + "'. " + + "Testcontainers does not have an exposed port configured for '" + serviceName + "'. "+ + "To fix, please ensure that the service '" + serviceName + "' has ports exposed using .withExposedService(...)"); + } else { + return ambassadorContainer.getMappedPort(portMap.get(servicePort)); + } } public SELF withScaledService(String serviceBaseName, int numInstances) { diff --git a/core/src/test/java/org/testcontainers/junit/DockerComposeServiceTest.java b/core/src/test/java/org/testcontainers/junit/DockerComposeServiceTest.java index c0360050d27..ec8c50d42ab 100644 --- a/core/src/test/java/org/testcontainers/junit/DockerComposeServiceTest.java +++ b/core/src/test/java/org/testcontainers/junit/DockerComposeServiceTest.java @@ -21,7 +21,7 @@ protected DockerComposeContainer getEnvironment() { return environment; } - @Test(expected = NullPointerException.class) + @Test(expected = IllegalArgumentException.class) public void testDbIsNotStarting() { environment.getServicePort("db_1", 10001); }