From edd2dcd719d90f111533144e168504b97579f6ab Mon Sep 17 00:00:00 2001 From: Joseph Petersen Date: Sat, 24 Aug 2019 12:29:01 +0200 Subject: [PATCH 1/5] add container OSType check for Windows strategies as Windows containers are not supported at the moment --- .../dockerclient/DockerClientProviderStrategy.java | 7 +++++++ .../dockerclient/NpipeSocketClientProviderStrategy.java | 1 + .../dockerclient/WindowsClientProviderStrategy.java | 1 + 3 files changed, 9 insertions(+) diff --git a/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java b/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java index a9321276fd6..b444159d9e6 100644 --- a/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java +++ b/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java @@ -199,4 +199,11 @@ protected void ping(DockerClient client, int timeoutInSeconds) { public String getDockerHostIpAddress() { return DockerClientConfigUtils.getDockerHostIpAddress(this.config); } + + protected void checkOSTypeForWindows() { + String osType = client.infoCmd().exec().getOsType(); + if ("windows".equalsIgnoreCase(osType)) { + throw new InvalidConfigurationException("Windows containers is currently not supported"); + } + } } diff --git a/core/src/main/java/org/testcontainers/dockerclient/NpipeSocketClientProviderStrategy.java b/core/src/main/java/org/testcontainers/dockerclient/NpipeSocketClientProviderStrategy.java index b8d85f11623..15e5442404e 100644 --- a/core/src/main/java/org/testcontainers/dockerclient/NpipeSocketClientProviderStrategy.java +++ b/core/src/main/java/org/testcontainers/dockerclient/NpipeSocketClientProviderStrategy.java @@ -34,6 +34,7 @@ public void test() throws InvalidConfigurationException { } catch (Exception | UnsatisfiedLinkError e) { throw new InvalidConfigurationException("ping failed", e); } + checkOSTypeForWindows(); } @NotNull diff --git a/core/src/main/java/org/testcontainers/dockerclient/WindowsClientProviderStrategy.java b/core/src/main/java/org/testcontainers/dockerclient/WindowsClientProviderStrategy.java index f53ac10d044..6627026fb41 100644 --- a/core/src/main/java/org/testcontainers/dockerclient/WindowsClientProviderStrategy.java +++ b/core/src/main/java/org/testcontainers/dockerclient/WindowsClientProviderStrategy.java @@ -18,6 +18,7 @@ protected boolean isApplicable() { @Override public void test() throws InvalidConfigurationException { config = tryConfiguration("tcp://localhost:2375"); + checkOSTypeForWindows(); } @Override From 81e2635f3069c5e08d14781cdbb35ced92c73a83 Mon Sep 17 00:00:00 2001 From: Joseph Petersen Date: Sat, 24 Aug 2019 12:42:25 +0200 Subject: [PATCH 2/5] fix typo --- .../dockerclient/DockerClientProviderStrategy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java b/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java index b444159d9e6..e883ff8190a 100644 --- a/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java +++ b/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java @@ -203,7 +203,7 @@ public String getDockerHostIpAddress() { protected void checkOSTypeForWindows() { String osType = client.infoCmd().exec().getOsType(); if ("windows".equalsIgnoreCase(osType)) { - throw new InvalidConfigurationException("Windows containers is currently not supported"); + throw new InvalidConfigurationException("Windows containers are currently not supported"); } } } From e81e6ab21ed7faa609780a52bbd68ec085dd32f3 Mon Sep 17 00:00:00 2001 From: Joseph Petersen Date: Sat, 24 Aug 2019 18:54:52 +0200 Subject: [PATCH 3/5] generic check for OS Type, as we currently only support Linux containers --- .../dockerclient/DockerClientProviderStrategy.java | 12 +++++++++--- .../NpipeSocketClientProviderStrategy.java | 1 - .../dockerclient/WindowsClientProviderStrategy.java | 1 - 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java b/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java index e883ff8190a..b62c3fce5fe 100644 --- a/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java +++ b/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java @@ -5,6 +5,7 @@ import com.github.dockerjava.core.DockerClientConfig; import com.google.common.base.Throwables; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.StringUtils; import org.jetbrains.annotations.Nullable; import org.rnorth.ducttape.TimeoutException; import org.rnorth.ducttape.ratelimits.RateLimiter; @@ -111,6 +112,7 @@ public static DockerClientProviderStrategy getFirstValidStrategy(List Date: Sat, 24 Aug 2019 19:18:06 +0200 Subject: [PATCH 4/5] use debug logging when checking OS type --- .../dockerclient/DockerClientProviderStrategy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java b/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java index b62c3fce5fe..f91a1e427b9 100644 --- a/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java +++ b/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java @@ -203,7 +203,7 @@ public String getDockerHostIpAddress() { } protected void checkOSType() { - LOGGER.info("Checking Docker container OS type"); + LOGGER.debug("Checking Docker OS type for {}", this.getDescription()); String osType = client.infoCmd().exec().getOsType(); if (StringUtils.isBlank(osType)) { LOGGER.warn("Could not determine Docker container OS type"); From 2bdc850bd488efc0e98e6bb8e767abed576ab735 Mon Sep 17 00:00:00 2001 From: Joseph Petersen Date: Sat, 24 Aug 2019 19:18:53 +0200 Subject: [PATCH 5/5] words --- .../dockerclient/DockerClientProviderStrategy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java b/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java index f91a1e427b9..57cccc8b540 100644 --- a/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java +++ b/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java @@ -206,7 +206,7 @@ protected void checkOSType() { LOGGER.debug("Checking Docker OS type for {}", this.getDescription()); String osType = client.infoCmd().exec().getOsType(); if (StringUtils.isBlank(osType)) { - LOGGER.warn("Could not determine Docker container OS type"); + LOGGER.warn("Could not determine Docker OS type"); } else if (!osType.equals("linux")) { LOGGER.warn("{} is currently not supported", osType); throw new InvalidConfigurationException(osType + " containers are currently not supported");