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 2e0df07  Optimizing the monitoring logic of load client
2e0df07 is described below

commit 2e0df07434816525cc8e0a6348e022eb12f12e36
Author: Dimuthu Wannipurage <[email protected]>
AuthorDate: Tue Apr 2 13:56:31 2019 -0400

    Optimizing the monitoring logic of load client
---
 .../apache/airavata/tools/load/StatusMonitor.java  | 40 ++++++++++++++++------
 .../src/main/resources/conf/load-config.yml        |  4 +--
 2 files changed, 31 insertions(+), 13 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 9246df3..3499f25 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
@@ -6,6 +6,8 @@ import org.apache.airavata.model.error.AiravataClientException;
 import org.apache.airavata.model.experiment.ExperimentModel;
 import org.apache.airavata.model.job.JobModel;
 import org.apache.airavata.model.security.AuthzToken;
+import org.apache.airavata.model.status.ExperimentState;
+import org.apache.airavata.model.status.JobState;
 import org.apache.airavata.model.status.JobStatus;
 import org.apache.thrift.TException;
 
@@ -36,31 +38,47 @@ public class StatusMonitor {
         Map<String, JobModel> jobModelMap = new HashMap<>();
         Map<String, ExperimentModel> experimentModelMap = new HashMap<>();
 
-        for (String experiment : experiments) {
-            experimentModelMap.put(experiment, 
airavataClient.getExperiment(authzToken, experiment));
-        }
 
         while(experiments.size() > jobModelMap.size()) {
+            System.out.println("Running a monitoring round....");
+
             for (String experiment : experiments) {
-                if (jobModelMap.containsKey(experiment)) {
-                    continue;
-                }
-                List<JobModel> jobDetails = 
airavataClient.getJobDetails(authzToken, experiment);
-                if (jobDetails.size() > 0) {
-                    jobModelMap.put(experiment, jobDetails.get(0));
+
+                try {
+                    if (jobModelMap.containsKey(experiment)) {
+                        continue;
+                    }
+                    List<JobModel> jobDetails = 
airavataClient.getJobDetails(authzToken, experiment);
+                    if (jobDetails.size() > 0) {
+                        jobModelMap.put(experiment, jobDetails.get(0));
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    System.out.println("Error while monitoring experiment " + 
experiment);
                 }
             }
             try {
-                Thread.sleep(1000);
+                Thread.sleep(20*1000);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
         }
 
+        for (String experiment : experiments) {
+            experimentModelMap.put(experiment, 
airavataClient.getExperiment(authzToken, experiment));
+        }
+
         long totalTime = 0;
 
         for (String experiment : experiments) {
-            totalTime += jobModelMap.get(experiment).getCreationTime() - 
experimentModelMap.get(experiment).getCreationTime();
+            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;
         }
         System.out.println("All jobs created");
         System.out.println("Average time " + (totalTime 
*1.0/experiments.size())/1000 + " s");
diff --git a/tools/load-client/src/main/resources/conf/load-config.yml 
b/tools/load-client/src/main/resources/conf/load-config.yml
index 8ca0dd8..2d872e9 100644
--- a/tools/load-client/src/main/resources/conf/load-config.yml
+++ b/tools/load-client/src/main/resources/conf/load-config.yml
@@ -19,6 +19,6 @@ configurations:
     nodeCount: 1
     physicalMemory: 512
 
-    concurrentUsers: 1
-    iterationsPerUser: 2
+    concurrentUsers: 10
+    iterationsPerUser: 20
     randomMSDelayWithinSubmissions: 100

Reply via email to