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