You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2016/06/27 16:19:34 UTC

[3/4] incubator-taverna-common-activities git commit: Improving test cases and adding minor code changes based on recent code review feedbacks.

Improving test cases and adding minor code changes based on recent code review feedbacks.


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/003b859a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/tree/003b859a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/diff/003b859a

Branch: refs/heads/docker
Commit: 003b859aef79ccd436dd27c74d333a7ac214d99c
Parents: d4be680
Author: Nadeesh Dilanga <na...@gmail.com>
Authored: Sat Jun 25 02:49:28 2016 -0400
Committer: Nadeesh Dilanga <na...@gmail.com>
Committed: Sat Jun 25 02:49:28 2016 -0400

----------------------------------------------------------------------
 taverna-docker-activity/pom.xml                 | 18 ++--
 .../activities/docker/DockerActivity.java       | 22 ++---
 .../docker/DockerContainerConfiguration.java    |  2 +
 .../DockerContainerConfigurationImpl.java       | 11 +++
 .../activities/docker/DockerRemoteConfig.java   |  9 --
 .../taverna/activities/docker/RemoteClient.java | 11 +--
 .../docker/test/DockerActivityTest.java         | 95 ++++++++++++++++++++
 .../docker/test/TestDockerCommands.java         | 18 ++--
 8 files changed, 139 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/003b859a/taverna-docker-activity/pom.xml
----------------------------------------------------------------------
diff --git a/taverna-docker-activity/pom.xml b/taverna-docker-activity/pom.xml
index 8a2fc51..515e9bb 100644
--- a/taverna-docker-activity/pom.xml
+++ b/taverna-docker-activity/pom.xml
@@ -92,12 +92,18 @@
 			<version>${junit.version}</version>
 			<scope>test</scope>
 		</dependency>
-		<!--<dependency>-->
-			<!--<groupId>org.apache.taverna.engine</groupId>-->
-			<!--<artifactId>taverna-activity-test-utils</artifactId>-->
-			<!--<version>${taverna.engine.version}</version>-->
-			<!--<scope>test</scope>-->
-		<!--</dependency>-->
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-activity-test-utils</artifactId>
+			<version>${taverna.engine.version}</version>
+			<scope>test</scope>
+            <exclusions>
+                <exclusion>  <!-- declare the exclusion here -->
+                    <groupId>com.fasterxml.jackson.jaxrs</groupId>
+                    <artifactId>jackson-jaxrs-json-provider</artifactId>
+                </exclusion>
+            </exclusions>
+		</dependency>
 		<dependency>
 			<groupId>org.apache.taverna.engine</groupId>
 			<artifactId>taverna-workflowmodel-impl</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/003b859a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerActivity.java
