Docker Read me and code review fixes.

Project: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/commit/a483c883
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/tree/a483c883
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/diff/a483c883

Branch: refs/heads/docker
Commit: a483c8834cca8f4a1d3cf74c8b4f19fd8a04911a
Parents: d89c61b
Author: Nadeesh Dilanga <[email protected]>
Authored: Wed Jul 13 22:03:03 2016 -0400
Committer: Nadeesh Dilanga <[email protected]>
Committed: Wed Jul 13 22:03:03 2016 -0400

----------------------------------------------------------------------
 taverna-docker-activity/README.txt              | 30 ++++++++++++++++++++
 taverna-docker-activity/pom.xml                 |  4 +--
 .../taverna/activities/docker/RemoteClient.java |  1 -
 .../docker/test/DockerActivityTest.java         | 21 ++++++++++----
 .../docker/test/TestDockerCommands.java         | 16 +++++++----
 5 files changed, 58 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/a483c883/taverna-docker-activity/README.txt
----------------------------------------------------------------------
diff --git a/taverna-docker-activity/README.txt 
b/taverna-docker-activity/README.txt
new file mode 100644
index 0000000..2053ddf
--- /dev/null
+++ b/taverna-docker-activity/README.txt
@@ -0,0 +1,30 @@
+########################## Docker Activity Plugin ############################
+
+This module implements the taverna activity plugin for Docker. The plugin 
capable of following functionality.
+
+1. Inspect Image
+2. Create Container
+3. Start Container
+4. List Containers
+5. Stop Container  - TODO
+6. Delete Container - TODO
+
+Test module src/test/java/ covers each and every capability. 
org.apache.taverna.activities.docker.RemoteClient
+capable of executing docker commands over TCP on the actual remote docker host 
using the docker-java api.
+
+1. TestDockerCommands covers unit tests for each Docker commands that is 
supported by RemoteClient api.
+2. DockerActivityTest written on top of RemoteClient to support different 
docker commands.
+
+
+ Prerequisites
+
+1. Copy your key store files to src/test/java/resources/cert directory.
+  Example: If you are in Mac Copy files in /Users/Jack/.docker/machine/certs/, 
where you finds following files
+  ca-key.pem   ca.pem          cert.pem        key.pem
+
+2. Change DockerActivityTest.DOCKER_REMOTE to your docker remote host:port
+
+3. Change DockerActivityTest.DOCKER_REGISTRY to your docker registry (defaults 
to public docker registry)
+
+Then do mvn clean install to build the project and run the tests.
+##############################################################################
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/a483c883/taverna-docker-activity/pom.xml
----------------------------------------------------------------------
diff --git a/taverna-docker-activity/pom.xml b/taverna-docker-activity/pom.xml
index 97b646e..54e30df 100644
--- a/taverna-docker-activity/pom.xml
+++ b/taverna-docker-activity/pom.xml
@@ -112,7 +112,7 @@
                        <groupId>org.apache.taverna.engine</groupId>
                        <artifactId>taverna-activity-test-utils</artifactId>
                        <version>${taverna.engine.version}</version>
-                       <!--<scope>test</scope>-->
+                       <scope>test</scope>
             <exclusions>
                 <exclusion>  <!-- declare the exclusion here -->
                     <groupId>com.fasterxml.jackson.jaxrs</groupId>
@@ -124,7 +124,7 @@
                        <groupId>org.apache.taverna.engine</groupId>
                        <artifactId>taverna-workflowmodel-impl</artifactId>
                        <version>${taverna.engine.version}</version>
-                       <!--<scope>test</scope>-->
+                       <scope>test</scope>
             <exclusions>
                 <exclusion>  <!-- declare the exclusion here -->
                     <groupId>com.fasterxml.jackson.jaxrs</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/a483c883/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/RemoteClient.java
----------------------------------------------------------------------
diff --git 
a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/RemoteClient.java
 
