Adding create container test case.
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/158a32f5 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/tree/158a32f5 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/diff/158a32f5 Branch: refs/heads/docker Commit: 158a32f5f31301400e0b40fc776113dfa88db242 Parents: 571880d Author: Nadeesh Dilanga <[email protected]> Authored: Tue Jul 5 23:14:56 2016 -0400 Committer: Nadeesh Dilanga <[email protected]> Committed: Tue Jul 5 23:14:56 2016 -0400 ---------------------------------------------------------------------- .../activities/docker/DockerActivity.java | 7 +- .../docker/test/DockerActivityTest.java | 71 ++++++++++++++++++-- 2 files changed, 72 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/158a32f5/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 bf3585e..873a12a 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 @@ -105,6 +105,7 @@ public class DockerActivity extends AbstractAsynchronousActivity<JsonNode> { if (CREATE_CONTAINER.equalsIgnoreCase(action)) { CreateContainerResponse response = remoteClient.createContainer(); + System.out.println("+++++" + response.toString()); outJson.put(OUT_CONTAINER_ID, response.getId()); } else if (INSPECT.equalsIgnoreCase(action)) { @@ -115,12 +116,14 @@ public class DockerActivity extends AbstractAsynchronousActivity<JsonNode> { outJson.put(OUT_IMAGE_AUTHOR, response.getAuthor()); outJson.put(OUT_IMAGE_CONTAINER, response.getContainer()); + } else if (LIST_CONTAINERS.equalsIgnoreCase(action)) { + + // TODO + } else if (START_CONTAINER.equalsIgnoreCase(action)) { // TODO } else if (STOP_CONTAINER.equalsIgnoreCase(action)) { // TODO - } else if (LIST_CONTAINERS.equalsIgnoreCase(action)) { - // TODO } //TODO add any more supporting actions responseBodyRef = referenceService.register(outJson.toString(), 0, true, context); http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/158a32f5/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 d31e625..8b095cf 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 @@ -19,11 +19,15 @@ 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; 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.Before; @@ -31,6 +35,7 @@ import org.junit.Test; import java.io.File; import java.util.HashMap; +import java.util.List; import java.util.Map; public class DockerActivityTest { @@ -44,13 +49,17 @@ public class DockerActivityTest { private DockerContainerConfigurationImpl containerConfiguration; - @Before + public static void main(String[] args) throws Exception { + DockerActivityTest test = new DockerActivityTest(); + test.setup(); + test.testCreateContainer(); + } + + @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(); @@ -71,7 +80,8 @@ public class DockerActivityTest { */ @Test public void testInspectImage() throws Exception { - DockerActivity activity = new DockerActivity(containerConfiguration); + containerConfiguration.getInternalPropertyMap().put(DockerContainerConfigurationImpl.IMAGE,IMAGE_NAME); + DockerActivity activity = new DockerActivity(containerConfiguration); activity.configure(activityConfiguration); Map<String,Object> inputs = new HashMap<String,Object>(); @@ -85,4 +95,57 @@ public class DockerActivityTest { System.out.println(outputs.get(DockerActivity.RESPONSE_BODY_KEY)); Assert.assertNotNull(outputs.get(DockerActivity.RESPONSE_BODY_KEY)); } + + /** + * Tests a simple script (String output = input + "_returned") to ensure the script is invoked correctly. + * @throws Exception + */ + @Test + public void testCreateContainer() throws Exception { + RemoteClient remoteClient = new RemoteClient(containerConfiguration); + Container container = getContainerFromName(remoteClient.listContainers(), CONTAINER_NAME); + if( container != null){ + System.out.println("#### Container already exists #### \n" + container.toString()); + Assert.assertNotNull(container); + return; + } + + containerConfiguration.getInternalPropertyMap().put(DockerContainerConfigurationImpl.IMAGE,IMAGE_NAME); + containerConfiguration.getInternalPropertyMap().put(DockerContainerConfigurationImpl.NAME, CONTAINER_NAME); + DockerActivity activity = new DockerActivity(containerConfiguration); + activity.configure(activityConfiguration); + + Map<String,Object> inputs = new HashMap<String,Object>(); + inputs.put(DockerActivity.ACTION, DockerActivity.CREATE_CONTAINER); + + Map<String, Class<?>> expectedOutputs = new HashMap<String, Class<?>>(); + expectedOutputs.put(DockerActivity.RESPONSE_BODY_KEY, String.class); + + Map<String,Object> outputs = ActivityInvoker.invokeAsyncActivity(activity, inputs, expectedOutputs); + System.out.println(outputs.get(DockerActivity.RESPONSE_BODY_KEY)); + Assert.assertNotNull(outputs.get(DockerActivity.RESPONSE_BODY_KEY)); + String id = new ObjectMapper().readTree((String)outputs.get(DockerActivity.RESPONSE_BODY_KEY)).get("container-id").textValue(); + Container containerNew = getContainerFromId(remoteClient.listContainers(), id); + Assert.assertNotNull(containerNew); + + } + + private Container getContainerFromName(List<Container> list, String name){ + for(Container container:list){ + if(container.getNames()[0].endsWith(name)){ + return container; + } + } + return null; + } + + private Container getContainerFromId(List<Container> list, String id){ + for(Container container:list){ + if(container.getId().equalsIgnoreCase(id)){ + return container; + } + } + return null; + } + }
