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;
+    }
+
 }

Reply via email to