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 <[email protected]> Authored: Sat Jun 25 02:49:28 2016 -0400 Committer: Nadeesh Dilanga <[email protected]> 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
