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 2014/11/11 21:12:13 UTC
[09/50] [abbrv] airavata git commit: adding EC2 provider changes
adding EC2 provider changes
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/e9ee22b9
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/e9ee22b9
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/e9ee22b9
Branch: refs/heads/master
Commit: e9ee22b97d3c3d2a9f409ec1f8b99957792d6d68
Parents: 83ecde9
Author: chathuriw <ka...@gmail.com>
Authored: Wed Nov 5 10:14:50 2014 -0500
Committer: Chathuri Wimalasena <ka...@gmail.com>
Committed: Wed Nov 5 10:14:50 2014 -0500
----------------------------------------------------------------------
.../airavata/gfac/core/utils/GFacUtils.java | 15 +-
.../apache/airavata/gfac/ec2/EC2Provider.java | 46 ++-
.../airavata/gfac/ec2/EC2ProviderTest.java | 366 ++++++++++---------
3 files changed, 232 insertions(+), 195 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/e9ee22b9/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
index 1cb1250..be0d756 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
@@ -39,10 +39,7 @@ import org.apache.airavata.gfac.core.context.JobExecutionContext;
import org.apache.airavata.gfac.core.handler.GFacHandlerException;
import org.apache.airavata.gfac.core.states.GfacExperimentState;
import org.apache.airavata.gfac.core.states.GfacPluginState;
-import org.apache.airavata.model.appcatalog.computeresource.GlobusJobSubmission;
-import org.apache.airavata.model.appcatalog.computeresource.LOCALSubmission;
-import org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission;
-import org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission;
+import org.apache.airavata.model.appcatalog.computeresource.*;
import org.apache.airavata.model.workspace.experiment.*;
import org.apache.airavata.model.workspace.experiment.DataType;
import org.apache.airavata.persistance.registry.jpa.impl.RegistryFactory;
@@ -1288,5 +1285,15 @@ public class GFacUtils {
}
}
+ public static CloudJobSubmission getCloudJobSubmission (String submissionId) throws AppCatalogException{
+ try {
+ AppCatalog appCatalog = AppCatalogFactory.getAppCatalog();
+ return appCatalog.getComputeResource().getCloudJobSubmission(submissionId);
+ }catch (Exception e){
+ String errorMsg = "Error while retrieving SSH job submission with submission id : " + submissionId;
+ log.error(errorMsg, e);
+ throw new AppCatalogException(errorMsg, e);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/e9ee22b9/modules/gfac/gfac-ec2/src/main/java/org/apache/airavata/gfac/ec2/EC2Provider.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-ec2/src/main/java/org/apache/airavata/gfac/ec2/EC2Provider.java b/modules/gfac/gfac-ec2/src/main/java/org/apache/airavata/gfac/ec2/EC2Provider.java
index 5c5af53..53e0f93 100644
--- a/modules/gfac/gfac-ec2/src/main/java/org/apache/airavata/gfac/ec2/EC2Provider.java
+++ b/modules/gfac/gfac-ec2/src/main/java/org/apache/airavata/gfac/ec2/EC2Provider.java
@@ -28,6 +28,7 @@ import java.util.Calendar;
import java.util.List;
import java.util.Map;
+import org.airavata.appcatalog.cpi.AppCatalogException;
import org.apache.airavata.commons.gfac.type.ActualParameter;
import org.apache.airavata.commons.gfac.type.ApplicationDescription;
import org.apache.airavata.gfac.GFacException;
@@ -39,6 +40,10 @@ import org.apache.airavata.gfac.core.utils.GFacUtils;
import org.apache.airavata.gfac.ec2.util.AmazonEC2Util;
import org.apache.airavata.gfac.ec2.util.EC2ProviderUtil;
import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
+import org.apache.airavata.model.appcatalog.computeresource.CloudJobSubmission;
+import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface;
+import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
+import org.apache.airavata.model.appcatalog.computeresource.ProviderName;
import org.apache.airavata.model.workspace.experiment.JobState;
import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
import org.apache.airavata.schemas.gfac.Ec2ApplicationDeploymentType;
@@ -221,9 +226,8 @@ public class EC2Provider extends AbstractProvider {
/* Assuming that there is just a single result. If you want to add more results, update the necessary
logic below */
String paramName = outparamType.getName();
- outParam.getType().changeType(StringParameterType.type);
- ((StringParameterType) outParam.getType()).setValue(executionResult);
- jobExecutionContext.getOutMessageContext().addParameter(paramName, outParam);
+ String value = outparamType.getValue();
+ jobExecutionContext.getOutMessageContext().addParameter(paramName, value);
}
GFacUtils.saveJobStatus(jobExecutionContext, details, JobState.COMPLETE);
} catch (InvalidSshKeyException e) {
@@ -252,26 +256,28 @@ public class EC2Provider extends AbstractProvider {
* @throws GFacProviderException GFacProviderException
*/
private String createShellCmd(JobExecutionContext jobExecutionContext) throws GFacProviderException {
- String command = "";
- ApplicationDescription appDesc = jobExecutionContext.getApplicationContext().
- getApplicationDeploymentDescription();
-
- if(appDesc.getType() instanceof Ec2ApplicationDeploymentType) {
- Ec2ApplicationDeploymentType type = (Ec2ApplicationDeploymentType) appDesc.getType();
- if(type.getExecutable() != null) {
- command = type.getExecutableType() + " " + type.getExecutable();
+ try {
+ String command = "";
+ JobSubmissionInterface submissionInterface = jobExecutionContext.getPreferredJobSubmissionInterface();
+ CloudJobSubmission cloudJobSubmission = GFacUtils.getCloudJobSubmission(submissionInterface.getJobSubmissionInterfaceId());
+ String executablePath = jobExecutionContext.getApplicationContext().getApplicationDeploymentDescription().getExecutablePath();
+ if (cloudJobSubmission.getProviderName().equals(ProviderName.EC2)) {
+ if (cloudJobSubmission.getExecutableType() != null) {
+ command = cloudJobSubmission.getExecutableType() + " " + executablePath;
+ } else {
+ command = "sh" + " " + executablePath;
+ }
+ command = setCmdParams(jobExecutionContext, command);
+
} else {
- command = "sh" + " " + type.getExecutable();
+ command = "sh" + " " + executablePath;
+ command = setCmdParams(jobExecutionContext, command);
}
- command = setCmdParams(jobExecutionContext, command);
-
- } else {
- ApplicationDeploymentDescriptionType type = appDesc.getType();
- command = "sh" + " " + type.getExecutableLocation();
- command = setCmdParams(jobExecutionContext, command);
+ return command + '\n';
+ } catch (AppCatalogException e) {
+ log.error("Error while retrieving cloud job submission", e);
+ throw new GFacProviderException("Error while retrieving cloud job submission", e);
}
-
- return command + '\n';
}
private String setCmdParams(JobExecutionContext jobExecutionContext, String command) throws GFacProviderException {
http://git-wip-us.apache.org/repos/asf/airavata/blob/e9ee22b9/modules/gfac/gfac-ec2/src/test/java/org/apache/airavata/gfac/ec2/EC2ProviderTest.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-ec2/src/test/java/org/apache/airavata/gfac/ec2/EC2ProviderTest.java b/modules/gfac/gfac-ec2/src/test/java/org/apache/airavata/gfac/ec2/EC2ProviderTest.java
index d558ab9..9f86197 100644
--- a/modules/gfac/gfac-ec2/src/test/java/org/apache/airavata/gfac/ec2/EC2ProviderTest.java
+++ b/modules/gfac/gfac-ec2/src/test/java/org/apache/airavata/gfac/ec2/EC2ProviderTest.java
@@ -1,171 +1,195 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.gfac.ec2;
-
-import org.apache.airavata.commons.gfac.type.*;
-import org.apache.airavata.gfac.GFacConfiguration;
-import org.apache.airavata.gfac.GFacException;
-import org.apache.airavata.gfac.core.context.ApplicationContext;
-import org.apache.airavata.gfac.core.context.JobExecutionContext;
-import org.apache.airavata.gfac.core.context.MessageContext;
-import org.apache.airavata.gfac.core.cpi.BetterGfacImpl;
-import org.apache.airavata.schemas.gfac.*;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Your Amazon instance should be in a running state before running this test.
- */
-public class EC2ProviderTest {
- private JobExecutionContext jobExecutionContext;
-
- private static final String hostName = "ec2-host";
-
- private static final String hostAddress = "ec2-address";
-
- private static final String sequence1 = "RR042383.21413#CTGGCACGGAGTTAGCCGATCCTTATTCATAAAGTACATGCAAACGGGTATCCATA" +
- "CTCGACTTTATTCCTTTATAAAAGAAGTTTACAACCCATAGGGCAGTCATCCTTCACGCTACTTGGCTGGTTCAGGCCTGCGCCCATTGACCAATATTCCTCA" +
- "CTGCTGCCTCCCGTAGGAGTTTGGACCGTGTCTCAGTTCCAATGTGGGGGACCTTCCTCTCAGAACCCCTATCCATCGAAGACTAGGTGGGCCGTTACCCCGC" +
- "CTACTATCTAATGGAACGCATCCCCATCGTCTACCGGAATACCTTTAATCATGTGAACATGCGGACTCATGATGCCATCTTGTATTAATCTTCCTTTCAGAAG" +
- "GCTGTCCAAGAGTAGACGGCAGGTTGGATACGTGTTACTCACCGTGCCGCCGGTCGCCATCAGTCTTAGCAAGCTAAGACCATGCTGCCCCTGACTTGCATGT" +
- "GTTAAGCCTGTAGCTTAGCGTTC";
-
- private static final String sequence2 = "RR042383.31934#CTGGCACGGAGTTAGCCGATCCTTATTCATAAAGTACATGCAAACGGGTATCCATA" +
- "CCCGACTTTATTCCTTTATAAAAGAAGTTTACAACCCATAGGGCAGTCATCCTTCACGCTACTTGGCTGGTTCAGGCTCTCGCCCATTGACCAATATTCCTCA" +
- "CTGCTGCCTCCCGTAGGAGTTTGGACCGTGTCTCAGTTCCAATGTGGGGGACCTTCCTCTCAGAACCCCTATCCATCGAAGACTAGGTGGGCCGTTACCCCGC" +
- "CTACTATCTAATGGAACGCATCCCCATCGTCTACCGGAATACCTTTAATCATGTGAACATGCGGACTCATGATGCCATCTTGTATTAAATCTTCCTTTCAGAA" +
- "GGCTATCCAAGAGTAGACGGCAGGTTGGATACGTGTTACTCACCGTGCG";
-
- /* Following variables are needed to be set in-order to run the test. Since these are account specific information,
- I'm not adding the values here. It's the responsibility of the person who's running the test to update
- these variables accordingly.
- */
-
- /* Username used to log into your ec2 instance eg.ec2-user */
- private String userName = "";
-
- /* Secret key used to connect to the image */
- private String secretKey = "";
-
- /* Access key used to connect to the image */
- private String accessKey = "";
-
- /* Instance id of the running instance of your image */
- private String instanceId = "";
-
- @Before
- public void setUp() throws Exception {
- URL resource = EC2ProviderTest.class.getClassLoader().getResource(org.apache.airavata.common.utils.Constants.GFAC_CONFIG_XML);
- assert resource != null;
- System.out.println(resource.getFile());
- GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()), null);
-
- /* EC2 Host */
- HostDescription host = new HostDescription(Ec2HostType.type);
- host.getType().setHostName(hostName);
- host.getType().setHostAddress(hostAddress);
-
- /* App */
- ApplicationDescription ec2Desc = new ApplicationDescription(Ec2ApplicationDeploymentType.type);
- Ec2ApplicationDeploymentType ec2App = (Ec2ApplicationDeploymentType)ec2Desc.getType();
-
- String serviceName = "Gnome_distance_calculation_workflow";
- ec2Desc.getType().addNewApplicationName().setStringValue(serviceName);
- ec2App.setJobType(JobTypeType.EC_2);
- ec2App.setExecutable("/home/ec2-user/run.sh");
- ec2App.setExecutableType("sh");
-
- /* Service */
- ServiceDescription serv = new ServiceDescription();
- serv.getType().setName("GenomeEC2");
-
- List<InputParameterType> inputList = new ArrayList<InputParameterType>();
-
- InputParameterType input1 = InputParameterType.Factory.newInstance();
- input1.setParameterName("genome_input1");
- input1.setParameterType(StringParameterType.Factory.newInstance());
- inputList.add(input1);
-
- InputParameterType input2 = InputParameterType.Factory.newInstance();
- input2.setParameterName("genome_input2");
- input2.setParameterType(StringParameterType.Factory.newInstance());
- inputList.add(input2);
-
- InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
-
- List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
- OutputParameterType output = OutputParameterType.Factory.newInstance();
- output.setParameterName("genome_output");
- output.setParameterType(StringParameterType.Factory.newInstance());
- outputList.add(output);
-
- OutputParameterType[] outputParamList = outputList
- .toArray(new OutputParameterType[outputList.size()]);
-
- serv.getType().setInputParametersArray(inputParamList);
- serv.getType().setOutputParametersArray(outputParamList);
-
- jobExecutionContext = new JobExecutionContext(gFacConfiguration,serv.getType().getName());
- ApplicationContext applicationContext = new ApplicationContext();
- jobExecutionContext.setApplicationContext(applicationContext);
- applicationContext.setServiceDescription(serv);
- applicationContext.setApplicationDeploymentDescription(ec2Desc);
- applicationContext.setHostDescription(host);
-
- AmazonSecurityContext amazonSecurityContext =
- new AmazonSecurityContext(userName, accessKey, secretKey, instanceId);
- jobExecutionContext.addSecurityContext(AmazonSecurityContext.AMAZON_SECURITY_CONTEXT, amazonSecurityContext);
-
- MessageContext inMessage = new MessageContext();
- ActualParameter genomeInput1 = new ActualParameter();
- ((StringParameterType)genomeInput1.getType()).setValue(sequence1);
- inMessage.addParameter("genome_input1", genomeInput1);
-
- ActualParameter genomeInput2 = new ActualParameter();
- ((StringParameterType)genomeInput2.getType()).setValue(sequence2);
- inMessage.addParameter("genome_input2", genomeInput2);
-
- MessageContext outMessage = new MessageContext();
- ActualParameter echo_out = new ActualParameter();
- outMessage.addParameter("distance", echo_out);
-
- jobExecutionContext.setInMessageContext(inMessage);
- jobExecutionContext.setOutMessageContext(outMessage);
- }
-
- @Test
- public void testGramProvider() throws GFacException {
- BetterGfacImpl gFacAPI = new BetterGfacImpl();
- gFacAPI.submitJob(jobExecutionContext.getExperimentID(), jobExecutionContext.getTaskData().getTaskID(), jobExecutionContext.getGatewayID());
- MessageContext outMessageContext = jobExecutionContext.getOutMessageContext();
- Assert.assertEquals(MappingFactory.
- toString((ActualParameter) outMessageContext.getParameter("genome_output")), "476");
- }
-}
-
-
+///*
+// *
+// * Licensed to the Apache Software Foundation (ASF) under one
+// * or more contributor license agreements. See the NOTICE file
+// * distributed with this work for additional information
+// * regarding copyright ownership. The ASF licenses this file
+// * to you under the Apache License, Version 2.0 (the
+// * "License"); you may not use this file except in compliance
+// * with the License. You may obtain a copy of the License at
+// *
+// * http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing,
+// * software distributed under the License is distributed on an
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// * KIND, either express or implied. See the License for the
+// * specific language governing permissions and limitations
+// * under the License.
+// *
+// */
+//
+//package org.apache.airavata.gfac.ec2;
+//
+//import org.airavata.appcatalog.cpi.AppCatalog;
+//import org.apache.aiaravata.application.catalog.data.impl.AppCatalogFactory;
+//import org.apache.airavata.commons.gfac.type.*;
+//import org.apache.airavata.gfac.GFacConfiguration;
+//import org.apache.airavata.gfac.GFacException;
+//import org.apache.airavata.gfac.core.context.ApplicationContext;
+//import org.apache.airavata.gfac.core.context.JobExecutionContext;
+//import org.apache.airavata.gfac.core.context.MessageContext;
+//import org.apache.airavata.gfac.core.cpi.BetterGfacImpl;
+//import org.apache.airavata.model.appcatalog.computeresource.*;
+//import org.apache.airavata.schemas.gfac.*;
+//import org.junit.Assert;
+//import org.junit.Before;
+//import org.junit.Test;
+//
+//import java.io.File;
+//import java.net.URL;
+//import java.util.ArrayList;
+//import java.util.List;
+//
+///**
+// * Your Amazon instance should be in a running state before running this test.
+// */
+//public class EC2ProviderTest {
+// private JobExecutionContext jobExecutionContext;
+//
+// private static final String hostName = "ec2-host";
+//
+// private static final String hostAddress = "ec2-address";
+//
+// private static final String sequence1 = "RR042383.21413#CTGGCACGGAGTTAGCCGATCCTTATTCATAAAGTACATGCAAACGGGTATCCATA" +
+// "CTCGACTTTATTCCTTTATAAAAGAAGTTTACAACCCATAGGGCAGTCATCCTTCACGCTACTTGGCTGGTTCAGGCCTGCGCCCATTGACCAATATTCCTCA" +
+// "CTGCTGCCTCCCGTAGGAGTTTGGACCGTGTCTCAGTTCCAATGTGGGGGACCTTCCTCTCAGAACCCCTATCCATCGAAGACTAGGTGGGCCGTTACCCCGC" +
+// "CTACTATCTAATGGAACGCATCCCCATCGTCTACCGGAATACCTTTAATCATGTGAACATGCGGACTCATGATGCCATCTTGTATTAATCTTCCTTTCAGAAG" +
+// "GCTGTCCAAGAGTAGACGGCAGGTTGGATACGTGTTACTCACCGTGCCGCCGGTCGCCATCAGTCTTAGCAAGCTAAGACCATGCTGCCCCTGACTTGCATGT" +
+// "GTTAAGCCTGTAGCTTAGCGTTC";
+//
+// private static final String sequence2 = "RR042383.31934#CTGGCACGGAGTTAGCCGATCCTTATTCATAAAGTACATGCAAACGGGTATCCATA" +
+// "CCCGACTTTATTCCTTTATAAAAGAAGTTTACAACCCATAGGGCAGTCATCCTTCACGCTACTTGGCTGGTTCAGGCTCTCGCCCATTGACCAATATTCCTCA" +
+// "CTGCTGCCTCCCGTAGGAGTTTGGACCGTGTCTCAGTTCCAATGTGGGGGACCTTCCTCTCAGAACCCCTATCCATCGAAGACTAGGTGGGCCGTTACCCCGC" +
+// "CTACTATCTAATGGAACGCATCCCCATCGTCTACCGGAATACCTTTAATCATGTGAACATGCGGACTCATGATGCCATCTTGTATTAAATCTTCCTTTCAGAA" +
+// "GGCTATCCAAGAGTAGACGGCAGGTTGGATACGTGTTACTCACCGTGCG";
+//
+// /* Following variables are needed to be set in-order to run the test. Since these are account specific information,
+// I'm not adding the values here. It's the responsibility of the person who's running the test to update
+// these variables accordingly.
+// */
+//
+// /* Username used to log into your ec2 instance eg.ec2-user */
+// private String userName = "";
+//
+// /* Secret key used to connect to the image */
+// private String secretKey = "";
+//
+// /* Access key used to connect to the image */
+// private String accessKey = "";
+//
+// /* Instance id of the running instance of your image */
+// private String instanceId = "";
+//
+// @Before
+// public void setUp() throws Exception {
+// URL resource = EC2ProviderTest.class.getClassLoader().getResource(org.apache.airavata.common.utils.Constants.GFAC_CONFIG_XML);
+// assert resource != null;
+// System.out.println(resource.getFile());
+// GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()), null);
+//
+// /* EC2 Host */
+// ComputeResourceDescription host = new ComputeResourceDescription();
+// host.setHostName(hostName);
+// host.setResourceDescription("EC2 compute resource");
+// host.addToIpAddresses(hostAddress);
+//
+// CloudJobSubmission cloudJobSubmission = new CloudJobSubmission();
+// cloudJobSubmission.setProviderName(ProviderName.EC2);
+// cloudJobSubmission.setExecutableType("sh");
+// cloudJobSubmission.setNodeId(instanceId);
+// cloudJobSubmission.setSecurityProtocol(SecurityProtocol.USERNAME_PASSWORD);
+// cloudJobSubmission.setUserAccountName(userName);
+//
+// AppCatalog appCatalog = AppCatalogFactory.getAppCatalog();
+// String submissionId = appCatalog.getComputeResource().addCloudJobSubmission(cloudJobSubmission);
+//
+// JobSubmissionInterface submissionInterface = new JobSubmissionInterface();
+// submissionInterface.setJobSubmissionInterfaceId(submissionId);
+// submissionInterface.setJobSubmissionProtocol(JobSubmissionProtocol.CLOUD);
+// submissionInterface.setPriorityOrder(0);
+//
+// host.addToJobSubmissionInterfaces(submissionInterface);
+//
+// String computeResourceId = appCatalog.getComputeResource().addComputeResource(host);
+//
+// /* App */
+//
+// ApplicationDescription ec2Desc = new ApplicationDescription(Ec2ApplicationDeploymentType.type);
+// Ec2ApplicationDeploymentType ec2App = (Ec2ApplicationDeploymentType)ec2Desc.getType();
+//
+// String serviceName = "Gnome_distance_calculation_workflow";
+// ec2Desc.getType().addNewApplicationName().setStringValue(serviceName);
+// ec2App.setJobType(JobTypeType.EC_2);
+// ec2App.setExecutable("/home/ec2-user/run.sh");
+// ec2App.setExecutableType("sh");
+//
+// /* Service */
+// ServiceDescription serv = new ServiceDescription();
+// serv.getType().setName("GenomeEC2");
+//
+// List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+//
+// InputParameterType input1 = InputParameterType.Factory.newInstance();
+// input1.setParameterName("genome_input1");
+// input1.setParameterType(StringParameterType.Factory.newInstance());
+// inputList.add(input1);
+//
+// InputParameterType input2 = InputParameterType.Factory.newInstance();
+// input2.setParameterName("genome_input2");
+// input2.setParameterType(StringParameterType.Factory.newInstance());
+// inputList.add(input2);
+//
+// InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
+//
+// List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+// OutputParameterType output = OutputParameterType.Factory.newInstance();
+// output.setParameterName("genome_output");
+// output.setParameterType(StringParameterType.Factory.newInstance());
+// outputList.add(output);
+//
+// OutputParameterType[] outputParamList = outputList
+// .toArray(new OutputParameterType[outputList.size()]);
+//
+// serv.getType().setInputParametersArray(inputParamList);
+// serv.getType().setOutputParametersArray(outputParamList);
+//
+// jobExecutionContext = new JobExecutionContext(gFacConfiguration,serv.getType().getName());
+// ApplicationContext applicationContext = new ApplicationContext();
+// jobExecutionContext.setApplicationContext(applicationContext);
+// applicationContext.setServiceDescription(serv);
+// applicationContext.setApplicationDeploymentDescription(ec2Desc);
+// applicationContext.setHostDescription(host);
+//
+// AmazonSecurityContext amazonSecurityContext =
+// new AmazonSecurityContext(userName, accessKey, secretKey, instanceId);
+// jobExecutionContext.addSecurityContext(AmazonSecurityContext.AMAZON_SECURITY_CONTEXT, amazonSecurityContext);
+//
+// MessageContext inMessage = new MessageContext();
+// ActualParameter genomeInput1 = new ActualParameter();
+// ((StringParameterType)genomeInput1.getType()).setValue(sequence1);
+// inMessage.addParameter("genome_input1", genomeInput1);
+//
+// ActualParameter genomeInput2 = new ActualParameter();
+// ((StringParameterType)genomeInput2.getType()).setValue(sequence2);
+// inMessage.addParameter("genome_input2", genomeInput2);
+//
+// MessageContext outMessage = new MessageContext();
+// ActualParameter echo_out = new ActualParameter();
+// outMessage.addParameter("distance", echo_out);
+//
+// jobExecutionContext.setInMessageContext(inMessage);
+// jobExecutionContext.setOutMessageContext(outMessage);
+// }
+//
+// @Test
+// public void testGramProvider() throws GFacException {
+// BetterGfacImpl gFacAPI = new BetterGfacImpl();
+// gFacAPI.submitJob(jobExecutionContext.getExperimentID(), jobExecutionContext.getTaskData().getTaskID(), jobExecutionContext.getGatewayID());
+// MessageContext outMessageContext = jobExecutionContext.getOutMessageContext();
+// Assert.assertEquals(MappingFactory.
+// toString((ActualParameter) outMessageContext.getParameter("genome_output")), "476");
+// }
+//}
+//
+//