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