You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2013/12/13 17:41:50 UTC

svn commit: r1550764 - in /airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration: BaseCaseIT.java ForEachCaseIT.java WorkflowIntegrationTestBase.java WorkflowSamplesCaseIT.java

Author: chathuri
Date: Fri Dec 13 16:41:50 2013
New Revision: 1550764

URL: http://svn.apache.org/r1550764
Log:
applying Sachith's patch for AIRAVATA-963 with some improvements

Added:
    airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/WorkflowIntegrationTestBase.java
Modified:
    airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java
    airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/ForEachCaseIT.java
    airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/WorkflowSamplesCaseIT.java

Modified: airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java?rev=1550764&r1=1550763&r2=1550764&view=diff
==============================================================================
--- airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java (original)
+++ airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java Fri Dec 13 16:41:50 2013
@@ -21,20 +21,10 @@
 
 package org.apache.airavata.integration;
 
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
 import junit.framework.Assert;
-
 import org.apache.airavata.client.AiravataAPIFactory;
 import org.apache.airavata.client.api.AiravataAPI;
-import org.apache.airavata.client.api.ExperimentAdvanceOptions;
+import org.apache.airavata.client.api.ApplicationManager;
 import org.apache.airavata.client.api.builder.DescriptorBuilder;
 import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
 import org.apache.airavata.client.api.exception.DescriptorAlreadyExistsException;
@@ -44,180 +34,34 @@ import org.apache.airavata.commons.gfac.
 import org.apache.airavata.commons.gfac.type.HostDescription;
 import org.apache.airavata.commons.gfac.type.ServiceDescription;
 import org.apache.airavata.registry.api.PasswordCallback;
-import org.apache.airavata.registry.api.impl.WorkflowExecutionDataImpl;
 import org.apache.airavata.registry.api.workflow.ApplicationJob;
-import org.apache.airavata.registry.api.workflow.ExperimentData;
-import org.apache.airavata.registry.api.workflow.InputData;
-import org.apache.airavata.registry.api.workflow.NodeExecutionData;
-import org.apache.airavata.registry.api.workflow.OutputData;
 import org.apache.airavata.schemas.gfac.DataType;
 import org.apache.airavata.schemas.gfac.HostDescriptionType;
 import org.apache.airavata.schemas.gfac.InputParameterType;
 import org.apache.airavata.schemas.gfac.OutputParameterType;
 import org.apache.airavata.workflow.model.wf.Workflow;
-import org.apache.airavata.workflow.model.wf.WorkflowInput;
-import org.apache.airavata.ws.monitor.EventData;
-import org.apache.airavata.ws.monitor.EventDataListenerAdapter;
-import org.apache.airavata.ws.monitor.EventDataRepository;
-import org.apache.airavata.ws.monitor.Monitor;
-import org.apache.airavata.ws.monitor.MonitorUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.airavata.ws.monitor.*;
 import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
 
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * Integration test class.
  */
