You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sa...@apache.org on 2013/01/02 20:44:38 UTC

svn commit: r1427970 - in /airavata/trunk/modules: airavata-client/src/main/java/org/apache/airavata/client/ integration-tests/src/test/java/org/apache/airavata/integration/ ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/

Author: samindaw
Date: Wed Jan  2 19:44:38 2013
New Revision: 1427970

URL: http://svn.apache.org/viewvc?rev=1427970&view=rev
Log:
update monitor listner & update the integration tests

Modified:
    airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java
    airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java
    airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/TestMonitorListener.java
    airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/Monitor.java
    airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/MonitorEventData.java
    airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/MonitorEventListener.java

Modified: airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java?rev=1427970&r1=1427969&r2=1427970&view=diff
==============================================================================
--- airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java (original)
+++ airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java Wed Jan  2 19:44:38 2013
@@ -449,6 +449,7 @@ public class AiravataClient extends Obse
 		final Monitor monitor = new Monitor(monitorConfiguration);
 		monitor.setPrint(true);
 		monitor.getEventData().registerEventListener(listener);
+		listener.setExperimentMonitor(monitor);
 		return monitor;
 	}
 

Modified: airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java?rev=1427970&r1=1427969&r2=1427970&view=diff
==============================================================================
--- airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java (original)
+++ airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java Wed Jan  2 19:44:38 2013
@@ -312,7 +312,7 @@ public class BaseCaseIT {
         while ((line = reader.readLine()) != null) {
             buffer.append(line);
         }
-
+        reader.close();
         log.debug("Workflow compose - " + buffer.toString());
         return buffer.toString();
     }
@@ -320,8 +320,9 @@ public class BaseCaseIT {
     public void monitor(String experimentId) throws Exception {
         AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(new URI(getRegistryURL()), getGatewayName(),
                 getUserName(), new PasswordCallbackImpl() );
-        Monitor experimentMonitor = airavataAPI.getExecutionManager().getExperimentMonitor(experimentId,     // TODO what is experiment name ?
-                new TestMonitorListener(this.airavataAPI, experimentId));
+        TestMonitorListener monitorListener = new TestMonitorListener(this.airavataAPI, experimentId);
+		Monitor experimentMonitor = airavataAPI.getExecutionManager().getExperimentMonitor(experimentId,     // TODO what is experiment name ?
+                monitorListener);
         experimentMonitor.startMonitoring();
     }
 

Modified: airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/TestMonitorListener.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/TestMonitorListener.java?rev=1427970&r1=1427969&r2=1427970&view=diff
==============================================================================
--- airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/TestMonitorListener.java (original)
+++ airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/TestMonitorListener.java Wed Jan  2 19:44:38 2013
@@ -1,11 +1,14 @@
 package org.apache.airavata.integration;
 
+import java.util.List;
+
 import junit.framework.Assert;
+
 import org.apache.airavata.client.api.AiravataAPI;
-import org.apache.airavata.registry.api.workflow.ExperimentData;
 import org.apache.airavata.registry.api.impl.WorkflowExecutionDataImpl;
+import org.apache.airavata.registry.api.workflow.ExperimentData;
 import org.apache.airavata.registry.api.workflow.NodeExecutionData;
-import org.apache.airavata.registry.api.workflow.WorkflowExecutionData;
+import org.apache.airavata.ws.monitor.Monitor;
 import org.apache.airavata.ws.monitor.MonitorEvent;
 import org.apache.airavata.ws.monitor.MonitorEventData;
 import org.apache.airavata.ws.monitor.MonitorEventListener;
@@ -13,8 +16,6 @@ import org.apache.airavata.ws.monitor.Mo
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.List;
-
 /**
  * Monitor class for integration tests.
  */
@@ -24,6 +25,7 @@ public class TestMonitorListener impleme
 
     private String experimentId;
     private AiravataAPI airavataAPI;
+    private Monitor experimentMonitor;
 
     public TestMonitorListener(AiravataAPI api, String experiment) {
         this.airavataAPI = api;
@@ -39,6 +41,7 @@ public class TestMonitorListener impleme
         if (MonitorUtil.EventType.WORKFLOW_TERMINATED == event.getType()) {
             try {
                 verifyOutput("echo_output=Airavata Test");
+                getExperimentMonitor().stopMonitoring();
             } catch (Exception e) {
                 log.error("Error verifying output", e);
                 throw new RuntimeException(e);
@@ -67,4 +70,30 @@ public class TestMonitorListener impleme
             }
         }
     }
+
+	private Monitor getExperimentMonitor() {
+		return experimentMonitor;
+	}
+
+	@Override
+	public void setExperimentMonitor(Monitor monitor) {
+		this.experimentMonitor = monitor;
+	}
+
+	@Override
+	public void monitoringPreStart() {
+	}
+
+	@Override
+	public void monitoringPostStart() {
+	}
+
+	@Override
+	public void monitoringPreStop() {
+	}
+
+	@Override
+	public void monitoringPostStop() {
+	}
+
 }

