You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2007/10/17 20:49:07 UTC

svn commit: r585626 - /jakarta/jmeter/trunk/src/core/org/apache/jmeter/JMeter.java

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: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org