You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2021/04/07 09:31:34 UTC

[camel] branch master updated: CAMEL-16400: conditionally determine test execution based on environment availability (#5298)

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 <or...@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();
 }