Author: sebb
Date: Fri Feb  4 01:04:06 2011
New Revision: 1067054

URL: http://svn.apache.org/viewvc?rev=1067054&view=rev
Log:
Add remote shutdown capability

Modified:
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/ClientJMeterEngine.java
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/JMeterEngine.java
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/RemoteJMeterEngine.java
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionNames.java
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/KeyStrokes.java
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/RemoteStart.java
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/JMeterMenuBar.java
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/ClientJMeterEngine.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/ClientJMeterEngine.java?rev=1067054&r1=1067053&r2=1067054&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/ClientJMeterEngine.java 
(original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/ClientJMeterEngine.java 
Fri Feb  4 01:04:06 2011
@@ -78,10 +78,10 @@ public class ClientJMeterEngine implemen
     }
 
     /** {@inheritDoc} */
-    public void stopTest() {
-        log.info("about to stop remote test on "+host);
+    public void stopTest(boolean now) {
+        log.info("about to "+(now ? "stop" : "shutdown")+" remote test on 
"+host);
         try {
-            remote.stopTest();
+            remote.stopTest(now);
         } catch (Exception ex) {
             log.error("", ex); // $NON-NLS-1$
         }

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/JMeterEngine.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/JMeterEngine.java?rev=1067054&r1=1067053&r2=1067054&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/JMeterEngine.java 
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/JMeterEngine.java 
Fri Feb  4 01:04:06 2011
@@ -27,7 +27,7 @@ public interface JMeterEngine {
 
     void runTest() throws JMeterEngineException;
 
-    void stopTest();
+    void stopTest(boolean now);
 
     void reset();
 

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/RemoteJMeterEngine.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/RemoteJMeterEngine.java?rev=1067054&r1=1067053&r2=1067054&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/RemoteJMeterEngine.java 
(original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/RemoteJMeterEngine.java 
Fri Feb  4 01:04:06 2011
@@ -30,7 +30,7 @@ public interface RemoteJMeterEngine exte
 
     void runTest() throws RemoteException, JMeterEngineException;
 
-    void stopTest() throws RemoteException;
+    void stopTest(boolean now) throws RemoteException;
 
     void reset() throws RemoteException;
 

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java?rev=1067054&r1=1067053&r2=1067054&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java
 (original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java
 Fri Feb  4 01:04:06 2011
@@ -149,9 +149,13 @@ public class RemoteJMeterEngineImpl exte
         }
     }
 
-    public void stopTest() throws RemoteException {
-        log.info("Stopping test ...");
-        backingEngine.stopTest();// TODO: askThreadsToStop() instead?
+    public void stopTest(boolean now) throws RemoteException {
+        if (now) {
+            log.info("Stopping test ...");
+        } else {
+            log.info("Shutting test ...");
+        }
+        backingEngine.stopTest(now);
         log.info("... stopped");
     }
 

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionNames.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionNames.java?rev=1067054&r1=1067053&r2=1067054&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionNames.java 
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionNames.java 
Fri Feb  4 01:04:06 2011
@@ -62,6 +62,8 @@ public class ActionNames {
     public static final String PASTE            = "Paste"; // $NON-NLS-1$
     public static final String REMOTE_EXIT      = "remote_exit"; // $NON-NLS-1$
     public static final String REMOTE_EXIT_ALL  = "remote_exit_all"; // 
$NON-NLS-1$
+    public static final String REMOTE_SHUT      = "remote_shut"; // $NON-NLS-1$
+    public static final String REMOTE_SHUT_ALL  = "remote_shut_all"; // 
$NON-NLS-1$
     public static final String REMOTE_START     = "remote_start"; // 
$NON-NLS-1$
     public static final String REMOTE_START_ALL = "remote_start_all"; // 
$NON-NLS-1$
     public static final String REMOTE_STOP      = "remote_stop"; // $NON-NLS-1$

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/KeyStrokes.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/KeyStrokes.java?rev=1067054&r1=1067053&r2=1067054&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/KeyStrokes.java 
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/KeyStrokes.java 
Fri Feb  4 01:04:06 2011
@@ -54,6 +54,7 @@ public final class KeyStrokes {
     public static final KeyStroke CLEAR_ALL = 
KeyStroke.getKeyStroke(KeyEvent.VK_E, CONTROL_MASK);
     public static final KeyStroke REMOTE_START_ALL = 
KeyStroke.getKeyStroke(KeyEvent.VK_R, CONTROL_MASK | KeyEvent.SHIFT_DOWN_MASK);
     public static final KeyStroke REMOTE_STOP_ALL = 
KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.ALT_DOWN_MASK);
+    public static final KeyStroke REMOTE_SHUT_ALL = 
KeyStroke.getKeyStroke(KeyEvent.VK_Z, KeyEvent.ALT_DOWN_MASK);
     public static final KeyStroke SAVE = KeyStroke.getKeyStroke(KeyEvent.VK_S, 
CONTROL_MASK);
     public static final KeyStroke SAVE_ALL_AS = 
KeyStroke.getKeyStroke(KeyEvent.VK_S, CONTROL_MASK | KeyEvent.SHIFT_DOWN_MASK);
     public static final KeyStroke OPEN = KeyStroke.getKeyStroke(KeyEvent.VK_O, 
CONTROL_MASK);

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/RemoteStart.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/RemoteStart.java?rev=1067054&r1=1067053&r2=1067054&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/RemoteStart.java 
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/RemoteStart.java 
Fri Feb  4 01:04:06 2011
@@ -50,8 +50,10 @@ public class RemoteStart extends Abstrac
     static {
         commands.add(ActionNames.REMOTE_START);
         commands.add(ActionNames.REMOTE_STOP);
+        commands.add(ActionNames.REMOTE_SHUT);
         commands.add(ActionNames.REMOTE_START_ALL);
         commands.add(ActionNames.REMOTE_STOP_ALL);
+        commands.add(ActionNames.REMOTE_SHUT_ALL);
         commands.add(ActionNames.REMOTE_EXIT);
         commands.add(ActionNames.REMOTE_EXIT_ALL);
     }
@@ -69,7 +71,9 @@ public class RemoteStart extends Abstrac
         }
         String action = e.getActionCommand();
         if (action.equals(ActionNames.REMOTE_STOP)) {
-            doRemoteStop(name);
+            doRemoteStop(name, true);
+        } else if (action.equals(ActionNames.REMOTE_SHUT)) {
+            doRemoteStop(name, false);
         } else if (action.equals(ActionNames.REMOTE_START)) {
             popupShouldSave(e);
             doRemoteInit(name);
@@ -88,12 +92,9 @@ public class RemoteStart extends Abstrac
                 doRemoteStart(el.trim());
             }
         } else if (action.equals(ActionNames.REMOTE_STOP_ALL)) {
-            String remote_hosts_string = 
JMeterUtils.getPropDefault(REMOTE_HOSTS, LOCAL_HOST);
-            java.util.StringTokenizer st = new 
java.util.StringTokenizer(remote_hosts_string, REMOTE_HOSTS_SEPARATOR);
-            while (st.hasMoreElements()) {
-                String el = (String) st.nextElement();
-                doRemoteStop(el.trim());
-            }
+            doRemoteStopAll(true);
+        } else if (action.equals(ActionNames.REMOTE_SHUT_ALL)) {
+            doRemoteStopAll(false);
         } else if (action.equals(ActionNames.REMOTE_EXIT)) {
             doRemoteExit(name);
         } else if (action.equals(ActionNames.REMOTE_EXIT_ALL)) {
@@ -106,6 +107,15 @@ public class RemoteStart extends Abstrac
         }
     }
 
+    private void doRemoteStopAll(boolean now) {
+        String remote_hosts_string = JMeterUtils.getPropDefault(REMOTE_HOSTS, 
LOCAL_HOST);
+        java.util.StringTokenizer st = new 
java.util.StringTokenizer(remote_hosts_string, REMOTE_HOSTS_SEPARATOR);
+        while (st.hasMoreElements()) {
+            String el = (String) st.nextElement();
+            doRemoteStop(el.trim(), now);
+        }
+    }
+
     /**
      * Stops a remote testing engine
      *
@@ -113,10 +123,10 @@ public class RemoteStart extends Abstrac
      *            the DNS name or IP address of the remote testing engine
      *
      */
-    private void doRemoteStop(String name) {
+    private void doRemoteStop(String name, boolean now) {
         GuiPackage.getInstance().getMainFrame().showStoppingMessage(name);
         JMeterEngine engine = remoteEngines.get(name);
-        engine.stopTest();
+        engine.stopTest(now);
     }
 
     /**

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/JMeterMenuBar.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/JMeterMenuBar.java?rev=1067054&r1=1067053&r2=1067054&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/JMeterMenuBar.java 
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/JMeterMenuBar.java 
Fri Feb  4 01:04:06 2011
@@ -93,10 +93,16 @@ public class JMeterMenuBar extends JMenu
 
     private JMenu remote_stop;
 
+    private JMenu remote_shut;
+
     private JMenuItem remote_stop_all;
 
+    private JMenuItem remote_shut_all;
+
     private Collection<JMenuItem> remote_engine_stop;
 
+    private Collection<JMenuItem> remote_engine_shut;
+
     private JMenuItem run_clear;
 
     private JMenuItem run_clearAll;
@@ -127,6 +133,7 @@ public class JMeterMenuBar extends JMenu
         // Lists for remote engines menu items
         remote_engine_start = new LinkedList<JMenuItem>();
         remote_engine_stop = new LinkedList<JMenuItem>();
+        remote_engine_shut = new LinkedList<JMenuItem>();
         remote_engine_exit = new LinkedList<JMenuItem>();
         remoteHosts = 
JOrphanUtils.split(JMeterUtils.getPropDefault("remote_hosts", ""), ","); 
//$NON-NLS-1$
         if (remoteHosts.length == 1 && remoteHosts[0].equals("")) {
@@ -408,6 +415,12 @@ public class JMeterMenuBar extends JMenu
         remote_stop_all = makeMenuItemRes("remote_stop_all", 'X', 
ActionNames.REMOTE_STOP_ALL, KeyStrokes.REMOTE_STOP_ALL); //$NON-NLS-1$
         runMenu.add(remote_stop_all);
 
+        if (remote_shut != null) {
+            runMenu.add(remote_shut);
+        }
+        remote_shut_all = makeMenuItemRes("remote_shut_all", 'X', 
ActionNames.REMOTE_SHUT_ALL, KeyStrokes.REMOTE_SHUT_ALL); //$NON-NLS-1$
+        runMenu.add(remote_shut_all);
+
         if (remote_exit != null) {
             runMenu.add(remote_exit);
         }
@@ -484,10 +497,12 @@ public class JMeterMenuBar extends JMenu
         Iterator<JMenuItem> iter = remote_engine_start.iterator();
         Iterator<JMenuItem> iter2 = remote_engine_stop.iterator();
         Iterator<JMenuItem> iter3 = remote_engine_exit.iterator();
-        while (iter.hasNext() && iter2.hasNext() && iter3.hasNext()) {
+        Iterator<JMenuItem> iter4 = remote_engine_shut.iterator();
+        while (iter.hasNext() && iter2.hasNext() && iter3.hasNext() 
&&iter4.hasNext()) {
             JMenuItem start = iter.next();
             JMenuItem stop = iter2.next();
             JMenuItem exit = iter3.next();
+            JMenuItem shut = iter4.next();
             if (start.getText().equals(host)) {
                 log.debug("Found start host: " + start.getText());
                 start.setEnabled(!running);
@@ -500,6 +515,10 @@ public class JMeterMenuBar extends JMenu
                 log.debug("Found exit  host: " + exit.getText());
                 exit.setEnabled(true);
             }
+            if (shut.getText().equals(host)) {
+                log.debug("Found exit  host: " + exit.getText());
+                exit.setEnabled(true);
+            }
         }
     }
 
@@ -515,6 +534,7 @@ public class JMeterMenuBar extends JMenu
         if (remoteHosts.length > 0) {
             remote_start = makeMenuRes("remote_start"); //$NON-NLS-1$
             remote_stop = makeMenuRes("remote_stop"); //$NON-NLS-1$
+            remote_shut = makeMenuRes("remote_shut"); //$NON-NLS-1$
             remote_exit = makeMenuRes("remote_exit"); //$NON-NLS-1$
 
             for (int i = 0; i < remoteHosts.length; i++) {
@@ -529,6 +549,11 @@ public class JMeterMenuBar extends JMenu
                 remote_engine_stop.add(item);
                 remote_stop.add(item);
 
+                item = makeMenuItemNoRes(remoteHosts[i], 
ActionNames.REMOTE_SHUT);
+                item.setEnabled(false);
+                remote_engine_shut.add(item);
+                remote_shut.add(item);
+
                 item = 
makeMenuItemNoRes(remoteHosts[i],ActionNames.REMOTE_EXIT);
                 item.setEnabled(false);
                 remote_engine_exit.add(item);
@@ -609,6 +634,9 @@ public class JMeterMenuBar extends JMenu
         if (ActionNames.REMOTE_STOP.equals(actionCommand)){//
             return false;
         }
+        if (ActionNames.REMOTE_SHUT.equals(actionCommand)){//
+            return false;
+        }
         if (ActionNames.REMOTE_EXIT.equals(actionCommand)){//
             return false;
         }

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=1067054&r1=1067053&r2=1067054&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties 
(original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties 
Fri Feb  4 01:04:06 2011
@@ -630,6 +630,8 @@ remote_error_init=Error initialising rem
 remote_error_starting=Error starting remote server
 remote_exit=Remote Exit
 remote_exit_all=Remote Exit All
+remote_shut=Remote Shutdown
+remote_shut_all=Remote Shutdown All
 remote_start=Remote Start
 remote_start_all=Remote Start All
 remote_stop=Remote Stop



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to