You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ra...@apache.org on 2013/03/12 17:52:21 UTC
svn commit: r1455613 [2/2] - in /airavata/trunk/modules/gfac-core: ./
src/main/java/org/apache/airavata/gfac/
src/main/java/org/apache/airavata/gfac/context/
src/main/java/org/apache/airavata/gfac/context/security/
src/main/java/org/apache/airavata/gfa...
Modified: airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/SSHProvider.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/SSHProvider.java?rev=1455613&r1=1455612&r2=1455613&view=diff
==============================================================================
--- airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/SSHProvider.java (original)
+++ airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/SSHProvider.java Tue Mar 12 16:52:19 2013
@@ -1,282 +1,196 @@
-///*
-// *
-// * 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.provider.impl;
-//
-//import java.io.File;
-//import java.io.IOException;
-//import java.util.ArrayList;
-//import java.util.HashMap;
-//import java.util.Iterator;
-//import java.util.List;
-//import java.util.Map;
-//import java.util.Map.Entry;
-//import java.util.concurrent.TimeUnit;
-//
-//import net.schmizz.sshj.SSHClient;
-//import net.schmizz.sshj.connection.ConnectionException;
-//import net.schmizz.sshj.connection.channel.direct.Session;
-//import net.schmizz.sshj.connection.channel.direct.Session.Command;
-//import net.schmizz.sshj.transport.TransportException;
-//import net.schmizz.sshj.userauth.keyprovider.KeyProvider;
-//import net.schmizz.sshj.xfer.scp.SCPFileTransfer;
-//
-//import org.apache.airavata.commons.gfac.type.ActualParameter;
-//import org.apache.airavata.core.gfac.context.invocation.InvocationContext;
-//import org.apache.airavata.core.gfac.context.security.impl.SSHSecurityContextImpl;
-//import org.apache.airavata.core.gfac.exception.GfacException;
-//import org.apache.airavata.core.gfac.exception.ProviderException;
-//import org.apache.airavata.core.gfac.utils.GFacConstants;
-//import org.apache.airavata.core.gfac.utils.GfacUtils;
-//import org.apache.airavata.core.gfac.utils.InputUtils;
-//import org.apache.airavata.core.gfac.utils.OutputUtils;
-//import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
-//import org.apache.airavata.schemas.gfac.NameValuePairType;
-//import org.apache.xmlbeans.XmlException;
-//
-///**
-// * Execute application using remote SSH
-// */
-//public class SSHProvider extends AbstractProvider {
-//
-// private static final String SPACE = " ";
-// private static final String SSH_SECURITY_CONTEXT = "ssh";
-// private static final int COMMAND_EXECUTION_TIMEOUT = 5;
-// private SSHSecurityContextImpl sshContext;
-// private String command;
-// private SSHClient ssh;
-//
-// public SSHProvider() {
-// ssh = new SSHClient();
-// }
-//
-// private Session getSession(InvocationContext context) throws IOException {
-// try {
-//
-// /*
-// * if it is connected, create a session Note: one client can have multiple session (on one channel)
-// */
-// if (ssh.isConnected())
-// return ssh.startSession();
-//
-// if (sshContext == null) {
-// sshContext = ((SSHSecurityContextImpl) context.getSecurityContext(SSH_SECURITY_CONTEXT));
-// }
-//
-// KeyProvider pkey = ssh.loadKeys(sshContext.getPrivateKeyLoc(), sshContext.getKeyPass());
-//
-// ssh.loadKnownHosts();
-// ssh.authPublickey(sshContext.getUsername(), pkey);
-//
-// ssh.connect(context.getExecutionDescription().getHost().getType().getHostAddress());
-// return ssh.startSession();
-//
-// } catch (NullPointerException ne) {
-// throw new SecurityException("Cannot load security context for SSH", ne);
-// }
-// }
-//
-// private void closeSession(Session session) {
-// if (session != null) {
-// try {
-// session.close();
-// } catch (Exception e) {
-// log.warn("Cannot Close SSH Session");
-// }
-// }
-// }
-//
-// public void makeDirectory(InvocationContext context) throws ProviderException {
-// ApplicationDeploymentDescriptionType app = context.getExecutionDescription().getApp().getType();
-//
-// Session session = null;
-// try {
-// session = getSession(context);
-//
-// StringBuilder commandString = new StringBuilder();
-//
-// commandString.append("mkdir -p ");
-// commandString.append(app.getScratchWorkingDirectory());
-// commandString.append(" ; ");
-// commandString.append("mkdir -p ");
-// commandString.append(app.getStaticWorkingDirectory());
-// commandString.append(" ; ");
-// commandString.append("mkdir -p ");
-// commandString.append(app.getInputDataDirectory());
-// commandString.append(" ; ");
-// commandString.append("mkdir -p ");
-// commandString.append(app.getOutputDataDirectory());
-//
-// Command cmd = session.exec(commandString.toString());
-// cmd.join(COMMAND_EXECUTION_TIMEOUT, TimeUnit.SECONDS);
-// } catch (ConnectionException e) {
-// throw new ProviderException(e.getMessage(), e, context);
-// } catch (TransportException e) {
-// throw new ProviderException(e.getMessage(), e, context);
-// } catch (IOException e) {
-// throw new ProviderException(e.getMessage(), e, context);
-// } finally {
-// closeSession(session);
-// }
-// }
-//
-// public void setupEnvironment(InvocationContext context) throws ProviderException {
-// ApplicationDeploymentDescriptionType app = context.getExecutionDescription().getApp().getType();
-//
-// // input parameter
-// ArrayList<String> tmp = new ArrayList<String>();
-// for (Iterator<String> iterator = context.getInput().getNames(); iterator.hasNext();) {
-// String key = iterator.next();
-// tmp.add(context.getInput().getStringValue(key));
-// }
-//
-// List<String> cmdList = new ArrayList<String>();
-//
-// /*
-// * Builder Command
-// */
-// cmdList.add(app.getExecutableLocation());
-// cmdList.addAll(tmp);
-//
-// // create process builder from command
-// command = InputUtils.buildCommand(cmdList);
-//
-// // redirect StdOut and StdErr
-// // TODO: Make 1> and 2> into static constants.
-// // TODO: This only works for the BASH shell. CSH and TCSH will be
-// // different.
-// command += SPACE + "1>" + SPACE + app.getStandardOutput();
-// command += SPACE + "2>" + SPACE + app.getStandardError();
-// }
-//
-// public void executeApplication(InvocationContext context) throws ProviderException {
-// ApplicationDeploymentDescriptionType app = context.getExecutionDescription().getApp().getType();
-//
-// Session session = null;
-// try {
-// session = getSession(context);
-//
-// /*
-// * Going to working Directory
-// */
-// session.exec("cd " + app.getStaticWorkingDirectory());
-//
-// // get the env of the host and the application
-// NameValuePairType[] env = app.getApplicationEnvironmentArray();
-//
-// Map<String, String> nv = new HashMap<String, String>();
-// if (env != null) {
-// for (int i = 0; i < env.length; i++) {
-// String key = env[i].getName();
-// String value = env[i].getValue();
-// nv.put(key, value);
-// }
-// }
-// // extra env's
-// nv.put(GFacConstants.INPUT_DATA_DIR_VAR_NAME, app.getInputDataDirectory());
-// nv.put(GFacConstants.OUTPUT_DATA_DIR_VAR_NAME, app.getOutputDataDirectory());
-//
-// /*
-// * Set environment
-// */
-// log.debug("Command = " + command);
-// for (Entry<String, String> entry : nv.entrySet()) {
-// log.debug("Env[" + entry.getKey() + "] = " + entry.getValue());
-// session.setEnvVar(entry.getKey(), entry.getValue());
-// }
-//
-// /*
-// * Execute
-// */
-// Command cmd = session.exec(command);
-// log.debug("stdout=" + GfacUtils.readFromStream(session.getInputStream()));
-// cmd.join(COMMAND_EXECUTION_TIMEOUT, TimeUnit.SECONDS);
-//
-// /*
-// * check return value. usually not very helpful to draw conclusions based on return values so don't bother.
-// * just provide warning in the log messages
-// */
-// if (cmd.getExitStatus() != 0) {
-// log.error("Process finished with non zero return value. Process may have failed");
-// } else {
-// log.debug("Process finished with return value of zero.");
-// }
-//
-// } catch (ConnectionException e) {
-// throw new ProviderException(e.getMessage(), e, context);
-// } catch (TransportException e) {
-// throw new ProviderException(e.getMessage(), e, context);
-// } catch (IOException e) {
-// throw new ProviderException(e.getMessage(), e, context);
-// } finally {
-// closeSession(session);
-// }
-// }
-//
-// public Map<String, ?> processOutput(InvocationContext context) throws ProviderException {
-// ApplicationDeploymentDescriptionType app = context.getExecutionDescription().getApp().getType();
-// try {
-//
-// // Get the Stdouts and StdErrs
-// String timeStampedServiceName = GfacUtils.createUniqueNameForService(context.getServiceName());
-// File localStdOutFile = File.createTempFile(timeStampedServiceName, "stdout");
-// File localStdErrFile = File.createTempFile(timeStampedServiceName, "stderr");
-//
-// SCPFileTransfer fileTransfer = ssh.newSCPFileTransfer();
-// fileTransfer.download(app.getStandardOutput(), localStdOutFile.getAbsolutePath());
-// fileTransfer.download(app.getStandardError(), localStdErrFile.getAbsolutePath());
-//
-// String stdOutStr = GfacUtils.readFileToString(localStdOutFile.getAbsolutePath());
-// String stdErrStr = GfacUtils.readFileToString(localStdErrFile.getAbsolutePath());
-//
-// return OutputUtils.fillOutputFromStdout(context.<ActualParameter> getOutput(), stdOutStr,stdErrStr);
-//
-// } catch (XmlException e) {
-// throw new ProviderException("Cannot read output:" + e.getMessage(), e, context);
-// } catch (ConnectionException e) {
-// throw new ProviderException(e.getMessage(), e, context);
-// } catch (TransportException e) {
-// throw new ProviderException(e.getMessage(), e, context);
-// } catch (IOException e) {
-// throw new ProviderException(e.getMessage(), e, context);
-// } catch (Exception e){
-// throw new ProviderException("Error in retrieving results",e,context);
-// }
-// }
-//
-// public void dispose(InvocationContext invocationContext) throws GfacException {
-// super.dispose(invocationContext);
-// try {
-// if (ssh != null && ssh.isConnected()) {
-// ssh.disconnect();
-// }
-// } catch (Exception e) {
-// log.warn("Cannot Close SSH Connection");
-// }
-// }
-//
-// @Override
-// protected Map<String, ?> processInput(InvocationContext invocationContext)
-// throws ProviderException {
-// // TODO Auto-generated method stub
-// return null;
-// }
-//}
+/*
+ *
+ * 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.provider.impl;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Random;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+import net.schmizz.sshj.connection.ConnectionException;
+import net.schmizz.sshj.connection.channel.direct.Session;
+import net.schmizz.sshj.connection.channel.direct.Session.Command;
+import net.schmizz.sshj.transport.TransportException;
+import net.schmizz.sshj.xfer.scp.SCPFileTransfer;
+
+import org.apache.airavata.commons.gfac.type.ActualParameter;
+import org.apache.airavata.commons.gfac.type.MappingFactory;
+import org.apache.airavata.gfac.Constants;
+import org.apache.airavata.gfac.GFacException;
+import org.apache.airavata.gfac.context.JobExecutionContext;
+import org.apache.airavata.gfac.context.MessageContext;
+import org.apache.airavata.gfac.context.security.SSHSecurityContext;
+import org.apache.airavata.gfac.provider.GFacProvider;
+import org.apache.airavata.gfac.provider.GFacProviderException;
+import org.apache.airavata.gfac.utils.GFacUtils;
+import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
+import org.apache.airavata.schemas.gfac.NameValuePairType;
+import org.apache.airavata.schemas.gfac.URIArrayType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Execute application using remote SSH
+ */
+public class SSHProvider implements GFacProvider {
+ private static final Logger log = LoggerFactory.getLogger(SSHProvider.class);
+ private SSHSecurityContext securityContext;
+
+ @Override
+ public void initialize(JobExecutionContext jobExecutionContext) throws GFacProviderException,GFacException {
+ securityContext = (SSHSecurityContext) jobExecutionContext.getSecurityContext(SSHSecurityContext.SSH_SECURITY_CONTEXT);
+ ApplicationDeploymentDescriptionType app = jobExecutionContext.getApplicationContext().getApplicationDeploymentDescription().getType();
+ String remoteFile = app.getStaticWorkingDirectory() + File.separatorChar + Constants.EXECUTABLE_NAME;
+ log.info(remoteFile);
+ try {
+ File runscript = createShellScript(jobExecutionContext);
+ SCPFileTransfer fileTransfer = securityContext.getSSHClient().newSCPFileTransfer();
+ fileTransfer.upload(runscript.getAbsolutePath(), remoteFile);
+ } catch (IOException e) {
+ throw new GFacProviderException(e.getLocalizedMessage(), e);
+ }
+ }
+
+ @Override
+ public void execute(JobExecutionContext jobExecutionContext) throws GFacProviderException {
+ ApplicationDeploymentDescriptionType app = jobExecutionContext.getApplicationContext().getApplicationDeploymentDescription().getType();
+ Session session = null;
+ try {
+ session = securityContext.getSession(jobExecutionContext.getApplicationContext().getHostDescription().getType().getHostAddress());
+ /*
+ * Execute
+ */
+ String execuable = app.getStaticWorkingDirectory() + File.separatorChar + Constants.EXECUTABLE_NAME;
+ Command cmd = session.exec("/bin/chmod 755 " + execuable + "; " + execuable);
+ log.info("stdout=" + GFacUtils.readFromStream(session.getInputStream()));
+ cmd.join(Constants.COMMAND_EXECUTION_TIMEOUT, TimeUnit.SECONDS);
+
+ /*
+ * check return value. usually not very helpful to draw conclusions
+ * based on return values so don't bother. just provide warning in
+ * the log messages
+ */
+ if (cmd.getExitStatus() != 0) {
+ log.error("Process finished with non zero return value. Process may have failed");
+ } else {
+ log.info("Process finished with return value of zero.");
+ }
+
+ } catch (ConnectionException e) {
+ throw new GFacProviderException(e.getMessage(), e);
+ } catch (TransportException e) {
+ throw new GFacProviderException(e.getMessage(), e);
+ } catch (IOException e) {
+ throw new GFacProviderException(e.getMessage(), e);
+ }finally{
+ securityContext.closeSession(session);
+ }
+
+ }
+
+ @Override
+ public void dispose(JobExecutionContext jobExecutionContext) throws GFacProviderException {
+ }
+
+ private File createShellScript(JobExecutionContext context) throws IOException {
+ ApplicationDeploymentDescriptionType app = context.getApplicationContext()
+ .getApplicationDeploymentDescription().getType();
+ String uniqueDir = app.getApplicationName().getStringValue() + System.currentTimeMillis()
+ + new Random().nextLong();
+
+ File shellScript = File.createTempFile(uniqueDir, "sh");
+ OutputStream out = new FileOutputStream(shellScript);
+
+ out.write("#!/bin/bash\n".getBytes());
+ out.write(("cd " + app.getStaticWorkingDirectory() + "\n").getBytes());
+ out.write(("export " + Constants.INPUT_DATA_DIR_VAR_NAME + "=" + app.getInputDataDirectory() + "\n").getBytes());
+ out.write(("export " + Constants.OUTPUT_DATA_DIR_VAR_NAME + "=" + app.getOutputDataDirectory() + "\n")
+ .getBytes());
+ // get the env of the host and the application
+ NameValuePairType[] env = app.getApplicationEnvironmentArray();
+
+ Map<String, String> nv = new HashMap<String, String>();
+ if (env != null) {
+ for (int i = 0; i < env.length; i++) {
+ String key = env[i].getName();
+ String value = env[i].getValue();
+ nv.put(key, value);
+ }
+ }
+ for (Entry<String, String> entry : nv.entrySet()) {
+ log.debug("Env[" + entry.getKey() + "] = " + entry.getValue());
+ out.write(("export " + entry.getKey() + "=" + entry.getValue() + "\n").getBytes());
+
+ }
+
+ // prepare the command
+ final String SPACE = " ";
+ StringBuffer cmd = new StringBuffer();
+ cmd.append(app.getExecutableLocation());
+ cmd.append(SPACE);
+
+ MessageContext input = context.getInMessageContext();
+ ;
+ Map<String, Object> inputs = input.getParameters();
+ Set<String> keys = inputs.keySet();
+ for (String paramName : keys) {
+ ActualParameter actualParameter = (ActualParameter) inputs.get(paramName);
+ if ("URIArray".equals(actualParameter.getType().getType().toString())) {
+ String[] values = ((URIArrayType) actualParameter.getType()).getValueArray();
+ for (String value : values) {
+ cmd.append(value);
+ cmd.append(SPACE);
+ }
+ } else {
+ String paramValue = MappingFactory.toString(actualParameter);
+ cmd.append(paramValue);
+ cmd.append(SPACE);
+ }
+ }
+ // We redirect the error and stdout to remote files, they will be read
+ // in later
+ cmd.append(SPACE);
+ cmd.append("1>");
+ cmd.append(SPACE);
+ cmd.append(app.getStandardOutput());
+ cmd.append(SPACE);
+ cmd.append("2>");
+ cmd.append(SPACE);
+ cmd.append(app.getStandardError());
+
+ String cmdStr = cmd.toString();
+ log.info("Command = " + cmdStr);
+ out.write((cmdStr + "\n").getBytes());
+ String message = "\"execuationSuceeded\"";
+ out.write(("echo " + message + "\n").getBytes());
+ out.close();
+
+ return shellScript;
+ }
+
+}
Modified: airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/GramJobSubmissionListener.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/GramJobSubmissionListener.java?rev=1455613&r1=1455612&r2=1455613&view=diff
==============================================================================
--- airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/GramJobSubmissionListener.java (original)
+++ airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/GramJobSubmissionListener.java Tue Mar 12 16:52:19 2013
@@ -20,8 +20,9 @@
*/
package org.apache.airavata.gfac.utils;
-import org.apache.airavata.gfac.context.GSISecurityContext;
+import org.apache.airavata.gfac.GFacException;
import org.apache.airavata.gfac.context.JobExecutionContext;
+import org.apache.airavata.gfac.context.security.GSISecurityContext;
import org.apache.airavata.gfac.notification.events.StatusChangeEvent;
import org.globus.gram.GramException;
import org.globus.gram.GramJob;
@@ -56,13 +57,13 @@ public class GramJobSubmissionListener i
* @throws GramException
* @throws SecurityException
*/
- public void waitFor() throws InterruptedException, GSSException, GramException, SecurityException {
+ public void waitFor() throws InterruptedException, GSSException, GramException, SecurityException,GFacException {
while (!isFinished()) {
int proxyExpTime = job.getCredentials().getRemainingLifetime();
if (proxyExpTime < JOB_PROXY_REMAINING_TIME_LIMIT) {
log.info("Job proxy expired. Trying to renew proxy");
- GSSCredential gssCred = (new GSISecurityContext(context.getGFacConfiguration())).getGssCredentails();
-// job.renew(gssCred);
+ GSSCredential gssCred = ((GSISecurityContext)context.getSecurityContext(GSISecurityContext.GSI_SECURITY_CONTEXT)).getGssCredentails();
+ job.renew(gssCred);
log.info("Myproxy renewed");
}
Modified: airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/AbstractBESTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/AbstractBESTest.java?rev=1455613&r1=1455612&r2=1455613&view=diff
==============================================================================
--- airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/AbstractBESTest.java (original)
+++ airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/AbstractBESTest.java Tue Mar 12 16:52:19 2013
@@ -12,93 +12,111 @@ import org.apache.airavata.gfac.GFacConf
import org.apache.airavata.gfac.context.ApplicationContext;
import org.apache.airavata.gfac.context.JobExecutionContext;
import org.apache.airavata.gfac.context.MessageContext;
+import org.apache.airavata.gfac.context.security.GSISecurityContext;
import org.apache.airavata.schemas.gfac.JobTypeType;
import org.apache.airavata.schemas.gfac.UnicoreHostType;
import org.apache.log4j.PropertyConfigurator;
public abstract class AbstractBESTest {
-
- protected JobExecutionContext jobExecutionContext;
- public static final String[] hostArray = new String[] { "https://zam1161v01.zam.kfa-juelich.de:8002/INTEROP1/services/BESFactory?res=default_bes_factory" };
-
-
- //directory where data will be copy into and copied out to unicore resources
-
- // private static final String scratchDir = "/brashear/msmemon/airavata";
-
- public static final String gridftpAddress = "gsiftp://gridftp1.ls4.tacc.utexas.edu:2811";
- public static final String scratchDir = "/scratch/02055/msmemon/airavata";
-
- protected String remoteTempDir = null;
-
-
-
- protected void initTest() throws Exception {
- PropertyConfigurator.configure("src/test/resources/logging.properties");
-
- /*
- * Default tmp location
- */
- String date = (new Date()).toString();
- date = date.replaceAll(" ", "_");
- date = date.replaceAll(":", "_");
-
-
- remoteTempDir = scratchDir + File.separator + "BESJOB" + "_" + date + "_"
- + UUID.randomUUID();
- jobExecutionContext = new JobExecutionContext(getGFACConfig(), getServiceDesc("BES-APP-Service").getType().getName());
- jobExecutionContext.setApplicationContext(getApplicationContext());
- jobExecutionContext.setInMessageContext(getInMessageContext());
- jobExecutionContext.setOutMessageContext(getOutMessageContext());
-
- }
-
- protected abstract void submitJob() throws Exception;
-
- protected GFacConfiguration getGFACConfig() throws Exception{
+ protected JobExecutionContext jobExecutionContext;
+
+// public static final String[] hostArray = new String[] { "https://zam1161v01.zam.kfa-juelich.de:8002/INTEROP1/services/BESFactory?res=default_bes_factory" };
+
+
+ public static final String[] hostArray = new String[] { "https://deisa-unic.fz-juelich.de:9111/FZJ_JUROPA/services/BESFactory?res=default_bes_factory" };
+
+
+
+ //directory where data will be copy into and copied out to unicore resources
+
+
+
+// public static final String gridftpAddress = "gsiftp://gridftp1.ls4.tacc.utexas.edu:2811";
+// public static final String scratchDir = "/scratch/02055/msmemon/airavata";
+
+
+// public static final String gridftpAddress = "gsiftp://gridftp.psc.xsede.org:2811";
+// public static final String scratchDir = "/brashear/msmemon/airavata/";
+
+
+ public static final String gridftpAddress = "gsiftp://osg-xsede.grid.iu.edu:2811/";
+ public static final String scratchDir = "/home/msmemon/airavata/";
+
+
+
+
+ protected String remoteTempDir = null;
+
+
+
+ protected void initTest() throws Exception {
+ PropertyConfigurator.configure("src/test/resources/logging.properties");
+
+ /*
+ * Default tmp location
+ */
+ String date = (new Date()).toString();
+ date = date.replaceAll(" ", "_");
+ date = date.replaceAll(":", "_");
+
+
+ remoteTempDir = scratchDir + File.separator + "BESJOB" + "_" + date + "_"
+ + UUID.randomUUID();
+ jobExecutionContext = new JobExecutionContext(getGFACConfig(), getServiceDesc("BES-APP-Service").getType().getName());
+ GSISecurityContext context = new GSISecurityContext();
+ context.setMyproxyLifetime(3600);
+ context.setMyproxyServer("myproxy.teragrid.org");
+ context.setMyproxyUserName("*****");
+ context.setMyproxyPasswd("*****");
+ context.setTrustedCertLoc("./certificates");
+ jobExecutionContext.addSecurityContext(GSISecurityContext.GSI_SECURITY_CONTEXT, context);
+ jobExecutionContext.setApplicationContext(getApplicationContext());
+ jobExecutionContext.setInMessageContext(getInMessageContext());
+ jobExecutionContext.setOutMessageContext(getOutMessageContext());
+
+ }
+
+ protected abstract void submitJob() throws Exception;
+
+ protected GFacConfiguration getGFACConfig() throws Exception{
URL resource = this.getClass().getClassLoader().getResource("gfac-config.xml");
System.out.println(resource.getFile());
GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()),null,null);
- gFacConfiguration.setMyProxyLifeCycle(3600);
- gFacConfiguration.setMyProxyServer("myproxy.teragrid.org");
- gFacConfiguration.setMyProxyUser("msmemon");
- gFacConfiguration.setMyProxyPassphrase("*******");
- gFacConfiguration.setTrustedCertLocation("/home/m.memon/.globus/certificates");
- return gFacConfiguration;
- }
-
- protected ApplicationContext getApplicationContext() {
- ApplicationContext applicationContext = new ApplicationContext();
- applicationContext.setHostDescription(getHostDesc());
- return applicationContext;
- }
-
- protected HostDescription getHostDesc() {
- HostDescription host = new HostDescription(UnicoreHostType.type);
- host.getType().setHostAddress("zam1161v01.zam.kfa-juelich.de");
- host.getType().setHostName("DEMO-INTEROP-SITE");
- ((UnicoreHostType) host.getType()).setUnicoreHostAddressArray(hostArray);
- ((UnicoreHostType) host.getType()).setGridFTPEndPointArray(new String[]{gridftpAddress});
- return host;
- }
-
-
- protected abstract ApplicationDescription getApplicationDesc(JobTypeType jobType);
-
-
- protected ServiceDescription getServiceDesc(String serviceName) {
- ServiceDescription serv = new ServiceDescription();
- serv.getType().setName(serviceName);
- return serv;
- }
-
-
- protected abstract MessageContext getInMessageContext();
-
-
-
- protected abstract MessageContext getOutMessageContext();
+ return gFacConfiguration;
+ }
+
+ protected ApplicationContext getApplicationContext() {
+ ApplicationContext applicationContext = new ApplicationContext();
+ applicationContext.setHostDescription(getHostDesc());
+ return applicationContext;
+ }
+
+ protected HostDescription getHostDesc() {
+ HostDescription host = new HostDescription(UnicoreHostType.type);
+ host.getType().setHostAddress("zam1161v01.zam.kfa-juelich.de");
+ host.getType().setHostName("DEMO-INTEROP-SITE");
+ ((UnicoreHostType) host.getType()).setUnicoreHostAddressArray(hostArray);
+ ((UnicoreHostType) host.getType()).setGridFTPEndPointArray(new String[]{gridftpAddress});
+ return host;
+ }
+
+
+ protected abstract ApplicationDescription getApplicationDesc(JobTypeType jobType);
+
+
+ protected ServiceDescription getServiceDesc(String serviceName) {
+ ServiceDescription serv = new ServiceDescription();
+ serv.getType().setName(serviceName);
+ return serv;
+ }
+
+
+ protected abstract MessageContext getInMessageContext();
+
+
+
+ protected abstract MessageContext getOutMessageContext();
}
Modified: airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/BESProviderTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/BESProviderTest.java?rev=1455613&r1=1455612&r2=1455613&view=diff
==============================================================================
--- airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/BESProviderTest.java (original)
+++ airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/BESProviderTest.java Tue Mar 12 16:52:19 2013
@@ -17,6 +17,7 @@ import org.apache.airavata.gfac.GFacExce
import org.apache.airavata.gfac.context.ApplicationContext;
import org.apache.airavata.gfac.context.JobExecutionContext;
import org.apache.airavata.gfac.context.MessageContext;
+import org.apache.airavata.gfac.context.security.GSISecurityContext;
import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
import org.apache.airavata.schemas.gfac.HpcApplicationDeploymentType;
import org.apache.airavata.schemas.gfac.InputParameterType;
@@ -61,6 +62,9 @@ public class BESProviderTest {
+ UUID.randomUUID();
jobExecutionContext = new JobExecutionContext(getGFACConfig(), getServiceDesc().getType().getName());
+
+ // set security context
+ jobExecutionContext.addSecurityContext(GSISecurityContext.GSI_SECURITY_CONTEXT, getSecurityContext());
jobExecutionContext.setApplicationContext(getApplicationContext());
jobExecutionContext.setInMessageContext(getInMessageContext());
jobExecutionContext.setOutMessageContext(getOutMessageContext());
@@ -74,14 +78,8 @@ public class BESProviderTest {
private GFacConfiguration getGFACConfig() throws Exception{
URL resource = BESProviderTest.class.getClassLoader().getResource("gfac-config.xml");
- System.out.println(resource.getFile());
GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()),null,null);
- gFacConfiguration.setMyProxyLifeCycle(3600);
- gFacConfiguration.setMyProxyServer("myproxy.teragrid.org");
- gFacConfiguration.setMyProxyUser("*****");
- gFacConfiguration.setMyProxyPassphrase("*****");
- gFacConfiguration.setTrustedCertLocation("./certificates");
- return gFacConfiguration;
+ return gFacConfiguration;
}
private ApplicationContext getApplicationContext() {
@@ -196,6 +194,15 @@ public class BESProviderTest {
return inMessage;
}
+ private GSISecurityContext getSecurityContext(){
+ GSISecurityContext context = new GSISecurityContext();
+ context.setMyproxyLifetime(3600);
+ context.setMyproxyServer("myproxy.teragrid.org");
+ context.setMyproxyUserName("*****");
+ context.setMyproxyPasswd("*****");
+ context.setTrustedCertLoc("./certificates");
+ return context;
+ }
private MessageContext getOutMessageContext() {
Modified: airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/EC2ProviderTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/EC2ProviderTest.java?rev=1455613&r1=1455612&r2=1455613&view=diff
==============================================================================
--- airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/EC2ProviderTest.java (original)
+++ airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/EC2ProviderTest.java Tue Mar 12 16:52:19 2013
@@ -4,7 +4,7 @@ import org.apache.airavata.commons.gfac.
import org.apache.airavata.gfac.GFacAPI;
import org.apache.airavata.gfac.GFacConfiguration;
import org.apache.airavata.gfac.GFacException;
-import org.apache.airavata.gfac.context.AmazonSecurityContext;
+import org.apache.airavata.gfac.context.security.AmazonSecurityContext;
import org.apache.airavata.gfac.context.ApplicationContext;
import org.apache.airavata.gfac.context.JobExecutionContext;
import org.apache.airavata.gfac.context.MessageContext;
@@ -64,11 +64,6 @@ public class EC2ProviderTest {
assert resource != null;
System.out.println(resource.getFile());
GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()), null, null);
- gFacConfiguration.setMyProxyLifeCycle(3600);
- gFacConfiguration.setMyProxyServer("myproxy.teragrid.org");
- gFacConfiguration.setMyProxyUser("*****");
- gFacConfiguration.setMyProxyPassphrase("*****");
- gFacConfiguration.setTrustedCertLocation("./certificates");
/* EC2 Host */
HostDescription host = new HostDescription(Ec2HostType.type);
@@ -124,7 +119,7 @@ public class EC2ProviderTest {
AmazonSecurityContext amazonSecurityContext =
new AmazonSecurityContext(userName, accessKey, secretKey, instanceId);
- jobExecutionContext.setSecurityContext(amazonSecurityContext);
+ jobExecutionContext.addSecurityContext(AmazonSecurityContext.AMAZON_SECURITY_CONTEXT, amazonSecurityContext);
MessageContext inMessage = new MessageContext();
ActualParameter genomeInput1 = new ActualParameter();
Modified: airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/GramProviderTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/GramProviderTest.java?rev=1455613&r1=1455612&r2=1455613&view=diff
==============================================================================
--- airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/GramProviderTest.java (original)
+++ airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/GramProviderTest.java Tue Mar 12 16:52:19 2013
@@ -32,12 +32,14 @@ import org.apache.airavata.commons.gfac.
import org.apache.airavata.commons.gfac.type.HostDescription;
import org.apache.airavata.commons.gfac.type.MappingFactory;
import org.apache.airavata.commons.gfac.type.ServiceDescription;
+import org.apache.airavata.gfac.Constants;
import org.apache.airavata.gfac.GFacAPI;
import org.apache.airavata.gfac.GFacConfiguration;
import org.apache.airavata.gfac.GFacException;
import org.apache.airavata.gfac.context.ApplicationContext;
import org.apache.airavata.gfac.context.JobExecutionContext;
import org.apache.airavata.gfac.context.MessageContext;
+import org.apache.airavata.gfac.context.security.GSISecurityContext;
import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
import org.apache.airavata.schemas.gfac.GlobusHostType;
import org.apache.airavata.schemas.gfac.HpcApplicationDeploymentType;
@@ -72,12 +74,12 @@ public class GramProviderTest {
URL resource = GramProviderTest.class.getClassLoader().getResource("gfac-config.xml");
System.out.println(resource.getFile());
GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()),null,null);
- gFacConfiguration.setMyProxyLifeCycle(3600);
- gFacConfiguration.setMyProxyServer("myproxy.teragrid.org");
- gFacConfiguration.setMyProxyUser("*****");
- gFacConfiguration.setMyProxyPassphrase("*****");
- gFacConfiguration.setTrustedCertLocation("./certificates");
- //have to set InFlwo Handlers and outFlowHandlers
+// gFacConfiguration.setMyProxyLifeCycle(3600);
+// gFacConfiguration.setMyProxyServer("myproxy.teragrid.org");
+// gFacConfiguration.setMyProxyUser("*****");
+// gFacConfiguration.setMyProxyPassphrase("*****");
+// gFacConfiguration.setTrustedCertLocation("./certificates");
+// //have to set InFlwo Handlers and outFlowHandlers
// gFacConfiguration.setInHandlers(Arrays.asList(new String[] {"org.apache.airavata.gfac.handler.GramDirectorySetupHandler","org.apache.airavata.gfac.handler.GridFTPInputHandler"}));
// gFacConfiguration.setOutHandlers(Arrays.asList(new String[] {"org.apache.airavata.gfac.handler.GridFTPOutputHandler"}));
@@ -170,6 +172,8 @@ public class GramProviderTest {
serv.getType().setOutputParametersArray(outputParamList);
jobExecutionContext = new JobExecutionContext(gFacConfiguration,serv.getType().getName());
+ // Adding security context
+ jobExecutionContext.addSecurityContext(GSISecurityContext.GSI_SECURITY_CONTEXT, getSecurityContext());
ApplicationContext applicationContext = new ApplicationContext();
jobExecutionContext.setApplicationContext(applicationContext);
applicationContext.setServiceDescription(serv);
@@ -206,6 +210,16 @@ public class GramProviderTest {
}
+ private GSISecurityContext getSecurityContext() {
+ GSISecurityContext context = new GSISecurityContext();
+ context.setMyproxyLifetime(3600);
+ context.setMyproxyServer("myproxy.teragrid.org");
+ context.setMyproxyUserName("*****");
+ context.setMyproxyPasswd("*****");
+ context.setTrustedCertLoc("./certificates");
+ return context;
+ }
+
@Test
public void testGramProvider() throws GFacException {
GFacAPI gFacAPI = new GFacAPI();
Modified: airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTest.java?rev=1455613&r1=1455612&r2=1455613&view=diff
==============================================================================
--- airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTest.java (original)
+++ airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTest.java Tue Mar 12 16:52:19 2013
@@ -18,6 +18,7 @@ import org.apache.airavata.gfac.GFacConf
import org.apache.airavata.gfac.context.ApplicationContext;
import org.apache.airavata.gfac.context.JobExecutionContext;
import org.apache.airavata.gfac.context.MessageContext;
+import org.apache.airavata.gfac.context.security.GSISecurityContext;
import org.apache.airavata.gfac.provider.utils.JSDLGenerator;
import org.apache.airavata.gfac.provider.utils.JSDLUtils;
import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
@@ -65,6 +66,8 @@ public class JSDLGeneratorTest {
public void initJobContext() throws Exception {
PropertyConfigurator.configure("src/test/resources/logging.properties");
jobExecutionContext = new JobExecutionContext(getGFACConfig(), getServiceDesc().getType().getName());
+ //Add security context
+ jobExecutionContext.addSecurityContext(GSISecurityContext.GSI_SECURITY_CONTEXT, getSecurityContext());
jobExecutionContext.setApplicationContext(getApplicationContext());
jobExecutionContext.setInMessageContext(getInMessageContext());
jobExecutionContext.setOutMessageContext(getOutMessageContext());
@@ -74,11 +77,6 @@ public class JSDLGeneratorTest {
URL resource = BESProviderTest.class.getClassLoader().getResource("gfac-config.xml");
System.out.println(resource.getFile());
GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()),null,null);
- gFacConfiguration.setMyProxyLifeCycle(3600);
- gFacConfiguration.setMyProxyServer("");
- gFacConfiguration.setMyProxyUser("");
- gFacConfiguration.setMyProxyPassphrase("");
- gFacConfiguration.setTrustedCertLocation("");
return gFacConfiguration;
}
@@ -236,6 +234,14 @@ public class JSDLGeneratorTest {
return om1;
}
-
+ private GSISecurityContext getSecurityContext(){
+ GSISecurityContext context = new GSISecurityContext();
+ context.setMyproxyLifetime(3600);
+ context.setMyproxyServer("myproxy.teragrid.org");
+ context.setMyproxyUserName("*****");
+ context.setMyproxyPasswd("*****");
+ context.setTrustedCertLoc("./certificates");
+ return context;
+ }
}
Modified: airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/ParamChemTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/ParamChemTest.java?rev=1455613&r1=1455612&r2=1455613&view=diff
==============================================================================
--- airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/ParamChemTest.java (original)
+++ airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/ParamChemTest.java Tue Mar 12 16:52:19 2013
@@ -20,21 +20,38 @@
*/
package org.apache.airavata.core.gfac.services.impl;
-import org.apache.airavata.commons.gfac.type.*;
-import org.apache.airavata.gfac.GFacAPI;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.airavata.commons.gfac.type.ActualParameter;
+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.gfac.GFacConfiguration;
import org.apache.airavata.gfac.GFacException;
import org.apache.airavata.gfac.context.ApplicationContext;
import org.apache.airavata.gfac.context.JobExecutionContext;
import org.apache.airavata.gfac.context.MessageContext;
-import org.apache.airavata.schemas.gfac.*;
-import org.junit.Assert;
+import org.apache.airavata.gfac.context.security.GSISecurityContext;
+import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
+import org.apache.airavata.schemas.gfac.DataType;
+import org.apache.airavata.schemas.gfac.GlobusHostType;
+import org.apache.airavata.schemas.gfac.HpcApplicationDeploymentType;
+import org.apache.airavata.schemas.gfac.InputParameterType;
+import org.apache.airavata.schemas.gfac.JobTypeType;
+import org.apache.airavata.schemas.gfac.OutputParameterType;
+import org.apache.airavata.schemas.gfac.ParameterType;
+import org.apache.airavata.schemas.gfac.ProjectAccountType;
+import org.apache.airavata.schemas.gfac.QueueType;
+import org.apache.airavata.schemas.gfac.StringParameterType;
+import org.apache.airavata.schemas.gfac.URIParameterType;
import org.junit.Before;
import org.junit.Test;
-import java.io.File;
-import java.util.*;
-
public class ParamChemTest {
private JobExecutionContext jobExecutionContext;
@@ -42,11 +59,13 @@ public class ParamChemTest {
public void setUp() throws Exception {
GFacConfiguration gFacConfiguration = new GFacConfiguration(null);
- gFacConfiguration.setMyProxyLifeCycle(3600);
- gFacConfiguration.setMyProxyServer("myproxy.teragrid.org");
- gFacConfiguration.setMyProxyUser("ccguser");
- gFacConfiguration.setMyProxyPassphrase("");
- gFacConfiguration.setTrustedCertLocation("");
+ GSISecurityContext context = new GSISecurityContext();
+ context.setMyproxyLifetime(3600);
+ context.setMyproxyServer("myproxy.teragrid.org");
+ context.setMyproxyUserName("*****");
+ context.setMyproxyPasswd("*****");
+ context.setTrustedCertLoc("./certificates");
+
//have to set InFlwo Handlers and outFlowHandlers
gFacConfiguration.setInHandlers(Arrays.asList(new String[]{"org.apache.airavata.gfac.handler.GramDirectorySetupHandler", "org.apache.airavata.gfac.handler.GridFTPInputHandler"}));
gFacConfiguration.setOutHandlers(Arrays.asList(new String[] {"org.apache.airavata.gfac.handler.GridFTPOutputHandler"}));
@@ -212,6 +231,7 @@ public class ParamChemTest {
serv.getType().setOutputParametersArray(outputParameters.toArray(new OutputParameterType[]{}));
jobExecutionContext = new JobExecutionContext(gFacConfiguration,serv.getType().getName());
+ jobExecutionContext.addSecurityContext(GSISecurityContext.GSI_SECURITY_CONTEXT, context);
ApplicationContext applicationContext = new ApplicationContext();
applicationContext.setHostDescription(host);
applicationContext.setApplicationDeploymentDescription(appDesc);
Added: airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/SSHProviderTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/SSHProviderTest.java?rev=1455613&view=auto
==============================================================================
--- airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/SSHProviderTest.java (added)
+++ airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/SSHProviderTest.java Tue Mar 12 16:52:19 2013
@@ -0,0 +1,172 @@
+/*
+ *
+ * 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.core.gfac.services.impl;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.airavata.commons.gfac.type.ActualParameter;
+import org.apache.airavata.commons.gfac.type.ApplicationDescription;
+import org.apache.airavata.commons.gfac.type.HostDescription;
+import org.apache.airavata.commons.gfac.type.MappingFactory;
+import org.apache.airavata.commons.gfac.type.ServiceDescription;
+import org.apache.airavata.gfac.GFacAPI;
+import org.apache.airavata.gfac.GFacConfiguration;
+import org.apache.airavata.gfac.GFacException;
+import org.apache.airavata.gfac.context.ApplicationContext;
+import org.apache.airavata.gfac.context.JobExecutionContext;
+import org.apache.airavata.gfac.context.MessageContext;
+import org.apache.airavata.gfac.context.security.SSHSecurityContext;
+import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
+import org.apache.airavata.schemas.gfac.InputParameterType;
+import org.apache.airavata.schemas.gfac.OutputParameterType;
+import org.apache.airavata.schemas.gfac.SSHHostType;
+import org.apache.airavata.schemas.gfac.StringParameterType;
+import org.apache.commons.lang.SystemUtils;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class SSHProviderTest {
+ private JobExecutionContext jobExecutionContext;
+ @Before
+ public void setUp() throws Exception {
+
+ URL resource = GramProviderTest.class.getClassLoader().getResource("gfac-config.xml");
+ GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()),null,null);
+// gFacConfiguration.s
+ //have to set InFlwo Handlers and outFlowHandlers
+ ApplicationContext applicationContext = new ApplicationContext();
+ HostDescription host = new HostDescription(SSHHostType.type);
+ host.getType().setHostName("gw85.iu.xsede.org");
+ host.getType().setHostAddress("gw85.iu.xsede.org");
+ applicationContext.setHostDescription(host);
+ /*
+ * App
+ */
+ ApplicationDescription appDesc = new ApplicationDescription();
+ ApplicationDeploymentDescriptionType app = appDesc.getType();
+ ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+ name.setStringValue("EchoSSH");
+ app.setApplicationName(name);
+
+ /*
+ * Use bat file if it is compiled on Windows
+ */
+ if (SystemUtils.IS_OS_WINDOWS) {
+ URL url = this.getClass().getClassLoader().getResource("echo.bat");
+ app.setExecutableLocation(url.getFile());
+ } else {
+ //for unix and Mac
+ app.setExecutableLocation("/bin/echo");
+ }
+
+ /*
+ * Job location
+ */
+ String tempDir = "/tmp";
+ String date = (new Date()).toString();
+ date = date.replaceAll(" ", "_");
+ date = date.replaceAll(":", "_");
+
+ tempDir = tempDir + File.separator
+ + "EchoSSH" + "_" + date + "_" + UUID.randomUUID();
+
+ app.setScratchWorkingDirectory(tempDir);
+ app.setStaticWorkingDirectory(tempDir);
+ app.setInputDataDirectory(tempDir + File.separator + "input");
+ app.setOutputDataDirectory(tempDir + File.separator + "output");
+ app.setStandardOutput(tempDir + File.separator + "echo.stdout");
+ app.setStandardError(tempDir + File.separator + "echo.stderr");
+
+ applicationContext.setApplicationDeploymentDescription(appDesc);
+
+ /*
+ * Service
+ */
+ ServiceDescription serv = new ServiceDescription();
+ serv.getType().setName("EchoSSH");
+
+ List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+ InputParameterType input = InputParameterType.Factory.newInstance();
+ input.setParameterName("echo_input");
+ input.setParameterType(StringParameterType.Factory.newInstance());
+ inputList.add(input);
+ InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList
+ .size()]);
+
+ List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+ OutputParameterType output = OutputParameterType.Factory.newInstance();
+ output.setParameterName("echo_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());
+ jobExecutionContext.setApplicationContext(applicationContext);
+
+ // Add security context
+ jobExecutionContext.addSecurityContext(SSHSecurityContext.SSH_SECURITY_CONTEXT, getSecurityContext());
+ /*
+ * Host
+ */
+ applicationContext.setServiceDescription(serv);
+
+ MessageContext inMessage = new MessageContext();
+ ActualParameter echo_input = new ActualParameter();
+ ((StringParameterType)echo_input.getType()).setValue("echo_output=hello");
+ inMessage.addParameter("echo_input", echo_input);
+
+ jobExecutionContext.setInMessageContext(inMessage);
+
+ MessageContext outMessage = new MessageContext();
+ ActualParameter echo_out = new ActualParameter();
+// ((StringParameterType)echo_input.getType()).setValue("echo_output=hello");
+ outMessage.addParameter("echo_output", echo_out);
+
+ jobExecutionContext.setOutMessageContext(outMessage);
+
+ }
+
+ private SSHSecurityContext getSecurityContext() {
+ SSHSecurityContext context = new SSHSecurityContext();
+ context.setUsername("*****");
+ context.setPrivateKeyLoc("~/.ssh/id_dsa");
+ context.setKeyPass("*****");
+ return context;
+ }
+
+ @Test
+ public void testLocalProvider() throws GFacException {
+ GFacAPI gFacAPI = new GFacAPI();
+ gFacAPI.submitJob(jobExecutionContext);
+ MessageContext outMessageContext = jobExecutionContext.getOutMessageContext();
+ Assert.assertEquals(MappingFactory.toString((ActualParameter)outMessageContext.getParameter("echo_output")), "hello");
+ }
+}
Modified: airavata/trunk/modules/gfac-core/src/test/resources/gfac-config.xml
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/test/resources/gfac-config.xml?rev=1455613&r1=1455612&r2=1455613&view=diff
==============================================================================
--- airavata/trunk/modules/gfac-core/src/test/resources/gfac-config.xml (original)
+++ airavata/trunk/modules/gfac-core/src/test/resources/gfac-config.xml Tue Mar 12 16:52:19 2013
@@ -44,11 +44,21 @@
<Application name="UltraScan">
<InHandlers>
- <Handler class="org.apache.airavata.handlers.GramDirectorySetupHandler"/>
- <Handler class="org.apache.airavata.handlers.GridFTPInputHandler"/>
+ <Handler class="org.apache.airavata.gfac.handler.GramDirectorySetupHandler"/>
+ <Handler class="org.apache.airavata.gfac.handler.GridFTPInputHandler"/>
</InHandlers>
<OutHandlers>
- <Handler class="org.apache.airavata.handlers.GridFTPOutputHandler"/>
+ <Handler class="org.apache.airavata.gfac.handler.GridFTPOutputHandler"/>
</OutHandlers>
</Application>
+
+ <Provider class="org.apache.airavata.gfac.provider.impl.SSHProvider">
+ <InHandlers>
+ <Handler class="org.apache.airavata.gfac.handler.SCPDirectorySetupHandler"/>
+ <Handler class="org.apache.airavata.gfac.handler.SCPInputHandler"/>
+ </InHandlers>
+ <OutHandlers>
+ <Handler class="org.apache.airavata.gfac.handler.SCPOutputHandler"/>
+ </OutHandlers>
+ </Provider>
</GFac>
\ No newline at end of file