airavata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From lah...@apache.org
Subject svn commit: r1448682 - in /airavata/trunk/modules/gfac-core/src: main/java/org/apache/airavata/gfac/provider/impl/ test/java/org/apache/airavata/core/gfac/services/impl/
Date Thu, 21 Feb 2013 15:35:22 GMT
Author: lahiru
Date: Thu Feb 21 15:35:22 2013
New Revision: 1448682

URL: http://svn.apache.org/r1448682
Log:
committing shabhaz's patch.

Added:
    airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/BESProvider.java
    airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/BESProviderTest.java
    airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTest.java

Added: airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/BESProvider.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/BESProvider.java?rev=1448682&view=auto
==============================================================================
--- airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/BESProvider.java
(added)
+++ airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/BESProvider.java
Thu Feb 21 15:35:22 2013
@@ -0,0 +1,259 @@
+/*
+ *
+ * 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.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.airavata.gfac.context.GSISecurityContext;
+import org.apache.airavata.gfac.context.JobExecutionContext;
+import org.apache.airavata.gfac.provider.GFacProvider;
+import org.apache.airavata.gfac.provider.GFacProviderException;
+import org.apache.airavata.gfac.provider.utils.JSDLGenerator;
+import org.apache.airavata.schemas.gfac.UnicoreHostType;
+import org.ggf.schemas.bes.x2006.x08.besFactory.ActivityStateEnumeration;
+import org.ggf.schemas.bes.x2006.x08.besFactory.CreateActivityDocument;
+import org.ggf.schemas.bes.x2006.x08.besFactory.CreateActivityResponseDocument;
+import org.globus.gsi.GlobusCredential;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.w3.x2005.x08.addressing.EndpointReferenceType;
+
+import de.fzj.unicore.bes.client.FactoryClient;
+import de.fzj.unicore.bes.faults.InvalidRequestMessageFault;
+import de.fzj.unicore.bes.faults.NotAcceptingNewActivitiesFault;
+import de.fzj.unicore.bes.faults.UnsupportedFeatureFault;
+
+import de.fzj.unicore.wsrflite.xmlbeans.WSUtilities;
+import eu.emi.security.authn.x509.impl.CertificateUtils.Encoding;
+import eu.emi.security.authn.x509.impl.DirectoryCertChainValidator;
+import eu.emi.security.authn.x509.impl.PEMCredential;
+import eu.unicore.util.httpclient.DefaultClientConfiguration;
+
+
+
+public class BESProvider implements GFacProvider {
+    protected final Logger log = LoggerFactory.getLogger(this.getClass());
+
+    private DefaultClientConfiguration secProperties;
+
+    private String jobId;
+    
+    
+        
+    @Override
+	public void initialize(JobExecutionContext jobExecutionContext)
+			throws GFacProviderException {
+		
+    	log.info("Initializing GFAC's <<< UNICORE Provider >>>");
+    	initSecurityProperties(jobExecutionContext);
+    	log.debug("initialized security properties");
+
+	}
+
+	@Override
+	public void execute(JobExecutionContext jobExecutionContext)
+			throws GFacProviderException {
+		UnicoreHostType host = (UnicoreHostType) jobExecutionContext.getApplicationContext().getHostDescription().getType();
+        
+        String factoryUrl = host.getUnicoreHostAddressArray()[0];
+
+        EndpointReferenceType eprt = EndpointReferenceType.Factory.newInstance();
+        eprt.addNewAddress().setStringValue(factoryUrl);
+        log.info("========================================");
+        log.info(String.format("Job Submitted to %s.\n", factoryUrl));
+
+        FactoryClient factory = null;
+        try {
+            factory = new FactoryClient(eprt, secProperties);
+        } catch (Exception e) {
+            throw new GFacProviderException("");
+        }
+        CreateActivityDocument cad = CreateActivityDocument.Factory
+                .newInstance();
+        
+        
+        try {
+			cad.addNewCreateActivity().addNewActivityDocument()
+			        .setJobDefinition(JSDLGenerator.buildJSDLInstance(jobExecutionContext).getJobDefinition());
+		} catch (Exception e1) {
+			// TODO Auto-generated catch block
+			e1.printStackTrace();
+		}
+        
+        CreateActivityResponseDocument response = null;
+        try {
+            response = factory.createActivity(cad);
+        } catch (NotAcceptingNewActivitiesFault notAcceptingNewActivitiesFault) {
+            notAcceptingNewActivitiesFault.printStackTrace();  //To change body of catch
statement use File | Settings | File Templates.
+        } catch (InvalidRequestMessageFault invalidRequestMessageFault) {
+            invalidRequestMessageFault.printStackTrace();  //To change body of catch statement
use File | Settings | File Templates.
+        } catch (UnsupportedFeatureFault unsupportedFeatureFault) {
+            unsupportedFeatureFault.printStackTrace();  //To change body of catch statement
use File | Settings | File Templates.
+        }
+        EndpointReferenceType activityEpr = response
+                .getCreateActivityResponse().getActivityIdentifier();
+        
+        log.debug("Job EPR: "+activityEpr);
+        
+        log.info("Job: "+activityEpr.getAddress().getStringValue()+  " Submitted.");
+        
+        //factory.waitWhileActivityIsDone(activityEpr, 1000);
+        jobId = WSUtilities.extractResourceID(activityEpr);
+        if (jobId == null) {
+            jobId = new Long(Calendar.getInstance().getTimeInMillis())
+                    .toString();
+        }
+        
+
+        String status = String.format("Job %s is %s.\n", activityEpr.getAddress()
+                .getStringValue(), factory.getActivityStatus(activityEpr)
+                .toString()).toString();
+
+        
+        log.info(status);
+        
+        
+        while ((factory.getActivityStatus(activityEpr) != ActivityStateEnumeration.FINISHED)
&&
+                (factory.getActivityStatus(activityEpr) != ActivityStateEnumeration.FAILED)){
+            status = String.format("Job %s is %s.\n", activityEpr.getAddress()
+                    .getStringValue(), factory.getActivityStatus(activityEpr)
+                    .toString()).toString();
+            try {
+            	log.info(status);
+                Thread.sleep(1000);
+            } catch (InterruptedException e) {
+                e.printStackTrace();  //To change body of catch statement use File | Settings
| File Templates.
+            }
+            continue;
+        }
+
+        status = String.format("Job %s is %s.\n", activityEpr.getAddress()
+                .getStringValue(), factory.getActivityStatus(activityEpr)
+                .toString()).toString();
+
+        log.info(status);
+
+	}
+
+	@Override
+	public void dispose(JobExecutionContext jobExecutionContext)
+			throws GFacProviderException {
+		
+		secProperties = null;
+		
+	}
+	
+	
+	protected void initSecurityProperties(JobExecutionContext jobExecutionContext) throws GFacProviderException{
+		
+		if (secProperties != null) return;
+		
+		GSISecurityContext gssContext = new GSISecurityContext(jobExecutionContext.getGFacConfiguration());
+		GlobusCredential credentials = gssContext.getGlobusCredential();
+		ByteArrayOutputStream bos = new ByteArrayOutputStream();
+		
+		BufferedOutputStream bufos = new BufferedOutputStream(bos);
+		
+		ByteArrayInputStream bis = null;
+		BufferedInputStream bufis = null;
+		try{
+			credentials.save(bufos);
+			bufos.flush();
+			
+			//TODO: to be supported by airavata gsscredential class
+			List<String> trustedCert = new ArrayList<String>();
+			trustedCert.add(gssContext.getTrustedCertLoc()+"/*.0");
+			trustedCert.add(gssContext.getTrustedCertLoc()+"/*.pem");
+			
+			char[] c = null;
+			
+			DirectoryCertChainValidator dcValidator = new DirectoryCertChainValidator(trustedCert,
Encoding.PEM, -1, 60000, null);
+			bis = new ByteArrayInputStream(bos.toByteArray());
+			bufis = new BufferedInputStream(bis);
+			PEMCredential pem = new PEMCredential(bufis, c);
+			
+			secProperties = new DefaultClientConfiguration(dcValidator, pem);
+			secProperties.doSSLAuthn();
+			
+			String[] outHandlers = secProperties.getOutHandlerClassNames();
+			
+			Set<String> outHandlerLst = null; 
+			
+	        if(outHandlers == null) {
+	        	outHandlerLst = new HashSet<String>();
+	        }
+	        else  {
+	        	outHandlerLst = new HashSet<String>(Arrays.asList(outHandlers));
+	        }
+	        
+	        outHandlerLst.add("de.fzj.unicore.uas.security.ProxyCertOutHandler");
+	        
+	        secProperties.setOutHandlerClassNames(outHandlerLst.toArray(new String[outHandlerLst.size()]));
+			
+		}
+		catch (Exception e) {
+			throw new GFacProviderException(e.getMessage(), e); 
+		} 
+		finally{
+			try {
+				if(bos!=null)bos.close();
+				if(bufos!=null)bufos.close();
+				if(bis!=null)bis.close();
+				if(bufis!=null)bufis.close();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+	}
+	
+	
+//	public static void main(String[] args) throws Exception {
+//		
+//		PropertyConfigurator.configure("src/test/resources/logging.properties");
+//		
+////		String url = "https://daemon.india.futuregrid.org:8081/INDIA/services/BESFactory?res=default_bes_factory";
+//		
+//		String url = "https://zam1161v01.zam.kfa-juelich.de:8002/INTEROP1/services/BESFactory?res=default_bes_factory";
+//		
+//		ClientProperties cp = new ClientProperties(new File("src/test/resources/sec.properties"));
+//		
+//		EndpointReferenceType epr = WSUtilities.makeServiceEPR(url);
+//		
+//		FactoryClient bes = new FactoryClient(url, epr, cp);
+//		
+//		System.out.println(bes.getFactoryAttributesDocument());
+//		
+//	}
+	
+	
+	
+	
+}

Added: 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=1448682&view=auto
==============================================================================
--- airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/BESProviderTest.java
(added)
+++ airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/BESProviderTest.java
Thu Feb 21 15:35:22 2013
@@ -0,0 +1,217 @@
+//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.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.schemas.gfac.ApplicationDeploymentDescriptionType;
+//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.ProjectAccountType;
+//import org.apache.airavata.schemas.gfac.QueueType;
+//import org.apache.airavata.schemas.gfac.StringParameterType;
+//import org.apache.airavata.schemas.gfac.URIParameterType;
+//import org.apache.airavata.schemas.gfac.UnicoreHostType;
+//import org.apache.log4j.PropertyConfigurator;
+//import org.junit.Before;
+//import org.junit.Test;
+//
+//public class BESProviderTest {
+//	private JobExecutionContext jobExecutionContext;
+//
+//	private static final String[] hostArray = new String[] { "https://zam1161v01.zam.kfa-juelich.de:8002/INTEROP1/services/BESFactory?res=default_bes_factory"
};
+//	private static final String gridftpAddress = "gsiftp://gridftp1.ls4.tacc.utexas.edu:2811";
+//
+//	//directory where data will be copy into and copied out to unicore resources
+//
+//	// private static final String scratchDir = "/brashear/msmemon/airavata";
+//
+//	private static final String scratchDir = "/scratch/02055/msmemon/airavata";
+//
+//	private String remoteTempDir = null;
+//
+//	@Before
+//	public void initJobContext() 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 + "SimpleEcho" + "_" + date + "_"
+//				+ UUID.randomUUID();
+//
+//		jobExecutionContext = new JobExecutionContext(getGFACConfig(), getServiceDesc().getType().getName());
+//		jobExecutionContext.setApplicationContext(getApplicationContext());
+//		jobExecutionContext.setInMessageContext(getInMessageContext());
+//		jobExecutionContext.setOutMessageContext(getOutMessageContext());
+//	}
+//
+//	@Test
+//	public void testBESProvider() throws GFacException {
+////		GFacAPI gFacAPI = new GFacAPI();
+////		gFacAPI.submitJob(jobExecutionContext);
+//	}
+//
+//	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("msmemon");
+//		gFacConfiguration.setMyProxyPassphrase("******");
+//		gFacConfiguration.setTrustedCertLocation("/home/m.memon/.globus/certificates");
+//		return gFacConfiguration;
+//	}
+//
+//	private ApplicationContext getApplicationContext() {
+//		ApplicationContext applicationContext = new ApplicationContext();
+//		applicationContext.setHostDescription(getHostDesc());
+//		applicationContext
+//				.setApplicationDeploymentDescription(getApplicationDesc());
+//		applicationContext.setServiceDescription(getServiceDesc());
+//		return applicationContext;
+//	}
+//
+//	private ApplicationDescription getApplicationDesc() {
+//		ApplicationDescription appDesc = new ApplicationDescription(
+//				HpcApplicationDeploymentType.type);
+//		HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc
+//				.getType();
+//		ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory
+//				.newInstance();
+//		name.setStringValue("Simple Cat");
+//		app.setApplicationName(name);
+//		ProjectAccountType projectAccountType = app.addNewProjectAccount();
+//		projectAccountType.setProjectAccountNumber("TG-AST110064");
+//
+//		QueueType queueType = app.addNewQueue();
+//		queueType.setQueueName("development");
+//
+//		app.setCpuCount(1);
+//		// TODO: also handle parallel jobs
+//		app.setJobType(JobTypeType.SERIAL);
+//		app.setNodeCount(1);
+//		app.setProcessorsPerNode(1);
+//
+//		/*
+//		 * Use bat file if it is compiled on Windows
+//		 */
+//		app.setExecutableLocation("/bin/cat");
+//
+//
+//		System.out.println(remoteTempDir);
+//
+//
+//		app.setScratchWorkingDirectory(remoteTempDir);
+//		app.setStaticWorkingDirectory(remoteTempDir);
+//
+//
+//		// this is required
+//		app.setInputDataDirectory(remoteTempDir + File.separator + "inputData");
+//		app.setOutputDataDirectory(remoteTempDir + File.separator + "outputData");
+//
+//		app.setStandardOutput(app.getOutputDataDirectory()+ File.separator + "stdout");
+//		app.setStandardError(app.getOutputDataDirectory()+ File.separator + "stderr");
+//
+//		return appDesc;
+//	}
+//
+//	private 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;
+//	}
+//
+//	private ServiceDescription getServiceDesc() {
+//		ServiceDescription serv = new ServiceDescription();
+//		serv.getType().setName("SimpleCat");
+//
+//		List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+//		InputParameterType input = InputParameterType.Factory.newInstance();
+//		input.setParameterName("copy_input");
+//		input.setParameterType(URIParameterType.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);
+//		return serv;
+//	}
+//
+//	private MessageContext getInMessageContext() {
+//		MessageContext inMessage = new MessageContext();
+//
+//		ActualParameter copy_input = new ActualParameter();
+//        copy_input.getType().changeType(URIParameterType.type);
+//        ((URIParameterType)copy_input.getType()).setValue("file:///tmp/tmpstrace");
+//        inMessage.addParameter("f1", copy_input);
+//
+//    	ActualParameter f2 = new ActualParameter();
+//        f2.getType().changeType(URIParameterType.type);
+//        ((URIParameterType)f2.getType()).setValue("http://unicore-dev.zam.kfa-juelich.de/maven/cog-globus/cog-jglobus/1.4/cog-jglobus-1.4.jar");
+//        inMessage.addParameter("f2", f2);
+//
+//    	ActualParameter f3 = new ActualParameter();
+//        f3.getType().changeType(URIParameterType.type);
+//        ((URIParameterType)f3.getType()).setValue(gridftpAddress+"/"+scratchDir+"/file1.txt");
+//        inMessage.addParameter("f3", f3);
+//
+//        ActualParameter a1 = new ActualParameter();
+//        a1.getType().changeType(StringParameterType.type);
+//        ((StringParameterType)a1.getType()).setValue("tmpstrace");
+//        inMessage.addParameter("arg1", a1);
+//
+//        return inMessage;
+//	}
+//
+//	private MessageContext getOutMessageContext() {
+//
+//		MessageContext outMessage = new MessageContext();
+//		ActualParameter a1 = new ActualParameter();
+//		a1.getType().changeType(StringParameterType.type);
+//		((StringParameterType)a1.getType()).setValue("file1.txt");
+//		outMessage.addParameter("echo_output", a1);
+//
+//		ActualParameter o1 = new ActualParameter();
+//		o1.getType().changeType(URIParameterType.type);
+//		// this may be any gridftp / ftp directory
+//		((URIParameterType)o1.getType()).setValue(gridftpAddress+"/"+remoteTempDir + "/" + "outputData"+"/"+"cog-jglobus-1.4.jar");
+//		outMessage.addParameter("o1", o1);
+//
+//		return outMessage;
+//	}
+//
+//}

