You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2013/01/21 17:41:35 UTC
svn commit: r1436474 -
/airavata/sandbox/grid-tools/bes-client/src/test/java/org/apache/airavata/sample/bes/TestJSDLGeneration.java
Author: lahiru
Date: Mon Jan 21 16:41:35 2013
New Revision: 1436474
URL: http://svn.apache.org/viewvc?rev=1436474&view=rev
Log:
committing patch from Shabaz for https://issues.apache.org/jira/browse/AIRAVATA-657.
Added:
airavata/sandbox/grid-tools/bes-client/src/test/java/org/apache/airavata/sample/bes/TestJSDLGeneration.java
Added: airavata/sandbox/grid-tools/bes-client/src/test/java/org/apache/airavata/sample/bes/TestJSDLGeneration.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/grid-tools/bes-client/src/test/java/org/apache/airavata/sample/bes/TestJSDLGeneration.java?rev=1436474&view=auto
==============================================================================
--- airavata/sandbox/grid-tools/bes-client/src/test/java/org/apache/airavata/sample/bes/TestJSDLGeneration.java (added)
+++ airavata/sandbox/grid-tools/bes-client/src/test/java/org/apache/airavata/sample/bes/TestJSDLGeneration.java Mon Jan 21 16:41:35 2013
@@ -0,0 +1,124 @@
+package org.apache.airavata.sample.bes;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.ApplicationDocument;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.ApplicationType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.CreationFlagEnumeration;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.DataStagingDocument;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.DataStagingType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionDocument;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDescriptionType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.ResourcesType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.SourceTargetType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdlPosix.POSIXApplicationDocument;
+import org.ggf.schemas.jsdl.x2005.x11.jsdlPosix.POSIXApplicationType;
+import org.junit.Test;
+
+import de.fzj.unicore.wsrflite.xmlbeans.WSUtilities;
+
+
+/**
+ * This test case creates a sample jsdl instance
+ * containing Application, Arguments, Source, and Target Elements
+ *
+ * */
+
+public class TestJSDLGeneration {
+
+ @Test
+ public void testSimpleJSDLInstance(){
+
+ JobDefinitionDocument jdd = JobDefinitionDocument.Factory.newInstance();
+ JobDescriptionType jobDescType = jdd.addNewJobDefinition().addNewJobDescription();
+
+ // setting application details
+ ApplicationDocument appDoc = ApplicationDocument.Factory.newInstance();
+ ApplicationType app = appDoc.addNewApplication();
+ app.setApplicationName("gnuplot");
+ WSUtilities.append(posixElement(), appDoc);
+ jobDescType.setApplication(appDoc.getApplication());
+
+ // setting resource details
+ ResourcesType resType = jobDescType.addNewResources();
+ resType.addNewIndividualPhysicalMemory().addNewLowerBoundedRange().setDoubleValue(20197152.0);
+ resType.addNewTotalCPUCount().addNewExact().setDoubleValue(1.0);
+
+
+ // setting simple data staging details
+ newDataStagingElement(jobDescType.addNewDataStaging(), true, "control.txt");
+ newDataStagingElement(jobDescType.addNewDataStaging(), true, "input.dat");
+ newDataStagingElement(jobDescType.addNewDataStaging(), false, "output1.png");
+
+ // setting hpcp-file staging profile data staging details and credentials
+ newHPCPFSPDataStagingElement(jobDescType.addNewDataStaging(), true, "control.txt", "u1", "p1");
+ newHPCPFSPDataStagingElement(jobDescType.addNewDataStaging(), true, "input.dat", "u1", "p1");
+ newHPCPFSPDataStagingElement(jobDescType.addNewDataStaging(), false, "output1.png", "u1", "p1");
+ newHPCPFSPDataStagingElement(jobDescType.addNewDataStaging(), false, "extendedoutput.png", "u1", "p1");
+
+ assertTrue(HPCPUtils.extractUsernamePassword(jdd)!=null);
+
+ System.out.println(jdd);
+
+ }
+
+ private POSIXApplicationDocument posixElement(){
+ POSIXApplicationDocument posixDoc = POSIXApplicationDocument.Factory.newInstance();
+ POSIXApplicationType posixType = posixDoc.addNewPOSIXApplication();
+ posixType.addNewExecutable().setStringValue("/usr/bin/gnuplot");
+ posixType.addNewArgument().setStringValue("control.lst");
+ posixType.addNewArgument().setStringValue("input.dat");
+
+ //if they both are not set, then the target unicore server will name them stdout and stderr without i.e. '.txt'
+ posixType.addNewOutput().setStringValue("stdout.txt");
+ posixType.addNewError().setStringValue("stderr.txt");
+
+ return posixDoc;
+ }
+
+ private void newDataStagingElement(DataStagingType dsType, boolean isSource, String fileName){
+ dsType.setFileName(fileName);
+ dsType.setCreationFlag(CreationFlagEnumeration.OVERWRITE);
+ dsType.setDeleteOnTermination(true);
+ if(isSource)
+ dsType.addNewSource().setURI("http://foo.bar.com/~me/"+fileName);
+ else
+ dsType.addNewTarget().setURI("http://foo.bar.com/~me/"+fileName);
+ }
+
+
+ private void newHPCPFSPDataStagingElement(final DataStagingType dsType, boolean isSource, String fileName, String userName, String password){
+ dsType.setFileName(fileName);
+ dsType.setCreationFlag(CreationFlagEnumeration.OVERWRITE);
+ dsType.setDeleteOnTermination(true);
+ SourceTargetType sourceTarget = null;
+
+ if(isSource)
+ sourceTarget = dsType.addNewSource();
+ else
+ sourceTarget = dsType.addNewTarget();
+
+ sourceTarget.setURI("http://foo.bar.com/~me/"+fileName);
+
+ DataStagingDocument dsDoc = DataStagingDocument.Factory.newInstance();
+ dsDoc.setDataStaging(dsType);
+
+ WSUtilities.append(HPCPUtils.createCredentialsElement(userName, password), dsDoc);
+
+ dsType.set(dsDoc.getDataStaging());
+ }
+
+
+ public int count(String word, String line){
+ Pattern pattern = Pattern.compile(word);
+ Matcher matcher = pattern.matcher(line);
+ int counter = 0;
+ while (matcher.find())
+ counter++;
+ return counter;
+ }
+
+}