-public class BaseCaseIT {
-
-    private final Logger log = LoggerFactory.getLogger(BaseCaseIT.class);
-
-    private int port;
-    private String serverUrl;
-    private String serverContextName;
-
-    private String registryURL;
-
-    private String gatewayName = "default";
-    private String userName = "admin";
-    private String password = "admin";
-
-    private static final int TIME_OUT = 20000;
-
-    private static final int TRIES = 3;
-
-    private AiravataAPI airavataAPI;
-
-    protected void log(String message) {
-        log.info(message);
-    }
-
-    public Logger getLog() {
-        return log;
-    }
-
-    public int getPort() {
-        return port;
-    }
-
-    public String getServerUrl() {
-        return serverUrl;
-    }
-
-    public String getServerContextName() {
-        return serverContextName;
-    }
-
-    public String getRegistryURL() {
-        return registryURL;
-    }
-
-    public String getGatewayName() {
-        return gatewayName;
-    }
-
-    public String getUserName() {
-        return userName;
-    }
-
-    public AiravataAPI getAiravataAPI() {
-        return airavataAPI;
-    }
-
-    public String getPassword() {
-        return password;
-    }
+public class BaseCaseIT extends WorkflowIntegrationTestBase {
 
     public BaseCaseIT() throws Exception {
         setUpEnvironment();
     }
 
-    public void setUpEnvironment() throws Exception {
-
-        log("..................Validating server logs .............................");
-        // TODO validate logs
-
-		setRegistryURL(createRegistryURL());
-
-        log("Configurations - Registry URL : " + getRegistryURL());
-
-        PasswordCallback passwordCallback = new PasswordCallbackImpl();
-        AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
-                passwordCallback);
-
-        checkServerStartup(airavataAPI);
-
-        log("Server successfully started .............................");
-        log("Running tests .............................");
-    }
-
-	private String createRegistryURL() {
-		log("Reading test server configurations ...");
-
-        String strPort = System.getProperty("test.server.port");
-
-        if (strPort == null) {
-            strPort = "8080";
-        }
-
-        String strHost = System.getProperty("test.server.url");
-
-        if (strHost == null) {
-            strHost = "localhost";
-        }
-
-        String strContext = System.getProperty("test.server.context");
-
-        if (strContext == null) {
-            strContext = "airavata";
-        }
-
-        port = Integer.parseInt(strPort);
-        serverUrl = strHost;
-        serverContextName = strContext;
-
-        log("Configurations - port : " + port);
-        log("Configurations - serverUrl : " + serverUrl);
-        log("Configurations - serverContext : " + serverContextName);
-
-        String registryURL = "http://" + serverUrl + ":" + port + "/" + serverContextName + "/services/registry";
-		return registryURL;
-	}
-
-    protected void checkServerStartup(AiravataAPI airavataAPI) throws Exception {
-
-        int tries = 0;
-
-        while (true) {
-
-            if (tries == TRIES) {
-                log("Server not responding. Cannot continue with integration tests ...");
-                throw new Exception("Server not responding !");
-            }
-
-            log("Checking server is running, try - " + tries);
-
-            URI eventingServiceURL = airavataAPI.getAiravataManager().getEventingServiceURL();
-
-            URI messageBoxServiceURL = airavataAPI.getAiravataManager().getMessageBoxServiceURL();
-
-            URI workflowInterpreterServiceURL = airavataAPI.getAiravataManager().getWorkflowInterpreterServiceURL();
-
-            if (eventingServiceURL == null || messageBoxServiceURL == null
-                    || workflowInterpreterServiceURL == null) {
-
-                log.info("Waiting till server initializes ........");
-                Thread.sleep(TIME_OUT);
-            } else {
-                break;
-            }
-
-            ++tries;
-        }
-
-    }
-
     @BeforeTest
     public void setUp() throws Exception {
 
@@ -226,7 +70,7 @@ public class BaseCaseIT {
                 passwordCallback);
     }
 
-    @Test(groups = { "setupTests" })
+    @Test(groups = {"setupTests"})
     public void testSetup() {
 
         Version version = this.airavataAPI.getVersion();
@@ -237,7 +81,7 @@ public class BaseCaseIT {
 
     }
 
-    @Test(groups = { "setupTests" }, dependsOnMethods = { "testSetup" })
+    @Test(groups = {"setupTests"}, dependsOnMethods = {"testSetup"})
     public void testURLs() throws AiravataAPIInvocationException {
         URI eventingServiceURL = this.airavataAPI.getAiravataManager().getEventingServiceURL();
         Assert.assertNotNull(eventingServiceURL);
@@ -246,7 +90,7 @@ public class BaseCaseIT {
         Assert.assertNotNull(messageBoxServiceURL);
     }
 
-    @Test(groups = { "echoGroup" }, dependsOnGroups = { "setupTests" })
+    @Test(groups = {"echoGroup"}, dependsOnGroups = {"setupTests"})
     public void testEchoService() throws Exception {
 
         DescriptorBuilder descriptorBuilder = airavataAPI.getDescriptorBuilder();
@@ -255,9 +99,10 @@ public class BaseCaseIT {
                 "127.0.0.1");
 
         log("Adding host description ....");
-        airavataAPI.getApplicationManager().addHostDescription(hostDescription);
 
-        Assert.assertTrue(airavataAPI.getApplicationManager().isHostDescriptorExists(
+        addHostDescriptor(hostDescription);
+        ApplicationManager applicationManager = airavataAPI.getApplicationManager();
+        Assert.assertTrue(applicationManager.isHostDescriptorExists(
                 hostDescription.getType().getHostName()));
 
         List<InputParameterType> inputParameters = new ArrayList<InputParameterType>();
@@ -270,8 +115,10 @@ public class BaseCaseIT {
                 inputParameters, outputParameters);
 
         log("Adding service description ...");
-        airavataAPI.getApplicationManager().addServiceDescription(serviceDescription);
-        Assert.assertTrue(airavataAPI.getApplicationManager().isServiceDescriptorExists(
+
+        addServiceDescriptor(serviceDescription, "Echo");
+
+        Assert.assertTrue(applicationManager.isServiceDescriptorExists(
                 serviceDescription.getType().getName()));
 
         // Deployment descriptor
@@ -279,17 +126,20 @@ public class BaseCaseIT {
                 .buildApplicationDeploymentDescription("EchoApplication", OsUtils.getEchoExecutable(), OsUtils.getTempFolderPath());
 
         log("Adding deployment description ...");
-        airavataAPI.getApplicationManager().addApplicationDescription(serviceDescription, hostDescription,
-                applicationDeploymentDescription);
 
-        Assert.assertTrue(airavataAPI.getApplicationManager().isApplicationDescriptorExists(
+        addApplicationDescriptor(applicationDeploymentDescription, serviceDescription, hostDescription, "EchoApplication");
+        Assert.assertTrue(applicationManager.isApplicationDescriptorExists(
                 serviceDescription.getType().getName(), hostDescription.getType().getHostName(),
                 applicationDeploymentDescription.getType().getApplicationName().getStringValue()));
 
         log("Saving workflow ...");
         Workflow workflow = new Workflow(getWorkflowComposeContent("src/test/resources/EchoWorkflow.xwf"));
-        airavataAPI.getWorkflowManager().addWorkflow(workflow);
 
+        boolean workflowExists = airavataAPI.getWorkflowManager().isWorkflowExists(workflow.getName());
+//        Workflow worflowToBeAdded = airavataAPI.getWorkflowManager().getWorkflow(workflow.getName());
+        if (!workflowExists) {
+            airavataAPI.getWorkflowManager().addWorkflow(workflow);
+        }
         Assert.assertTrue(airavataAPI.getWorkflowManager().isWorkflowExists(workflow.getName()));
 
         log("Workflow setting up completed ...");
@@ -297,13 +147,13 @@ public class BaseCaseIT {
         runWorkFlow(workflow, Arrays.asList("echo_output=Airavata_Test"));
     }
 
-    @Test(groups = { "performanceTesting" })
+    @Test(groups = {"performanceTesting"})
     public void testExistsHostDescriptor() throws AiravataAPIInvocationException {
 
         airavataAPI.getApplicationManager().isHostDescriptorExists("localhost");
     }
 
-    @Test(groups = { "echoGroup" }/* , dependsOnMethods = { "testEchoService" } */)
+    @Test(groups = {"echoGroup"}/* , dependsOnMethods = { "testEchoService" } */)
     public void testUpdateEchoService() throws Exception {
 
         DescriptorBuilder descriptorBuilder = airavataAPI.getDescriptorBuilder();
@@ -392,44 +242,13 @@ public class BaseCaseIT {
 
     protected void runWorkFlow(Workflow workflow, List<String> inputValues) throws Exception {
 
-        AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
-                new PasswordCallbackImpl());
-        List<WorkflowInput> workflowInputs = setupInputs(workflow, inputValues);
-        String workflowName = workflow.getName();
-        ExperimentAdvanceOptions options = airavataAPI.getExecutionManager().createExperimentAdvanceOptions(
-                workflowName, getUserName(), null);
-
-        options.getCustomSecuritySettings().getCredentialStoreSecuritySettings().setTokenId("1234");
-
-        String experimentId = airavataAPI.getExecutionManager().runExperiment(workflowName, workflowInputs, options);
-
-        Assert.assertNotNull(experimentId);
-
-        log.info("Run workflow completed ....");
-        log.info("Starting monitoring ....");
-
+        String experimentId = executeWorkflow(workflow, inputValues);
         monitor(experimentId);
     }
 
     protected void runWorkFlowWithoutMonitor(Workflow workflow, List<String> inputValues) throws Exception {
 
-        AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
-                new PasswordCallbackImpl());
-        List<WorkflowInput> workflowInputs = setupInputs(workflow, inputValues);
-        String workflowName = workflow.getName();
-        ExperimentAdvanceOptions options = airavataAPI.getExecutionManager().createExperimentAdvanceOptions(
-                workflowName, getUserName(), null);
-        String experimentId = airavataAPI.getExecutionManager().runExperiment(workflowName, workflowInputs, options,
-                new EventDataListenerAdapter() {
-                    public void notify(EventDataRepository eventDataRepo, EventData eventData) {
-                        // do nothing
-                    }
-                });
-
-        Assert.assertNotNull(experimentId);
-        airavataAPI.getExecutionManager().waitForExperimentTermination(experimentId);
-
-        log.info("Run workflow completed ....");
+        String experimentId = executeWorkflow(workflow, inputValues);
 
         verifyOutput(experimentId, "echo_output=Airavata_Test");
 
@@ -438,50 +257,6 @@ public class BaseCaseIT {
         Assert.assertEquals(applicationJobs.size(), 1);
     }
 
-    protected void verifyOutput(String experimentId, String outputVerifyingString) throws Exception {
-        AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
-                new PasswordCallbackImpl());
-        log.info("Experiment ID Returned : " + experimentId);
-
-        ExperimentData experimentData = airavataAPI.getProvenanceManager().getExperimentData(experimentId);
-
-        log.info("Verifying output ...");
-
-        List<WorkflowExecutionDataImpl> workflowInstanceData = experimentData.getWorkflowExecutionDataList();
-
-        Assert.assertFalse("Workflow instance data cannot be empty !", workflowInstanceData.isEmpty());
-
-        for (WorkflowExecutionDataImpl data : workflowInstanceData) {
-            List<NodeExecutionData> nodeDataList = data.getNodeDataList();
-            for (NodeExecutionData nodeData : nodeDataList) {
-
-                Assert.assertFalse("Node execution data list cannot be empty !", nodeDataList.isEmpty());
-
-                for (OutputData outputData : nodeData.getOutputData()) {
-                    Assert.assertEquals("Airavata_Test", outputData.getValue());
-                }
-                for (InputData inputData : nodeData.getInputData()) {
-                    Assert.assertEquals(outputVerifyingString, inputData.getValue());
-                }
-            }
-        }
-    }
-
-    private List<WorkflowInput> setupInputs(Workflow workflow, List<String> inputValues) throws Exception {
-        AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
-                new PasswordCallbackImpl());
-        List<WorkflowInput> workflowInputs = airavataAPI.getWorkflowManager().getWorkflowInputs(workflow.getName());
-
-        Assert.assertEquals(workflowInputs.size(), inputValues.size());
-
-        int i = 0;
-        for (String valueString : inputValues) {
-            workflowInputs.get(i).setValue(valueString);
-            ++i;
-        }
-        return workflowInputs;
-    }
-
     protected String getWorkflowComposeContent(String fileName) throws IOException {
         File f = new File(".");
         log.debug(f.getAbsolutePath());
@@ -528,8 +303,8 @@ public class BaseCaseIT {
         experimentMonitor.waitForCompletion();
     }
 
-	public void setRegistryURL(String registryURL) {
-		this.registryURL = registryURL;
-	}
+    public void setRegistryURL(String registryURL) {
+        this.registryURL = registryURL;
+    }
 
 }

Modified: airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/ForEachCaseIT.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/ForEachCaseIT.java?rev=1550764&r1=1550763&r2=1550764&view=diff
==============================================================================
--- airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/ForEachCaseIT.java (original)
+++ airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/ForEachCaseIT.java Fri Dec 13 16:41:50 2013
@@ -21,246 +21,69 @@
 
 package org.apache.airavata.integration;
 
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
 import junit.framework.Assert;
-
 import org.apache.airavata.client.AiravataAPIFactory;
-import org.apache.airavata.client.api.AiravataAPI;
-import org.apache.airavata.client.api.ExperimentAdvanceOptions;
 import org.apache.airavata.client.api.builder.DescriptorBuilder;
 import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
 import org.apache.airavata.client.api.exception.DescriptorAlreadyExistsException;
-import org.apache.airavata.client.api.exception.WorkflowAlreadyExistsException;
-import org.apache.airavata.common.utils.StringUtil;
 import org.apache.airavata.commons.gfac.type.ApplicationDescription;
 import org.apache.airavata.commons.gfac.type.HostDescription;
 import org.apache.airavata.commons.gfac.type.ServiceDescription;
 import org.apache.airavata.registry.api.PasswordCallback;
-import org.apache.airavata.registry.api.impl.WorkflowExecutionDataImpl;
-import org.apache.airavata.registry.api.workflow.ExperimentData;
-import org.apache.airavata.registry.api.workflow.InputData;
-import org.apache.airavata.registry.api.workflow.NodeExecutionData;
-import org.apache.airavata.registry.api.workflow.WorkflowNodeType.WorkflowNode;
 import org.apache.airavata.schemas.gfac.DataType;
 import org.apache.airavata.schemas.gfac.HostDescriptionType;
 import org.apache.airavata.schemas.gfac.InputParameterType;
 import org.apache.airavata.schemas.gfac.OutputParameterType;
-import org.apache.airavata.workflow.model.component.ComponentException;
-import org.apache.airavata.workflow.model.graph.GraphException;
-import org.apache.airavata.workflow.model.wf.Workflow;
-import org.apache.airavata.workflow.model.wf.WorkflowInput;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
 
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * Integration test class.
  */
-public class ForEachCaseIT {
-
-    private final Logger log = LoggerFactory.getLogger(ForEachCaseIT.class);
-
-    private int port;
-    private String serverUrl;
-    private String serverContextName;
-
-    private String registryURL;
-
-    private String gatewayName = "default";
-    private String userName = "admin";
-    private String password = "admin";
-
-    private static final int TIME_OUT = 20000;
-
-    private static final int TRIES = 3;
-
-    private AiravataAPI airavataAPI;
-
-    protected void log(String message) {
-        log.info(message);
-    }
-
-    public Logger getLog() {
-        return log;
-    }
-
-    public int getPort() {
-        return port;
-    }
-
-    public String getServerUrl() {
-        return serverUrl;
-    }
-
-    public String getServerContextName() {
-        return serverContextName;
-    }
-
-    public String getRegistryURL() {
-        return registryURL;
-    }
-
-    public String getGatewayName() {
-        return gatewayName;
-    }
-
-    public String getUserName() {
-        return userName;
-    }
-
-    public AiravataAPI getAiravataAPI() {
-        return airavataAPI;
-    }
-
-    public String getPassword() {
-        return password;
-    }
+public class ForEachCaseIT extends WorkflowIntegrationTestBase {
 
     public ForEachCaseIT() throws Exception {
         setUpEnvironment();
     }
 
-    public void setUpEnvironment() throws Exception {
-
-        log("..................Validating server logs .............................");
-        // TODO validate logs
-
-		setRegistryURL(createRegistryURL());
-
-        log("Configurations - Registry URL : " + getRegistryURL());
-
-        PasswordCallback passwordCallback = new PasswordCallbackImpl();
-        AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
-                passwordCallback);
-
-        checkServerStartup(airavataAPI);
-
-        log("Server successfully started .............................");
-        log("Running tests .............................");
-    }
-
-	private String createRegistryURL() {
-		log("Reading test server configurations ...");
-
-        String strPort = System.getProperty("test.server.port");
-
-        if (strPort == null) {
-            strPort = "8080";
-        }
-
-        String strHost = System.getProperty("test.server.url");
-
-        if (strHost == null) {
-            strHost = "localhost";
-        }
-
-        String strContext = System.getProperty("test.server.context");
-
-        if (strContext == null) {
-            strContext = "airavata";
-        }
-
-        port = Integer.parseInt(strPort);
-        serverUrl = strHost;
-        serverContextName = strContext;
-
-        log("Configurations - port : " + port);
-        log("Configurations - serverUrl : " + serverUrl);
-        log("Configurations - serverContext : " + serverContextName);
-
-        String registryURL = "http://" + serverUrl + ":" + port + "/" + serverContextName + "/services/registry";
-		return registryURL;
-	}
-
-    protected void checkServerStartup(AiravataAPI airavataAPI) throws Exception {
-
-        int tries = 0;
-
-        while (true) {
-
-            if (tries == TRIES) {
-                log("Server not responding. Cannot continue with integration tests ...");
-                throw new Exception("Server not responding !");
-            }
-
-            log("Checking server is running, try - " + tries);
-
-            URI eventingServiceURL = airavataAPI.getAiravataManager().getEventingServiceURL();
-
-            URI messageBoxServiceURL = airavataAPI.getAiravataManager().getMessageBoxServiceURL();
-
-            URI workflowInterpreterServiceURL = airavataAPI.getAiravataManager().getWorkflowInterpreterServiceURL();
-
-            if (eventingServiceURL == null || messageBoxServiceURL == null
-                    || workflowInterpreterServiceURL == null) {
-
-                log.info("Waiting till server initializes ........");
-                Thread.sleep(TIME_OUT);
-            } else {
-                break;
-            }
-
-            ++tries;
-        }
-
-    }
-
     @BeforeTest
     public void setUp() throws Exception {
 
         PasswordCallback passwordCallback = new PasswordCallbackImpl();
         this.airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
                 passwordCallback);
+
         setupDescriptors();
     }
 
-    @Test(groups = { "forEachGroup" }, dependsOnGroups = { "echoGroup" })
+    @Test(groups = {"forEachGroup"})
     public void testForEachUsecases() throws Exception {
-		executeExperiment("src/test/resources/ForEachBasicWorkflow.xwf", Arrays.asList("10","20"), Arrays.asList("10 20"));
-		executeExperiment("src/test/resources/ForEachBasicWorkflow.xwf", Arrays.asList("10","20,30"), Arrays.asList("10 20","10 30"));
-		executeExperiment("src/test/resources/ForEachBasicWorkflow.xwf", Arrays.asList("10,20","30,40"), Arrays.asList("10 30","20 40"));
-		
-		executeExperiment("src/test/resources/ForEachEchoWorkflow.xwf", Arrays.asList("10","20"), Arrays.asList("10,20"));
-		executeExperiment("src/test/resources/ForEachEchoWorkflow.xwf", Arrays.asList("10","20,30"), Arrays.asList("10,20","10,30"));
-		executeExperiment("src/test/resources/ForEachEchoWorkflow.xwf", Arrays.asList("10,20","30,40"), Arrays.asList("10,30","20,40"));
+        executeExperiment("src/test/resources/ForEachBasicWorkflow.xwf", Arrays.asList("10", "20"), Arrays.asList("10 20"));
+        executeExperiment("src/test/resources/ForEachBasicWorkflow.xwf", Arrays.asList("10", "20,30"), Arrays.asList("10 20", "10 30"));
+        executeExperiment("src/test/resources/ForEachBasicWorkflow.xwf", Arrays.asList("10,20", "30,40"), Arrays.asList("10 30", "20 40"));
+
+        executeExperiment("src/test/resources/ForEachEchoWorkflow.xwf", Arrays.asList("10", "20"), Arrays.asList("10,20"));
+        executeExperiment("src/test/resources/ForEachEchoWorkflow.xwf", Arrays.asList("10", "20,30"), Arrays.asList("10,20", "10,30"));
+        executeExperiment("src/test/resources/ForEachEchoWorkflow.xwf", Arrays.asList("10,20", "30,40"), Arrays.asList("10,30", "20,40"));
     }
 
-	private void executeExperiment(String workflowFilePath,
-			List<String> inputs, List<String> outputs) throws GraphException,
-			ComponentException, IOException, WorkflowAlreadyExistsException,
-			AiravataAPIInvocationException, Exception {
-        log("Saving workflow ...");
-
-		Workflow workflow = new Workflow(getWorkflowComposeContent(workflowFilePath));
-		if (!airavataAPI.getWorkflowManager().isWorkflowExists(workflow.getName())){
-			airavataAPI.getWorkflowManager().addWorkflow(workflow);
-		}
-		Assert.assertTrue(airavataAPI.getWorkflowManager().isWorkflowExists(workflow.getName()));
-
-        log("Workflow setting up completed ...");
-
-		runWorkFlow(workflow, inputs,outputs);
-	}
-
-	private void setupDescriptors() throws AiravataAPIInvocationException,
-			DescriptorAlreadyExistsException, IOException {
-		DescriptorBuilder descriptorBuilder = airavataAPI.getDescriptorBuilder();
-		HostDescription hostDescription = descriptorBuilder.buildHostDescription(HostDescriptionType.type, "localhost2",
+    private void setupDescriptors() throws AiravataAPIInvocationException,
+            DescriptorAlreadyExistsException, IOException {
+        DescriptorBuilder descriptorBuilder = airavataAPI.getDescriptorBuilder();
+        HostDescription hostDescription = descriptorBuilder.buildHostDescription(HostDescriptionType.type, "localhost2",
                 "127.0.0.1");
 
         log("Adding host description ....");
-        airavataAPI.getApplicationManager().addHostDescription(hostDescription);
+        addHostDescriptor(hostDescription);
         Assert.assertTrue(airavataAPI.getApplicationManager().isHostDescriptorExists(hostDescription.getType().getHostName()));
-        
+
         List<InputParameterType> inputParameters = new ArrayList<InputParameterType>();
         inputParameters.add(descriptorBuilder.buildInputParameterType("data1", "data1", DataType.STRING));
         inputParameters.add(descriptorBuilder.buildInputParameterType("data2", "data2", DataType.STRING));
@@ -270,137 +93,43 @@ public class ForEachCaseIT {
 
         ServiceDescription serviceDescription = descriptorBuilder.buildServiceDescription("comma_app", "comma_app",
                 inputParameters, outputParameters);
-        
+
         ServiceDescription serviceDescription2 = descriptorBuilder.buildServiceDescription("echo_app", "echo_app",
                 inputParameters, outputParameters);
 
         log("Adding service description ...");
-        airavataAPI.getApplicationManager().addServiceDescription(serviceDescription);
+        addServiceDescriptor(serviceDescription, "comma_app");
         Assert.assertTrue(airavataAPI.getApplicationManager().isServiceDescriptorExists(
                 serviceDescription.getType().getName()));
-        
-        airavataAPI.getApplicationManager().addServiceDescription(serviceDescription2);
+
+        addServiceDescriptor(serviceDescription2, "echo_app");
         Assert.assertTrue(airavataAPI.getApplicationManager().isServiceDescriptorExists(
                 serviceDescription2.getType().getName()));
 
         // Deployment descriptor
         File executable;
-        if(OsUtils.isWindows()) {
-        	executable = getFile("src/test/resources/comma_data.bat");
+        if (OsUtils.isWindows()) {
+            executable = getFile("src/test/resources/comma_data.bat");
         } else {
-        	executable = getFile("src/test/resources/comma_data.sh");
-        	Runtime.getRuntime().exec("chmod +x "+executable.getAbsolutePath());
+            executable = getFile("src/test/resources/comma_data.sh");
+            Runtime.getRuntime().exec("chmod +x " + executable.getAbsolutePath());
         }
-        
-		ApplicationDescription applicationDeploymentDescription = descriptorBuilder
+
+        ApplicationDescription applicationDeploymentDescription = descriptorBuilder
                 .buildApplicationDeploymentDescription("comma_app_localhost", executable.getAbsolutePath(), OsUtils.getTempFolderPath());
-		ApplicationDescription applicationDeploymentDescription2 = descriptorBuilder
+        ApplicationDescription applicationDeploymentDescription2 = descriptorBuilder
                 .buildApplicationDeploymentDescription("echo_app_localhost", OsUtils.getEchoExecutable(), OsUtils.getTempFolderPath());
 
         log("Adding deployment description ...");
-        airavataAPI.getApplicationManager().addApplicationDescription(serviceDescription, hostDescription,
-                applicationDeploymentDescription);
+        addApplicationDescriptor(applicationDeploymentDescription, serviceDescription, hostDescription, "comma_app_localhost");
 
         Assert.assertTrue(airavataAPI.getApplicationManager().isApplicationDescriptorExists(
                 serviceDescription.getType().getName(), hostDescription.getType().getHostName(),
                 applicationDeploymentDescription.getType().getApplicationName().getStringValue()));
-        
-        airavataAPI.getApplicationManager().addApplicationDescription(serviceDescription2, hostDescription,
-                applicationDeploymentDescription2);
 
+        addApplicationDescriptor(applicationDeploymentDescription2, serviceDescription2, hostDescription, "echo_app_localhost");
         Assert.assertTrue(airavataAPI.getApplicationManager().isApplicationDescriptorExists(
                 serviceDescription2.getType().getName(), hostDescription.getType().getHostName(),
                 applicationDeploymentDescription2.getType().getApplicationName().getStringValue()));
-	}
-
-    protected void runWorkFlow(Workflow workflow, List<String> inputValues, List<String> outputValue) throws Exception {
-        AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
-                new PasswordCallbackImpl());
-        List<WorkflowInput> workflowInputs = setupInputs(workflow, inputValues);
-        String workflowName = workflow.getName();
-        ExperimentAdvanceOptions options = airavataAPI.getExecutionManager().createExperimentAdvanceOptions(
-                workflowName, getUserName(), null);
-
-        String experimentId = airavataAPI.getExecutionManager().runExperiment(workflowName, workflowInputs, options);
-
-        Assert.assertNotNull(experimentId);
-
-        log.info("Run workflow completed ....");
-
-        airavataAPI.getExecutionManager().waitForExperimentTermination(experimentId);
-        verifyOutput(experimentId, outputValue);
     }
-
-    protected void verifyOutput(String experimentId, List<String> outputVerifyingString) throws Exception {
-        AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
-                new PasswordCallbackImpl());
-        log.info("Experiment ID Returned : " + experimentId);
-
-        ExperimentData experimentData = airavataAPI.getProvenanceManager().getExperimentData(experimentId);
-
-        log.info("Verifying output ...");
-
-        List<WorkflowExecutionDataImpl> workflowInstanceData = experimentData.getWorkflowExecutionDataList();
-
-        Assert.assertFalse("Workflow instance data cannot be empty !", workflowInstanceData.isEmpty());
-
-        for (WorkflowExecutionDataImpl data : workflowInstanceData) {
-            List<NodeExecutionData> nodeDataList = data.getNodeDataList(WorkflowNode.OUTPUTNODE);
-            Assert.assertFalse("Node execution data list cannot be empty !", nodeDataList.isEmpty());
-            for (NodeExecutionData nodeData : nodeDataList) {
-                for (InputData inputData : nodeData.getInputData()) {
-                	String[] outputValues = StringUtil.getElementsFromString(inputData.getValue());
-                	Assert.assertEquals(outputVerifyingString.size(), outputValues.length);
-                	for(int i=0;i<outputValues.length;i++){
-                		Assert.assertEquals(outputVerifyingString.get(i), outputValues[i]);	
-                	}
-                }
-            }
-        }
-    }
-
-    private List<WorkflowInput> setupInputs(Workflow workflow, List<String> inputValues) throws Exception {
-        AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
-                new PasswordCallbackImpl());
-        List<WorkflowInput> workflowInputs = airavataAPI.getWorkflowManager().getWorkflowInputs(workflow.getName());
-
-        Assert.assertEquals(workflowInputs.size(), inputValues.size());
-
-        int i = 0;
-        for (String valueString : inputValues) {
-            workflowInputs.get(i).setValue(valueString);
-            ++i;
-        }
-        return workflowInputs;
-    }
-
-    protected String getWorkflowComposeContent(String fileName) throws IOException {
-        File file = getFile(fileName);
-
-        BufferedReader reader = new BufferedReader(new FileReader(file));
-        String line;
-        StringBuilder buffer = new StringBuilder();
-        while ((line = reader.readLine()) != null) {
-            buffer.append(line);
-        }
-        reader.close();
-        log.debug("Workflow compose - " + buffer.toString());
-        return buffer.toString();
-    }
-
-	private File getFile(String fileName) {
-		File f = new File(".");
-        log.debug(f.getAbsolutePath());
-
-        File file = new File(fileName);
-        if (!file.exists()) {
-        	file = new File("modules/integration-tests/"+fileName);
-        }
-		return file;
-	}
-
-	public void setRegistryURL(String registryURL) {
-		this.registryURL = registryURL;
-	}
-
 }

Added: airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/WorkflowIntegrationTestBase.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/WorkflowIntegrationTestBase.java?rev=1550764&view=auto
==============================================================================
--- airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/WorkflowIntegrationTestBase.java (added)
+++ airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/WorkflowIntegrationTestBase.java Fri Dec 13 16:41:50 2013
@@ -0,0 +1,364 @@
+package org.apache.airavata.integration;
+
+import junit.framework.Assert;
+import org.apache.airavata.client.AiravataAPIFactory;
+import org.apache.airavata.client.api.AiravataAPI;
+import org.apache.airavata.client.api.ApplicationManager;
+import org.apache.airavata.client.api.ExperimentAdvanceOptions;
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.client.api.exception.WorkflowAlreadyExistsException;
+import org.apache.airavata.common.utils.StringUtil;
+import org.apache.airavata.commons.gfac.type.ApplicationDescription;
+import org.apache.airavata.commons.gfac.type.HostDescription;
+import org.apache.airavata.commons.gfac.type.ServiceDescription;
+import org.apache.airavata.registry.api.PasswordCallback;
+import org.apache.airavata.registry.api.impl.WorkflowExecutionDataImpl;
+import org.apache.airavata.registry.api.workflow.*;
+import org.apache.airavata.workflow.model.component.ComponentException;
+import org.apache.airavata.workflow.model.graph.GraphException;
+import org.apache.airavata.workflow.model.wf.Workflow;
+import org.apache.airavata.workflow.model.wf.WorkflowInput;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.net.URI;
+import java.util.List;
+
+/**
+ * Since most of the workflow integration tests have common functionality to register, start and monitor workflows, this
+ * class will act as the aggregation of those methods.
+ */
+public abstract class WorkflowIntegrationTestBase {
+
+    protected final Logger log = LoggerFactory.getLogger(WorkflowIntegrationTestBase.class);
+
+    protected int port;
+    protected String serverUrl;
+    protected String serverContextName;
+
+    protected String registryURL;
+
+    protected String gatewayName = "default";
+    protected String userName = "admin";
+    protected String password = "admin";
+
+    protected static final int TIME_OUT = 20000;
+
+    protected static final int TRIES = 3;
+
+    protected AiravataAPI airavataAPI;
+
+    protected ApplicationManager applicationManager;
+
+    protected void log(String message) {
+        log.info(message);
+    }
+
+    public Logger getLog() {
+        return log;
+    }
+
+    public int getPort() {
+        return port;
+    }
+
+    public String getServerUrl() {
+        return serverUrl;
+    }
+
+    public String getServerContextName() {
+        return serverContextName;
+    }
+
+    public String getRegistryURL() {
+        return registryURL;
+    }
+
+    public String getGatewayName() {
+        return gatewayName;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public AiravataAPI getAiravataAPI() {
+        return airavataAPI;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setUpEnvironment() throws Exception {
+
+        log("..................Validating server logs .............................");
+        // TODO validate logs
+
+        setRegistryURL(createRegistryURL());
+
+        log("Configurations - Registry URL : " + getRegistryURL());
+
+        PasswordCallback passwordCallback = new PasswordCallbackImpl();
+        AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
+                passwordCallback);
+
+        checkServerStartup(airavataAPI);
+
+        log("Server successfully started .............................");
+        log("Running tests .............................");
+    }
+
+    protected String createRegistryURL() {
+        log("Reading test server configurations ...");
+
+        String strPort = System.getProperty("test.server.port");
+
+        if (strPort == null) {
+            strPort = "8080";
+        }
+
+        String strHost = System.getProperty("test.server.url");
+
+        if (strHost == null) {
+            strHost = "localhost";
+        }
+
+        String strContext = System.getProperty("test.server.context");
+
+        if (strContext == null) {
+            strContext = "airavata";
+        }
+
+        port = Integer.parseInt(strPort);
+        serverUrl = strHost;
+        serverContextName = strContext;
+
+        log("Configurations - port : " + port);
+        log("Configurations - serverUrl : " + serverUrl);
+        log("Configurations - serverContext : " + serverContextName);
+
+        String registryURL = "http://" + serverUrl + ":" + port + "/" + serverContextName + "/services/registry";
+        return registryURL;
+    }
+
+    protected void checkServerStartup(AiravataAPI airavataAPI) throws Exception {
+
+        int tries = 0;
+
+        while (true) {
+
+            if (tries == TRIES) {
+                log("Server not responding. Cannot continue with integration tests ...");
+                throw new Exception("Server not responding !");
+            }
+
+            log("Checking server is running, try - " + tries);
+
+            URI eventingServiceURL = airavataAPI.getAiravataManager().getEventingServiceURL();
+
+            URI messageBoxServiceURL = airavataAPI.getAiravataManager().getMessageBoxServiceURL();
+
+            URI workflowInterpreterServiceURL = airavataAPI.getAiravataManager().getWorkflowInterpreterServiceURL();
+
+            if (eventingServiceURL == null || messageBoxServiceURL == null
+                    || workflowInterpreterServiceURL == null) {
+
+                log.info("Waiting till server initializes ........");
+                Thread.sleep(TIME_OUT);
+            } else {
+                break;
+            }
+
+            ++tries;
+        }
+
+    }
+
+    protected void executeExperiment(String workflowFilePath,
+                                     List<String> inputs, List<String> outputs) throws GraphException,
+            ComponentException, IOException, WorkflowAlreadyExistsException,
+            AiravataAPIInvocationException, Exception {
+        log("Saving workflow ...");
+
+        Workflow workflow = new Workflow(getWorkflowComposeContent(workflowFilePath));
+        if (!airavataAPI.getWorkflowManager().isWorkflowExists(workflow.getName())) {
+            airavataAPI.getWorkflowManager().addWorkflow(workflow);
+        }
+        Assert.assertTrue(airavataAPI.getWorkflowManager().isWorkflowExists(workflow.getName()));
+
+        log("Workflow setting up completed ...");
+
+        executeWorkflow(workflow, inputs, outputs);
+    }
+
+
+    protected void executeWorkflow(Workflow workflow, List<String> inputValues, List<String> outputValue) throws Exception {
+        String experimentId = executeWorkflow(workflow, inputValues);
+        airavataAPI.getExecutionManager().waitForExperimentTermination(experimentId);
+        verifyOutput(experimentId, outputValue);
+    }
+
+    protected String executeWorkflow(Workflow workflow, List<String> inputValues) throws Exception {
+        AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
+                new PasswordCallbackImpl());
+        List<WorkflowInput> workflowInputs = setupInputs(workflow, inputValues);
+        String workflowName = workflow.getName();
+        ExperimentAdvanceOptions options = airavataAPI.getExecutionManager().createExperimentAdvanceOptions(
+                workflowName, getUserName(), null);
+
+        options.getCustomSecuritySettings().getCredentialStoreSecuritySettings().setTokenId("1234");
+
+        String experimentId = airavataAPI.getExecutionManager().runExperiment(workflowName, workflowInputs, options);
+
+        Assert.assertNotNull(experimentId);
+
+        log.info("Run workflow completed ....");
+        log.info("Starting monitoring ....");
+        return experimentId;
+    }
+
+
+    protected void verifyOutput(String experimentId, List<String> outputVerifyingString) throws Exception {
+        AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
+                new PasswordCallbackImpl());
+        log.info("Experiment ID Returned : " + experimentId);
+
+        ExperimentData experimentData = airavataAPI.getProvenanceManager().getExperimentData(experimentId);
+
+        log.info("Verifying output ...");
+
+        List<WorkflowExecutionDataImpl> workflowInstanceData = experimentData.getWorkflowExecutionDataList();
+
+        Assert.assertFalse("Workflow instance data cannot be empty !", workflowInstanceData.isEmpty());
+
+        for (WorkflowExecutionDataImpl data : workflowInstanceData) {
+            List<NodeExecutionData> nodeDataList = data.getNodeDataList(WorkflowNodeType.WorkflowNode.OUTPUTNODE);
+            Assert.assertFalse("Node execution data list cannot be empty !", nodeDataList.isEmpty());
+            for (NodeExecutionData nodeData : nodeDataList) {
+                for (InputData inputData : nodeData.getInputData()) {
+                    String[] outputValues = StringUtil.getElementsFromString(inputData.getValue());
+                    Assert.assertEquals(outputVerifyingString.size(), outputValues.length);
+                    for (int i = 0; i < outputValues.length; i++) {
+                        Assert.assertEquals(outputVerifyingString.get(i), outputValues[i]);
+                    }
+                }
+            }
+        }
+    }
+
+    protected void verifyOutput(String experimentId, String outputVerifyingString) throws Exception {
+        AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
+                new PasswordCallbackImpl());
+        log.info("Experiment ID Returned : " + experimentId);
+
+        ExperimentData experimentData = airavataAPI.getProvenanceManager().getExperimentData(experimentId);
+
+        log.info("Verifying output ...");
+
+        List<WorkflowExecutionDataImpl> workflowInstanceData = experimentData.getWorkflowExecutionDataList();
+
+        Assert.assertFalse("Workflow instance data cannot be empty !", workflowInstanceData.isEmpty());
+
+        for (WorkflowExecutionDataImpl data : workflowInstanceData) {
+            List<NodeExecutionData> nodeDataList = data.getNodeDataList();
+            for (NodeExecutionData nodeData : nodeDataList) {
+
+                Assert.assertFalse("Node execution data list cannot be empty !", nodeDataList.isEmpty());
+
+                for (OutputData outputData : nodeData.getOutputData()) {
+                    Assert.assertEquals("Airavata_Test", outputData.getValue());
+                }
+                for (InputData inputData : nodeData.getInputData()) {
+                    Assert.assertEquals(outputVerifyingString, inputData.getValue());
+                }
+            }
+        }
+    }
+
+    protected List<WorkflowInput> setupInputs(Workflow workflow, List<String> inputValues) throws Exception {
+        AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
+                new PasswordCallbackImpl());
+        List<WorkflowInput> workflowInputs = airavataAPI.getWorkflowManager().getWorkflowInputs(workflow.getName());
+
+        Assert.assertEquals(workflowInputs.size(), inputValues.size());
+
+        int i = 0;
+        for (String valueString : inputValues) {
+            workflowInputs.get(i).setValue(valueString);
+            ++i;
+        }
+        return workflowInputs;
+    }
+
+    protected String getWorkflowComposeContent(String fileName) throws IOException {
+        File file = getFile(fileName);
+
+        BufferedReader reader = new BufferedReader(new FileReader(file));
+        String line;
+        StringBuilder buffer = new StringBuilder();
+        while ((line = reader.readLine()) != null) {
+            buffer.append(line);
+        }
+        reader.close();
+        log.debug("Workflow compose - " + buffer.toString());
+        return buffer.toString();
+    }
+
+    protected File getFile(String fileName) {
+        File f = new File(".");
+        log.debug(f.getAbsolutePath());
+
+        File file = new File(fileName);
+        if (!file.exists()) {
+            file = new File("modules/integration-tests/" + fileName);
+        }
+        return file;
+    }
+
+    public void setRegistryURL(String registryURL) {
+        this.registryURL = registryURL;
+    }
+
+    /*
+    * When running the tests multiple times in the same server, when the application, Host, service descriptions are
+    * there already the tests fail. But using these functions for the tests prevents that from happening.
+    * */
+    protected void addHostDescriptor(HostDescription hostDescription) throws AiravataAPIInvocationException {
+        applicationManager = airavataAPI.getApplicationManager();
+        List<HostDescription> allHostDescriptions = applicationManager.getAllHostDescriptions();
+        boolean isHostDescAvailable = false;
+        for (HostDescription allHostDescription : allHostDescriptions) {
+            if (allHostDescription.toXML().equals(hostDescription.toXML())) {
+                isHostDescAvailable = true;
+            }
+        }
+
+        if (!isHostDescAvailable) {
+            applicationManager.addHostDescription(hostDescription);
+        }
+    }
+
+    protected void addServiceDescriptor(ServiceDescription serviceDescription, String serviceName) throws AiravataAPIInvocationException {
+        applicationManager = airavataAPI.getApplicationManager();
+        ServiceDescription prevailingServiceDescription = applicationManager.getServiceDescription(serviceName);
+        if (prevailingServiceDescription == null) {
+            applicationManager.addServiceDescription(serviceDescription);
+        }
+    }
+
+    protected void addApplicationDescriptor(ApplicationDescription applicationDescription, ServiceDescription serviceDescription, HostDescription hostDescription, String appeName) throws AiravataAPIInvocationException {
+//        ApplicationDescription prevailingApplicationDescription = applicationManager.getApplicationDescriptor(serviceDescription.getType().getName(),
+//                hostDescription.getType().getHostName(), appeName);
+        boolean descriptorExists = applicationManager.isApplicationDescriptorExists(serviceDescription.getType().getName(), hostDescription.getType().getHostName(), appeName);
+        if (!descriptorExists) {
+            applicationManager.addApplicationDescription(serviceDescription, hostDescription,
+                    applicationDescription);
+        }
+    }
+
+}

Modified: airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/WorkflowSamplesCaseIT.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/WorkflowSamplesCaseIT.java?rev=1550764&r1=1550763&r2=1550764&view=diff
==============================================================================
--- airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/WorkflowSamplesCaseIT.java (original)
+++ airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/WorkflowSamplesCaseIT.java Fri Dec 13 16:41:50 2013
@@ -21,17 +21,7 @@
 
 package org.apache.airavata.integration;
 
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Arrays;
-import java.util.List;
-
 import junit.framework.Assert;
-
 import org.apache.airavata.client.AiravataAPIFactory;
 import org.apache.airavata.client.api.AiravataAPI;
 import org.apache.airavata.client.api.ExperimentAdvanceOptions;
@@ -53,157 +43,22 @@ import org.slf4j.LoggerFactory;
 import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
 
+import java.io.IOException;
+import java.net.URI;
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * Integration test class.
  */
-public class WorkflowSamplesCaseIT {
+public class WorkflowSamplesCaseIT extends WorkflowIntegrationTestBase {
 
     private final Logger log = LoggerFactory.getLogger(WorkflowSamplesCaseIT.class);
 
-    private int port;
-    private String serverUrl;
-    private String serverContextName;
-
-    private String registryURL;
-
-    private String gatewayName = "default";
-    private String userName = "admin";
-    private String password = "admin";
-
-    private static final int TIME_OUT = 20000;
-
-    private static final int TRIES = 3;
-
-    private AiravataAPI airavataAPI;
-
-    protected void log(String message) {
-        log.info(message);
-    }
-
-    public Logger getLog() {
-        return log;
-    }
-
-    public int getPort() {
-        return port;
-    }
-
-    public String getServerUrl() {
-        return serverUrl;
-    }
-
-    public String getServerContextName() {
-        return serverContextName;
-    }
-
-    public String getRegistryURL() {
-        return registryURL;
-    }
-
-    public String getGatewayName() {
-        return gatewayName;
-    }
-
-    public String getUserName() {
-        return userName;
-    }
-
-    public AiravataAPI getAiravataAPI() {
-        return airavataAPI;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
     public WorkflowSamplesCaseIT() throws Exception {
         setUpEnvironment();
     }
 
-    public void setUpEnvironment() throws Exception {
-
-        log("..................Validating server logs .............................");
-        // TODO validate logs
-
-		setRegistryURL(createRegistryURL());
-
-        log("Configurations - Registry URL : " + getRegistryURL());
-
-        PasswordCallback passwordCallback = new PasswordCallbackImpl();
-        AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
-                passwordCallback);
-
-        checkServerStartup(airavataAPI);
-
-        log("Server successfully started .............................");
-    }
-
-	private String createRegistryURL() {
-		log("Reading test server configurations ...");
-
-        String strPort = System.getProperty("test.server.port");
-
-        if (strPort == null) {
-            strPort = "8080";
-        }
-
-        String strHost = System.getProperty("test.server.url");
-
-        if (strHost == null) {
-            strHost = "localhost";
-        }
-
-        String strContext = System.getProperty("test.server.context");
-
-        if (strContext == null) {
-            strContext = "airavata";
-        }
-
-        port = Integer.parseInt(strPort);
-        serverUrl = strHost;
-        serverContextName = strContext;
-
-        log("Configurations - port : " + port);
-        log("Configurations - serverUrl : " + serverUrl);
-        log("Configurations - serverContext : " + serverContextName);
-
-        String registryURL = "http://" + serverUrl + ":" + port + "/" + serverContextName + "/services/registry";
-		return registryURL;
-	}
-
-    protected void checkServerStartup(AiravataAPI airavataAPI) throws Exception {
-
-        int tries = 0;
-
-        while (true) {
-
-            if (tries == TRIES) {
-                log("Server not responding. Cannot continue with integration tests ...");
-                throw new Exception("Server not responding !");
-            }
-
-            log("Checking server is running, try - " + tries);
-
-            URI eventingServiceURL = airavataAPI.getAiravataManager().getEventingServiceURL();
-
-            URI messageBoxServiceURL = airavataAPI.getAiravataManager().getMessageBoxServiceURL();
-
-            URI workflowInterpreterServiceURL = airavataAPI.getAiravataManager().getWorkflowInterpreterServiceURL();
-
-            if (eventingServiceURL == null || messageBoxServiceURL == null
-                    || workflowInterpreterServiceURL == null) {
-
-                log.info("Waiting till server initializes ........");
-                Thread.sleep(TIME_OUT);
-            } else {
-                break;
-            }
-
-            ++tries;
-        }
-
-    }
-
     @BeforeTest
     public void setUp() throws Exception {
 
@@ -212,33 +67,33 @@ public class WorkflowSamplesCaseIT {
                 passwordCallback);
     }
 
-    @Test(groups = { "workflowSamplesGroup" }/*, dependsOnGroups = { "forEachGroup" }*/)
+    @Test(groups = {"workflowSamplesGroup"}/*, dependsOnGroups = { "forEachGroup" }*/)
     public void testWorkflowSamples() throws Exception {
         log("Running tests .............................");
         executeExperiment("target/samples/workflows/SimpleEcho.xwf", Arrays.asList("Test_Value"), "Test_Value");
-        executeExperiment("target/samples/workflows/LevenshteinDistance.xwf", Arrays.asList("abc","def"), Arrays.asList("3"));
+        executeExperiment("target/samples/workflows/LevenshteinDistance.xwf", Arrays.asList("abc", "def"), Arrays.asList("3"));
 //        executeExperiment("target/samples/workflows/SimpleForEach.xwf", Arrays.asList("1,2","3,4"), Arrays.asList("4","6"));
 //        executeExperiment("target/samples/workflows/ComplexMath.xwf", Arrays.asList("15","16","18","21","25","30","36","43"), "5554");
 //		executeExperiment("target/samples/workflows/SimpleMath.xwf", Arrays.asList("15","16","18","21","25","30","36","43"), "204");
 //		executeExperiment("target/samples/workflows/ComplexForEach.xwf", Arrays.asList("1,2","3,4","5,6","7,8","9,10","11,12","13,14","15,16"), Arrays.asList("2027025","10321920"));
     }
 
-	private void executeExperiment(String workflowFilePath,
-			List<String> inputs, Object outputs) throws GraphException,
-			ComponentException, IOException, WorkflowAlreadyExistsException,
-			AiravataAPIInvocationException, Exception {
+    private void executeExperiment(String workflowFilePath,
+                                   List<String> inputs, Object outputs) throws GraphException,
+            ComponentException, IOException, WorkflowAlreadyExistsException,
+            AiravataAPIInvocationException, Exception {
         log("Saving workflow ...");
 
-		Workflow workflow = new Workflow(getWorkflowComposeContent(workflowFilePath));
-		if (!airavataAPI.getWorkflowManager().isWorkflowExists(workflow.getName())){
-			airavataAPI.getWorkflowManager().addWorkflow(workflow);
-		}
-		Assert.assertTrue(airavataAPI.getWorkflowManager().isWorkflowExists(workflow.getName()));
+        Workflow workflow = new Workflow(getWorkflowComposeContent(workflowFilePath));
+        if (!airavataAPI.getWorkflowManager().isWorkflowExists(workflow.getName())) {
+            airavataAPI.getWorkflowManager().addWorkflow(workflow);
+        }
+        Assert.assertTrue(airavataAPI.getWorkflowManager().isWorkflowExists(workflow.getName()));
 
         log("Workflow setting up completed ...");
 
-		runWorkFlow(workflow, inputs,outputs);
-	}
+        runWorkFlow(workflow, inputs, outputs);
+    }
 
     protected void runWorkFlow(Workflow workflow, List<String> inputValues, Object outputValue) throws Exception {
         AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
@@ -276,65 +131,21 @@ public class WorkflowSamplesCaseIT {
             Assert.assertFalse("Node execution data list cannot be empty !", nodeDataList.isEmpty());
             for (NodeExecutionData nodeData : nodeDataList) {
                 for (InputData inputData : nodeData.getInputData()) {
-                	if (outputVerifyingString instanceof List){
-                		@SuppressWarnings("unchecked")
-						List<String> outputs=(List<String>)outputVerifyingString;
-                		String[] outputValues = StringUtil.getElementsFromString(inputData.getValue());
-                    	Assert.assertEquals(outputs.size(), outputValues.length);
-                    	for(int i=0;i<outputValues.length;i++){
-                    		Assert.assertEquals(outputs.get(i), outputValues[i]);	
-                    	}	
-                	}else{
-                		Assert.assertEquals(outputVerifyingString.toString(), inputData.getValue());
-                	}
-                	
+                    if (outputVerifyingString instanceof List) {
+                        @SuppressWarnings("unchecked")
+                        List<String> outputs = (List<String>) outputVerifyingString;
+                        String[] outputValues = StringUtil.getElementsFromString(inputData.getValue());
+                        Assert.assertEquals(outputs.size(), outputValues.length);
+                        for (int i = 0; i < outputValues.length; i++) {
+                            Assert.assertEquals(outputs.get(i), outputValues[i]);
+                        }
+                    } else {
+                        Assert.assertEquals(outputVerifyingString.toString(), inputData.getValue());
+                    }
+
                 }
             }
         }
     }
 
-    private List<WorkflowInput> setupInputs(Workflow workflow, List<String> inputValues) throws Exception {
-        AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(), getUserName(),
-                new PasswordCallbackImpl());
-        List<WorkflowInput> workflowInputs = airavataAPI.getWorkflowManager().getWorkflowInputs(workflow.getName());
-
-        Assert.assertEquals(workflowInputs.size(), inputValues.size());
-
-        int i = 0;
-        for (String valueString : inputValues) {
-            workflowInputs.get(i).setValue(valueString);
-            ++i;
-        }
-        return workflowInputs;
-    }
-
-    protected String getWorkflowComposeContent(String fileName) throws IOException, URISyntaxException {
-        File file = getFile(fileName);
-
-        BufferedReader reader = new BufferedReader(new FileReader(file));
-        String line;
-        StringBuilder buffer = new StringBuilder();
-        while ((line = reader.readLine()) != null) {
-            buffer.append(line);
-        }
-        reader.close();
-        log.debug("Workflow compose - " + buffer.toString());
-        return buffer.toString();
-    }
-
-	private File getFile(String fileName) throws URISyntaxException {
-		File f = new File(".");
-		log.debug(f.getAbsolutePath());
-		
-		File file = new File(fileName);
-		if (!file.exists()) {
-			file = new File("modules/integration-tests/"+fileName);
-		}
-		return file;
-	}
-
-	public void setRegistryURL(String registryURL) {
-		this.registryURL = registryURL;
-	}
-
 }