You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by he...@apache.org on 2013/03/09 05:05:01 UTC

svn commit: r1454651 - in /airavata/trunk/modules/gfac-core/src: main/java/org/apache/airavata/gfac/provider/impl/EC2Provider.java test/java/org/apache/airavata/core/gfac/services/impl/EC2ProviderTest.java

Author: heshan
Date: Sat Mar  9 04:05:01 2013
New Revision: 1454651

URL: http://svn.apache.org/r1454651
Log:
AIRAVATA-202 Fixing an issue in the provider.

Modified:
    airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/EC2Provider.java
    airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/EC2ProviderTest.java

Modified: airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/EC2Provider.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/EC2Provider.java?rev=1454651&r1=1454650&r2=1454651&view=diff
==============================================================================
--- airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/EC2Provider.java (original)
+++ airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/EC2Provider.java Sat Mar  9 04:05:01 2013
@@ -165,21 +165,38 @@ public class EC2Provider implements GFac
                 log.info("ssh client authentication is complete...");
             }
 
-            // Execute job
             SessionChannelClient session = sshClient.openSessionChannel();
             log.info("ssh session is open successfully...");
             session.requestPseudoTerminal("vt100", 80, 25, 0, 0, "");
             session.startShell();
             session.getOutputStream().write(command2.getBytes());
 
-            String executionResult = getResultFromStdOut(outParamName, session);
+            InputStream in = session.getInputStream();
+            byte buffer[] = new byte[255];
+            int read;
+            String executionResult = "";
+            while((read = in.read(buffer)) > 0) {
+                String out = new String(buffer, 0, read);
+
+                if(out.startsWith("distance")) {
+                    executionResult = out.split("=")[1];
+                    log.debug("Result found in the StandardOut ");
+                    break;
+                }
+            }
+
+            executionResult = executionResult.replace("\r","").replace("\n","");
             log.info("Result of the job : " + executionResult);
 
-            // Set result
-            ActualParameter outParam = new ActualParameter();
-            outParam.getType().changeType(StringParameterType.type);
-            ((StringParameterType) outParam.getType()).setValue(executionResult);
-            jobExecutionContext.getOutMessageContext().addParameter(outParamName, outParam);
+            for(OutputParameterType outparamType : outputParametersArray){
+                /* Assuming that there is just a single result. If you want to add more results, update the necessary
+                   logic below */
+                String paramName = outparamType.getParameterName();
+                ActualParameter outParam = new ActualParameter();
+                outParam.getType().changeType(StringParameterType.type);
+                ((StringParameterType) outParam.getType()).setValue(executionResult);
+                jobExecutionContext.getOutMessageContext().addParameter(paramName, outParam);
+            }
 
         } catch (InvalidSshKeyException e) {
             throw new GFacProviderException("Invalid SSH key", e);
@@ -191,21 +208,6 @@ public class EC2Provider implements GFac
 
     }
 
-    private String getResultFromStdOut(String outParamName, SessionChannelClient session) throws IOException {
-        InputStream in = session.getInputStream();
-        byte buffer[] = new byte[255];
-        int read;
-        String executionResult = "";
-        while((read = in.read(buffer)) > 0) {
-            String out = new String(buffer, 0, read);
-            if(out.startsWith(outParamName)) {
-                executionResult = out.split("=")[1].replace("\r","").replace("\n","");
-                break;
-            }
-        }
-        return executionResult;
-    }
-
     public void dispose(JobExecutionContext jobExecutionContext) throws GFacProviderException {
 
     }
@@ -247,6 +249,7 @@ public class EC2Provider implements GFac
      */
     private void initEc2Environment(JobExecutionContext jobExecutionContext, AmazonEC2Client ec2client)
             throws GFacProviderException {
+//        Instance instance;
         try {
             /* Build key pair before start instance */
             buildKeyPair(ec2client);
@@ -281,7 +284,7 @@ public class EC2Provider implements GFac
         } catch (Exception e) {
             throw new GFacProviderException("Invalid Request",e,jobExecutionContext);
         }
-
+//        return instance;
     }
 
     private List<Instance> startInstances(AmazonEC2Client ec2, String amiId, String insType, JobExecutionContext jobExecutionContext)

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=1454651&r1=1454650&r2=1454651&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 Sat Mar  9 04:05:01 2013
@@ -19,7 +19,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 /**
- * As a pre-requisite for running this test is that your Amazon instance should be in a running state.
+ * Your Amazon instance should be in a running state before running this test.
  */
 public class EC2ProviderTest {
     private JobExecutionContext jobExecutionContext;
@@ -149,7 +149,7 @@ public class EC2ProviderTest {
         gFacAPI.submitJob(jobExecutionContext);
         MessageContext outMessageContext = jobExecutionContext.getOutMessageContext();
         Assert.assertEquals(MappingFactory.
-                toString((ActualParameter) outMessageContext.getParameter("genome_output")), "457");
+                toString((ActualParameter) outMessageContext.getParameter("genome_output")), "476");
     }
 }