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/01/05 08:42:35 UTC

[camel] branch master updated: camel-docker: cleaned up deprecations related to outdated docker-java (#4826)

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 7908034  camel-docker: cleaned up deprecations related to outdated docker-java (#4826)
7908034 is described below

commit 79080343587ddb9ec6771c0feb3a05e9c3bb25c3
Author: Otavio Rodolfo Piske <or...@users.noreply.github.com>
AuthorDate: Tue Jan 5 09:42:16 2021 +0100

    camel-docker: cleaned up deprecations related to outdated docker-java (#4826)
    
    api calls
    
    - adjusted some classes for Junit 5 compatibility
    - removed several deprecated callback classes
    - adjusted test cases to match the updated classes
    - simplified execution of a few IT cases
---
 .../docker/consumer/DockerEventsConsumer.java      |   4 +-
 .../docker/consumer/DockerStatsConsumer.java       |   2 +-
 .../docker/producer/AsyncDockerProducer.java       | 230 +++++++++++----------
 .../headers/AttachContainerCmdHeaderTest.java      |   5 +-
 .../docker/headers/BuildImageCmdHeaderTest.java    |  10 +-
 .../docker/headers/ExecStartCmdHeaderTest.java     |   5 +-
 .../docker/headers/LogContainerCmdHeaderTest.java  |   5 +-
 .../docker/headers/PullImageCmdHeaderTest.java     |   2 +-
 .../docker/headers/PushImageCmdHeaderTest.java     |   5 +-
 .../docker/headers/WaitContainerCmdHeaderTest.java |   4 +-
 ...tIT.java => DockerNettyCmdExecFactoryTest.java} |   7 +-
 ...ProducerTestIT.java => DockerProducerTest.java} |   9 +-
 ...merTestIT.java => DockerStatsConsumerTest.java} |  13 +-
 13 files changed, 155 insertions(+), 146 deletions(-)

diff --git a/components/camel-docker/src/main/java/org/apache/camel/component/docker/consumer/DockerEventsConsumer.java b/components/camel-docker/src/main/java/org/apache/camel/component/docker/consumer/DockerEventsConsumer.java
index 09194a9..005c085 100644
--- a/components/camel-docker/src/main/java/org/apache/camel/component/docker/consumer/DockerEventsConsumer.java
+++ b/components/camel-docker/src/main/java/org/apache/camel/component/docker/consumer/DockerEventsConsumer.java
@@ -16,9 +16,9 @@
  */
 package org.apache.camel.component.docker.consumer;
 
+import com.github.dockerjava.api.async.ResultCallback;
 import com.github.dockerjava.api.command.EventsCmd;
 import com.github.dockerjava.api.model.Event;
-import com.github.dockerjava.core.command.EventsResultCallback;
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
@@ -82,7 +82,7 @@ public class DockerEventsConsumer extends DefaultConsumer {
         super.doStop();
     }
 