----------------------------------------------------------------------
diff --git a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerActivity.java b/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerActivity.java
index aff0115..e31f09f 100644
--- a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerActivity.java
+++ b/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerActivity.java
@@ -45,27 +45,27 @@ public class DockerActivity extends AbstractAsynchronousActivity<JsonNode> {
 
     private DockerContainerConfiguration containerConfiguration;
 
-    private static final String ACTION = "action";
+    public static final String ACTION = "action";
 
-    private static final String INSPECT = "inspect";
+    public static final String INSPECT = "inspect";
 
-    private static final String CREATE_CONTAINER = "create-container";
+    public static final String CREATE_CONTAINER = "create-container";
 
-    private static final String START_CONTAINER = "start-container";
+    public static final String START_CONTAINER = "start-container";
 
-    private static final String STOP_CONTAINER = "stop-container";
+    public static final String STOP_CONTAINER = "stop-container";
 
-    private static final String LIST_CONTAINERS = "list-containers";
+    public static final String LIST_CONTAINERS = "list-containers";
 
-    private static final String OUT_CONTAINER_ID = "container-id";
+    public static final String OUT_CONTAINER_ID = "container-id";
 
-    private static final String OUT_IMAGE_ID = "container-id";
+    public static final String OUT_IMAGE_ID = "container-id";
 
-    private static final String OUT_IMAGE_AUTHOR = "image-author";
+    public static final String OUT_IMAGE_AUTHOR = "image-author";
 
-    private static final String OUT_IMAGE_CONTAINER = "image-container";
+    public static final String OUT_IMAGE_CONTAINER = "image-container";
 
-    private static final String IN_IMAGE_NAME = "image-name";
+    public static final String IN_IMAGE_NAME = "image-name";
 
     private static Logger LOG = Logger.getLogger(DockerActivity.class);
 

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/003b859a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerContainerConfiguration.java
----------------------------------------------------------------------
diff --git a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerContainerConfiguration.java b/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerContainerConfiguration.java
index 526fdc0..77e5204 100644
--- a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerContainerConfiguration.java
+++ b/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerContainerConfiguration.java
@@ -26,6 +26,8 @@ public interface DockerContainerConfiguration {
 
     public String getCmd();
 
+    public DockerRemoteConfig getDockerRemoteConfig();
+
     //TODO add all remaining getters
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/003b859a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerContainerConfigurationImpl.java
----------------------------------------------------------------------
diff --git a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerContainerConfigurationImpl.java b/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerContainerConfigurationImpl.java
index 0f3380c..dc335ff 100644
--- a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerContainerConfigurationImpl.java
+++ b/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerContainerConfigurationImpl.java
@@ -122,6 +122,9 @@ public class DockerContainerConfigurationImpl extends AbstractConfigurable  impl
     public static final String NETWORKING_CONFIG = "networkingConfig";
 
 
+    private DockerRemoteConfig dockerRemoteConfig;
+
+
     public DockerContainerConfigurationImpl(ConfigurationManager configurationManager){
         super(configurationManager);
     }
@@ -130,6 +133,14 @@ public class DockerContainerConfigurationImpl extends AbstractConfigurable  impl
         super(null);
     }
 
+    public DockerRemoteConfig getDockerRemoteConfig() {
+        return dockerRemoteConfig;
+    }
+
+    public void setDockerRemoteConfig(DockerRemoteConfig dockerRemoteConfig) {
+        this.dockerRemoteConfig = dockerRemoteConfig;
+    }
+
     public String getName() {
        return this.getInternalPropertyMap().get(NAME);
     }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/003b859a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerRemoteConfig.java
----------------------------------------------------------------------
diff --git a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerRemoteConfig.java b/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerRemoteConfig.java
index 3999253..8ab0eda 100644
--- a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerRemoteConfig.java
+++ b/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerRemoteConfig.java
@@ -25,7 +25,6 @@ public class DockerRemoteConfig {
     private String registryPassword;
     private String registryEmail;
     private String registryUrl;
-    private String dockerConfig;
     private String dockerCertPath;
     private boolean dockerTlsVerify;
     private String apiVersion = "1.21";
@@ -70,14 +69,6 @@ public class DockerRemoteConfig {
         this.registryUrl = registryUrl;
     }
 
-    public String getDockerConfig() {
-        return dockerConfig;
-    }
-
-    public void setDockerConfig(String dockerConfig) {
-        this.dockerConfig = dockerConfig;
-    }
-
     public String getDockerCertPath() {
         return dockerCertPath;
     }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/003b859a/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 3c7c030..2f1d4c3 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
@@ -50,13 +50,10 @@ public class RemoteClient {
 
     public RemoteClient(DockerContainerConfiguration containerConfig) {
         this.containerConfig = containerConfig;
+        init(containerConfig.getDockerRemoteConfig());
     }
 
-    public DockerRemoteConfig getRemoteConfig() {
-        return remoteConfig;
-    }
-
-    public void init(DockerRemoteConfig remoteConfig) {
+    private void init(DockerRemoteConfig remoteConfig) {
         this.remoteConfig = remoteConfig;
         DockerClientConfig config = config();
         dockerClient = DockerClientBuilder.getInstance(config).build();
@@ -141,10 +138,6 @@ public class RemoteClient {
             builder.withDockerCertPath(remoteConfig.getDockerCertPath());
         }
 
-        if(remoteConfig.getDockerConfig() != null){
-            builder.withDockerConfig(remoteConfig.getDockerConfig());
-        }
-
         if(remoteConfig.getRegistryUrl() != null){
             builder.withRegistryUrl(remoteConfig.getRegistryUrl());
         }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/003b859a/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
new file mode 100755
index 0000000..4759e4c
--- /dev/null
+++ b/taverna-docker-activity/src/test/java/org/apache/taverna/activities/docker/test/DockerActivityTest.java
@@ -0,0 +1,95 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+package org.apache.taverna.activities.docker.test;
+
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.apache.taverna.activities.docker.DockerActivity;
+import org.apache.taverna.activities.docker.DockerContainerConfiguration;
+import org.apache.taverna.activities.docker.DockerContainerConfigurationImpl;
+import org.apache.taverna.activities.docker.DockerRemoteConfig;
+import org.apache.taverna.activities.testutils.ActivityInvoker;
+import org.apache.taverna.reference.T2Reference;
+import org.apache.taverna.workflowmodel.AbstractPort;
+import org.apache.taverna.workflowmodel.Edits;
+import org.apache.taverna.workflowmodel.impl.EditsImpl;
+import org.apache.taverna.workflowmodel.processor.activity.impl.ActivityInputPortImpl;
+import org.apache.taverna.workflowmodel.processor.activity.impl.ActivityOutputPortImpl;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+public class DockerActivityTest {
+
+    private static final String IMAGE_NAME = "training/webapp";
+
+    private static final String CONTAINER_NAME = "test-container";
+
+	private ObjectNode activityConfiguration;
+
+    private DockerContainerConfigurationImpl containerConfiguration;
+
+	@Before
+	public void setup() throws Exception {
+        activityConfiguration = JsonNodeFactory.instance.objectNode();
+
+        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.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");
+        containerConfiguration.setDockerRemoteConfig(remoteConfig);
+
+    }
+
+	/**
+	 * Tests a simple script (String output = input + "_returned") to ensure the script is invoked correctly.
+	 * @throws Exception
+	 */
+	@Test
+	public void testInspectImage() throws Exception {
+		DockerActivity activity = new DockerActivity(containerConfiguration);
+        activity.configure(activityConfiguration);
+
+		Map<String,Object> inputs = new HashMap<String,Object>();
+        inputs.put(DockerActivity.ACTION, DockerActivity.INSPECT);
+        inputs.put(DockerActivity.IN_IMAGE_NAME, IMAGE_NAME);
+
+		Map<String, Class<?>> expectedOutputs = new HashMap<String, Class<?>>();
+		expectedOutputs.put("response_body", T2Reference.class);
+
+		Map<String,Object> outputs = ActivityInvoker.invokeAsyncActivity(activity, inputs, expectedOutputs);
+        System.out.println(outputs.size());
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/003b859a/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 5f44e2b..0bbb612 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
@@ -27,6 +27,7 @@ import org.apache.taverna.activities.docker.RemoteClient;
 import org.junit.Assert;
 import org.junit.Test;
 
+import java.io.File;
 import java.util.List;
 
 public class TestDockerCommands {
@@ -39,14 +40,6 @@ public class TestDockerCommands {
 
     private static final String DOCKER_LOGIN_SUCCESS = "Login Succeeded";
 
-    public static void main(String[] args) {
-        TestDockerCommands commands = new TestDockerCommands();
-        commands.testLogin();
-//        commands.testInspectImage();
-        commands.testListContainers();
-//      commands.testCreateContainer();
-    }
-
     public TestDockerCommands(){
         DockerContainerConfigurationImpl containerConfiguration = new DockerContainerConfigurationImpl(new TestConfigurationManager());
         containerConfiguration.getInternalPropertyMap().put(DockerContainerConfigurationImpl.NAME,CONTAINER_NAME);
@@ -57,11 +50,12 @@ public class TestDockerCommands {
         remoteConfig.setDockerHost("tcp://192.168.99.100:2376");
         remoteConfig.setApiVersion("1.21");
         remoteConfig.setDockerTlsVerify(true);
-        remoteConfig.setDockerCertPath("/Users/Nadeesh/Documents/docker/");
-        remoteConfig.setDockerConfig("/home/user/.docker");
-        remoteConfig.setRegistryUrl("https://registry-1.docker.io/v2/library/busybox/manifests/latest");
+
+        // 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");
+        containerConfiguration.setDockerRemoteConfig(remoteConfig);
         remoteClient = new RemoteClient(containerConfiguration);
-        remoteClient.init(remoteConfig);
     }
 
     @Test