b/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/RemoteClient.java
index aeabc58..43712c2 100644
--- 
a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/RemoteClient.java
+++ 
b/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/RemoteClient.java
@@ -45,7 +45,6 @@ public class RemoteClient {
 
     private static Logger LOG = Logger.getLogger(RemoteClient.class);
 
-
     public RemoteClient(DockerContainerConfiguration containerConfig) {
         this.containerConfig = containerConfig;
         init(containerConfig.getDockerRemoteConfig());

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/a483c883/taverna-docker-activity/src/test/java/org/apache/taverna/activities/docker/test/DockerActivityTest.java
----------------------------------------------------------------------
diff --git 
a/taverna-docker-activity/src/test/java/org/apache/taverna/activities/docker/test/DockerActivityTest.java
 
b/taverna-docker-activity/src/test/java/org/apache/taverna/activities/docker/test/DockerActivityTest.java
index 89af8bd..b14b8f6 100755
--- 
a/taverna-docker-activity/src/test/java/org/apache/taverna/activities/docker/test/DockerActivityTest.java
+++ 
b/taverna-docker-activity/src/test/java/org/apache/taverna/activities/docker/test/DockerActivityTest.java
@@ -22,7 +22,6 @@ package org.apache.taverna.activities.docker.test;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.github.dockerjava.api.command.CreateContainerResponse;
 import com.github.dockerjava.api.model.Container;
 import org.apache.taverna.activities.docker.DockerActivity;
 import org.apache.taverna.activities.docker.DockerContainerConfigurationImpl;
@@ -30,6 +29,7 @@ import 
org.apache.taverna.activities.docker.DockerRemoteConfig;
 import org.apache.taverna.activities.docker.RemoteClient;
 import org.apache.taverna.activities.testutils.ActivityInvoker;
 import org.junit.Assert;
+import org.junit.Assume;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -47,29 +47,38 @@ public class DockerActivityTest {
        private ObjectNode activityConfiguration;
 
     private DockerContainerConfigurationImpl containerConfiguration;
-    
+
+    public static final String CERT_PATH = "src/test/resources/cert";
+
+    public static final String DOCKER_REMOTE = "tcp://192.168.99.100:2376";
+
+    public static final String DOCKER_REGISTRY = 
"https://registry-1.docker.io/v2";;
+
+
 
     @Before
        public void setup() throws Exception {
-        activityConfiguration = JsonNodeFactory.instance.objectNode();
+        Assume.assumeTrue(new File(DockerActivityTest.CERT_PATH).list().length 
> 0);
 
+        activityConfiguration = JsonNodeFactory.instance.objectNode();
         containerConfiguration = new DockerContainerConfigurationImpl(new 
TestConfigurationManager());
         
containerConfiguration.getInternalPropertyMap().put(DockerContainerConfigurationImpl.CMD,"python,app.py");
         
containerConfiguration.getInternalPropertyMap().put(DockerContainerConfigurationImpl.EXPOSED_PORTS,
 "5000");
         
containerConfiguration.getInternalPropertyMap().put(DockerContainerConfigurationImpl.BINDINGS,
 "32772");
 
         DockerRemoteConfig remoteConfig = new DockerRemoteConfig();
-        remoteConfig.setDockerHost("tcp://192.168.99.100:2376");
+        remoteConfig.setDockerHost(DOCKER_REMOTE);
         remoteConfig.setApiVersion("1.21");
         remoteConfig.setDockerTlsVerify(true);
 
         // You need to copy your valid certificate file to resources directory 
in this test module as follows.
-        remoteConfig.setDockerCertPath(new 
File("src/test/resources/cert").getAbsolutePath());
-        remoteConfig.setRegistryUrl("https://registry-1.docker.io/v2";);
+        remoteConfig.setDockerCertPath(new File(CERT_PATH).getAbsolutePath());
+        remoteConfig.setRegistryUrl(DOCKER_REGISTRY);
         containerConfiguration.setDockerRemoteConfig(remoteConfig);
 
     }
 
+
        /**
         * Tests a simple script (String output = input + "_returned") to 
ensure the script is invoked correctly.
         * @throws Exception

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/a483c883/taverna-docker-activity/src/test/java/org/apache/taverna/activities/docker/test/TestDockerCommands.java
----------------------------------------------------------------------
diff --git 
a/taverna-docker-activity/src/test/java/org/apache/taverna/activities/docker/test/TestDockerCommands.java
 
b/taverna-docker-activity/src/test/java/org/apache/taverna/activities/docker/test/TestDockerCommands.java
index 0644545..8e7b47f 100644
--- 
a/taverna-docker-activity/src/test/java/org/apache/taverna/activities/docker/test/TestDockerCommands.java
+++ 
b/taverna-docker-activity/src/test/java/org/apache/taverna/activities/docker/test/TestDockerCommands.java
@@ -21,10 +21,13 @@ package org.apache.taverna.activities.docker.test;
 
 import com.github.dockerjava.api.command.InspectImageResponse;
 import com.github.dockerjava.api.model.Container;
+import org.apache.taverna.activities.docker.DockerActivity;
 import org.apache.taverna.activities.docker.DockerContainerConfigurationImpl;
 import org.apache.taverna.activities.docker.DockerRemoteConfig;
 import org.apache.taverna.activities.docker.RemoteClient;
 import org.junit.Assert;
+import org.junit.Assume;
+import org.junit.Before;
 import org.junit.Test;
 
 import java.io.File;
@@ -36,24 +39,27 @@ public class TestDockerCommands {
 
     private static final String IMAGE_NAME = "training/webapp";
 
-    private static final String CONTAINER_NAME = "test-container";
+    private static final String CONTAINER_NAME = "test-container-0";
 
     private static final String DOCKER_LOGIN_SUCCESS = "Login Succeeded";
 
-    public TestDockerCommands() {
+    @Before
+    public void setup(){
+        Assume.assumeTrue(new File(DockerActivityTest.CERT_PATH).list().length 
> 0);
+
         DockerContainerConfigurationImpl containerConfiguration = new 
DockerContainerConfigurationImpl(new TestConfigurationManager());
         
containerConfiguration.getInternalPropertyMap().put(DockerContainerConfigurationImpl.NAME,CONTAINER_NAME);
         
containerConfiguration.getInternalPropertyMap().put(DockerContainerConfigurationImpl.IMAGE,IMAGE_NAME);
         
containerConfiguration.getInternalPropertyMap().put(DockerContainerConfigurationImpl.CMD,"env");
 
         DockerRemoteConfig remoteConfig = new DockerRemoteConfig();
-        remoteConfig.setDockerHost("tcp://192.168.99.100:2376");
+        remoteConfig.setDockerHost(DockerActivityTest.DOCKER_REMOTE);
         remoteConfig.setApiVersion("1.21");
         remoteConfig.setDockerTlsVerify(true);
 
         // You need to copy your valid certificate file to resources directory 
in this test module as follows.
-        remoteConfig.setDockerCertPath(new 
File("src/test/resources/cert").getAbsolutePath());
-        remoteConfig.setRegistryUrl("https://registry-1.docker.io/v2";);
+        remoteConfig.setDockerCertPath(new 
File(DockerActivityTest.CERT_PATH).getAbsolutePath());
+        remoteConfig.setRegistryUrl(DockerActivityTest.DOCKER_REGISTRY);
         containerConfiguration.setDockerRemoteConfig(remoteConfig);
         remoteClient = new RemoteClient(containerConfiguration);
     }

Reply via email to