Added: 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=1448682&view=auto
==============================================================================
--- airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTest.java
(added)
+++ airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTest.java
Thu Feb 21 15:35:22 2013
@@ -0,0 +1,241 @@
+//package org.apache.airavata.core.gfac.services.impl;
+//
+//import static org.junit.Assert.assertEquals;
+//import static org.junit.Assert.assertTrue;
+//
+//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.ServiceDescription;
+//import org.apache.airavata.gfac.GFacConfiguration;
+//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.provider.utils.JSDLGenerator;
+//import org.apache.airavata.gfac.provider.utils.JSDLUtils;
+//import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
+//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.ProjectAccountType;
+//import org.apache.airavata.schemas.gfac.QueueType;
+//import org.apache.airavata.schemas.gfac.StringParameterType;
+//import org.apache.airavata.schemas.gfac.URIParameterType;
+//import org.apache.airavata.schemas.gfac.UnicoreHostType;
+//import org.apache.log4j.PropertyConfigurator;
+//import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionDocument;
+//import org.junit.Before;
+//import org.junit.Test;
+//
+//public class JSDLGeneratorTest {
+//
+//
+//	private static final String[] hostArray = new String[] { "https://zam1161v01.zam.kfa-juelich.de:8002/INTEROP1/services/BESFactory?res=default_bes_factory"
};
+//	private static final String gridftpAddress = "gsiftp://gridftp.blacklight.psc.teragrid.org:2811";
+//	private static final String hostAddress = "zam1161v01.zam.kfa-juelich.de";
+//	private static final String hostName = "DEMO-INTEROP-SITE";
+//	private static final String scratchDir = "/scratch/msmemon/airavata";
+//
+//	private JobExecutionContext jobExecutionContext;
+//
+//	@Test
+//	public void testJSDLUtils() throws Exception{
+//		JobDefinitionDocument jobDefDoc = JSDLGenerator.buildJSDLInstance(jobExecutionContext);
+//
+//		assertTrue (jobDefDoc.getJobDefinition().getJobDescription().getApplication().toString().contains("/bin/cat"));
+//		assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getDataStagingArray().length
> 2);
+//
+//		assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getJobIdentification().getJobProjectArray().length
> 0);
+//
+//		assertEquals("jsdl_stdout", JSDLUtils.getOrCreatePOSIXApplication(jobDefDoc.getJobDefinition()).getOutput().getStringValue().toString());
+//
+//		System.out.println(jobDefDoc);
+//
+//	}
+//
+//	@Before
+//	public void initJobContext() throws Exception {
+//		PropertyConfigurator.configure("src/test/resources/logging.properties");
+//		jobExecutionContext = new JobExecutionContext(getGFACConfig(), getServiceDesc().getType().getName());
+//		jobExecutionContext.setApplicationContext(getApplicationContext());
+//		jobExecutionContext.setInMessageContext(getInMessageContext());
+//		jobExecutionContext.setOutMessageContext(getOutMessageContext());
+//	}
+//
+//	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("");
+//		gFacConfiguration.setMyProxyUser("");
+//		gFacConfiguration.setMyProxyPassphrase("");
+//		gFacConfiguration.setTrustedCertLocation("");
+//		return gFacConfiguration;
+//	}
+//
+//
+//	private ApplicationContext getApplicationContext() {
+//		ApplicationContext applicationContext = new ApplicationContext();
+//		applicationContext.setHostDescription(getHostDesc());
+//		applicationContext
+//				.setApplicationDeploymentDescription(getApplicationDesc());
+//
+//		applicationContext.setServiceDescription(getServiceDesc());
+//		return applicationContext;
+//	}
+//
+//	private ApplicationDescription getApplicationDesc() {
+//		ApplicationDescription appDesc = new ApplicationDescription(
+//				HpcApplicationDeploymentType.type);
+//		HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc
+//				.getType();
+//		ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory
+//				.newInstance();
+//		name.setStringValue("EchoLocal");
+//		app.setApplicationName(name);
+//		ProjectAccountType projectAccountType = app.addNewProjectAccount();
+//		projectAccountType.setProjectAccountNumber("TG-AST110064");
+//
+//		QueueType queueType = app.addNewQueue();
+//		queueType.setQueueName("development");
+//
+//		app.setCpuCount(1);
+//		// TODO: also handle parallel jobs
+//		app.setJobType(JobTypeType.SERIAL);
+//		app.setNodeCount(1);
+//		app.setProcessorsPerNode(1);
+//
+//		/*
+//		 * Use bat file if it is compiled on Windows
+//		 */
+//		app.setExecutableLocation("/bin/cat");
+//
+//		/*
+//		 * Default tmp location
+//		 */
+//		String date = (new Date()).toString();
+//		date = date.replaceAll(" ", "_");
+//		date = date.replaceAll(":", "_");
+//
+//		String remoteTempDir = scratchDir + File.separator + "SimpleEcho" + "_" + date + "_"
+//				+ UUID.randomUUID();
+//
+//		System.out.println(remoteTempDir);
+//
+//		// no need of these parameters, as unicore manages by itself
+//		app.setScratchWorkingDirectory(remoteTempDir);
+//		app.setStaticWorkingDirectory(remoteTempDir);
+//		app.setInputDataDirectory(remoteTempDir + File.separator + "inputData");
+//		app.setOutputDataDirectory(remoteTempDir + File.separator + "outputData");
+//
+//		app.setStandardOutput(app.getOutputDataDirectory()+"/jsdl_stdout");
+//
+//		app.setStandardError(app.getOutputDataDirectory()+"/jsdl_stderr");
+//
+//		return appDesc;
+//	}
+//
+//	private HostDescription getHostDesc() {
+//		HostDescription host = new HostDescription(UnicoreHostType.type);
+//		host.getType().setHostAddress(hostAddress);
+//		host.getType().setHostName(hostName);
+//		((UnicoreHostType) host.getType()).setUnicoreHostAddressArray(hostArray);
+//		((UnicoreHostType) host.getType()).setGridFTPEndPointArray(new String[]{gridftpAddress});
+//		return host;
+//	}
+//
+//	private ServiceDescription getServiceDesc() {
+//		ServiceDescription serv = new ServiceDescription();
+//		serv.getType().setName("SimpleCat");
+//
+//		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);
+//
+//
+//		return serv;
+//	}
+//
+//	private MessageContext getInMessageContext() {
+//		MessageContext inMessage = new MessageContext();
+//
+//        ActualParameter i1 = new ActualParameter();
+//        i1.getType().changeType(URIParameterType.type);
+//        ((URIParameterType)i1.getType()).setValue("file:///tmp/ifile1");
+//        inMessage.addParameter("i1", i1);
+//
+//        ActualParameter i2 = new ActualParameter();
+//        i2.getType().changeType(URIParameterType.type);
+//        ((URIParameterType)i2.getType()).setValue("file:///tmp/ifile2");
+//        inMessage.addParameter("i2", i2);
+//
+//        ActualParameter i3 = new ActualParameter();
+//        i2.getType().changeType(URIParameterType.type);
+//        ((URIParameterType)i2.getType()).setValue("///tmp/ifile2");
+//        inMessage.addParameter("i3", i2);
+//
+//        ActualParameter simpleArg = new ActualParameter();
+//        simpleArg.getType().changeType(StringParameterType.type);
+//        ((StringParameterType)simpleArg.getType()).setValue("argument1");
+//        inMessage.addParameter("a1", simpleArg);
+//
+//        ActualParameter nameValueArg = new ActualParameter();
+//        nameValueArg.getType().changeType(StringParameterType.type);
+//        ((StringParameterType)nameValueArg.getType()).setValue("name1=value1");
+//        inMessage.addParameter("nameValueArg", nameValueArg);
+//
+//		ActualParameter echo_input = new ActualParameter();
+//		((StringParameterType) echo_input.getType())
+//				.setValue("echo_output=hello");
+//		inMessage.addParameter("echo_input", echo_input);
+//
+//		return inMessage;
+//	}
+//
+//	private MessageContext getOutMessageContext() {
+//		MessageContext om1 = new MessageContext();
+//
+//		// TODO: Aint the output parameters are only the name of the files staged out to the
gridftp endpoint?
+//		ActualParameter o1 = new ActualParameter();
+//		((StringParameterType) o1.getType())
+//		.setValue("tempfile");
+//		om1.addParameter("o1", o1);
+//
+//		ActualParameter o2 = new ActualParameter();
+//		o2.getType().changeType(URIParameterType.type);
+//
+//		((URIParameterType)o2.getType()).setValue("http://path/to/upload");
+//		om1.addParameter("o2", o2);
+//
+//
+//
+//		return om1;
+//	}
+//
+//
+//
+//}



Mime
View raw message