-    protected class EventsCallback extends EventsResultCallback {
+    protected class EventsCallback extends ResultCallback.Adapter<Event> {
 
         @Override
         public void onNext(Event event) {
diff --git a/components/camel-docker/src/main/java/org/apache/camel/component/docker/consumer/DockerStatsConsumer.java b/components/camel-docker/src/main/java/org/apache/camel/component/docker/consumer/DockerStatsConsumer.java
index b4e29c0..268a823 100644
--- a/components/camel-docker/src/main/java/org/apache/camel/component/docker/consumer/DockerStatsConsumer.java
+++ b/components/camel-docker/src/main/java/org/apache/camel/component/docker/consumer/DockerStatsConsumer.java
@@ -16,9 +16,9 @@
  */
 package org.apache.camel.component.docker.consumer;
 
+import com.github.dockerjava.api.async.ResultCallbackTemplate;
 import com.github.dockerjava.api.command.StatsCmd;
 import com.github.dockerjava.api.model.Statistics;
-import com.github.dockerjava.core.async.ResultCallbackTemplate;
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
diff --git a/components/camel-docker/src/main/java/org/apache/camel/component/docker/producer/AsyncDockerProducer.java b/components/camel-docker/src/main/java/org/apache/camel/component/docker/producer/AsyncDockerProducer.java
index d335a7a..16f0e29 100644
--- a/components/camel-docker/src/main/java/org/apache/camel/component/docker/producer/AsyncDockerProducer.java
+++ b/components/camel-docker/src/main/java/org/apache/camel/component/docker/producer/AsyncDockerProducer.java
@@ -17,30 +17,29 @@
 package org.apache.camel.component.docker.producer;
 
 import java.io.File;
-import java.io.IOException;
 import java.io.InputStream;
+import java.util.Collections;
 
 import com.github.dockerjava.api.DockerClient;
+import com.github.dockerjava.api.async.ResultCallback.Adapter;
+import com.github.dockerjava.api.async.ResultCallbackTemplate;
+import com.github.dockerjava.api.command.AsyncDockerCmd;
 import com.github.dockerjava.api.command.AttachContainerCmd;
 import com.github.dockerjava.api.command.BuildImageCmd;
+import com.github.dockerjava.api.command.BuildImageResultCallback;
 import com.github.dockerjava.api.command.ExecStartCmd;
 import com.github.dockerjava.api.command.LogContainerCmd;
 import com.github.dockerjava.api.command.PullImageCmd;
+import com.github.dockerjava.api.command.PullImageResultCallback;
 import com.github.dockerjava.api.command.PushImageCmd;
 import com.github.dockerjava.api.command.WaitContainerCmd;
+import com.github.dockerjava.api.command.WaitContainerResultCallback;
 import com.github.dockerjava.api.model.AuthConfig;
 import com.github.dockerjava.api.model.BuildResponseItem;
 import com.github.dockerjava.api.model.Frame;
 import com.github.dockerjava.api.model.PullResponseItem;
 import com.github.dockerjava.api.model.PushResponseItem;
 import com.github.dockerjava.api.model.WaitResponse;
-import com.github.dockerjava.core.command.AttachContainerResultCallback;
-import com.github.dockerjava.core.command.BuildImageResultCallback;
-import com.github.dockerjava.core.command.ExecStartResultCallback;
-import com.github.dockerjava.core.command.LogContainerResultCallback;
-import com.github.dockerjava.core.command.PullImageResultCallback;
-import com.github.dockerjava.core.command.PushImageResultCallback;
-import com.github.dockerjava.core.command.WaitContainerResultCallback;
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
@@ -80,148 +79,151 @@ public class AsyncDockerProducer extends DefaultAsyncProducer {
 
             DockerOperation operation = configuration.getOperation();
 
-            Object result;
-
             switch (operation) {
 
                 /** Images **/
                 case BUILD_IMAGE:
-                    // result contain an image id value
-                    result = executeBuildImageRequest(client, message).exec(new BuildImageResultCallback() {
-                        @Override
-                        public void onNext(BuildResponseItem item) {
-                            LOG.trace("build image callback {}", item);
-                            super.onNext(item);
-                        }
-                    });
+                    runAsyncImageBuild(exchange, message, client);
 
-                    if (result != null) {
-                        String imageId = ((BuildImageResultCallback) result).awaitImageId();
+                    break;
+                case PULL_IMAGE:
+                    runAsyncPull(message, client, exchange);
 
-                        ((BuildImageResultCallback) result).close();
+                    break;
+                case PUSH_IMAGE:
+                    runAsyncPush(exchange, message, client);
 
-                        result = imageId;
-                    }
+                    break;
+                /** Containers **/
+                case ATTACH_CONTAINER:
+                    runAsyncAttachContainer(exchange, message, client);
 
                     break;
-                case PULL_IMAGE:
-                    result = executePullImageRequest(client, message).exec(new PullImageResultCallback() {
-                        @Override
-                        public void onNext(PullResponseItem item) {
-                            LOG.trace("pull image callback {}", item);
-                            super.onNext(item);
-                        }
-                    });
+                case LOG_CONTAINER:
+                    runAsyncLogContainer(exchange, message, client);
 
-                    if (result != null) {
-                        result = ((PullImageResultCallback) result).awaitCompletion();
+                    break;
+                case WAIT_CONTAINER:
+                    // result contain a status code value
+                    runAsyncWaitContainer(exchange, message, client);
 
-                        ((PullImageResultCallback) result).close();
-                    }
+                    break;
+                case EXEC_START:
+                    runAsyncExecStart(exchange, message, client);
 
                     break;
-                case PUSH_IMAGE:
-                    result = executePushImageRequest(client, message).exec(new PushImageResultCallback() {
-                        @Override
-                        public void onNext(PushResponseItem item) {
-                            LOG.trace("push image callback {}", item);
-                            super.onNext(item);
-                        }
-                    });
+                default:
+                    throw new DockerException("Invalid operation: " + operation);
+            }
 
-                    if (result != null) {
-                        result = ((PushImageResultCallback) result).awaitCompletion();
+        } catch (DockerException | InterruptedException e) {
+            LOG.error(e.getMessage(), e);
+        }
 
-                        ((PushImageResultCallback) result).close();
-                    }
+        callback.done(false);
+        return false;
+    }
 
-                    break;
-                /** Containers **/
-                case ATTACH_CONTAINER:
-                    result = executeAttachContainerRequest(client, message).exec(new AttachContainerResultCallback() {
-                        @Override
-                        public void onNext(Frame item) {
-                            LOG.trace("attach container callback {}", item);
-                            super.onNext(item);
-                        }
+    private void runAsyncImageBuild(Exchange exchange, Message message, DockerClient client)
+            throws DockerException, InterruptedException {
+        // result contain an image id value
+        BuildImageCmd cmd = executeBuildImageRequest(client, message);
 
-                    });
+        BuildImageResultCallback item = cmd.exec(new BuildImageResultCallback() {
+            @Override
+            public void onNext(BuildResponseItem item) {
+                super.onNext(item);
 
-                    if (result != null) {
-                        result = ((AttachContainerResultCallback) result).awaitCompletion();
+                LOG.trace("build image callback {}", item);
 
-                        ((AttachContainerResultCallback) result).close();
-                    }
+                exchange.getIn().setBody(item.getImageId());
+            }
+        });
 
-                    break;
-                case LOG_CONTAINER:
-                    result = executeLogContainerRequest(client, message).exec(new LogContainerResultCallback() {
-                        @Override
-                        public void onNext(Frame item) {
-                            LOG.trace("log container callback {}", item);
-                            super.onNext(item);
-                        }
+        setResponse(exchange, item);
+    }
 
-                    });
+    private void runAsyncWithFrameResponse(Exchange exchange, AsyncDockerCmd<?, Frame> cmd) throws InterruptedException {
+        Adapter<Frame> item = cmd.exec(new Adapter<Frame>() {
+            @Override
+            public void onNext(Frame item) {
+                LOG.trace("running framed callback {}", item);
+                super.onNext(item);
+            }
 
-                    if (result != null) {
-                        result = ((LogContainerResultCallback) result).awaitCompletion();
+        });
 
-                        ((LogContainerResultCallback) result).close();
-                    }
+        setResponse(exchange, item);
+    }
 
-                    break;
-                case WAIT_CONTAINER:
-                    // result contain a status code value
-                    result = executeWaitContainerRequest(client, message).exec(new WaitContainerResultCallback() {
-                        @Override
-                        public void onNext(WaitResponse item) {
-                            LOG.trace("wait contanier callback {}", item);
-                            super.onNext(item);
-                        }
+    private void runAsyncExecStart(Exchange exchange, Message message, DockerClient client) throws InterruptedException {
+        ExecStartCmd cmd = executeExecStartRequest(client, message);
 
-                    });
+        runAsyncWithFrameResponse(exchange, cmd);
+    }
 
-                    if (result != null) {
-                        Integer statusCode = ((WaitContainerResultCallback) result).awaitStatusCode();
+    private void runAsyncWaitContainer(Exchange exchange, Message message, DockerClient client) throws InterruptedException {
+        WaitContainerCmd cmd = executeWaitContainerRequest(client, message);
+        WaitContainerResultCallback item = cmd.exec(new WaitContainerResultCallback() {
+            @Override
+            public void onNext(WaitResponse item) {
+                super.onNext(item);
 
-                        ((WaitContainerResultCallback) result).close();
+                LOG.trace("wait container callback {}", item);
+            }
 
-                        result = statusCode;
-                    }
+        });
 
-                    break;
-                case EXEC_START:
-                    result = executeExecStartRequest(client, message).exec(new ExecStartResultCallback() {
-                        @Override
-                        public void onNext(Frame item) {
-                            LOG.trace("exec start callback {}", item);
-                            super.onNext(item);
-                        }
+        setResponse(exchange, item);
+    }
 
-                    });
+    private void setResponse(Exchange exchange, ResultCallbackTemplate item) throws InterruptedException {
+        if (item != null) {
+            exchange.getIn().setBody(item);
+            item.awaitCompletion();
+        }
+    }
 
-                    if (result != null) {
-                        result = ((ExecStartResultCallback) result).awaitCompletion();
+    private void runAsyncLogContainer(Exchange exchange, Message message, DockerClient client) throws InterruptedException {
+        LogContainerCmd cmd = executeLogContainerRequest(client, message);
 
-                        ((ExecStartResultCallback) result).close();
-                    }
+        runAsyncWithFrameResponse(exchange, cmd);
 
-                    break;
-                default:
-                    throw new DockerException("Invalid operation: " + operation);
+    }
+
+    private void runAsyncAttachContainer(Exchange exchange, Message message, DockerClient client) throws InterruptedException {
+        AttachContainerCmd cmd = executeAttachContainerRequest(client, message);
+        runAsyncWithFrameResponse(exchange, cmd);
+    }
+
+    private void runAsyncPush(Exchange exchange, Message message, DockerClient client) throws InterruptedException {
+        PushImageCmd cmd = executePushImageRequest(client, message);
+        Adapter<PushResponseItem> item = cmd.exec(new Adapter<PushResponseItem>() {
+            @Override
+            public void onNext(PushResponseItem item) {
+                super.onNext(item);
+
+                LOG.trace("push image callback {}", item);
             }
+        });
+
+        setResponse(exchange, item);
+    }
+
+    private void runAsyncPull(Message message, DockerClient client, Exchange exchange) throws InterruptedException {
+        PullImageCmd cmd = executePullImageRequest(client, message);
+
+        PullImageResultCallback item = cmd.exec(new PullImageResultCallback() {
+            @Override
+            public void onNext(PullResponseItem item) {
+                super.onNext(item);
+
+                LOG.trace("pull image callback {}", item);
 
-            // If request included a response, set as body
-            if (result != null) {
-                exchange.getIn().setBody(result);
             }
-        } catch (DockerException | InterruptedException | IOException e) {
-            LOG.error(e.getMessage(), e);
-        }
+        });
 
-        callback.done(false);
-        return false;
+        setResponse(exchange, item);
     }
 
     /**
@@ -264,7 +266,7 @@ public class AsyncDockerProducer extends DefaultAsyncProducer {
         String tag = DockerHelper.getProperty(DockerConstants.DOCKER_TAG, configuration, message, String.class);
 
         if (tag != null) {
-            buildImageCmd.withTag(tag);
+            buildImageCmd.withTags(Collections.singleton(tag));
         }
 
         return buildImageCmd;
diff --git a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/AttachContainerCmdHeaderTest.java b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/AttachContainerCmdHeaderTest.java
index c46e73c..c6c397f 100644
--- a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/AttachContainerCmdHeaderTest.java
+++ b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/AttachContainerCmdHeaderTest.java
@@ -18,8 +18,9 @@ package org.apache.camel.component.docker.headers;
 
 import java.util.Map;
 
+import com.github.dockerjava.api.async.ResultCallback;
 import com.github.dockerjava.api.command.AttachContainerCmd;
-import com.github.dockerjava.core.command.AttachContainerResultCallback;
+import com.github.dockerjava.api.model.Frame;
 import org.apache.camel.component.docker.DockerConstants;
 import org.apache.camel.component.docker.DockerOperation;
 import org.junit.jupiter.api.Test;
@@ -42,7 +43,7 @@ public class AttachContainerCmdHeaderTest extends BaseDockerHeaderTest<AttachCon
     private AttachContainerCmd mockObject;
 
     @Mock
-    private AttachContainerResultCallback callback;
+    private ResultCallback.Adapter<Frame> callback;
 
     @Test
     void attachContainerHeaderTest() {
diff --git a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/BuildImageCmdHeaderTest.java b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/BuildImageCmdHeaderTest.java
index cbb47ed..d5f8048 100644
--- a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/BuildImageCmdHeaderTest.java
+++ b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/BuildImageCmdHeaderTest.java
@@ -18,10 +18,11 @@ package org.apache.camel.component.docker.headers;
 
 import java.io.File;
 import java.io.InputStream;
+import java.util.Collections;
 import java.util.Map;
 
 import com.github.dockerjava.api.command.BuildImageCmd;
-import com.github.dockerjava.core.command.BuildImageResultCallback;
+import com.github.dockerjava.api.command.BuildImageResultCallback;
 import org.apache.camel.component.docker.DockerConstants;
 import org.apache.camel.component.docker.DockerOperation;
 import org.junit.jupiter.api.Test;
@@ -29,7 +30,6 @@ import org.mockito.Mock;
 import org.mockito.Mockito;
 
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyString;
 
 /**
  * Validates Build Image Request headers are parsed properly
@@ -58,7 +58,6 @@ public class BuildImageCmdHeaderTest extends BaseDockerHeaderTest<BuildImageCmd>
     void buildImageFromInputStreamHeaderTest() {
         Mockito.when(dockerClient.buildImageCmd(any(InputStream.class))).thenReturn(mockObject);
         Mockito.when(mockObject.exec(any())).thenReturn(callback);
-        Mockito.when(callback.awaitImageId()).thenReturn(anyString());
 
         template.sendBodyAndHeaders("direct:in", inputStream, getHeaders());
 
@@ -66,7 +65,7 @@ public class BuildImageCmdHeaderTest extends BaseDockerHeaderTest<BuildImageCmd>
         Mockito.verify(mockObject, Mockito.times(1)).withQuiet(quiet);
         Mockito.verify(mockObject, Mockito.times(1)).withNoCache(noCache);
         Mockito.verify(mockObject, Mockito.times(1)).withRemove(remove);
-        Mockito.verify(mockObject, Mockito.times(1)).withTag(tag);
+        Mockito.verify(mockObject, Mockito.times(1)).withTags(Collections.singleton(tag));
 
     }
 
@@ -74,7 +73,6 @@ public class BuildImageCmdHeaderTest extends BaseDockerHeaderTest<BuildImageCmd>
     void buildImageFromFileHeaderTest() {
         Mockito.when(dockerClient.buildImageCmd(any(File.class))).thenReturn(mockObject);
         Mockito.when(mockObject.exec(any())).thenReturn(callback);
-        Mockito.when(callback.awaitImageId()).thenReturn(anyString());
 
         template.sendBodyAndHeaders("direct:in", file, getHeaders());
 
@@ -82,7 +80,7 @@ public class BuildImageCmdHeaderTest extends BaseDockerHeaderTest<BuildImageCmd>
         Mockito.verify(mockObject, Mockito.times(1)).withQuiet(quiet);
         Mockito.verify(mockObject, Mockito.times(1)).withNoCache(noCache);
         Mockito.verify(mockObject, Mockito.times(1)).withRemove(remove);
-        Mockito.verify(mockObject, Mockito.times(1)).withTag(tag);
+        Mockito.verify(mockObject, Mockito.times(1)).withTags(Collections.singleton(tag));
 
     }
 
diff --git a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/ExecStartCmdHeaderTest.java b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/ExecStartCmdHeaderTest.java
index ab66c75..775e079 100644
--- a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/ExecStartCmdHeaderTest.java
+++ b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/ExecStartCmdHeaderTest.java
@@ -18,8 +18,9 @@ package org.apache.camel.component.docker.headers;
 
 import java.util.Map;
 
+import com.github.dockerjava.api.async.ResultCallback;
 import com.github.dockerjava.api.command.ExecStartCmd;
-import com.github.dockerjava.core.command.ExecStartResultCallback;
+import com.github.dockerjava.api.model.Frame;
 import org.apache.camel.component.docker.DockerConstants;
 import org.apache.camel.component.docker.DockerOperation;
 import org.junit.jupiter.api.Test;
@@ -42,7 +43,7 @@ public class ExecStartCmdHeaderTest extends BaseDockerHeaderTest<ExecStartCmd> {
     private ExecStartCmd mockObject;
 
     @Mock
-    private ExecStartResultCallback callback;
+    private ResultCallback.Adapter<Frame> callback;
 
     @Test
     void execCreateHeaderTest() {
diff --git a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/LogContainerCmdHeaderTest.java b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/LogContainerCmdHeaderTest.java
index de0c906..90db854 100644
--- a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/LogContainerCmdHeaderTest.java
+++ b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/LogContainerCmdHeaderTest.java
@@ -18,8 +18,9 @@ package org.apache.camel.component.docker.headers;
 
 import java.util.Map;
 
+import com.github.dockerjava.api.async.ResultCallback;
 import com.github.dockerjava.api.command.LogContainerCmd;
-import com.github.dockerjava.core.command.LogContainerResultCallback;
+import com.github.dockerjava.api.model.Frame;
 import org.apache.camel.component.docker.DockerConstants;
 import org.apache.camel.component.docker.DockerOperation;
 import org.junit.jupiter.api.Test;
@@ -42,7 +43,7 @@ public class LogContainerCmdHeaderTest extends BaseDockerHeaderTest<LogContainer
     private LogContainerCmd mockObject;
 
     @Mock
-    private LogContainerResultCallback callback;
+    private ResultCallback.Adapter<Frame> callback;
 
     @Test
     void logContainerHeaderTest() {
diff --git a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/PullImageCmdHeaderTest.java b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/PullImageCmdHeaderTest.java
index e25cf74..101e064 100644
--- a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/PullImageCmdHeaderTest.java
+++ b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/PullImageCmdHeaderTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.docker.headers;
 import java.util.Map;
 
 import com.github.dockerjava.api.command.PullImageCmd;
-import com.github.dockerjava.core.command.PullImageResultCallback;
+import com.github.dockerjava.api.command.PullImageResultCallback;
 import org.apache.camel.component.docker.DockerConstants;
 import org.apache.camel.component.docker.DockerOperation;
 import org.junit.jupiter.api.Test;
diff --git a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/PushImageCmdHeaderTest.java b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/PushImageCmdHeaderTest.java
index bc4f22e..aebec03 100644
--- a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/PushImageCmdHeaderTest.java
+++ b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/PushImageCmdHeaderTest.java
@@ -18,8 +18,9 @@ package org.apache.camel.component.docker.headers;
 
 import java.util.Map;
 
+import com.github.dockerjava.api.async.ResultCallback;
 import com.github.dockerjava.api.command.PushImageCmd;
-import com.github.dockerjava.core.command.PushImageResultCallback;
+import com.github.dockerjava.api.model.Frame;
 import org.apache.camel.component.docker.DockerClientProfile;
 import org.apache.camel.component.docker.DockerConstants;
 import org.apache.camel.component.docker.DockerOperation;
@@ -42,7 +43,7 @@ public class PushImageCmdHeaderTest extends BaseDockerHeaderTest<PushImageCmd> {
     private PushImageCmd mockObject;
 
     @Mock
-    private PushImageResultCallback callback;
+    private ResultCallback.Adapter<Frame> callback;
 
     private String userName = "jdoe";
     private String password = "password";
diff --git a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/WaitContainerCmdHeaderTest.java b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/WaitContainerCmdHeaderTest.java
index 40e7c8b..895f6a8 100644
--- a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/WaitContainerCmdHeaderTest.java
+++ b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/WaitContainerCmdHeaderTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.docker.headers;
 import java.util.Map;
 
 import com.github.dockerjava.api.command.WaitContainerCmd;
-import com.github.dockerjava.core.command.WaitContainerResultCallback;
+import com.github.dockerjava.api.command.WaitContainerResultCallback;
 import org.apache.camel.component.docker.DockerConstants;
 import org.apache.camel.component.docker.DockerOperation;
 import org.junit.jupiter.api.Test;
@@ -27,7 +27,6 @@ import org.mockito.Mock;
 import org.mockito.Mockito;
 
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyString;
 
 /**
@@ -59,7 +58,6 @@ public class WaitContainerCmdHeaderTest extends BaseDockerHeaderTest<WaitContain
     protected void setupMocks() {
         Mockito.when(dockerClient.waitContainerCmd(anyString())).thenReturn(mockObject);
         Mockito.when(mockObject.exec(any())).thenReturn(callback);
-        Mockito.when(callback.awaitStatusCode()).thenReturn(anyInt());
     }
 
     @Override
diff --git a/components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerNettyCmdExecFactoryTestIT.java b/components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerNettyCmdExecFactoryTest.java
similarity index 78%
rename from components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerNettyCmdExecFactoryTestIT.java
rename to components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerNettyCmdExecFactoryTest.java
index af13ee0..1e89266 100644
--- a/components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerNettyCmdExecFactoryTestIT.java
+++ b/components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerNettyCmdExecFactoryTest.java
@@ -22,8 +22,10 @@ import com.github.dockerjava.netty.NettyDockerCmdExecFactory;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
 
-public class DockerNettyCmdExecFactoryTestIT extends DockerITTestSupport {
+@EnabledIfSystemProperty(named = "docker.hostname", matches = ".*", disabledReason = "Requires a running docker environment")
+public class DockerNettyCmdExecFactoryTest extends DockerITTestSupport {
 
     @Test
     void testNettyCmdExecFactoryConfig() throws Exception {
@@ -40,7 +42,8 @@ public class DockerNettyCmdExecFactoryTestIT extends DockerITTestSupport {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:in")
-                        .to("docker://version?cmdExecFactory=" + NettyDockerCmdExecFactory.class.getName())
+                        .toF("docker://version?host={{docker.hostname}}&port={{docker.port}}&cmdExecFactory=%s",
+                                NettyDockerCmdExecFactory.class.getName())
                         .log("${body}")
                         .to("mock:result");
             }
diff --git a/components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerProducerTestIT.java b/components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerProducerTest.java
similarity index 76%
rename from components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerProducerTestIT.java
rename to components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerProducerTest.java
index c728fde..e3e88bb 100644
--- a/components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerProducerTestIT.java
+++ b/components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerProducerTest.java
@@ -21,11 +21,14 @@ import java.util.concurrent.TimeUnit;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
 
 /**
- * Integration test listing images on Docker Platform
+ * Integration test listing images on Docker Platform. For this test to run you need to inform the docker host name via
+ * -Ddocker.hostname=my.host.com and the port via -Ddocker.port=2375
  */
-public class DockerProducerTestIT extends DockerITTestSupport {
+@EnabledIfSystemProperty(named = "docker.hostname", matches = ".*", disabledReason = "Requires a running docker environment")
+public class DockerProducerTest extends DockerITTestSupport {
 
     @Test
     void testDocker() throws Exception {
@@ -42,7 +45,7 @@ public class DockerProducerTestIT extends DockerITTestSupport {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:in")
-                        .to("docker://imagelist?maxTotalConnections=10")
+                        .to("docker://imagelist?maxTotalConnections=10&host={{docker.hostname}}&port={{docker.port}}")
                         .log("${body}")
                         .to("mock:result");
             }
diff --git a/components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerStatsConsumerTestIT.java b/components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerStatsConsumerTest.java
similarity index 67%
rename from components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerStatsConsumerTestIT.java
rename to components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerStatsConsumerTest.java
index 05a845c..61f0856 100644
--- a/components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerStatsConsumerTestIT.java
+++ b/components/camel-docker/src/test/java/org/apache/camel/component/docker/it/DockerStatsConsumerTest.java
@@ -21,14 +21,15 @@ import java.util.concurrent.TimeUnit;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
 
 /**
- * Integration test consuming statistics on Docker Platform
+ * Integration test consuming statistics on Docker Platform. This is a manual test which verifies whether Camel can
+ * consume the stats from a docker instance. For this test to run you need to inform the container ID via
+ * -D=id-of-the-container, the docker host name via -Ddocker.hostname=my.host.com and the port via -Ddocker.port=2375
  */
-public class DockerStatsConsumerTestIT extends DockerITTestSupport {
-
-    private static final String CONTAINER_ID = "470b9b823e6c";
-
+@EnabledIfSystemProperty(named = "docker.test.container.id", matches = ".*", disabledReason = "Requires a running container")
+public class DockerStatsConsumerTest extends DockerITTestSupport {
     @Test
     void testDocker() throws Exception {
 
@@ -42,7 +43,7 @@ public class DockerStatsConsumerTestIT extends DockerITTestSupport {
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
-                fromF("docker://stats?containerId=%s", CONTAINER_ID)
+                from("docker://stats?containerId={{docker.test.container.id}}&host={{docker.hostname}}&port={{docker.port}}")
                         .log("${body}")
                         .to("mock:result");
             }