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/09/03 23:21:23 UTC
svn commit: r1519854 - in /airavata/sandbox/gsissh/src:
main/java/org/apache/airavata/gsi/ssh/api/
main/java/org/apache/airavata/gsi/ssh/api/job/
main/java/org/apache/airavata/gsi/ssh/impl/ main/resources/schemas/
test/java/org/apache/airavata/gsi/ssh/...
Author: lahiru
Date: Tue Sep 3 21:21:23 2013
New Revision: 1519854
URL: http://svn.apache.org/r1519854
Log:
adding new set of features to gsissh api.
Added:
airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Cluster.java
airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Core.java
airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Machine.java
airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/GSISSHAPI.java
Modified:
airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/SSHApi.java
airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/JobDescriptor.java
airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/DefaultSSHApi.java
airavata/sandbox/gsissh/src/main/resources/schemas/PBSJobDescriptor.xsd
airavata/sandbox/gsissh/src/test/java/org/apache/airavata/gsi/ssh/impl/DefaultSSHApiTest.java
Added: airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Cluster.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Cluster.java?rev=1519854&view=auto
==============================================================================
--- airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Cluster.java (added)
+++ airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Cluster.java Tue Sep 3 21:21:23 2013
@@ -0,0 +1,38 @@
+/*
+ *
+ * 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.gsi.ssh.api;
+
+public class Cluster {
+
+ private Machine[] Nodes;
+/**
+ *
+ * @return cluster Nodes as array of machines
+ */
+ public Machine[] getNodes() {
+ return Nodes;
+ }
+
+ public void setNodes(Machine[] Nodes) {
+ this.Nodes = Nodes;
+ }
+
+}
Added: airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Core.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Core.java?rev=1519854&view=auto
==============================================================================
--- airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Core.java (added)
+++ airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Core.java Tue Sep 3 21:21:23 2013
@@ -0,0 +1,56 @@
+/*
+ *
+ * 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.gsi.ssh.api;
+
+import org.apache.airavata.gsi.ssh.api.job.JobDescriptor;
+
+public class Core {
+ private JobDescriptor job;
+ private String id;
+
+ public Core(String id) {
+ this.id = id;
+ this.job = null;
+ }
+
+ /**
+ * @return core's id
+ */
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ /**
+ * @return job running on the core
+ */
+ public JobDescriptor getJob() {
+ return job;
+ }
+
+ public void setJob(JobDescriptor job) {
+ this.job = job;
+ }
+
+}
Added: airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Machine.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Machine.java?rev=1519854&view=auto
==============================================================================
--- airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Machine.java (added)
+++ airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Machine.java Tue Sep 3 21:21:23 2013
@@ -0,0 +1,104 @@
+/*
+ *
+ * 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.gsi.ssh.api;
+
+import java.util.HashMap;
+
+public class Machine {
+ private String Name;
+ private Core[] Cores;
+ private String state;
+ private HashMap<String, String> status;
+ private String np;
+ private String ntype;
+
+ /**
+ * @return the machine's name
+ */
+ public String getName() {
+ return Name;
+ }
+
+ public void setName(String Name) {
+ this.Name = Name;
+ }
+
+ /**
+ * @return machine cores as an array
+ */
+ public Core[] getCores() {
+ return Cores;
+ }
+
+ public void setCores(Core[] Cores) {
+ this.Cores = Cores;
+ }
+
+
+ /**
+ * @return the machine state
+ */
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ /**
+ * @return the status
+ */
+ public HashMap<String, String> getStatus() {
+ return status;
+ }
+
+ public void setStatus(HashMap<String, String> status) {
+ this.setStatus(status);
+ }
+
+
+ /**
+ * @return the number of cores in the machine
+ */
+ public String getNp() {
+ return np;
+ }
+
+
+ public void setNp(String np) {
+ this.np = np;
+ }
+
+ /**
+ * @return the ntype of the machine
+ */
+ public String getNtype() {
+ return ntype;
+ }
+
+
+ public void setNtype(String ntype) {
+ this.ntype = ntype;
+ }
+
+
+}
Modified: airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/SSHApi.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/SSHApi.java?rev=1519854&r1=1519853&r2=1519854&view=diff
==============================================================================
--- airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/SSHApi.java (original)
+++ airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/SSHApi.java Tue Sep 3 21:21:23 2013
@@ -71,4 +71,9 @@ public interface SSHApi {
String submitAsyncJob(ServerInfo serverInfo,
AuthenticationInfo authenticationInfo,
JobDescriptor jobDescriptor) throws SSHApiException;
+
+ Cluster getCluster(ServerInfo serverInfo, AuthenticationInfo authenticationInfo) throws SSHApiException;
+
+
+ JobDescriptor getJobById(ServerInfo serverInfo,AuthenticationInfo authenticationInfo, String jobID)throws SSHApiException;
}
Modified: airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/JobDescriptor.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/JobDescriptor.java?rev=1519854&r1=1519853&r2=1519854&view=diff
==============================================================================
--- airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/JobDescriptor.java (original)
+++ airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/JobDescriptor.java Tue Sep 3 21:21:23 2013
@@ -132,5 +132,30 @@ public class JobDescriptor {
InputList inputList = this.getJobDescriptorDocument().getJobDescriptor().addNewInputs();
inputList.setInputArray(inputValue.toArray(new String[inputValue.size()]));
}
+
+ public void setJobID(String jobID) {
+ this.getJobDescriptorDocument().getJobDescriptor().setJobID(jobID);
+ }
+
+ public void setQueueName(String queueName) {
+ this.getJobDescriptorDocument().getJobDescriptor().setQueueName(queueName);
+ }
+ public void setStatus(String queueName) {
+ this.getJobDescriptorDocument().getJobDescriptor().setStatus(queueName);
+ }
+
+
+ public void getShellName() {
+ this.getJobDescriptorDocument().getJobDescriptor().getShellName();
+ }
+
+ public String getJobName() {
+ return this.getJobDescriptorDocument().getJobDescriptor().getJobName();
+ }
+
+ public String getJobId(){
+ return this.getJobDescriptorDocument().getJobDescriptor().getJobID();
+ }
+
}
Modified: airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/DefaultSSHApi.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/DefaultSSHApi.java?rev=1519854&r1=1519853&r2=1519854&view=diff
==============================================================================
--- airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/DefaultSSHApi.java (original)
+++ airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/DefaultSSHApi.java Tue Sep 3 21:21:23 2013
@@ -228,7 +228,7 @@ public class DefaultSSHApi implements SS
//reusing submitAsyncJobWithPBS method to submit a job
String jobID = this.submitAsyncJobWithPBS(serverInfo, authenticationInfo, tempPBSFile.getAbsolutePath(), jobDescriptor);
- return jobID;
+ return jobID.replace("\n","");
} catch (TransformerConfigurationException e) {
throw new SSHApiException("Error parsing PBS transformation", e);
} catch (TransformerException e) {
@@ -241,7 +241,165 @@ public class DefaultSSHApi implements SS
} finally {
tempPBSFile.delete();
}
+ }
+
+ public Cluster getCluster(ServerInfo serverInfo, AuthenticationInfo authenticationInfo) throws SSHApiException {
+ RawCommandInfo rawCommandInfo = new RawCommandInfo("/opt/torque/bin/qnodes");
+
+ StandardOutReader stdOutReader = new StandardOutReader();
+ this.executeCommand(rawCommandInfo, serverInfo, authenticationInfo, stdOutReader);
+ String result = stdOutReader.getStdOutput();
+ String[] Nodes = result.split("\n");
+ String[] line;
+ String header, value;
+ Machine Node;
+ Core[] Cores = null;
+ ArrayList<Machine> Machines = new ArrayList<Machine>();
+ int i = 0;
+ while (i < Nodes.length) {
+ Node = new Machine();
+ Node.setName(Nodes[i]);
+ i++;
+
+ while (i < Nodes.length) {
+ if (!Nodes[i].startsWith(" ")) {
+ i++;
+ break;
+ }
+
+ line = Nodes[i].split("=");
+ header = line[0].trim();
+ value = line[1].trim();
+ if ("state".equals(header))
+ Node.setState(value);
+ else if ("np".equals(header)) {
+ Node.setNp(value);
+ int np = Integer.parseInt(Node.getNp());
+ Cores = new Core[np];
+ for (int n = 0; n < np; n++) {
+ Cores[n] = new Core("" + n);
+ }
+ } else if ("ntype".equals(header))
+ Node.setNtype(value);
+ else if ("jobs".equals(header)) {
+ String[] jobs = value.split(", ");
+ JobDescriptor jo = new JobDescriptor();
+ //Job[] Jobs = new Job[jobs.length];
+ for (int j = 0; j < jobs.length; j++) {
+ String[] c = jobs[j].split("/");
+ String Jid = c[1];
+ jo = this.getJobById(serverInfo, authenticationInfo, Jid);
+ int core = Integer.parseInt(c[0]);
+ Cores[core].setJob(jo);
+
+ }
+
+
+ }
+ i++;
+ }
+ Node.setCores(Cores);
+ Machines.add(Node);
+ }
+ Cluster c = new Cluster();
+ c.setNodes(Machines.toArray(new Machine[Machines.size()]));
+ return c;
+ }
+
+ public JobDescriptor getJobById(ServerInfo serverInfo, AuthenticationInfo authenticationInfo, String jobID) throws SSHApiException {
+ RawCommandInfo rawCommandInfo = new RawCommandInfo("/opt/torque/bin/qstat -f " + jobID);
+
+ StandardOutReader stdOutReader = new StandardOutReader();
+ this.executeCommand(rawCommandInfo, serverInfo, authenticationInfo, stdOutReader);
+ String result = stdOutReader.getStdOutput();
+ String[] info = result.split("\n");
+ JobDescriptor jobDescriptor = new JobDescriptor();
+ String header = "";
+ String value = "";
+ String[] line;
+ for (int i = 0; i < info.length; i++) {
+ if (info[i].contains("=")) {
+ line = info[i].split("=", 2);
+ } else {
+ line = info[i].split(":", 2);
+ }
+ if (line.length >= 2) {
+ header = line[0].trim();
+ // System.out.println("Header = " + header);
+ value = line[1].trim();
+// System.out.println("value = " + value);
+
+ if (header.equals("Variable_List")) {
+ while (info[i + 1].startsWith("\t")) {
+ value += info[i + 1];
+ i++;
+ }
+ value = value.replaceAll("\t", "");
+// jobDescriptor.VariablesList=value;
+// jobDescriptor.analyzeVariableList(value);
+ } else if ("Job Id".equals(header))
+ jobDescriptor.setJobID(value);
+ else if ("Job_Name".equals(header))
+ jobDescriptor.setJobName(value);
+
+ else if ("Job_Owner".equals(header)) {
+// jobDescriptor.setOwner(value);
+ } else if ("resources_used.cput".equals(header)) {
+// jobDescriptor.setUsedcput(value);
+ } else if ("resources_used.mem".equals(header)) {
+// jobDescriptor.setUsedMem(value);
+ } else if ("resources_used.walltime".equals(header)) {
+// jobDescriptor.setEllapsedTime(value);
+ } else if ("job_state".equals(header))
+ jobDescriptor.setStatus(value);
+
+ else if ("queue".equals(header))
+ jobDescriptor.setQueueName(value);
+ else if ("ctime".equals(header)) {
+// jobDescriptor.setCtime(value);
+ } else if ("qtime".equals(header)) {
+// jobDescriptor.setQtime(value);
+ } else if ("mtime".equals(header)) {
+// jobDescriptor.setMtime(value);
+ } else if ("start_time".equals(header)) {
+// jobDescriptor.setStime(value);
+ } else if ("comp_time".equals(header)) {
+// jobDescriptor.setComp_time(value);
+ } else if ("exec_host".equals(header)) {
+// jobDescriptor.setExecuteNode(value);
+ } else if ("Output_Path".equals(header)) {
+ if (info[i + 1].contains("=") || info[i + 1].contains(":"))
+ jobDescriptor.setStandardOutFile(value);
+ else {
+ jobDescriptor.setStandardOutFile(value + info[i + 1].trim());
+ i++;
+ }
+ } else if ("Error_Path".equals(header)) {
+ if (info[i + 1].contains("=") || info[i + 1].contains(":"))
+ jobDescriptor.setStandardErrorFile(value);
+ else {
+ String st = info[i + 1].trim();
+ jobDescriptor.setStandardErrorFile(value + st);
+ i++;
+ }
+
+ } else if ("submit_args".equals(header)) {
+ while (i + 1 < info.length) {
+ if (info[i + 1].startsWith("\t")) {
+ value += info[i + 1];
+ i++;
+ } else
+ break;
+ }
+ value = value.replaceAll("\t", "");
+// jobDescriptor.setSubmitArgs (value);
+ }
+
+
+ }
+ }
+ return jobDescriptor;
}
}
Added: airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/GSISSHAPI.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/GSISSHAPI.java?rev=1519854&view=auto
==============================================================================
--- airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/GSISSHAPI.java (added)
+++ airavata/sandbox/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/GSISSHAPI.java Tue Sep 3 21:21:23 2013
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gsi.ssh.impl;
+
+public class GSISSHAPI {
+}
Modified: airavata/sandbox/gsissh/src/main/resources/schemas/PBSJobDescriptor.xsd
URL: http://svn.apache.org/viewvc/airavata/sandbox/gsissh/src/main/resources/schemas/PBSJobDescriptor.xsd?rev=1519854&r1=1519853&r2=1519854&view=diff
==============================================================================
--- airavata/sandbox/gsissh/src/main/resources/schemas/PBSJobDescriptor.xsd (original)
+++ airavata/sandbox/gsissh/src/main/resources/schemas/PBSJobDescriptor.xsd Tue Sep 3 21:21:23 2013
@@ -14,7 +14,9 @@
<complexType name="pbsParams">
<sequence>
+ <element name="jobID" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<element name="shellName" type="xsd:string" minOccurs="0" maxOccurs="1" default="/bin/bash"/>
+ <element name="queueName" type="xsd:string" minOccurs="0" maxOccurs="1" default="normal"/>
<element name="jobName" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<element name="allEnvExport" type="xsd:boolean" minOccurs="0 " maxOccurs="1" default="true"/>
<element name="mailOptions" type="xsd:string" minOccurs="0" maxOccurs="1" />
@@ -30,6 +32,7 @@
<element name="executablePath" type="xsd:string" minOccurs="0" maxOccurs="1" />
<element name="inputs" type="gsissh:inputList" minOccurs="1" maxOccurs="1"/>
<element name="exports" type="gsissh:exportProperties" minOccurs="1" maxOccurs="1"/>
+ <element name="status" type="xsd:string" minOccurs="0" maxOccurs="1"/>
</sequence>
</complexType>
<complexType name="inputList">
Modified: airavata/sandbox/gsissh/src/test/java/org/apache/airavata/gsi/ssh/impl/DefaultSSHApiTest.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/gsissh/src/test/java/org/apache/airavata/gsi/ssh/impl/DefaultSSHApiTest.java?rev=1519854&r1=1519853&r2=1519854&view=diff
==============================================================================
--- airavata/sandbox/gsissh/src/test/java/org/apache/airavata/gsi/ssh/impl/DefaultSSHApiTest.java (original)
+++ airavata/sandbox/gsissh/src/test/java/org/apache/airavata/gsi/ssh/impl/DefaultSSHApiTest.java Tue Sep 3 21:21:23 2013
@@ -26,6 +26,7 @@ import org.apache.airavata.gsi.ssh.api.j
import org.apache.airavata.gsi.ssh.x2012.x12.ExportProperties;
import org.apache.airavata.gsi.ssh.x2012.x12.InputList;
import org.apache.commons.io.FilenameUtils;
+import org.testng.AssertJUnit;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
@@ -53,9 +54,9 @@ public class DefaultSSHApiTest {
@BeforeTest
public void setUp() throws Exception {
- System.setProperty("myproxy.user", "ogce");
- System.setProperty("myproxy.password", "Jdas7wph");
- System.setProperty("basedir", "/Users/lahirugunathilake/work/airavata/sandbox/gsissh");
+// System.setProperty("myproxy.user", "ogce");
+// System.setProperty("myproxy.password", "");
+// System.setProperty("basedir", "/Users/lahirugunathilake/work/airavata/sandbox/gsissh");
myProxyUserName = System.getProperty("myproxy.user");
myProxyPassword = System.getProperty("myproxy.password");
@@ -129,7 +130,7 @@ public class DefaultSSHApiTest {
}
@Test
- public void testsubmitAsyncJobWithPBS() throws Exception {
+ public void testSubmitAsyncJobWithPBS() throws Exception {
// Create authentication
AuthenticationInfo authenticationInfo
= new MyProxyAuthenticationInfo(myProxyUserName, myProxyPassword, "myproxy.teragrid.org",
@@ -154,7 +155,7 @@ public class DefaultSSHApiTest {
}
@Test
- public void testsubmitAsyncJob() throws Exception {
+ public void testSubmitAsyncJob() throws Exception {
// Create authentication
AuthenticationInfo authenticationInfo
= new MyProxyAuthenticationInfo(myProxyUserName, myProxyPassword, "myproxy.teragrid.org",
@@ -190,5 +191,69 @@ public class DefaultSSHApiTest {
System.out.println(jobDescriptor.toXML());
String jobID = sshApi.submitAsyncJob(serverInfo, authenticationInfo, jobDescriptor);
System.out.println("JobID returned : " + jobID);
+
+// Cluster cluster = sshApi.getCluster(serverInfo, authenticationInfo);
+ JobDescriptor jobById = sshApi.getJobById(serverInfo, authenticationInfo, jobID);
+ AssertJUnit.assertEquals(jobById.getJobId(),jobID);
+ }
+
+ @Test
+ public void testGetCluster()throws Exception{
+// AuthenticationInfo authenticationInfo
+// = new MyProxyAuthenticationInfo(myProxyUserName, myProxyPassword, "myproxy.teragrid.org",
+// 7512, 17280000);
+// // Server info
+// ServerInfo serverInfo = new ServerInfo("ogce", "trestles.sdsc.edu");
+// // Get the API
+// SSHApi sshApi = SSHApiFactory.createSSHApi(this.certificateLocation);
+// Cluster cluster = sshApi.getCluster(serverInfo, authenticationInfo);
+// System.out.println(cluster.getNodes()[0].getName());
+// System.out.println(cluster.getNodes()[0].getNp());
+// System.out.println(cluster.getNodes()[0].getState());
+// System.out.println(cluster.getNodes()[0].getCores()[0].getId());
+// System.out.println(cluster.getNodes()[0].getName());
+
+ }
+ @Test
+ public void testsubmitAsyncJobWithFailure() throws Exception {
+ // Create authentication
+ AuthenticationInfo authenticationInfo
+ = new MyProxyAuthenticationInfo(myProxyUserName, myProxyPassword, "myproxy.teragrid.org",
+ 7512, 17280000);
+
+ // Server info
+ ServerInfo serverInfo = new ServerInfo("ogce", "trestles.sdsc.edu");
+
+
+ // Get the API
+ SSHApi sshApi = SSHApiFactory.createSSHApi(this.certificateLocation);
+
+ // Execute command
+ System.out.println("Target PBS file path: " + workingDirectory);
+ System.out.println("Local PBS File path: " + pbsFilePath);
+ String workingDirectory = File.separator + "home" + File.separator + "ogce" + File.separator + "gsissh";
+ JobDescriptor jobDescriptor = new JobDescriptor();
+ jobDescriptor.setWorkingDirectory(workingDirectory);
+ jobDescriptor.setShellName("/bin/bash");
+ jobDescriptor.setJobName("GSI_SSH_SLEEP_JOB");
+ jobDescriptor.setExecutablePath("/bin/echo");
+ jobDescriptor.setAllEnvExport(true);
+ jobDescriptor.setMailOptions("n");
+ jobDescriptor.setStandardOutFile(workingDirectory + File.separator + "application.out");
+ jobDescriptor.setStandardErrorFile(workingDirectory + File.separator + "application.err");
+ jobDescriptor.setNodes(1);
+ jobDescriptor.setProcessesPerNode(100);
+ jobDescriptor.setMaxWallTime("1:00:00");
+ jobDescriptor.setAcountString("sds128");
+ List<String> inputs = new ArrayList<String>();
+ inputs.add("Hello World");
+ jobDescriptor.setInputValues(inputs);
+ System.out.println(jobDescriptor.toXML());
+ try {
+ String jobID = sshApi.submitAsyncJob(serverInfo, authenticationInfo, jobDescriptor);
+ System.out.println("JobID returned : " + jobID);
+ } catch (SSHApiException e) {
+ System.out.println(e.getMessage());
+ }
}
}