This is an automated email from the ASF dual-hosted git repository.

dimuthuupe pushed a commit to branch staging
in repository https://gitbox.apache.org/repos/asf/airavata.git


The following commit(s) were added to refs/heads/staging by this push:
     new 09184db  Refactoring monitoring section
09184db is described below

commit 09184dbfebd1d6e85f4af60c0a441740a2b488f6
Author: Dimuthu Wannipurage <[email protected]>
AuthorDate: Thu Apr 4 19:37:04 2019 -0400

    Refactoring monitoring section
---
 .../apache/airavata/tools/load/StatusMonitor.java  | 61 +++++++++++++++++-----
 1 file changed, 47 insertions(+), 14 deletions(-)

diff --git 
a/tools/load-client/src/main/java/org/apache/airavata/tools/load/StatusMonitor.java
 
b/tools/load-client/src/main/java/org/apache/airavata/tools/load/StatusMonitor.java
index 3499f25..5b57c51 100644
--- 
a/tools/load-client/src/main/java/org/apache/airavata/tools/load/StatusMonitor.java
+++ 
b/tools/load-client/src/main/java/org/apache/airavata/tools/load/StatusMonitor.java
@@ -33,14 +33,14 @@ public class StatusMonitor {
 
     public void monitorExperiments(List<String> experiments) throws TException 
{
 
-        Airavata.Client airavataClient = 
AiravataClientFactory.createAiravataSecureClient(apiHost, apiPort, 
trustStorePath, trustStorePassword, 100000);
-
         Map<String, JobModel> jobModelMap = new HashMap<>();
         Map<String, ExperimentModel> experimentModelMap = new HashMap<>();
 
-
-        while(experiments.size() > jobModelMap.size()) {
+        Airavata.Client airavataClient;
+        long monitoringStartTime = System.currentTimeMillis();
+        while (experiments.size() > jobModelMap.size()) {
             System.out.println("Running a monitoring round....");
+            airavataClient = 
AiravataClientFactory.createAiravataSecureClient(apiHost, apiPort, 
trustStorePath, trustStorePassword, 100000);
 
             for (String experiment : experiments) {
 
@@ -57,6 +57,8 @@ public class StatusMonitor {
                     System.out.println("Error while monitoring experiment " + 
experiment);
                 }
             }
+
+            System.out.println("Jobs " + jobModelMap.size() + "/" + 
experiments.size() + " submitted");
             try {
                 Thread.sleep(20*1000);
             } catch (InterruptedException e) {
@@ -64,23 +66,54 @@ public class StatusMonitor {
             }
         }
 
+        airavataClient = 
AiravataClientFactory.createAiravataSecureClient(apiHost, apiPort, 
trustStorePath, trustStorePassword, 100000);
+
         for (String experiment : experiments) {
             experimentModelMap.put(experiment, 
airavataClient.getExperiment(authzToken, experiment));
         }
 
         long totalTime = 0;
+        long totalExperiments = 0;
 
+        System.out.println("EXP 
ID,CREATE_TIME,LAUNCHED_TIME,EXECUTING_TIME,JOB_SUBMIT_TIME");
         for (String experiment : experiments) {
-            long jobSubmittedTime = jobModelMap.get(experiment)
-                    .getJobStatuses().stream().filter(st -> st.getJobState() 
== JobState.SUBMITTED).findFirst()
-                    .get().getTimeOfStateChange();
-            long expExecutedTime = experimentModelMap.get(experiment)
-                    .getExperimentStatus().stream().filter(es -> es.getState() 
== ExperimentState.EXECUTING).findFirst()
-                    .get().getTimeOfStateChange();
-            System.out.println("Experiment " + experiment + " executed " + 
expExecutedTime + " job submitted " + jobSubmittedTime);
-            totalTime += jobSubmittedTime - expExecutedTime;
+            try {
+
+                long expCreatedTime = experimentModelMap.get(experiment)
+                        .getExperimentStatus().stream().filter(es -> 
es.getState() == ExperimentState.CREATED).findFirst()
+                        .get().getTimeOfStateChange();
+
+                long expLaunchedTime = experimentModelMap.get(experiment)
+                        .getExperimentStatus().stream().filter(es -> 
es.getState() == ExperimentState.LAUNCHED).findFirst()
+                        .get().getTimeOfStateChange();
+
+                long expExecutedTime = experimentModelMap.get(experiment)
+                        .getExperimentStatus().stream().filter(es -> 
es.getState() == ExperimentState.EXECUTING).findFirst()
+                        .get().getTimeOfStateChange();
+
+                long jobSubmittedTime = jobModelMap.get(experiment)
+                        .getJobStatuses().stream().filter(st -> 
st.getJobState() == JobState.SUBMITTED).findFirst()
+                        .get().getTimeOfStateChange();
+
+                //long jobCompletedTime = jobModelMap.get(experiment)
+                //        .getJobStatuses().stream().filter(st -> 
st.getJobState() == JobState.COMPLETE).findFirst()
+                //        .get().getTimeOfStateChange();
+
+                //long expCompletedTime = experimentModelMap.get(experiment)
+                //        .getExperimentStatus().stream().filter(es -> 
es.getState() == ExperimentState.COMPLETED).findFirst()
+                //        .get().getTimeOfStateChange();
+                System.out.println(experiment + "," + expCreatedTime + "," + 
expLaunchedTime + "," + expExecutedTime + ","
+                        + jobSubmittedTime);
+                totalTime += jobSubmittedTime - expExecutedTime;
+                totalExperiments ++;
+            } catch (Exception e) {
+                System.out.println("Error parsing " + experiment + ". Err "+ 
e.getMessage());
+            }
         }
-        System.out.println("All jobs created");
-        System.out.println("Average time " + (totalTime 
*1.0/experiments.size())/1000 + " s");
+        long monitoringStopTime = System.currentTimeMillis();
+
+        System.out.println("All jobs completed");
+        System.out.println("Average time " + (totalTime 
*1.0/totalExperiments)/1000 + " s");
+        System.out.println("Time for monitoring " + (monitoringStopTime - 
monitoringStartTime)/1000 + "s");
     }
 }

Reply via email to