This is an automated email from the ASF dual-hosted git repository. orpiske pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new 3a81f78 CAMEL-16400: conditionally determine test execution based on environment availability (#5298) 3a81f78 is described below commit 3a81f782df81d86028274a4b224dcac16bfaffff Author: Otavio Rodolfo Piske <orpi...@users.noreply.github.com> AuthorDate: Wed Apr 7 11:31:05 2021 +0200 CAMEL-16400: conditionally determine test execution based on environment availability (#5298) --- ...rService.java => ContainerEnvironmentUtil.java} | 27 +++++++++++++++++++--- .../infra/common/services/ContainerService.java | 19 ++++++++++++++- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/ContainerService.java b/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/ContainerEnvironmentUtil.java similarity index 52% copy from test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/ContainerService.java copy to test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/ContainerEnvironmentUtil.java index f2358dd..15b82df 100644 --- a/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/ContainerService.java +++ b/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/ContainerEnvironmentUtil.java @@ -17,9 +17,30 @@ package org.apache.camel.test.infra.common.services; -import org.testcontainers.containers.GenericContainer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.testcontainers.DockerClientFactory; -public interface ContainerService<T extends GenericContainer> { +public final class ContainerEnvironmentUtil { + private static final Logger LOG = LoggerFactory.getLogger(ContainerEnvironmentUtil.class); - T getContainer(); + private static boolean dockerAvailable; + private static boolean environmentCheckState; + + private ContainerEnvironmentUtil() { + + } + + public static synchronized boolean isDockerAvailable() { + if (!environmentCheckState) { + dockerAvailable = DockerClientFactory.instance().isDockerAvailable(); + if (!dockerAvailable) { + LOG.warn("Docker environment is not available"); + } + + environmentCheckState = true; + } + + return dockerAvailable; + } } diff --git a/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/ContainerService.java b/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/ContainerService.java index f2358dd..4c7f68f 100644 --- a/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/ContainerService.java +++ b/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/ContainerService.java @@ -17,9 +17,26 @@ package org.apache.camel.test.infra.common.services; +import org.junit.jupiter.api.extension.ConditionEvaluationResult; +import org.junit.jupiter.api.extension.ExecutionCondition; +import org.junit.jupiter.api.extension.ExtensionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.testcontainers.containers.GenericContainer; -public interface ContainerService<T extends GenericContainer> { +public interface ContainerService<T extends GenericContainer> extends ExecutionCondition { + + @Override + default ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext extensionContext) { + + if (ContainerEnvironmentUtil.isDockerAvailable()) { + return ConditionEvaluationResult.enabled("Docker is available"); + } + + Logger logger = LoggerFactory.getLogger(ContainerService.class); + logger.warn("Test {} disabled because docker is not available", extensionContext.getElement().orElse(null)); + return ConditionEvaluationResult.disabled("Docker is NOT available"); + } T getContainer(); }