Modified: airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/Monitor.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/Monitor.java?rev=1427970&r1=1427969&r2=1427970&view=diff
==============================================================================
--- airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/Monitor.java (original)
+++ airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/Monitor.java Wed Jan  2 19:44:38 2013
@@ -97,6 +97,7 @@ public class Monitor extends EventProduc
      */
     public synchronized void start() throws MonitorException {
         // Stop the previous monitoring if any.
+    	getEventData().triggerListenerForPreMonitorStart();
         asynchronousStop();
 
         subscribe();
@@ -119,6 +120,7 @@ public class Monitor extends EventProduc
             }
 
         }
+        getEventData().triggerListenerForPostMonitorStart();
     }
     
     public void startMonitoring(){
@@ -134,6 +136,20 @@ public class Monitor extends EventProduc
     		}
     	}.start();
     }
+    
+    public void stopMonitoring(){
+    	final Monitor m=this;
+    	new Thread(){
+    		@Override
+    		public void run() {
+    			try {
+					m.stop();
+				} catch (MonitorException e) {
+					e.printStackTrace();
+				}
+    		}
+    	}.start();
+    }
 
     /**
      * Stops monitoring.
@@ -165,10 +181,12 @@ public class Monitor extends EventProduc
      * @throws MonitorException
      */
     public synchronized void stop() throws MonitorException {
+    	getEventData().triggerListenerForPreMonitorStop();
         if (this.wsmgClient != null) {
             unsubscribe(this.wsmgClient);
             this.wsmgClient = null;
         }
+        getEventData().triggerListenerForPostMonitorStop();
     }
 
     /**

Modified: airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/MonitorEventData.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/MonitorEventData.java?rev=1427970&r1=1427969&r2=1427970&view=diff
==============================================================================
--- airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/MonitorEventData.java (original)
+++ airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/MonitorEventData.java Wed Jan  2 19:44:38 2013
@@ -137,18 +137,63 @@ public class MonitorEventData implements
             // The muxmum of the slider changed regardless whether we move the
             // slider or not.
             fireSliderChanged();
-            for (MonitorEventListener listener : getMonitorEventListerners()) {
-				try {
-					listener.notify(this, event);
-				} catch (Exception e) {
-					//just in case
-					e.printStackTrace();
-				}
-			}
-
+            triggerListenerForMonitorEvent(event);
         }
 
     }
+    public void triggerListenerForPreMonitorStart() {
+		for (MonitorEventListener listener : getMonitorEventListerners()) {
+			try {
+				listener.monitoringPreStart();
+			} catch (Exception e) {
+				//just in case
+				e.printStackTrace();
+			}
+		}
+	}
+    
+    public void triggerListenerForPostMonitorStart() {
+		for (MonitorEventListener listener : getMonitorEventListerners()) {
+			try {
+				listener.monitoringPostStart();
+			} catch (Exception e) {
+				//just in case
+				e.printStackTrace();
+			}
+		}
+	}
+    
+    public void triggerListenerForPreMonitorStop() {
+		for (MonitorEventListener listener : getMonitorEventListerners()) {
+			try {
+				listener.monitoringPreStop();
+			} catch (Exception e) {
+				//just in case
+				e.printStackTrace();
+			}
+		}
+	}
+    
+    public void triggerListenerForPostMonitorStop() {
+		for (MonitorEventListener listener : getMonitorEventListerners()) {
+			try {
+				listener.monitoringPostStop();
+			} catch (Exception e) {
+				//just in case
+				e.printStackTrace();
+			}
+		}
+	}
+	private void triggerListenerForMonitorEvent(MonitorEvent event) {
+		for (MonitorEventListener listener : getMonitorEventListerners()) {
+			try {
+				listener.notify(this, event);
+			} catch (Exception e) {
+				//just in case
+				e.printStackTrace();
+			}
+		}
+	}
 
     /**
      * @return All events.

Modified: airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/MonitorEventListener.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/MonitorEventListener.java?rev=1427970&r1=1427969&r2=1427970&view=diff
==============================================================================
--- airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/MonitorEventListener.java (original)
+++ airavata/trunk/modules/ws-messenger/message-monitor/src/main/java/org/apache/airavata/ws/monitor/MonitorEventListener.java Wed Jan  2 19:44:38 2013
@@ -23,4 +23,10 @@ package org.apache.airavata.ws.monitor;
 
 public interface MonitorEventListener {
 	public void notify(MonitorEventData eventData, MonitorEvent event);
+	public void setExperimentMonitor(Monitor monitor);
+	public void monitoringPreStart();
+	public void monitoringPostStart();
+	
+	public void monitoringPreStop();
+	public void monitoringPostStop();
 }