Author: sebb
Date: Wed Oct 17 11:49:06 2007
New Revision: 585626

URL: http://svn.apache.org/viewvc?rev=585626&view=rev
Log:
Only call System.exit() for non-GUI client sessions;
Tidy up default icon properties

Modified:
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/JMeter.java

Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/JMeter.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/JMeter.java?rev=585626&r1=585625&r2=585626&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/JMeter.java (original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/JMeter.java Wed Oct 17 
11:49:06 2007
@@ -42,11 +42,7 @@
 import org.apache.commons.cli.avalon.CLOption;
 import org.apache.commons.cli.avalon.CLOptionDescriptor;
 import org.apache.commons.cli.avalon.CLUtil;
-import org.apache.jmeter.config.gui.AbstractConfigGui;
 import org.apache.jmeter.control.ReplaceableController;
-import org.apache.jmeter.control.gui.AbstractControllerGui;
-import org.apache.jmeter.control.gui.TestPlanGui;
-import org.apache.jmeter.control.gui.WorkBenchGui;
 import org.apache.jmeter.engine.ClientJMeterEngine;
 import org.apache.jmeter.engine.JMeterEngine;
 import org.apache.jmeter.engine.RemoteJMeterEngineImpl;
@@ -65,17 +61,13 @@
 import org.apache.jmeter.reporters.ResultCollector;
 import org.apache.jmeter.reporters.Summariser;
 import org.apache.jmeter.samplers.Remoteable;
-import org.apache.jmeter.samplers.gui.AbstractSamplerGui;
 import org.apache.jmeter.save.SaveService;
 import org.apache.jmeter.services.FileServer;
 import org.apache.jmeter.testelement.TestElement;
 import org.apache.jmeter.testelement.TestListener;
-import org.apache.jmeter.threads.gui.ThreadGroupGui;
-import org.apache.jmeter.timers.gui.AbstractTimerGui;
 import org.apache.jmeter.util.BeanShellInterpreter;
 import org.apache.jmeter.util.BeanShellServer;
 import org.apache.jmeter.util.JMeterUtils;
-import org.apache.jmeter.visualizers.gui.AbstractVisualizer;
 import org.apache.jorphan.collections.HashTree;
 import org.apache.jorphan.gui.ComponentUtil;
 import org.apache.jorphan.logging.LoggingManager;
@@ -707,6 +699,8 @@
                                        engines.add(doRemoteInit(el.trim(), 
tree));
                                }
                                println("Starting remote engines");
