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