+                               long now=System.currentTimeMillis();
+                               println("Starting the test @ "+new Date(now)+" 
("+now+")");
                                Iterator iter = engines.iterator();
                                while (iter.hasNext()) {
                                        engine = (JMeterEngine) iter.next();
@@ -798,12 +792,15 @@
                return engine;
        }
 
-       /**
-        * Listen to test and exit program after test completes, after a 5 
second
-        * delay to give listeners a chance to close out their files.
+       /*
+        * Listen to test and handle tidyup after non-GUI test completes.
+        * If running a remote test, then after waiting a few seconds for 
listeners to finish files,
+        * it calls System.exit to deal with the Naming Timer Thread.
         */
        private static class ListenToTest implements TestListener, Runnable, 
Remoteable {
-               int started = 0;
+               private int started = 0; // keep track of remote tests
+
+               private boolean remote = false; // Are we running a remote test?
 
                //NOT YET USED private JMeter _parent;
 
@@ -813,20 +810,25 @@
 
                public synchronized void testEnded(String host) {
                        started--;
-                       log.info("Remote host " + host + " finished");
-                       if (started == 0) {
-                               testEnded();
+                       long now=System.currentTimeMillis();
+                       log.info("Finished remote host: " + host + " 
("+now+")");
+                       if (started <= 0) {
+                               remote=true;
+                               Thread stopSoon = new Thread(this);
+                               stopSoon.start();
                        }
                }
 
                public void testEnded() {
+                       remote = false;
                        Thread stopSoon = new Thread(this);
                        stopSoon.start();
                }
 
                public synchronized void testStarted(String host) {
                        started++;
-                       log.info("Started remote host: " + host);
+                       long now=System.currentTimeMillis();
+                       log.info("Started remote host:  " + host + " 
("+now+")");
                }
 
                public void testStarted() {
@@ -844,19 +846,21 @@
                public void run() {
                        long now = System.currentTimeMillis();
                        println("Tidying up ...    @ "+new Date(now)+" 
("+now+")");
-                       try {
-                               Thread.sleep(5000);
-                       } catch (InterruptedException e) {
-                               // ignored
-                       }
-                       println("... end of run");
-                       //_parent.testEnded = true;
-            System.exit(0); //TODO - make this conditional, so can run 
automated tests
             /*
              * Note: although it should not be necessary to call System.exit 
here, in the case
              * of a remote test, a Timer thread seems to be generated by the 
Naming.lookup()
              * method, and it does not die.
              */
+                       if (remote){
+                               try {
+                                       Thread.sleep(5000); // Allow listeners 
to close files
+                               } catch (InterruptedException ignored) {
+                               }
+                       }
+                       println("... end of run");
+                       if (remote){
+                               System.exit(0);
+                       }
                }
 
                /**
@@ -872,32 +876,30 @@
        }
 
        private static final String[][] DEFAULT_ICONS = {
-                       { TestPlanGui.class.getName(), 
"org/apache/jmeter/images/beaker.gif" },//$NON-NLS-1$
-                       { AbstractTimerGui.class.getName(), 
"org/apache/jmeter/images/timer.gif" },//$NON-NLS-1$
-                       { ThreadGroupGui.class.getName(), 
"org/apache/jmeter/images/thread.gif" },//$NON-NLS-1$
-                       { AbstractVisualizer.class.getName(), 
"org/apache/jmeter/images/meter.png" },//$NON-NLS-1$
-                       { AbstractConfigGui.class.getName(), 
"org/apache/jmeter/images/testtubes.png" },//$NON-NLS-1$
-                       // Note: these were the original settings (just moved 
to a static
-                       // array)
-                       // Commented out because there is no such file
-                       // {
-                       // AbstractPreProcessorGui.class.getName(),
-                       // "org/apache/jmeter/images/testtubes.gif" },
-                       // {
-                       // AbstractPostProcessorGui.class.getName(),
-                       // "org/apache/jmeter/images/testtubes.gif" },
-                       { AbstractControllerGui.class.getName(), 
"org/apache/jmeter/images/knob.gif" },//$NON-NLS-1$
-                       { WorkBenchGui.class.getName(), 
"org/apache/jmeter/images/clipboard.gif" },//$NON-NLS-1$
-                       { AbstractSamplerGui.class.getName(), 
"org/apache/jmeter/images/pipet.png" }//$NON-NLS-1$
-       // AbstractAssertionGUI not defined
+               { "org.apache.jmeter.control.gui.TestPlanGui",               
"org/apache/jmeter/images/beaker.gif" },     //$NON-NLS-1$ $NON-NLS-2$
+               { "org.apache.jmeter.timers.gui.AbstractTimerGui",           
"org/apache/jmeter/images/timer.gif" },      //$NON-NLS-1$ $NON-NLS-2$
+               { "org.apache.jmeter.threads.gui.ThreadGroupGui",            
"org/apache/jmeter/images/thread.gif" },     //$NON-NLS-1$ $NON-NLS-2$
+               { "org.apache.jmeter.visualizers.gui.AbstractVisualizer",    
"org/apache/jmeter/images/meter.png" },      //$NON-NLS-1$ $NON-NLS-2$
+               { "org.apache.jmeter.config.gui.AbstractConfigGui",          
"org/apache/jmeter/images/testtubes.png" },  //$NON-NLS-1$ $NON-NLS-2$
+               { "org.apache.jmeter.processor.gui.AbstractPreProcessorGui", 
"org/apache/jmeter/images/leafnode.gif"},    //$NON-NLS-1$ $NON-NLS-2$
+               { 
"org.apache.jmeter.processor.gui.AbstractPostProcessorGui","org/apache/jmeter/images/leafnodeflip.gif"},//$NON-NLS-1$
 $NON-NLS-2$
+               { "org.apache.jmeter.control.gui.AbstractControllerGui",     
"org/apache/jmeter/images/knob.gif" },       //$NON-NLS-1$ $NON-NLS-2$
+               { "org.apache.jmeter.control.gui.WorkBenchGui",              
"org/apache/jmeter/images/clipboard.gif" },  //$NON-NLS-1$ $NON-NLS-2$
+               { "org.apache.jmeter.samplers.gui.AbstractSamplerGui",       
"org/apache/jmeter/images/pipet.png" },      //$NON-NLS-1$ $NON-NLS-2$
+               { "org.apache.jmeter.assertions.gui.AbstractAssertionGui",   
"org/apache/jmeter/images/question.gif"}     //$NON-NLS-1$ $NON-NLS-2$
        };
 
        public String[][] getIconMappings() {
-               String iconProp = 
JMeterUtils.getPropDefault("jmeter.icons",//$NON-NLS-1$
-                "org/apache/jmeter/images/icon.properties");//$NON-NLS-1$
+               final String defaultIconProp = 
"org/apache/jmeter/images/icon.properties"; //$NON-NLS-1$
+               String iconProp = JMeterUtils.getPropDefault("jmeter.icons", 
defaultIconProp);//$NON-NLS-1$
                Properties p = JMeterUtils.loadProperties(iconProp);
+               if (p == null && !iconProp.equals(defaultIconProp)) {
+                       log.info(iconProp + " not found - using " + 
defaultIconProp);
+                       iconProp = defaultIconProp;
+                       p = JMeterUtils.loadProperties(iconProp);
+               }
                if (p == null) {
-                       log.info(iconProp + " not found - using default icon 
set");
+                       log.info(iconProp + " not found - using inbuilt icon 
set");
                        return DEFAULT_ICONS;
                }
                log.info("Loaded icon properties from " + iconProp);



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to