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 ms...@apache.org on 2002/05/23 17:47:07 UTC

cvs commit: jakarta-jmeter/src_1/org/apache/jmeter/visualizers Graph.java GraphModel.java GraphVisualizer.java Sample.java TableDataModel.java

mstover1    02/05/23 08:47:07

  Modified:    .        build.xml
               bin      jmeter.bat jmeter.properties log4j.conf
               src/org/apache/jmeter/protocol/http/parser HtmlParser.java
               src_1/org/apache/jmeter NewDriver.java
               src_1/org/apache/jmeter/config/gui AbstractConfigGui.java
                        ArgumentsPanel.java
               src_1/org/apache/jmeter/engine ClientJMeterEngine.java
                        RemoteJMeterEngineImpl.java
                        StandardJMeterEngine.java
               src_1/org/apache/jmeter/gui GuiPackage.java
                        JMeterFileFilter.java MainFrame.java
               src_1/org/apache/jmeter/gui/action AbstractAction.java
                        EditCommand.java RemoteStart.java Start.java
               src_1/org/apache/jmeter/gui/tree JMeterTreeListener.java
               src_1/org/apache/jmeter/gui/util JMeterMenuBar.java
               src_1/org/apache/jmeter/protocol/ftp/config/gui
                        FtpConfigGui.java
               src_1/org/apache/jmeter/protocol/http/config/gui
                        UrlConfigGui.java
               src_1/org/apache/jmeter/protocol/http/control
                        CookieManager.java
               src_1/org/apache/jmeter/protocol/http/gui AuthPanel.java
                        CookiePanel.java HeaderPanel.java
               src_1/org/apache/jmeter/protocol/http/modifier
                        UserParameterModifier.java
               src_1/org/apache/jmeter/protocol/http/parser HtmlParser.java
               src_1/org/apache/jmeter/protocol/http/sampler
                        HTTPSampler.java
               src_1/org/apache/jmeter/protocol/java/config JavaConfig.java
               src_1/org/apache/jmeter/protocol/java/config/gui
                        JavaConfigGui.java
               src_1/org/apache/jmeter/protocol/java/control/gui
                        JavaTestSamplerGui.java
               src_1/org/apache/jmeter/protocol/jdbc/config/gui
                        DbConfigGui.java PoolConfigGui.java
                        SqlConfigGui.java
               src_1/org/apache/jmeter/protocol/jdbc/sampler
                        JDBCSampler.java
               src_1/org/apache/jmeter/reporters
                        AbstractListenerElement.java ResultCollector.java
               src_1/org/apache/jmeter/resources messages.properties
                        messages_ja.properties messages_no.properties
               src_1/org/apache/jmeter/samplers RemoteSampleListener.java
                        RemoteSampleListenerImpl.java
               src_1/org/apache/jmeter/testelement AbstractTestElement.java
                        TestListener.java
               src_1/org/apache/jmeter/threads JMeterThread.java
                        ThreadGroup.java
               src_1/org/apache/jmeter/util ClassFinder.java
                        JMeterUtils.java ListedHashTree.java
               src_1/org/apache/jmeter/visualizers Graph.java
                        GraphModel.java GraphVisualizer.java Sample.java
                        TableDataModel.java
  Added:       lib      avalon-excalibur-4.1.jar
               src_1/org/apache/jmeter JMeter.java help.txt
               src_1/org/apache/jmeter/engine ConvertListeners.java
               src_1/org/apache/jmeter/gui/util JMeterColor.java
               src_1/org/apache/jmeter/samplers Remoteable.java
  Removed:     src_1/org/apache/jmeter NonGuiDriver.java
  Log:
  Throughput measured by graph visualizer
  No need for setting classpath, no more need for batch files (double-click on ApacheJMeter.jar to start app)
  Closer to getting remote testing working in new src_1 branch
  Using Excalibur CLI to read command-line arguments
  Default build path now uses src_1
  
  Revision  Changes    Path
  1.55      +9 -4      jakarta-jmeter/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/build.xml,v
  retrieving revision 1.54
  retrieving revision 1.55
  diff -u -r1.54 -r1.55
  --- build.xml	26 Apr 2002 23:26:12 -0000	1.54
  +++ build.xml	23 May 2002 15:47:03 -0000	1.55
  @@ -3,7 +3,7 @@
     <!-- Where the class files should live -->
     <property name="classes.dest.dir" value="bin/classes"/>
     <!-- Where the Sources live -->
  -  <property name="sources.src.dir" value="src"/>
  +  <property name="sources.src.dir" value="src_1"/>
     <!-- Where the API documentation lives -->
     <property name="docs.api.dest.dir" value="docs/api"/>
     <property name="version" value="1.7"/>
  @@ -24,6 +24,7 @@
     <path id="testClasspath">
   		<path refid="classpath"/>
   		<pathelement location="./bin/ApacheJMeter.jar"/>
  +		<pathelement location="./lib/ext/ApacheJMeter_core.jar"/>
     </path>
   
   
  @@ -166,8 +167,12 @@
   			<exclude name="*eucJP*"/>
   		</fileset>
   	  </copy>
  +	  <copy toFile="${classes.dest.dir}/org/apache/jmeter/help.txt" 
  +	  		file="${sources.src.dir}/org/apache/jmeter/help.txt"/>	
  +	  <mkdir dir="./lib/ext/"/> 
   
  -	  <jar jarfile="ApacheJMeter.jar" manifest="${sources.src.dir}/MANIFEST" basedir="${classes.dest.dir}"/>
  +	  <jar jarfile="./lib/ext/ApacheJMeter_core.jar" excludes="**/NewDriver.class,**/NonGuiDriver.class" manifest="${sources.src.dir}/MANIFEST" basedir="${classes.dest.dir}"/>
  +	  <jar jarfile="ApacheJMeter.jar" includes="**/NewDriver.class,**/NonGuiDriver.class" manifest="${sources.src.dir}/MANIFEST" basedir="${classes.dest.dir}"/>	  
   	</target>
   
   	<!--
  @@ -246,9 +251,9 @@
   	</target>
   
   	<target name="test" depends="install">
  -	  <java classname="org.apache.jmeter.junit.AllTests" fork="yes" dir="${basedir}">
  +	  <java classname="org.apache.jmeter.junit.AllTests" fork="yes" dir="${basedir}/bin">
   		 <classpath refid="testClasspath"/>
  -		 <arg value="./bin/jmeter.properties"/>
  +		 <arg value="./jmeter.properties"/>
   	  </java>
     </target>
   
  
  
  
  1.20      +1 -1      jakarta-jmeter/bin/jmeter.bat
  
  Index: jmeter.bat
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/bin/jmeter.bat,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- jmeter.bat	8 Nov 2001 17:34:26 -0000	1.19
  +++ jmeter.bat	23 May 2002 15:47:03 -0000	1.20
  @@ -19,4 +19,4 @@
   for %%i in ("..\ext\*.jar") do CALL ..\lcp.bat %%i
   
   
  -java -cp %LOCALCLASSPATH%;ApacheJMeter.jar -D%LOG4JCONFIG% %HOST% %PORT% org.apache.jmeter.NewDriver %PROP%
  +java -cp ApacheJMeter.jar -D%LOG4JCONFIG% %HOST% %PORT% org.apache.jmeter.NewDriver %PROP%
  
  
  
  1.38      +2 -2      jakarta-jmeter/bin/jmeter.properties
  
  Index: jmeter.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/bin/jmeter.properties,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- jmeter.properties	9 Mar 2002 00:14:01 -0000	1.37
  +++ jmeter.properties	23 May 2002 15:47:03 -0000	1.38
  @@ -2,7 +2,7 @@
   # Apache JMeter Property file
   ################################################################################
   #Paths to search for classes (";" must be the separator)
  -search_paths=ApacheJMeter.jar;classes
  +search_paths=../lib/ext
   
   # Netscape HTTP Cookie file
   cookies=cookies
  @@ -58,7 +58,7 @@
   config.tree.icon=leafnode.gif
   
   # Remote Hosts - comma delimited
  -#remote_hosts=127.0.0.1
  +remote_hosts=127.0.0.1
   
   #Components to not display in JMeter GUI
   not_in_menu=Remote Method Configuration,JNDI Configuration,JNDI Lookup Configuration,JNDI Request,Default Controller,org.apache.jmeter.control.DynamicController, org.apache.jmeter.protocol.http.control.Cookie,org.apache.jmeter.protocol.http.control.Authorization,org.apache.jmeter.config.LoginConfig,Header,org.apache.jmeter.protocol.http.config.UrlConfigFull,org.apache.jmeter.protocol.http.config.MultipartUrlConfig
  
  
  
  1.4       +1 -3      jakarta-jmeter/bin/log4j.conf
  
  Index: log4j.conf
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/bin/log4j.conf,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- log4j.conf	14 Mar 2002 00:43:38 -0000	1.3
  +++ log4j.conf	23 May 2002 15:47:03 -0000	1.4
  @@ -17,7 +17,5 @@
   
   
   # Set the appenders for the categories
  -log4j.rootCategory=info,Root_Appender
  -log4j.category.org.apache.jmeter.gui.tree.NonGuiTree=INFO,File_Appender
  -log4j.category.org.apache.jmeter.util.ListedHashTree=INFO,File_Appender
  +log4j.rootCategory=INFO,Root_Appender
   #log4j.configDebug
  
  
  
  1.1                  jakarta-jmeter/lib/avalon-excalibur-4.1.jar
  
  	<<Binary file>>
  
  
  1.22      +8 -5      jakarta-jmeter/src/org/apache/jmeter/protocol/http/parser/HtmlParser.java
  
  Index: HtmlParser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/parser/HtmlParser.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- HtmlParser.java	29 Apr 2002 17:08:06 -0000	1.21
  +++ HtmlParser.java	23 May 2002 15:47:04 -0000	1.22
  @@ -144,9 +144,12 @@
   			}
   		}
   
  -		if(!(ok = ok && matcher.matches(newLink.getDomain(),
  -				compiler.compile(config.getDomain()))))
  -			return false;
  +		if(config.getDomain() != null || config.getDomain().length() > 0)
  +		{
  +			if(!(ok = ok && matcher.matches(newLink.getDomain(),
  +					compiler.compile(config.getDomain()))))
  +				return false;
  +		}
   
   		if(!(ok = ok && matcher.matches(newLink.getPath(), compiler.compile("[/]*" + config.getPath()))))
   			return false;
  @@ -489,8 +492,8 @@
   	 * !ToDo (Class description)
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/04/29 17:08:06 $
  -	 *@version   $Revision: 1.21 $
  +	 *@created   $Date: 2002/05/23 15:47:04 $
  +	 *@version   $Revision: 1.22 $
   	 ***************************************/
   	public static class Test extends TestCase
   	{
  
  
  
  1.6       +81 -27    jakarta-jmeter/src_1/org/apache/jmeter/NewDriver.java
  
  Index: NewDriver.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/NewDriver.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- NewDriver.java	21 May 2002 03:36:43 -0000	1.5
  +++ NewDriver.java	23 May 2002 15:47:04 -0000	1.6
  @@ -54,16 +54,16 @@
    */
   package org.apache.jmeter;
   
  -import java.awt.event.ActionEvent;
  +import java.io.File;
  +import java.lang.reflect.InvocationTargetException;
  +import java.lang.reflect.Method;
  +import java.net.MalformedURLException;
  +import java.net.URL;
  +import java.net.URLClassLoader;
  +import java.util.LinkedList;
  +import java.util.List;
  +
   
  -import org.apache.jmeter.gui.GuiPackage;
  -import org.apache.jmeter.gui.MainFrame;
  -import org.apache.jmeter.gui.action.ActionRouter;
  -import org.apache.jmeter.gui.action.CheckDirty;
  -import org.apache.jmeter.gui.tree.JMeterTreeListener;
  -import org.apache.jmeter.gui.tree.JMeterTreeModel;
  -import org.apache.jmeter.gui.util.ComponentUtil;
  -import org.apache.jmeter.util.JMeterUtils;
   
   /************************************************************
    *  Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
  @@ -75,6 +75,66 @@
   
   public class NewDriver
   {
  +	private static URLClassLoader loader;	
  +	
  +
  +	
  +	static {
  +		List jars = new LinkedList();
  +		String jmDir = System.getProperty("user.dir")+File.separator+"..";
  +		File libDir = new File(jmDir+File.separator+"lib");
  +		File extDir = new File(jmDir+File.separator+"lib"+File.separator+"ext");
  +		File[] libJars = libDir.listFiles();
  +		File[] extJars = extDir.listFiles();
  +		StringBuffer classpath = new StringBuffer();
  +		for(int i = 0;i < libJars.length;i++)
  +		{
  +			try
  +			{
  +				jars.add(new URL("file","",libJars[i].getPath()));
  +				classpath.append(System.getProperty("path.separator"));
  +				classpath.append(libJars[i].getPath());
  +			}
  +			catch(MalformedURLException e)
  +			{
  +				e.printStackTrace();
  +			}
  +		}
  +		for(int i = 0;i < extJars.length;i++)
  +		{
  +			try
  +			{
  +				jars.add(new URL("file","",extJars[i].getPath()));
  +				classpath.append(System.getProperty("path.separator"));
  +				classpath.append(extJars[i].getPath());
  +			}
  +			catch(MalformedURLException e)
  +			{
  +				e.printStackTrace();
  +			}
  +		}
  +		System.setProperty("java.class.path",System.getProperty("java.class.path")+classpath.toString());
  +		loader = new URLClassLoader((URL[])jars.toArray(new URL[0]));
  +		try {
  +			loader.loadClass("org.apache.jmeter.gui.GuiPackage");
  +			loader.loadClass("org.apache.jmeter.gui.JMeterFileFilter");
  +			loader.loadClass("org.apache.jmeter.gui.MainFrame");
  +			loader.loadClass("org.apache.jmeter.gui.action.ActionRouter");
  +			loader.loadClass("org.apache.jmeter.gui.action.CheckDirty");
  +			loader.loadClass("org.apache.jmeter.gui.tree.JMeterTreeListener");
  +			loader.loadClass("org.apache.jmeter.gui.tree.JMeterTreeModel");
  +			loader.loadClass("org.apache.jmeter.gui.util.ComponentUtil");
  +			loader.loadClass("org.apache.jmeter.util.JMeterUtils");
  +		
  +		} catch(ClassNotFoundException e) {
  +			e.printStackTrace();
  +		}
  +	}
  +	
  +	private NewDriver(String[] args)
  +	{
  +		
  +	}
   
   	/************************************************************
   	 *  The main program for the NewDriver class
  @@ -82,23 +142,17 @@
   	 *@param  args  The command line arguments
   	 ***********************************************************/
   	public static void main(String[] args)
  -	{
  -		if(args.length > 0 && args[0] != null)
  -		{
  -			JMeterUtils.getProperties(args[0]);
  -		}
  -
  -		JMeterTreeModel treeModel = new JMeterTreeModel();
  -		JMeterTreeListener treeLis = new JMeterTreeListener(treeModel);
  -		treeLis.setActionHandler(ActionRouter.getInstance());
  -		GuiPackage guiPack = GuiPackage.getInstance(treeLis, treeModel);
  -		MainFrame main = new MainFrame(ActionRouter.getInstance(),
  -				treeModel, treeLis);
  -		main.setTitle("Apache JMeter");
  -		main.setIconImage(JMeterUtils.getImage("jmeter.jpg").getImage());
  -		ComponentUtil.centerComponentInWindow(main,80);
  -		main.show();
  -		ActionRouter.getInstance().actionPerformed(new ActionEvent(
  -				main,1,CheckDirty.ADD_ALL));
  +	{		
  +		System.setProperty("log4j.configuration",System.getProperty("user.dir")+
  +				File.separator+"log4j.conf");
  +			try {
  +				Class JMeter = loader.loadClass("org.apache.jmeter.JMeter");
  +				Object instance = JMeter.newInstance();
  +				Method startup = JMeter.getMethod("start",new Class[]{(new String[0]).getClass()});
  +				startup.invoke(instance,new Object[]{args});
  +				
  +			} catch(Exception e) {
  +				e.printStackTrace();
  +			} 		
   	}
   }
  
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/JMeter.java
  
  Index: JMeter.java
  ===================================================================
  package org.apache.jmeter;
  
  import java.awt.event.ActionEvent;
  import java.io.File;
  import java.io.FileInputStream;
  
  import org.apache.avalon.excalibur.cli.CLArgsParser;
  import org.apache.avalon.excalibur.cli.CLOption;
  import org.apache.avalon.excalibur.cli.CLOptionDescriptor;
  import org.apache.avalon.excalibur.cli.CLUtil;
  import org.apache.jmeter.engine.RemoteJMeterEngine;
  import org.apache.jmeter.engine.RemoteJMeterEngineImpl;
  import org.apache.jmeter.engine.StandardJMeterEngine;
  import org.apache.jmeter.exceptions.IllegalUserActionException;
  import org.apache.jmeter.gui.GuiPackage;
  import org.apache.jmeter.gui.action.ActionRouter;
  import org.apache.jmeter.gui.action.CheckDirty;
  import org.apache.jmeter.gui.tree.JMeterTreeListener;
  import org.apache.jmeter.gui.tree.JMeterTreeModel;
  import org.apache.jmeter.gui.util.ComponentUtil;
  import org.apache.jmeter.save.SaveService;
  import org.apache.jmeter.util.JMeterUtils;
  import org.apache.jmeter.util.ListedHashTree;
  
  /**
   * @author mstover
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public class JMeter {
  	
  	private final static int PROPFILE_OPT = 'p';
  	private final static int TESTFILE_OPT = 't';
  	private final static int LOGFILE_OPT = 'l';
  	private final static int NONGUI_OPT = 'n';	
  	protected static final int HELP_OPT = 'h';
      protected static final int VERSION_OPT = 'v';
      protected static final int SERVER_OPT = 's';
  
      /**
       *  Define the understood options. Each CLOptionDescriptor contains:
       * - The "long" version of the option. Eg, "help" means that "--help" will
       * be recognised. 
       * - The option flags, governing the option's argument(s).
       * - The "short" version of the option. Eg, 'h' means that "-h" will be
       * recognised.
       * - A description of the option.
       */
      protected static final CLOptionDescriptor [] options = new CLOptionDescriptor [] {
          new CLOptionDescriptor("help",
                  CLOptionDescriptor.ARGUMENT_DISALLOWED,
                  HELP_OPT,
                  "print this message and exit"),
          new CLOptionDescriptor("version",
                  CLOptionDescriptor.ARGUMENT_DISALLOWED,
                  VERSION_OPT,
                  "print the version information and exit"),
          new CLOptionDescriptor("propfile",
                  CLOptionDescriptor.ARGUMENT_REQUIRED,
                  PROPFILE_OPT,
                  "the jmeter property file to use"),
          new CLOptionDescriptor("testfile",
                  CLOptionDescriptor.ARGUMENT_REQUIRED,
                  TESTFILE_OPT,
                  "the jmeter test(.jmx) file to run"),
          new CLOptionDescriptor("logfile",
                  CLOptionDescriptor.ARGUMENT_REQUIRED,
                  LOGFILE_OPT,
                  "the file to log samples to"),
          new CLOptionDescriptor("logfile",
                  CLOptionDescriptor.ARGUMENT_DISALLOWED,
                  NONGUI_OPT,
                  "run JMeter in nongui mode"),
          new CLOptionDescriptor("server",
                  CLOptionDescriptor.ARGUMENT_DISALLOWED,
                  SERVER_OPT,
                  "run the JMeter server"),
      };
  	
  	public JMeter()
  	{
  		
  	}
  	
  	public void startGui() throws IllegalUserActionException
  	{	
  
  		JMeterTreeModel treeModel = new JMeterTreeModel();
  		JMeterTreeListener treeLis = new JMeterTreeListener(treeModel);
  		treeLis.setActionHandler(ActionRouter.getInstance());
  		GuiPackage guiPack = GuiPackage.getInstance(treeLis, treeModel);
  		org.apache.jmeter.gui.MainFrame main = new org.apache.jmeter.gui.MainFrame(ActionRouter.getInstance(),
  				treeModel, treeLis);
  		main.setTitle("Apache JMeter");
  		main.setIconImage(JMeterUtils.getImage("jmeter.jpg").getImage());
  		ComponentUtil.centerComponentInWindow(main,80);
  		main.show();
  		ActionRouter.getInstance().actionPerformed(new ActionEvent(
  				main,1,CheckDirty.ADD_ALL));
  	}
  	
  	public void start(String[] args)
  	{
  		CLArgsParser parser = new CLArgsParser(args, options);
  		if( null != parser.getErrorString() ) {
             System.err.println( "Error: " + parser.getErrorString() );
             return;
          }
          try {
          	initializeProperties(parser);
  			
          	if(parser.getArgumentById(VERSION_OPT) != null)
          	{
          		System.out.println("Apache JMeter, Copyright (c) 2002 The Apache Software Foundation");
          		System.out.println("Version "+JMeterUtils.getJMeterVersion());
          	}
          	else if(parser.getArgumentById(HELP_OPT) != null)
          	{
          		System.out.println(JMeterUtils.getResourceFileAsText("org/apache/jmeter/help.txt"));
          	}
  			else if(parser.getArgumentById(SERVER_OPT) != null)
  			{
  				startServer();
  			}
  			else if(parser.getArgumentById(NONGUI_OPT) == null)
  			{
  				startGui();
  			}
  			else
  			{
  				startNonGui(parser.getArgumentById(TESTFILE_OPT),parser.getArgumentById(LOGFILE_OPT));
  			}
  		} catch(IllegalUserActionException e) {
  			System.out.println("Incorrect Usage");
  			System.out.println(CLUtil.describeOptions(options).toString());
  		}
  	}
  
  	private void initializeProperties(CLArgsParser parser) {
  		if(parser.getArgumentById(PROPFILE_OPT) != null)
  		{
  			JMeterUtils.getProperties(parser.getArgumentById(PROPFILE_OPT).getArgument());
  		}
  		else
  		{
  			JMeterUtils.getProperties(System.getProperty("user.dir")+File.separator+"jmeter.properties");
  		}
  	}
  	
  	public void startServer()
  	{
  		try
  		{
  			RemoteJMeterEngine engine = new RemoteJMeterEngineImpl();
  			while(true)
  			{
  				Thread.sleep(Long.MAX_VALUE);
  			}
  		}
  		catch(Exception ex)
  		{
  			ex.printStackTrace();
  		}
  	}
  	
  	public void startNonGui(CLOption testFile,CLOption logFile)  throws IllegalUserActionException
  	{
  		JMeter driver = new JMeter();
  		if(testFile == null)
  		{
  			throw new IllegalUserActionException();
  		}
  		if(logFile == null)
  		{
  			driver.run(testFile.getArgument(),null);
  		}
  		else
  		{
  			driver.run(testFile.getArgument(),logFile.getArgument());
  		}
  	}
  
  	private void run(String testFile,String logFile)
  	{
  		FileInputStream reader = null;
  		try
  		{
  			File f = new File(testFile);
  			if(!f.exists() || !f.isFile())
  			{
  				println("Could not open " + testFile);
  				return;
  			}
  
  			reader = new FileInputStream(f);
  
  			ListedHashTree tree = SaveService.loadSubTree(reader);
  			println("Created the tree successfully");
  			StandardJMeterEngine engine = new StandardJMeterEngine();
  			engine.configure(tree);
  			println("Starting the test");
  			engine.runTest();
  
  		}
  		catch(Exception e)
  		{
  			System.out.println("Error in NonGUIDriver" + e.getMessage());
  			e.printStackTrace();
  		}
  	}
  	
  	private static void println(String str)
  	{
  		System.out.println(str);
  	}
  }
  
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/help.txt
  
  Index: help.txt
  ===================================================================
  
  To run Apache JMeter in GUI mode:
  Double-click on the ApacheJMeter.jar file.  If this doesn't work, open a command prompt and type:
  
  java -jar ApacheJMeter.jar [-p property-file]
  
  --------------------------------------------------
  
  To run Apache JMeter in NON_GUI mode:
  Open a command prompt (or Unix shell) and type:
  
  java -jar ApacheJMeter.jar -n -t test-file [-p property-file] [-l log-file]
  
  --------------------------------------------------
  
  To tell Apache JMeter to use a proxy server:
  Open a command prompt and type:
  
  java -Dhttp.proxyHost=your.proxy.host -Dhttps.proxyHost=your.proxy.host -Dhttp.proxyPort=your.proxy.port -Dhttps.proxyPort=your.proxy.port -jar ApacheJMeter.jar
  
  
  
  1.4       +0 -0      jakarta-jmeter/src_1/org/apache/jmeter/config/gui/AbstractConfigGui.java
  
  Index: AbstractConfigGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/config/gui/AbstractConfigGui.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AbstractConfigGui.java	21 May 2002 03:36:43 -0000	1.3
  +++ AbstractConfigGui.java	23 May 2002 15:47:04 -0000	1.4
  @@ -65,7 +65,7 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/05/21 03:36:43 $
  + *@created   $Date: 2002/05/23 15:47:04 $
    *@version   1.0
    ***************************************/
   
  
  
  
  1.6       +0 -0      jakarta-jmeter/src_1/org/apache/jmeter/config/gui/ArgumentsPanel.java
  
  Index: ArgumentsPanel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/config/gui/ArgumentsPanel.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ArgumentsPanel.java	21 May 2002 03:36:43 -0000	1.5
  +++ ArgumentsPanel.java	23 May 2002 15:47:04 -0000	1.6
  @@ -317,8 +317,8 @@
   	 * Inner class to handle table model calls
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/21 03:36:43 $
  -	 *@version   $Revision: 1.5 $
  +	 *@created   $Date: 2002/05/23 15:47:04 $
  +	 *@version   $Revision: 1.6 $
   	 ***************************************/
   	private class InnerTableModel extends DefaultTableModel
   	{
  
  
  
  1.3       +20 -32    jakarta-jmeter/src_1/org/apache/jmeter/engine/ClientJMeterEngine.java
  
  Index: ClientJMeterEngine.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/engine/ClientJMeterEngine.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ClientJMeterEngine.java	29 Apr 2002 17:08:07 -0000	1.2
  +++ ClientJMeterEngine.java	23 May 2002 15:47:04 -0000	1.3
  @@ -54,28 +54,29 @@
    */
   package org.apache.jmeter.engine;
   import java.net.MalformedURLException;
  -import java.rmi.*;
  -import org.apache.jmeter.util.ListedHashTree;
  +import java.rmi.Naming;
  +import java.rmi.NotBoundException;
  +import java.rmi.RemoteException;
   
  -import java.util.*;
  -import org.apache.jmeter.samplers.RemoteSampleListener;
  -import org.apache.jmeter.samplers.RemoteSampleListenerImpl;
  -import org.apache.jmeter.threads.*;
  -import org.apache.jmeter.threads.ThreadGroup;
  -import org.apache.jmeter.timers.Timer;
  +import org.apache.jmeter.samplers.SampleListener;
  +import org.apache.jmeter.testelement.TestListener;
   import org.apache.jmeter.util.ListedHashTree;
  +import org.apache.jmeter.util.SearchByClass;
  +
   
   /************************************************************
    *  !ToDo (Class description)
    *
    *@author     $Author: mstover1 $
  - *@created    $Date: 2002/04/29 17:08:07 $
  - *@version    $Revision: 1.2 $
  + *@created    $Date: 2002/05/23 15:47:04 $
  + *@version    $Revision: 1.3 $
    ***********************************************************/
   public class ClientJMeterEngine implements JMeterEngine
   {
   	RemoteJMeterEngine remote;
   	ListedHashTree test;
  +	SearchByClass testListeners;
  +	ConvertListeners sampleListeners;
   
   	/************************************************************
   	 *  !ToDo (Constructor description)
  @@ -100,6 +101,11 @@
   	{
   		this.remote = remote;
   	}
  +	
  +	protected ListedHashTree getTestTree()
  +	{
  +		return test;
  +	}
   
   	public void configure(ListedHashTree testTree)
   	{
  @@ -111,7 +117,10 @@
   	 ***********************************************************/
   	public void runTest()
   	{
  -		makeListenersRemote();
  +		testListeners = new SearchByClass(TestListener.class);
  +		getTestTree().traverse(testListeners);
  +		sampleListeners = new ConvertListeners();
  +		getTestTree().traverse(sampleListeners);
   		try
   		{
   			remote.configure(test);
  @@ -151,27 +160,6 @@
   		{
   			ex.printStackTrace();
   		}
  -	}
  -
  -	private void makeListenersRemote()
  -	{
  -		//convert all listeners in test tree to remote listeners
  -		/*Iterator iter = groups.iterator();
  -		while(iter.hasNext())
  -		{
  -			ThreadGroup item = (ThreadGroup)iter.next();
  -			try
  -			{
  -				RemoteSampleListener rsl =
  -						new RemoteSampleListenerImpl(new LinkedList(item.getListeners()));
  -				item.clearListeners();
  -				item.addRemoteListener(rsl);
  -			}
  -			catch(RemoteException e)
  -			{
  -				e.printStackTrace();
  -			}
  -		}*/
   	}
   
   }
  
  
  
  1.4       +2 -1      jakarta-jmeter/src_1/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java
  
  Index: RemoteJMeterEngineImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- RemoteJMeterEngineImpl.java	21 May 2002 03:36:43 -0000	1.3
  +++ RemoteJMeterEngineImpl.java	23 May 2002 15:47:04 -0000	1.4
  @@ -53,6 +53,7 @@
    * <http://www.apache.org/>.
    */
   package org.apache.jmeter.engine;
  +import java.net.InetAddress;
   import java.rmi.Naming;
   import java.rmi.RemoteException;
   
  @@ -78,9 +79,9 @@
   	 ***********************************************************/
   	public RemoteJMeterEngineImpl() throws RemoteException
   	{
  -		backingEngine = new StandardJMeterEngine();
   		try
   		{
  +			backingEngine = new StandardJMeterEngine(InetAddress.getLocalHost().getHostName());
   			Naming.rebind("JMeterEngine", this);
   		}
   		catch(Exception ex)
  
  
  
  1.6       +74 -9     jakarta-jmeter/src_1/org/apache/jmeter/engine/StandardJMeterEngine.java
  
  Index: StandardJMeterEngine.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/engine/StandardJMeterEngine.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- StandardJMeterEngine.java	21 May 2002 03:36:43 -0000	1.5
  +++ StandardJMeterEngine.java	23 May 2002 15:47:04 -0000	1.6
  @@ -54,30 +54,34 @@
    */
   package org.apache.jmeter.engine;
   
  -import java.util.*;
  -import org.apache.jmeter.samplers.SampleListener;
  +import java.rmi.RemoteException;
  +import java.util.HashSet;
  +import java.util.Iterator;
  +import java.util.Set;
  +
  +import org.apache.jmeter.samplers.RemoteSampleListener;
  +import org.apache.jmeter.testelement.TestListener;
   import org.apache.jmeter.threads.JMeterThread;
  +import org.apache.jmeter.threads.JMeterThreadMonitor;
  +import org.apache.jmeter.threads.TestCompiler;
   import org.apache.jmeter.threads.ThreadGroup;
  -import org.apache.jmeter.timers.Timer;
   import org.apache.jmeter.util.ListedHashTree;
   import org.apache.jmeter.util.SearchByClass;
  -import org.apache.jmeter.threads.TestCompiler;
  -import org.apache.jmeter.testelement.TestListener;
  -import org.apache.jmeter.threads.JMeterThreadMonitor;
   
   /************************************************************
    *  !ToDo (Class description)
    *
    *@author     $Author: mstover1 $
  - *@created    $Date: 2002/05/21 03:36:43 $
  - *@version    $Revision: 1.5 $
  + *@created    $Date: 2002/05/23 15:47:04 $
  + *@version    $Revision: 1.6 $
    ***********************************************************/
   public class StandardJMeterEngine implements JMeterEngine,JMeterThreadMonitor
   {
   	Set allThreads;
   	boolean running = false;
   	ListedHashTree test;
  -	SearchByClass testListeners;
  +	SearchByClass testListeners,remoteTestListeners;
  +	String host;
   
   	/************************************************************
   	 *  !ToDo (Constructor description)
  @@ -86,6 +90,12 @@
   	{
   		allThreads = new HashSet();
   	}
  +	
  +	public StandardJMeterEngine(String host)
  +	{
  +		this();
  +		this.host = host;
  +	}
   
   	public void configure(ListedHashTree testTree)
   	{
  @@ -106,14 +116,17 @@
   		running = true;
   		SearchByClass searcher = new SearchByClass(ThreadGroup.class);
   		testListeners = new SearchByClass(TestListener.class);
  +		remoteTestListeners = new SearchByClass(RemoteSampleListener.class);
   		getTestTree().traverse(testListeners);
   		getTestTree().traverse(searcher);
  +		getTestTree().traverse(remoteTestListeners);
   		TestCompiler.initialize();
   		//for each thread group, generate threads
   		// hand each thread the sampler controller
   		// and the listeners, and the timer
   		JMeterThread[] threads;
   		Iterator iter = searcher.getSearchResults().iterator();
  +		System.out.println("found " + searcher.getSearchResults().size() + " threadgroups");
   		notifyTestListenersOfStart();
   		while(iter.hasNext())
   		{
  @@ -124,6 +137,7 @@
   				threads[i] = new JMeterThread(cloneTree(searcher.getSubTree(group)),this);
   				threads[i].setInitialDelay((int)(((float)(group.getRampUp() * 1000) /
   						(float)group.getNumThreads()) * (float)i));
  +				threads[i].setThreadName(group.getName()+"-"+(i+1));
   				Thread newThread = new Thread(threads[i]);
   				newThread.setName(group.getName()+(i+1));
   				allThreads.add(threads[i]);
  @@ -134,19 +148,70 @@
   	
   	protected void notifyTestListenersOfStart()
   	{
  +		System.out.println("notifying test listeners");
   		Iterator iter = testListeners.getSearchResults().iterator();
   		while(iter.hasNext())
   		{
  -			((TestListener)iter.next()).testStarted();
  +			if(host == null)
  +			{
  +				((TestListener)iter.next()).testStarted();
  +			}
  +			else
  +			{
  +				((TestListener)iter.next()).testStarted(host);
  +			}
  +		}
  +		
  +		iter = remoteTestListeners.getSearchResults().iterator();
  +		while(iter.hasNext())
  +		{
  +			try {
  +				System.out.println("Notifying a remote listener");
  +				if(host == null)
  +				{
  +					((RemoteSampleListener)iter.next()).testStarted();
  +				}
  +				else
  +				{
  +					((RemoteSampleListener)iter.next()).testStarted(host);
  +				}
  +			} catch(RemoteException e) {
  +				e.printStackTrace();
  +			}
   		}
   	}
  +		
   	
   	protected void notifyTestListenersOfEnd()
   	{
   		Iterator iter = testListeners.getSearchResults().iterator();
   		while(iter.hasNext())
   		{
  -			((TestListener)iter.next()).testEnded();
  +			if(host == null)
  +			{
  +				((TestListener)iter.next()).testEnded();
  +			}
  +			else
  +			{
  +				((TestListener)iter.next()).testEnded(host);
  +			}
  +		}
  +		
  +		iter = remoteTestListeners.getSearchResults().iterator();
  +		while(iter.hasNext())
  +		{
  +			try {
  +				if(host == null)
  +				{
  +					((RemoteSampleListener)iter.next()).testEnded();
  +				}
  +				else
  +				{
  +					((RemoteSampleListener)iter.next()).testEnded(host);
  +				}
  +			} catch(RemoteException e) {
  +				e.printStackTrace();
  +			}
   		}
   	}
   
  
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/engine/ConvertListeners.java
  
  Index: ConvertListeners.java
  ===================================================================
  package org.apache.jmeter.engine;
  
  import java.rmi.RemoteException;
  import java.util.Iterator;
  
  import org.apache.jmeter.samplers.RemoteSampleListener;
  import org.apache.jmeter.samplers.RemoteSampleListenerImpl;
  import org.apache.jmeter.samplers.Remoteable;
  import org.apache.jmeter.samplers.SampleListener;
  import org.apache.jmeter.testelement.TestListener;
  import org.apache.jmeter.util.ListedHashTree;
  import org.apache.jmeter.util.ListedHashTreeVisitor;
  
  /**
   * @author mstover
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public class ConvertListeners implements ListedHashTreeVisitor {
  
  	/**
  	 * @see ListedHashTreeVisitor#addNode(Object, ListedHashTree)
  	 */
  	public void addNode(Object node, ListedHashTree subTree) {
  		Iterator iter = subTree.list().iterator();
  		while(iter.hasNext())
  		{
  			Object item = iter.next();
  			if(item instanceof Remoteable && (item instanceof TestListener || item instanceof SampleListener))
  			{
  				try {
  					RemoteSampleListener rtl = new RemoteSampleListenerImpl(item);
  					subTree.replace(item,rtl);
  				} catch(RemoteException e) {
  					e.printStackTrace();
  				}
  			}
  		}
  	}
  
  	/**
  	 * @see ListedHashTreeVisitor#subtractNode()
  	 */
  	public void subtractNode() {
  	}
  
  	/**
  	 * @see ListedHashTreeVisitor#processPath()
  	 */
  	public void processPath() {
  	}
  
  }
  
  
  
  1.7       +25 -4     jakarta-jmeter/src_1/org/apache/jmeter/gui/GuiPackage.java
  
  Index: GuiPackage.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/GuiPackage.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- GuiPackage.java	20 May 2002 13:05:51 -0000	1.6
  +++ GuiPackage.java	23 May 2002 15:47:04 -0000	1.7
  @@ -54,12 +54,13 @@
    */
    package org.apache.jmeter.gui;
   
  -import java.awt.event.ActionEvent;
  +import java.util.HashSet;
  +import java.util.Set;
   
   import org.apache.jmeter.exceptions.IllegalUserActionException;
  -import org.apache.jmeter.gui.action.ActionRouter;
   import org.apache.jmeter.gui.tree.JMeterTreeListener;
   import org.apache.jmeter.gui.tree.JMeterTreeModel;
  +import org.apache.jmeter.samplers.Remoteable;
   import org.apache.jmeter.testelement.TestListener;
   import org.apache.jmeter.util.ListedHashTree;
   
  @@ -72,11 +73,12 @@
    * @version 1.0
    */
   
  -public class GuiPackage implements TestListener
  +public class GuiPackage implements TestListener,Remoteable
   {
   
   	private static GuiPackage guiPack;
   	private boolean dirty = false;
  +	private Set hosts = new HashSet();
   
   	private GuiPackage()
   	{
  @@ -110,19 +112,38 @@
   	
   	public void testStarted(String host)
   	{
  +		hosts.add(host);
  +		if("local".equals(host))
  +		{
  +			getMainFrame().setRunning(true);
  +		}
  +		else
  +		{
  +			getMainFrame().setRunning(true,host);
  +		}
   	}
   	
   	public void testStarted()
   	{
  +		getMainFrame().setRunning(true);
   	}
   	
   	public void testEnded()
   	{
  -		ActionRouter.getInstance().actionPerformed(new ActionEvent(this,1,"stop"));
  +		testEnded("local");
   	}
   	
   	public void testEnded(String host)
   	{		
  +		hosts.remove(host);
  +		if(!("local".equals(host)))
  +		{
  +			getMainFrame().setRunning(false,host);
  +		}
  +		if(hosts.size() == 0)
  +		{
  +			getMainFrame().setRunning(false);
  +		}
   	}
   
   	public void addSubTree(ListedHashTree subTree) throws IllegalUserActionException
  
  
  
  1.4       +2 -1      jakarta-jmeter/src_1/org/apache/jmeter/gui/JMeterFileFilter.java
  
  Index: JMeterFileFilter.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/JMeterFileFilter.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- JMeterFileFilter.java	1 May 2002 01:39:40 -0000	1.3
  +++ JMeterFileFilter.java	23 May 2002 15:47:04 -0000	1.4
  @@ -60,7 +60,8 @@
   import javax.swing.filechooser.*;
   import java.util.Arrays;
   
  -public class JMeterFileFilter extends javax.swing.filechooser.FileFilter {
  +public class JMeterFileFilter extends javax.swing.filechooser.FileFilter 
  +		implements java.io.FileFilter {
   	String[] exts;
   	
   	public JMeterFileFilter(String[] extensions)
  
  
  
  1.7       +0 -0      jakarta-jmeter/src_1/org/apache/jmeter/gui/MainFrame.java
  
  Index: MainFrame.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/MainFrame.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- MainFrame.java	21 May 2002 03:36:43 -0000	1.6
  +++ MainFrame.java	23 May 2002 15:47:04 -0000	1.7
  @@ -67,7 +67,7 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/05/21 03:36:43 $
  + *@created   $Date: 2002/05/23 15:47:04 $
    *@version   1.0
    ***************************************/
   
  @@ -363,8 +363,8 @@
   	 * !ToDo (Class description)
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/21 03:36:43 $
  -	 *@version   $Revision: 1.6 $
  +	 *@created   $Date: 2002/05/23 15:47:04 $
  +	 *@version   $Revision: 1.7 $
   	 ***************************************/
   	private class WindowHappenings extends WindowAdapter
   	{
  
  
  
  1.2       +5 -0      jakarta-jmeter/src_1/org/apache/jmeter/gui/action/AbstractAction.java
  
  Index: AbstractAction.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/action/AbstractAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractAction.java	17 May 2002 01:29:34 -0000	1.1
  +++ AbstractAction.java	23 May 2002 15:47:04 -0000	1.2
  @@ -5,6 +5,8 @@
   import java.util.LinkedList;
   import java.util.Set;
   
  +import org.apache.jmeter.engine.StandardJMeterEngine;
  +import org.apache.jmeter.gui.GuiPackage;
   import org.apache.jmeter.gui.JMeterGUIComponent;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.util.ListedHashTree;
  @@ -42,6 +44,9 @@
   			
   		}
   	}
  +
  +	
  +
   
   
   }
  
  
  
  1.6       +0 -0      jakarta-jmeter/src_1/org/apache/jmeter/gui/action/EditCommand.java
  
  Index: EditCommand.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/action/EditCommand.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- EditCommand.java	21 May 2002 03:36:43 -0000	1.5
  +++ EditCommand.java	23 May 2002 15:47:04 -0000	1.6
  @@ -8,7 +8,7 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/05/21 03:36:43 $
  + *@created   $Date: 2002/05/23 15:47:04 $
    *@version   1.0
    ***************************************/
   
  
  
  
  1.3       +7 -5      jakarta-jmeter/src_1/org/apache/jmeter/gui/action/RemoteStart.java
  
  Index: RemoteStart.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/action/RemoteStart.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- RemoteStart.java	29 Apr 2002 17:08:08 -0000	1.2
  +++ RemoteStart.java	23 May 2002 15:47:04 -0000	1.3
  @@ -62,16 +62,17 @@
   import org.apache.jmeter.testelement.TestPlan;
   import org.apache.jmeter.threads.ThreadGroup;
   import org.apache.jmeter.util.JMeterUtils;
  +import org.apache.jmeter.util.ListedHashTree;
   
   /****************************************
    * Title: Description: Copyright: Copyright (c) 2001 Company:
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/04/29 17:08:08 $
  + *@created   $Date: 2002/05/23 15:47:04 $
    *@version   1.0
    ***************************************/
   
  -public class RemoteStart implements Command
  +public class RemoteStart extends AbstractAction
   {
   
   	private Map remoteEngines = new HashMap();
  @@ -101,7 +102,6 @@
   		{
   			JMeterEngine engine = (JMeterEngine)remoteEngines.get(name);
   			engine.stopTest();
  -			GuiPackage.getInstance().getMainFrame().setRunning(false, name);
   		}
   		else if(action.equals("remote_start"))
   		{
  @@ -147,8 +147,10 @@
   	private void startEngine(JMeterEngine engine, String host)
   	{
   		GuiPackage gui = GuiPackage.getInstance();
  -		engine.configure(gui.getTreeModel().getTestPlan());
  -		gui.getMainFrame().setRunning(true, host);
  +		ListedHashTree testTree = gui.getTreeModel().getTestPlan();
  +		convertSubTree(testTree);
  +		testTree.add(testTree.getArray()[0],gui);
  +		engine.configure(testTree);
   		engine.runTest();
   	}
   }
  
  
  
  1.6       +3 -4      jakarta-jmeter/src_1/org/apache/jmeter/gui/action/Start.java
  
  Index: Start.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/action/Start.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Start.java	17 May 2002 01:29:34 -0000	1.5
  +++ Start.java	23 May 2002 15:47:04 -0000	1.6
  @@ -112,20 +112,18 @@
   		{
   			startEngine();
   		}
  -		else if(e.getActionCommand().equals("stop"))
  +		else if(engine != null && e.getActionCommand().equals("stop"))
   		{
   			engine.stopTest();
  -			GuiPackage.getInstance().getMainFrame().setRunning(false);
   			engine = null;
   		}
   	}
   
  -
   	/****************************************
   	 * Description of the Method
   	 *
   	 ***************************************/
  -	private void startEngine()
  +	protected void startEngine()
   	{
   		GuiPackage gui = GuiPackage.getInstance();
   		engine = new StandardJMeterEngine();
  @@ -136,4 +134,5 @@
   		gui.getMainFrame().setRunning(true);
   		engine.runTest();
   	}
  +
   }
  
  
  
  1.5       +11 -0     jakarta-jmeter/src_1/org/apache/jmeter/gui/tree/JMeterTreeListener.java
  
  Index: JMeterTreeListener.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/tree/JMeterTreeListener.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- JMeterTreeListener.java	21 May 2002 03:36:43 -0000	1.4
  +++ JMeterTreeListener.java	23 May 2002 15:47:05 -0000	1.5
  @@ -108,6 +108,17 @@
   		dragIcon.validate();
   		dragIcon.setVisible(true);
   	}
  +	
  +	public JMeterTreeListener()
  +	{
  +		dragIcon.validate();
  +		dragIcon.setVisible(true);
  +	}
  +	
  +	public void setModel(JMeterTreeModel m)
  +	{
  +		model = m;
  +	}
   
   
   	/****************************************
  
  
  
  1.4       +0 -0      jakarta-jmeter/src_1/org/apache/jmeter/gui/util/JMeterMenuBar.java
  
  Index: JMeterMenuBar.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/util/JMeterMenuBar.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- JMeterMenuBar.java	21 May 2002 03:36:43 -0000	1.3
  +++ JMeterMenuBar.java	23 May 2002 15:47:05 -0000	1.4
  @@ -21,7 +21,7 @@
    * Apache Foundation
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/05/21 03:36:43 $
  + *@created   $Date: 2002/05/23 15:47:05 $
    *@version   1.0
    ***************************************/
   
  
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/gui/util/JMeterColor.java
  
  Index: JMeterColor.java
  ===================================================================
  package org.apache.jmeter.gui.util;
  
  import java.awt.Color;
  
  /**
   * @author mstover
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public class JMeterColor extends Color {
  	
  	public final static Color dark_green = new JMeterColor(0F,.5F,0F);
  	
  	public JMeterColor(float r,float g,float b)
  	{
  		super(r,g,b);
  	}
  
  }
  
  
  
  1.4       +0 -0      jakarta-jmeter/src_1/org/apache/jmeter/protocol/ftp/config/gui/FtpConfigGui.java
  
  Index: FtpConfigGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/ftp/config/gui/FtpConfigGui.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FtpConfigGui.java	21 May 2002 03:36:43 -0000	1.3
  +++ FtpConfigGui.java	23 May 2002 15:47:05 -0000	1.4
  @@ -70,7 +70,7 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/05/21 03:36:43 $
  + *@created   $Date: 2002/05/23 15:47:05 $
    *@version   1.0
    ***************************************/
   
  
  
  
  1.6       +0 -0      jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/config/gui/UrlConfigGui.java
  
  Index: UrlConfigGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/config/gui/UrlConfigGui.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- UrlConfigGui.java	21 May 2002 03:36:43 -0000	1.5
  +++ UrlConfigGui.java	23 May 2002 15:47:05 -0000	1.6
  @@ -73,7 +73,7 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/05/21 03:36:43 $
  + *@created   $Date: 2002/05/23 15:47:05 $
    *@version   1.0
    ***************************************/
   
  
  
  
  1.5       +0 -0      jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/control/CookieManager.java
  
  Index: CookieManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/control/CookieManager.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- CookieManager.java	21 May 2002 03:36:43 -0000	1.4
  +++ CookieManager.java	23 May 2002 15:47:05 -0000	1.5
  @@ -85,7 +85,7 @@
    * pass cookies along with a request.
    *
    * @author  <a href="mailto:sdowd@arcmail.com">Sean Dowd</a>
  - * @version $Revision: 1.4 $ $Date: 2002/05/21 03:36:43 $
  + * @version $Revision: 1.5 $ $Date: 2002/05/23 15:47:05 $
    */
   public class CookieManager extends AbstractTestElement implements
   		  Serializable,PerThreadClonable
  
  
  
  1.6       +0 -0      jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/gui/AuthPanel.java
  
  Index: AuthPanel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/gui/AuthPanel.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- AuthPanel.java	21 May 2002 03:36:44 -0000	1.5
  +++ AuthPanel.java	23 May 2002 15:47:05 -0000	1.6
  @@ -73,8 +73,8 @@
    * user selects.
    *
    *@author    $Author: mstover1 $
  - *@created   $Date: 2002/05/21 03:36:44 $
  - *@version   $Revision: 1.5 $
  + *@created   $Date: 2002/05/23 15:47:05 $
  + *@version   $Revision: 1.6 $
    ***************************************/
   public class AuthPanel extends AbstractConfigGui implements ActionListener
   {
  @@ -375,8 +375,8 @@
   	 * !ToDo (Class description)
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/21 03:36:44 $
  -	 *@version   $Revision: 1.5 $
  +	 *@created   $Date: 2002/05/23 15:47:05 $
  +	 *@version   $Revision: 1.6 $
   	 ***************************************/
   	private class InnerTableModel extends AbstractTableModel
   	{
  @@ -529,8 +529,8 @@
   	 * !ToDo (Class description)
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/21 03:36:44 $
  -	 *@version   $Revision: 1.5 $
  +	 *@created   $Date: 2002/05/23 15:47:05 $
  +	 *@version   $Revision: 1.6 $
   	 ***************************************/
   	private class PasswordCellRenderer extends JPasswordField implements TableCellRenderer
   	{
  
  
  
  1.6       +0 -0      jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/gui/CookiePanel.java
  
  Index: CookiePanel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/gui/CookiePanel.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- CookiePanel.java	21 May 2002 03:36:44 -0000	1.5
  +++ CookiePanel.java	23 May 2002 15:47:05 -0000	1.6
  @@ -73,8 +73,8 @@
    * for this service.
    *
    *@author    $Author: mstover1 $
  - *@created   $Date: 2002/05/21 03:36:44 $
  - *@version   $Revision: 1.5 $
  + *@created   $Date: 2002/05/23 15:47:05 $
  + *@version   $Revision: 1.6 $
    ***************************************/
   public class CookiePanel extends AbstractConfigGui implements ActionListener
   {
  @@ -370,7 +370,7 @@
   	 *
   	 *@author    mike
   	 *@created   July 14, 2001
  -	 *@version   $Revision: 1.5 $
  +	 *@version   $Revision: 1.6 $
   	 ***************************************/
   	public class InnerTableModel extends AbstractTableModel
   	{
  
  
  
  1.6       +0 -0      jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/gui/HeaderPanel.java
  
  Index: HeaderPanel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/gui/HeaderPanel.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- HeaderPanel.java	21 May 2002 03:36:44 -0000	1.5
  +++ HeaderPanel.java	23 May 2002 15:47:05 -0000	1.6
  @@ -72,8 +72,8 @@
    * parameters for this service.
    *
    *@author    $Author: mstover1 $
  - *@created   $Date: 2002/05/21 03:36:44 $
  - *@version   $Revision: 1.5 $
  + *@created   $Date: 2002/05/23 15:47:05 $
  + *@version   $Revision: 1.6 $
    ***************************************/
   public class HeaderPanel extends AbstractConfigGui implements ActionListener
   {
  @@ -380,8 +380,8 @@
   	 * Updates a header record
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/21 03:36:44 $
  -	 *@version   $Revision: 1.5 $
  +	 *@created   $Date: 2002/05/23 15:47:05 $
  +	 *@version   $Revision: 1.6 $
   	 ***************************************/
   	class HeaderUpdater implements ActionListener
   	{
  @@ -537,8 +537,8 @@
   	 * !ToDo (Class description)
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/21 03:36:44 $
  -	 *@version   $Revision: 1.5 $
  +	 *@created   $Date: 2002/05/23 15:47:05 $
  +	 *@version   $Revision: 1.6 $
   	 ***************************************/
   	private class InnerTableModel extends AbstractTableModel
   	{
  
  
  
  1.3       +9 -1      jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/modifier/UserParameterModifier.java
  
  Index: UserParameterModifier.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/modifier/UserParameterModifier.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- UserParameterModifier.java	2 May 2002 22:54:59 -0000	1.2
  +++ UserParameterModifier.java	23 May 2002 15:47:05 -0000	1.3
  @@ -84,7 +84,7 @@
    *<P>For example if userid and password are defined in the XML parameter file
    * for each user (ie thread), then simulated multiple user activity can occur
    *@author     Mark Walsh
  - *@created    $Date: 2002/05/02 22:54:59 $
  + *@created    $Date: 2002/05/23 15:47:05 $
    *@version    1.0
    ***********************************************************/
   public class UserParameterModifier
  @@ -130,6 +130,14 @@
   	}
   	
   	public void testEnded()
  +	{
  +	}
  +	
  +	public void testStarted(String host)
  +	{
  +	}
  +	
  +	public void testEnded(String host)
   	{
   	}
   	
  
  
  
  1.6       +8 -5      jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/parser/HtmlParser.java
  
  Index: HtmlParser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/parser/HtmlParser.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- HtmlParser.java	29 Apr 2002 17:08:11 -0000	1.5
  +++ HtmlParser.java	23 May 2002 15:47:05 -0000	1.6
  @@ -145,9 +145,12 @@
   			}
   		}
   
  -		if(!(ok = ok && matcher.matches(newLink.getDomain(),
  -				compiler.compile(config.getDomain()))))
  -			return false;
  +		if(config.getDomain() != null || config.getDomain().length() > 0)
  +		{
  +			if(!(ok = ok && matcher.matches(newLink.getDomain(),
  +					compiler.compile(config.getDomain()))))
  +				return false;
  +		}
   
   		if(!(ok = ok && matcher.matches(newLink.getPath(), compiler.compile("[/]*" + config.getPath()))))
   			return false;
  @@ -486,8 +489,8 @@
   	 * !ToDo (Class description)
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/04/29 17:08:11 $
  -	 *@version   $Revision: 1.5 $
  +	 *@created   $Date: 2002/05/23 15:47:05 $
  +	 *@version   $Revision: 1.6 $
   	 ***************************************/
   	public static class Test extends TestCase
   	{
  
  
  
  1.10      +2 -19     jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java
  
  Index: HTTPSampler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- HTTPSampler.java	17 May 2002 01:29:35 -0000	1.9
  +++ HTTPSampler.java	23 May 2002 15:47:06 -0000	1.10
  @@ -80,8 +80,8 @@
    * HTTP requests, including cookies and authentication.
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/05/17 01:29:35 $
  - *@version   $Revision: 1.9 $
  + *@created   $Date: 2002/05/23 15:47:06 $
  + *@version   $Revision: 1.10 $
    ***************************************/
   public class HTTPSampler extends AbstractSampler
   {
  @@ -649,23 +649,6 @@
   			res.setSampleLabel(u.toString());
   			// specify the data to the result.
   			res.setSamplerData(this);
  -
  -			/****************************************
  -			 * Whenever someone gets around to going through and removing all these
  -			 * writes to stdout, feel free to remove this message-caching code and just
  -			 * send the sampling message to the logger.. JKB
  -			 ***************************************/
  -
  -			// Only want to send this debug info to stdout once..
  -			if(!m_sampledURLs.contains(u))
  -			{
  -				// and we also don't want to gobble up too much memory..
  -				if(m_sampledURLs.size() < 300)
  -				{
  -					m_sampledURLs.add(u);
  -					System.out.println("Sampling url: " + u);
  -				}
  -			}
   
   			/****************************************
   			 * END - cached logging hack
  
  
  
  1.2       +0 -0      jakarta-jmeter/src_1/org/apache/jmeter/protocol/java/config/JavaConfig.java
  
  Index: JavaConfig.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/java/config/JavaConfig.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JavaConfig.java	21 May 2002 03:36:44 -0000	1.1
  +++ JavaConfig.java	23 May 2002 15:47:06 -0000	1.2
  @@ -69,8 +69,8 @@
    * necessary for the Java protocol.
    *
    *@author     Brad Kiewel
  - *@created    $Date: 2002/05/21 03:36:44 $
  - *@version    $Revision: 1.1 $
  + *@created    $Date: 2002/05/23 15:47:06 $
  + *@version    $Revision: 1.2 $
    */
   
   public class JavaConfig extends AbstractTestElement implements Serializable
  
  
  
  1.2       +3 -8      jakarta-jmeter/src_1/org/apache/jmeter/protocol/java/config/gui/JavaConfigGui.java
  
  Index: JavaConfigGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/java/config/gui/JavaConfigGui.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JavaConfigGui.java	21 May 2002 03:36:44 -0000	1.1
  +++ JavaConfigGui.java	23 May 2002 15:47:06 -0000	1.2
  @@ -55,11 +55,7 @@
   package org.apache.jmeter.protocol.java.config.gui;
   
   import java.awt.Font;
  -import java.awt.event.ActionEvent;
  -import java.awt.event.ActionListener;
  -import java.awt.event.KeyEvent;
  -import java.awt.event.KeyListener;
  -import java.util.ArrayList;
  +import java.util.List;
   
   import javax.swing.BorderFactory;
   import javax.swing.JComboBox;
  @@ -70,7 +66,6 @@
   import org.apache.jmeter.config.Arguments;
   import org.apache.jmeter.config.gui.AbstractConfigGui;
   import org.apache.jmeter.config.gui.ArgumentsPanel;
  -import org.apache.jmeter.gui.NamePanel;
   import org.apache.jmeter.gui.util.VerticalLayout;
   import org.apache.jmeter.protocol.java.config.JavaConfig;
   import org.apache.jmeter.protocol.java.sampler.JavaSampler;
  @@ -85,7 +80,7 @@
    * The <code>JavaConfigGui</code> class provides the user interface for
    * the JavaConfig object.
    * @author Brad Kiewel
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    */
   
   public class JavaConfigGui extends AbstractConfigGui
  @@ -159,13 +154,13 @@
   		panel.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 10));
   		panel.add(new JLabel(JMeterUtils.getResString("protocol_java_classname")));
   		
  -		ArrayList possibleClasses = null;
  +		List possibleClasses = null;
   		
   		try {
   			
   			// Find all the classes which implement the JavaSamplerClient interface
   		
  -			possibleClasses = ClassFinder.findClassesByInterface(JMeterUtils.split(JMeterUtils.getPropDefault("search_paths", ".;ApacheJMeter.jar"), ";"),new Class[]{JavaSamplerClient.class});
  +			possibleClasses = ClassFinder.findClassesThatExtend(new Class[]{JavaSamplerClient.class});
   			
   			// Remove the JavaConfig class from the list since it only implements the interface for
   			// error conditions.
  
  
  
  1.2       +1 -0      jakarta-jmeter/src_1/org/apache/jmeter/protocol/java/control/gui/JavaTestSamplerGui.java
  
  Index: JavaTestSamplerGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/java/control/gui/JavaTestSamplerGui.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JavaTestSamplerGui.java	21 May 2002 03:36:44 -0000	1.1
  +++ JavaTestSamplerGui.java	23 May 2002 15:47:06 -0000	1.2
  @@ -68,12 +68,13 @@
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.util.JMeterUtils;
   
  +
   /**
    * The <code>JavaTestSamplerGui</code> class provides the user interface 
    * for the JavaTestSampler.
    * 
    * @author Brad Kiewel
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    */
   
   public class JavaTestSamplerGui extends AbstractSamplerGui {
  
  
  
  1.5       +0 -0      jakarta-jmeter/src_1/org/apache/jmeter/protocol/jdbc/config/gui/DbConfigGui.java
  
  Index: DbConfigGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/jdbc/config/gui/DbConfigGui.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DbConfigGui.java	21 May 2002 03:36:44 -0000	1.4
  +++ DbConfigGui.java	23 May 2002 15:47:06 -0000	1.5
  @@ -71,7 +71,7 @@
    * Title: Description: Copyright: Copyright (c) 2001 Company:
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/05/21 03:36:44 $
  + *@created   $Date: 2002/05/23 15:47:06 $
    *@version   1.0
    ***************************************/
   
  
  
  
  1.5       +0 -0      jakarta-jmeter/src_1/org/apache/jmeter/protocol/jdbc/config/gui/PoolConfigGui.java
  
  Index: PoolConfigGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/jdbc/config/gui/PoolConfigGui.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- PoolConfigGui.java	21 May 2002 03:36:44 -0000	1.4
  +++ PoolConfigGui.java	23 May 2002 15:47:06 -0000	1.5
  @@ -70,7 +70,7 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/05/21 03:36:44 $
  + *@created   $Date: 2002/05/23 15:47:06 $
    *@version   1.0
    ***************************************/
   
  
  
  
  1.5       +0 -0      jakarta-jmeter/src_1/org/apache/jmeter/protocol/jdbc/config/gui/SqlConfigGui.java
  
  Index: SqlConfigGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/jdbc/config/gui/SqlConfigGui.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SqlConfigGui.java	21 May 2002 03:36:44 -0000	1.4
  +++ SqlConfigGui.java	23 May 2002 15:47:06 -0000	1.5
  @@ -70,7 +70,7 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/05/21 03:36:44 $
  + *@created   $Date: 2002/05/23 15:47:06 $
    *@version   1.0
    ***************************************/
   
  
  
  
  1.7       +10 -2     jakarta-jmeter/src_1/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java
  
  Index: JDBCSampler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- JDBCSampler.java	2 May 2002 22:54:59 -0000	1.6
  +++ JDBCSampler.java	23 May 2002 15:47:06 -0000	1.7
  @@ -71,8 +71,8 @@
    *  A sampler which understands JDBC database requests
    *
    *@author     $Author: mstover1 $
  - *@created    $Date: 2002/05/02 22:54:59 $
  - *@version    $Revision: 1.6 $
  + *@created    $Date: 2002/05/23 15:47:06 $
  + *@version    $Revision: 1.7 $
    ***********************************************************/
   
   public class JDBCSampler extends AbstractSampler implements TestListener
  @@ -105,6 +105,14 @@
   		{
   			this.mergeIn(element);
   		}
  +	}
  +	
  +	public void testStarted(String host)
  +	{
  +	}
  +	
  +	public void testEnded(String host)
  +	{
   	}
   	
   	public synchronized void testStarted()
  
  
  
  1.2       +3 -3      jakarta-jmeter/src_1/org/apache/jmeter/reporters/AbstractListenerElement.java
  
  Index: AbstractListenerElement.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/reporters/AbstractListenerElement.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractListenerElement.java	29 Mar 2002 14:06:10 -0000	1.1
  +++ AbstractListenerElement.java	23 May 2002 15:47:06 -0000	1.2
  @@ -13,7 +13,7 @@
   
   public abstract class AbstractListenerElement extends AbstractTestElement
   {
  -	public final static String LISTENER = "AbstractListenerElement.listener";
  +	private Visualizer listener;
   
   	public AbstractListenerElement()
   	{
  @@ -21,11 +21,11 @@
   
   	protected Visualizer getVisualizer()
   	{
  -		return (Visualizer)getProperty(LISTENER);
  +		return listener;
   	}
   
   	public void setListener(Visualizer vis)
   	{
  -		setProperty(LISTENER,vis);
  +		listener = vis;
   	}
   }
  
  
  
  1.12      +40 -13    jakarta-jmeter/src_1/org/apache/jmeter/reporters/ResultCollector.java
  
  Index: ResultCollector.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/reporters/ResultCollector.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ResultCollector.java	17 May 2002 01:29:35 -0000	1.11
  +++ ResultCollector.java	23 May 2002 15:47:06 -0000	1.12
  @@ -66,31 +66,33 @@
   import org.apache.jmeter.testelement.TestListener;
   import org.apache.jmeter.util.TextFile;
   import org.apache.jmeter.save.SaveService;
  +import org.apache.jmeter.samplers.Remoteable;
   
   /**
    *  Title: Description: Copyright: Copyright (c) 2001 Company:
    *
    *@author     Michael Stover
  - *@created    $Date: 2002/05/17 01:29:35 $
  + *@created    $Date: 2002/05/23 15:47:06 $
    *@version    1.0
    */
   
   public class ResultCollector extends AbstractListenerElement implements SampleListener, Clearable,
  -		Serializable,TestListener
  +		Serializable,TestListener,Remoteable
   {
   	private final static String COLLECTED = "collected";
  +	private final static String FILENAME = "filename";
   
   	/**
   	 *  !ToDo (Field description)
   	 */
   	protected List results = Collections.synchronizedList(new ArrayList());
   	private int current;
  -	private String filename;
   	private DefaultConfigurationSerializer serializer = new DefaultConfigurationSerializer();
   	private boolean inLoading = false;
   	private PrintWriter out;
   	private boolean inTest = false;
   	private static Map files = new HashMap();
  +	private Set hosts = new HashSet();
   	
   
   	/**
  @@ -100,6 +102,16 @@
   	{
   		current = -1;
   	}
  +	
  +	private void setFilenameProperty(String f)
  +	{
  +		setProperty(FILENAME,f);
  +	}
  +	
  +	public String getFilename()
  +	{
  +		return getPropertyAsString(FILENAME);
  +	}
   
   	/**
   	 *  Sets the filename attribute of the ResultCollector object
  @@ -115,7 +127,7 @@
   		System.out.println("Setting filename");
   		try
   		{
  -			filename = f;
  +			setFilenameProperty(f);
   			loadExistingFile();
   		}
   		catch(SAXException e)
  @@ -129,14 +141,19 @@
   		}
   	}
   	
  -	public void testEnded()
  +	public void testEnded(String host)
   	{
  -		finalizeFileOutput();
  -		inTest = false;
  +		hosts.remove(host);
  +		if(hosts.size() == 0)
  +		{
  +			finalizeFileOutput();
  +			inTest = false;
  +		}
   	}
   	
  -	public void testStarted()
  +	public void testStarted(String host)
   	{
  +		hosts.add(host);
   		try {
   			initializeFileOutput();
   		} catch(Exception e) {
  @@ -144,15 +161,25 @@
   		} 
   		inTest = true;
   	}
  +	
  +	public void testEnded()
  +	{
  +		testEnded("local");
  +	}
  +	
  +	public void testStarted()
  +	{
  +		testStarted("local");		
  +	}
   
   	public void loadExistingFile()
   		throws SAXException, IOException, ConfigurationException {
   			inLoading = true;
  -		if(new File(filename).exists())
  +		if(new File(getFilename()).exists())
   		{
   			clear();
   			try {
  -				Configuration savedSamples = getConfiguration(filename);
  +				Configuration savedSamples = getConfiguration(getFilename());
   				readSamples(savedSamples);
   			} catch(Exception e) {
   				e.printStackTrace();
  @@ -432,13 +459,13 @@
   			ConfigurationException,SAXException
   	{
   		
  -		if(out == null && filename != null)
  +		if(out == null && getFilename() != null)
   		{
   			if(out == null)
   			{
   				try
   				{
  -					out = getFileWriter(filename);
  +					out = getFileWriter(getFilename());
   				}
   				catch(FileNotFoundException e)
   				{
  @@ -457,7 +484,7 @@
   		{
   			writeFileEnd();
   			out.close();
  -			files.remove(filename);
  +			files.remove(getFilename());
   			out = null;
   		}
   	}
  
  
  
  1.11      +4 -1      jakarta-jmeter/src_1/org/apache/jmeter/resources/messages.properties
  
  Index: messages.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/resources/messages.properties,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- messages.properties	21 May 2002 03:36:44 -0000	1.10
  +++ messages.properties	23 May 2002 15:47:06 -0000	1.11
  @@ -226,4 +226,7 @@
   protocol_java_border=Java class
   protocol_java_test_title=Java Testing
   java_request=Java Request
  -java_request_defaults=Java Request Defaults
  \ No newline at end of file
  +java_request_defaults=Java Request Defaults
  +second=second
  +graph_results_throughput=Throughput
  +minute=minute
  \ No newline at end of file
  
  
  
  1.10      +4 -1      jakarta-jmeter/src_1/org/apache/jmeter/resources/messages_ja.properties
  
  Index: messages_ja.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/resources/messages_ja.properties,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- messages_ja.properties	21 May 2002 03:36:44 -0000	1.9
  +++ messages_ja.properties	23 May 2002 15:47:06 -0000	1.10
  @@ -220,4 +220,7 @@
   protocol_java_border=Java class
   protocol_java_test_title=Java Testing
   java_request=Java Request
  -java_request_defaults=Java Request Defaults
  \ No newline at end of file
  +java_request_defaults=Java Request Defaults
  +second=second
  +graph_results_throughput=Throughput
  +minute=minute
  \ No newline at end of file
  
  
  
  1.10      +4 -1      jakarta-jmeter/src_1/org/apache/jmeter/resources/messages_no.properties
  
  Index: messages_no.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/resources/messages_no.properties,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- messages_no.properties	21 May 2002 03:36:44 -0000	1.9
  +++ messages_no.properties	23 May 2002 15:47:06 -0000	1.10
  @@ -211,4 +211,7 @@
   protocol_java_border=Java class
   protocol_java_test_title=Java Testing
   java_request=Java Request
  -java_request_defaults=Java Request Defaults
  \ No newline at end of file
  +java_request_defaults=Java Request Defaults
  +second=second
  +graph_results_throughput=Throughput
  +minute=minute
  \ No newline at end of file
  
  
  
  1.4       +8 -0      jakarta-jmeter/src_1/org/apache/jmeter/samplers/RemoteSampleListener.java
  
  Index: RemoteSampleListener.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/samplers/RemoteSampleListener.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- RemoteSampleListener.java	29 Apr 2002 17:08:13 -0000	1.3
  +++ RemoteSampleListener.java	23 May 2002 15:47:06 -0000	1.4
  @@ -65,6 +65,14 @@
   public interface RemoteSampleListener
   	 extends java.rmi.Remote, java.io.Serializable
   {
  +	
  +	public void testStarted() throws RemoteException;
  +	
  +	public void testStarted(String host) throws RemoteException;
  +	
  +	public void testEnded() throws RemoteException;
  +	
  +	public void testEnded(String host) throws RemoteException;
   	 /**
   	  * A sample has started and stopped.
   	  **/
  
  
  
  1.4       +58 -18    jakarta-jmeter/src_1/org/apache/jmeter/samplers/RemoteSampleListenerImpl.java
  
  Index: RemoteSampleListenerImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/samplers/RemoteSampleListenerImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- RemoteSampleListenerImpl.java	29 Apr 2002 17:08:13 -0000	1.3
  +++ RemoteSampleListenerImpl.java	23 May 2002 15:47:06 -0000	1.4
  @@ -54,21 +54,23 @@
    */
    package org.apache.jmeter.samplers;
   
  -import java.util.*;
   import java.rmi.RemoteException;
   
  +import org.apache.jmeter.testelement.TestListener;
  +
   /************************************************************
    *  !ToDo (Class description)
    *
    *@author     $Author: mstover1 $
  - *@created    $Date: 2002/04/29 17:08:13 $
  - *@version    $Revision: 1.3 $
  + *@created    $Date: 2002/05/23 15:47:06 $
  + *@version    $Revision: 1.4 $
    ***********************************************************/
   public class RemoteSampleListenerImpl
   		 extends java.rmi.server.UnicastRemoteObject
  -		 implements RemoteSampleListener
  +		 implements RemoteSampleListener,SampleListener,TestListener
   {
  -	Collection listeners;
  +	TestListener testListener;
  +	SampleListener sampleListener;
   
   	/************************************************************
   	 *  !ToDo (Constructor description)
  @@ -76,10 +78,53 @@
   	 *@param  listeners            !ToDo (Parameter description)
   	 *@exception  RemoteException  !ToDo (Exception description)
   	 ***********************************************************/
  -	public RemoteSampleListenerImpl(Collection listeners) throws RemoteException
  +	public RemoteSampleListenerImpl(Object listener) throws RemoteException
   	{
   		super();
  -		this.listeners = listeners;
  +		if(listener instanceof TestListener)
  +		{
  +			testListener = (TestListener)listener;
  +		}
  +		if(listener instanceof SampleListener)
  +		{
  +			sampleListener = (SampleListener)listener;
  +		}
  +	}
  +	
  +	public void testStarted()
  +	{
  +		System.out.println("remoteSampleListener: testStarted()");
  +		if(testListener != null)
  +		{
  +			testListener.testStarted();
  +		}
  +	}
  +	
  +	public void testStarted(String host)
  +	{
  +		System.out.println("remoteSampleListener: testStarted(String)");
  +		if(testListener != null)
  +		{
  +			testListener.testStarted(host);
  +		}
  +	}
  +	
  +	public void testEnded()
  +	{
  +		System.out.println("remoteSampleListener: testEnded()");
  +		if(testListener != null)
  +		{
  +			testListener.testEnded();
  +		}
  +	}
  +	
  +	public void testEnded(String host)
  +	{
  +		System.out.println("remoteSampleListener: testEnded(String)");
  +		if(testListener != null)
  +		{
  +			testListener.testEnded(host);
  +		}
   	}
   
   	/************************************************************
  @@ -89,12 +134,9 @@
   	 ***********************************************************/
   	public void sampleOccurred(SampleEvent e)
   	{
  -		System.out.println("Sample occurred in remote listener!");
  -		Iterator iter = listeners.iterator();
  -		System.out.println("Listeners = "+listeners.size());
  -		while (iter.hasNext())
  +		if (sampleListener != null)
   		{
  -			((SampleListener)iter.next()).sampleOccurred(e);
  +			sampleListener.sampleOccurred(e);
   		}
   	}
   
  @@ -105,10 +147,9 @@
   	 ***********************************************************/
   	public void sampleStarted(SampleEvent e)
   	{
  -		Iterator iter = listeners.iterator();
  -		while (iter.hasNext())
  +		if (sampleListener != null)
   		{
  -			((SampleListener)iter.next()).sampleStarted(e);
  +			sampleListener.sampleStarted(e);
   		}
   	}
   
  @@ -119,10 +160,9 @@
   	 ***********************************************************/
   	public void sampleStopped(SampleEvent e)
   	{
  -		Iterator iter = listeners.iterator();
  -		while (iter.hasNext())
  +		if (sampleListener != null)
   		{
  -			((SampleListener)iter.next()).sampleStopped(e);
  +			sampleListener.sampleStopped(e);
   		}
   	}
   }
  
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/samplers/Remoteable.java
  
  Index: Remoteable.java
  ===================================================================
  package org.apache.jmeter.samplers;
  
  /**
   * @author mstover
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public interface Remoteable {
  
  }
  
  
  
  1.7       +1 -2      jakarta-jmeter/src_1/org/apache/jmeter/testelement/AbstractTestElement.java
  
  Index: AbstractTestElement.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/testelement/AbstractTestElement.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AbstractTestElement.java	17 May 2002 01:29:35 -0000	1.6
  +++ AbstractTestElement.java	23 May 2002 15:47:06 -0000	1.7
  @@ -6,7 +6,7 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/05/17 01:29:35 $
  + *@created   $Date: 2002/05/23 15:47:06 $
    *@version   1.0
    ***************************************/
   
  @@ -44,7 +44,6 @@
   	{
   		if(o instanceof AbstractTestElement)
   		{
  -			System.out.println("is equal? "+((AbstractTestElement)o).testInfo.equals(testInfo));
   			return ((AbstractTestElement)o).testInfo.equals(testInfo);
   		}
   		else
  
  
  
  1.2       +4 -0      jakarta-jmeter/src_1/org/apache/jmeter/testelement/TestListener.java
  
  Index: TestListener.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/testelement/TestListener.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestListener.java	19 Apr 2002 02:10:50 -0000	1.1
  +++ TestListener.java	23 May 2002 15:47:06 -0000	1.2
  @@ -15,4 +15,8 @@
   	public void testStarted();
   
   	public void testEnded();
  +	
  +	public void testStarted(String host);
  +	
  +	public void testEnded(String host);
   }
  
  
  
  1.9       +14 -3     jakarta-jmeter/src_1/org/apache/jmeter/threads/JMeterThread.java
  
  Index: JMeterThread.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/threads/JMeterThread.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- JMeterThread.java	2 May 2002 22:55:00 -0000	1.8
  +++ JMeterThread.java	23 May 2002 15:47:07 -0000	1.9
  @@ -70,8 +70,8 @@
    * timing, add listeners for sampling events and to stop the sampling process.
    *
    *@author    $Author: mstover1 $
  - *@created   $Date: 2002/05/02 22:55:00 $
  - *@version   $Revision: 1.8 $
  + *@created   $Date: 2002/05/23 15:47:07 $
  + *@version   $Revision: 1.9 $
    ***************************************/
   public class JMeterThread implements Runnable, java.io.Serializable {
   	static Map samplers = new HashMap();
  @@ -81,6 +81,7 @@
   	ListedHashTree testTree;
   	TestCompiler compiler;
   	JMeterThreadMonitor monitor;
  +	String threadName;
   	/****************************************
   	 * !ToDo (Constructor description)
   	 ***************************************/
  @@ -91,6 +92,11 @@
   		compiler = new TestCompiler(testTree);
   		controller = (Controller) testTree.getArray()[0];
   	}
  +	
  +	public void setThreadName(String threadName)
  +	{
  +		this.threadName = threadName;
  +	}
   	/****************************************
   	 * !ToDo (Method description)
   	 ***************************************/
  @@ -106,6 +112,8 @@
   				SamplePackage pack = compiler.configureSampler(controller.next());
   				delay(pack.getTimers());
   				SampleResult result = pack.getSampler().sample(null);
  +				result.setThreadName(threadName);
  +				result.setTimeStamp(System.currentTimeMillis());
   				checkAssertions(pack.getAssertions(), result);
   				notifyListeners(pack.getSampleListeners(), result);
   			}
  @@ -124,7 +132,10 @@
   	private void checkAssertions(List assertions, SampleResult result) {
   		Iterator iter = assertions.iterator();
   		while (iter.hasNext()) {
  -			result.addAssertionResult(((Assertion) iter.next()).getResult(result));
  +			AssertionResult assertion = ((Assertion)iter.next()).getResult(result);
  +			result.setSuccessful(result.isSuccessful() && 
  +					!(assertion.isError() || assertion.isFailure()));
  +			result.addAssertionResult(assertion);
   		}
   	}
   	private void delay(List timers) {
  
  
  
  1.5       +0 -0      jakarta-jmeter/src_1/org/apache/jmeter/threads/ThreadGroup.java
  
  Index: ThreadGroup.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/threads/ThreadGroup.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ThreadGroup.java	21 May 2002 03:36:44 -0000	1.4
  +++ ThreadGroup.java	23 May 2002 15:47:07 -0000	1.5
  @@ -74,7 +74,7 @@
    * Apache Foundation
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/05/21 03:36:44 $
  + *@created   $Date: 2002/05/23 15:47:07 $
    *@version   1.0
    ***************************************/
   
  @@ -256,8 +256,8 @@
   	 * issues.
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/21 03:36:44 $
  -	 *@version   $Revision: 1.4 $
  +	 *@created   $Date: 2002/05/23 15:47:07 $
  +	 *@version   $Revision: 1.5 $
   	 ***************************************/
   	private class SampleQueue implements Runnable, Serializable
   	{
  
  
  
  1.5       +4 -4      jakarta-jmeter/src_1/org/apache/jmeter/util/ClassFinder.java
  
  Index: ClassFinder.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/util/ClassFinder.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ClassFinder.java	1 May 2002 01:39:40 -0000	1.4
  +++ ClassFinder.java	23 May 2002 15:47:07 -0000	1.5
  @@ -206,7 +206,7 @@
   		List listSuperClasses = null;
   		String[] strPathsOrJars =
   			JMeterUtils.split(
  -				JMeterUtils.getPropDefault("search_paths", ".;ApacheJMeter.jar"),
  +				JMeterUtils.getPropDefault("search_paths", ".;ApacheJMeter_core.jar"),
   				";");
   		strPathsOrJars = addJarsInPath(strPathsOrJars);
   		if (catClass.isDebugEnabled()) {
  @@ -758,9 +758,9 @@
   	
   	 *@author     $Author: mstover1 $
   	
  -	 *@created    $Date: 2002/05/01 01:39:40 $
  +	 *@created    $Date: 2002/05/23 15:47:07 $
   	
  -	 *@version    $Revision: 1.4 $
  +	 *@version    $Revision: 1.5 $
   	
   	 ***********************************************************/
   	public static class Test extends TestCase {
  @@ -785,7 +785,7 @@
   		
   		 ***********************************************************/
   		public void testFindClassesInPaths() {
  -			String testPath = System.getProperty("user.dir") + "/bin/classes";
  +			String testPath = System.getProperty("user.dir") + "/classes";
   			List listPaths = new ArrayList();
   			ArrayList listClasses = new ArrayList();
   			// listPaths will contain the path/jars where all classes will be listed
  
  
  
  1.4       +23 -1     jakarta-jmeter/src_1/org/apache/jmeter/util/JMeterUtils.java
  
  Index: JMeterUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/util/JMeterUtils.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- JMeterUtils.java	29 Apr 2002 17:08:14 -0000	1.3
  +++ JMeterUtils.java	23 May 2002 15:47:07 -0000	1.4
  @@ -76,7 +76,7 @@
    *
    *@author     <a href="mailto://stefano@apache.org">Stefano Mazzocchi</a>
    *@created    June 28, 2001
  - *@version    $Revision: 1.3 $ $Date: 2002/04/29 17:08:14 $
  + *@version    $Revision: 1.4 $ $Date: 2002/05/23 15:47:07 $
    */
   
   public class JMeterUtils
  @@ -189,6 +189,28 @@
   				System.out.println(name);
   				return null;
   		  }
  +	 }
  +	 
  +	 public static String getResourceFileAsText(String name)
  +	 {
  +	 	try {
  +			String lineEnd = System.getProperty("line.separator");
  +		 	BufferedReader fileReader = new BufferedReader(new InputStreamReader(JMeterUtils.class.getClassLoader().getResourceAsStream(name)));
  +		 	StringBuffer text = new StringBuffer();
  +		 	String line = "NOTNULL";
  +			while (line != null)
  +			{
  +				line = fileReader.readLine();
  +				if (line != null)
  +				{
  +					text.append(line);
  +					text.append(lineEnd);
  +				}
  +			}
  +			return text.toString();
  +		} catch(IOException e) {
  +			return "";
  +		}
   	 }
   
   	 /**
  
  
  
  1.5       +7 -9      jakarta-jmeter/src_1/org/apache/jmeter/util/ListedHashTree.java
  
  Index: ListedHashTree.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/util/ListedHashTree.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ListedHashTree.java	17 May 2002 01:29:35 -0000	1.4
  +++ ListedHashTree.java	23 May 2002 15:47:07 -0000	1.5
  @@ -56,7 +56,6 @@
   package org.apache.jmeter.util;
   import java.io.*;
   import java.util.*;
  -import org.apache.log4j.Category;
   
   /****************************************
    * This class is used to create a tree structure of objects. Each element in the
  @@ -66,12 +65,11 @@
    * function).
    *
    *@author    $Author: mstover1 $
  - *@created   $Date: 2002/05/17 01:29:35 $
  - *@version   $Revision: 1.4 $
  + *@created   $Date: 2002/05/23 15:47:07 $
  + *@version   $Revision: 1.5 $
    ***************************************/
   public class ListedHashTree implements Serializable,Cloneable
   {
  -	private static Category log = Category.getInstance(ListedHashTree.class);
   
   	private java.util.Map data;
   	private List order;
  @@ -1113,7 +1111,7 @@
   	 *
   	 *@param numTabs  The number of tabs (preferably make the first call with a
   	 *      value 0)
  -	 ***************************************/
  +	 **************************************
   	public void debugDeep(int numTabs)
   	{
   		if(!log.isDebugEnabled())
  @@ -1147,7 +1145,7 @@
   
   	/****************************************
   	 * Debugs all the elements in the current ListedHashTree
  -	 ***************************************/
  +	 ***************************************
   	public void debugShallow()
   	{
   		if(!log.isDebugEnabled())
  @@ -1158,7 +1156,7 @@
   		{
   			log.debug(iter.next());
   		}
  -	}
  +	}*/
   
   
   
  @@ -1176,8 +1174,8 @@
   	 * !ToDo (Class description)
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/17 01:29:35 $
  -	 *@version   $Revision: 1.4 $
  +	 *@created   $Date: 2002/05/23 15:47:07 $
  +	 *@version   $Revision: 1.5 $
   	 ***************************************/
   	public static class Test extends junit.framework.TestCase
   	{
  
  
  
  1.4       +25 -8     jakarta-jmeter/src_1/org/apache/jmeter/visualizers/Graph.java
  
  Index: Graph.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/visualizers/Graph.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Graph.java	29 Apr 2002 17:08:15 -0000	1.3
  +++ Graph.java	23 May 2002 15:47:07 -0000	1.4
  @@ -54,11 +54,16 @@
    */
   package org.apache.jmeter.visualizers;
   
  -import javax.swing.*;
  -import java.awt.*;
  -import java.util.*;
  -
  -import org.apache.jmeter.gui.*;
  +import java.awt.Color;
  +import java.awt.Dimension;
  +import java.awt.Graphics;
  +import java.awt.Rectangle;
  +import java.util.Iterator;
  +
  +import javax.swing.JComponent;
  +import javax.swing.Scrollable;
  +import javax.swing.SwingUtilities;
  +import org.apache.jmeter.gui.util.JMeterColor;
   import org.apache.jmeter.samplers.Clearable;
   
   
  @@ -77,6 +82,7 @@
   	private boolean data = true;
   	private boolean average = true;
   	private boolean deviation = true;
  +	private boolean throughput = true;
   
   	private GraphModel model;
   	private static int width = 2000;
  @@ -215,6 +221,11 @@
   	{
   		this.deviation = value;
   	}
  +	
  +	public void enableThroughput(boolean value)
  +	{
  +		throughput = value;
  +	}
   
   
   	/**
  @@ -285,23 +296,29 @@
   		Dimension d = this.getSize();
   		if (data)
   		{
  -			int data = (int) (oneSample.data * d.height / model.getMax());
  +			int data = (int) (oneSample.data * d.height / model.getGraphMax());
   			g.setColor(Color.black);
   			g.drawLine(x % width, d.height - data, x % width, d.height - data - 1);
   		}
   
   		if (average)
   		{
  -			int average = (int) (oneSample.average * d.height / model.getMax());
  +			int average = (int) (oneSample.average * d.height / model.getGraphMax());
   			g.setColor(Color.blue);
   			g.drawLine(x % width, d.height - average, x % width, (d.height - average - 1));
   		}
   
   		if (deviation)
   		{
  -			int deviation = (int) (oneSample.deviation * d.height / model.getMax());
  +			int deviation = (int) (oneSample.deviation * d.height / model.getGraphMax());
   			g.setColor(Color.red);
   			g.drawLine(x % width, d.height - deviation, x % width, (d.height - deviation - 1));
  +		}
  +		if(throughput)
  +		{
  +			int throughput = (int) (oneSample.throughput * d.height / model.getThroughputMax());
  +			g.setColor(JMeterColor.dark_green);
  +			g.drawLine(x % width, d.height - throughput, x % width, (d.height - throughput - 1));
   		}
   	}
   }
  
  
  
  1.5       +50 -8     jakarta-jmeter/src_1/org/apache/jmeter/visualizers/GraphModel.java
  
  Index: GraphModel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/visualizers/GraphModel.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- GraphModel.java	1 May 2002 23:48:53 -0000	1.4
  +++ GraphModel.java	23 May 2002 15:47:07 -0000	1.5
  @@ -85,7 +85,10 @@
   	private long previous = 0;
   	private long max = 1;
   	private boolean bigChange = false;
  -	private Sample current = new Sample(0, 0, 0);
  +	private Sample current = new Sample(0, 0, 0,0);
  +	private long startTime = 0;
  +	private int throughputMax = 0;
  +	private long graphMax = 0;
   
   	/**
   	 *  Constructor for the GraphModel object
  @@ -146,6 +149,11 @@
   
   		return current.deviation;
   	}
  +	
  +	public float getCurrentThroughput()
  +	{
  +		return current.throughput;
  +	}
   
   
   
  @@ -208,11 +216,21 @@
   	 *
   	 *@return    The Max value
   	 */
  -	public long getMax()
  +	public long getMaxSample()
   	{
  -
   		return max;
   	}
  +	
  +	public long getGraphMax()
  +	{
  +		return graphMax;
  +	}
  +	
  +	
  +	public int getThroughputMax()
  +	{
  +		return throughputMax;
  +	}
   
   
   
  @@ -235,7 +253,7 @@
   	 */
   	public Sample addSample(SampleResult e)
   	{
  -		Sample s = addNewSample(e.getTime());
  +		Sample s = addNewSample(e.getTime(),e.getTimeStamp());
   		fireDataChanged();
   		return s;
   	}
  @@ -252,8 +270,9 @@
   		counter = 0;
   		previous = 0;
   		max = 1;
  +		graphMax = 1;
   		bigChange = true;
  -		current = new Sample(0, 0, 0);
  +		current = new Sample(0, 0, 0,0);
   		this.fireDataChanged();
   	}
   
  @@ -301,18 +320,41 @@
   	 *
   	 *@param  sample  The feature to be added to the NewSample attribute
   	 */
  -	protected Sample addNewSample(long sample)
  +	protected Sample addNewSample(long sample,long timeStamp)
   	{
  +		if(samples.size() == 0)
  +		{
  +			startTime = timeStamp;
  +		}
   		if (sample > max)
   		{
  -			bigChange = true;
   			max = sample;
   		}
   		averageSum += sample;
   		long average = averageSum / ++counter;
   		variationSum += Math.pow(sample - average, 2);
   		long deviation = (long) Math.pow(variationSum / counter, 0.5);
  -		Sample s = new Sample(sample, average, deviation);
  +		float throughput = 0;
  +		if(timeStamp-startTime > 0)
  +		{
  +			throughput = (float)(((float)(samples.size()+1))/((float)(timeStamp-startTime)) * 60000);
  +		}
  +		if(throughput > throughputMax)
  +		{
  +			bigChange = true;
  +			throughputMax = (int)(throughput * 1.5F);
  +		}
  +		if(average > graphMax)
  +		{
  +			bigChange = true;
  +			graphMax = average * 3;
  +		}
  +		if(deviation > graphMax)
  +		{
  +			bigChange = true;
  +			graphMax = deviation * 3;
  +		}
  +		Sample s = new Sample(sample, average, deviation,throughput);
   		previous = sample;
   		current = s;
   		samples.add(s);
  
  
  
  1.5       +47 -9     jakarta-jmeter/src_1/org/apache/jmeter/visualizers/GraphVisualizer.java
  
  Index: GraphVisualizer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/visualizers/GraphVisualizer.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- GraphVisualizer.java	29 Apr 2002 03:01:54 -0000	1.4
  +++ GraphVisualizer.java	23 May 2002 15:47:07 -0000	1.5
  @@ -53,15 +53,26 @@
    * <http://www.apache.org/>.
    */
   package org.apache.jmeter.visualizers;
  -import java.awt.*;
  -import java.awt.event.*;
  -import java.util.*;
  -import javax.swing.*;
  -import javax.swing.border.*;
  -import org.apache.jmeter.gui.*;
  +import java.awt.BorderLayout;
  +import java.awt.Color;
  +import java.awt.FlowLayout;
  +import java.awt.Font;
  +import java.awt.Image;
  +import java.awt.event.ItemEvent;
  +import java.awt.event.ItemListener;
  +
  +import javax.swing.BorderFactory;
  +import javax.swing.JCheckBox;
  +import javax.swing.JLabel;
  +import javax.swing.JPanel;
  +import javax.swing.JScrollPane;
  +import javax.swing.JTextField;
  +import javax.swing.border.Border;
  +import javax.swing.border.EmptyBorder;
   import org.apache.jmeter.gui.util.VerticalLayout;
  -import org.apache.jmeter.samplers.SampleResult;
  +import org.apache.jmeter.gui.util.JMeterColor;
   import org.apache.jmeter.samplers.Clearable;
  +import org.apache.jmeter.samplers.SampleResult;
   import org.apache.jmeter.util.JMeterUtils;
   import org.apache.jmeter.visualizers.gui.AbstractVisualizer;
   
  @@ -72,7 +83,7 @@
    *
    *@author    <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
    *@created   February 8, 2001
  - *@version   $Revision: 1.4 $ $Date: 2002/04/29 03:01:54 $
  + *@version   $Revision: 1.5 $ $Date: 2002/05/23 15:47:07 $
    ***************************************/
   public class GraphVisualizer extends AbstractVisualizer
   		 implements ImageVisualizer, ItemListener, GraphListener,Clearable
  @@ -81,14 +92,18 @@
   	private JTextField maxYField = null;
   	private JTextField minYField = null;
   	private JTextField noSamplesField = null;
  +	String minute = JMeterUtils.getResString("minute");
   
   	private Graph graph;
   	private JCheckBox data;
   	private JCheckBox average;
   	private JCheckBox deviation;
  +	private JCheckBox throughput;
   	private JTextField dataField;
   	private JTextField averageField;
   	private JTextField deviationField;
  +	private JTextField throughputField;
  +	private boolean perSecond = false;
   
   
   	/****************************************
  @@ -127,6 +142,7 @@
   		dataField.setText(Long.toString(model.getCurrentData()));
   		averageField.setText(Long.toString(model.getCurrentAverage()));
   		deviationField.setText(Long.toString(model.getCurrentDeviation()));
  +		throughputField.setText(Float.toString(model.getCurrentThroughput())+"/"+minute);
   		updateYAxis();
   	}
   
  @@ -143,6 +159,7 @@
   		dataField.setText(Long.toString(s.data));
   		averageField.setText(Long.toString(s.average));
   		deviationField.setText(Long.toString(s.deviation));
  +		throughputField.setText(Float.toString(s.throughput)+"/"+minute);
   		updateYAxis();
   	}
   
  @@ -185,6 +202,10 @@
   		{
   			this.graph.enableDeviation(e.getStateChange() == ItemEvent.SELECTED);
   		}
  +		else if(e.getItem() == throughput)
  +		{
  +			this.graph.enableThroughput(e.getStateChange() == ItemEvent.SELECTED);
  +		}
   		this.graph.repaint();
   	}
   
  @@ -199,6 +220,7 @@
   		dataField.setText("0000");
   		averageField.setText("0000");
   		deviationField.setText("0000");
  +		throughputField.setText("0/"+minute);
   		updateYAxis();
   		repaint();
   	}
  @@ -220,7 +242,7 @@
   	 ***************************************/
   	private void updateYAxis()
   	{
  -		maxYField.setText(Long.toString(model.getMax()));
  +		maxYField.setText(Long.toString(model.getGraphMax()));
   		minYField.setText("0");
   	}
   
  @@ -266,11 +288,16 @@
   		deviation.setSelected(true);
   		deviation.addItemListener(this);
   		deviation.setForeground(Color.red);
  +		throughput = new JCheckBox(JMeterUtils.getResString("graph_results_throughput"));
  +		throughput.setSelected(true);
  +		throughput.addItemListener(this);
  +		throughput.setForeground(JMeterColor.dark_green);
   
   		chooseGraphsPanel.add(selectGraphsLabel);
   		chooseGraphsPanel.add(data);
   		chooseGraphsPanel.add(average);
   		chooseGraphsPanel.add(deviation);
  +		chooseGraphsPanel.add(throughput);
   
   		// Set up the graph itself
   		JScrollPane graphScrollPanel = new JScrollPane(graph, JScrollPane.VERTICAL_SCROLLBAR_NEVER,
  @@ -337,6 +364,16 @@
   		deviationField.setBackground(getBackground());
   		deviationPanel.add(deviationLabel);
   		deviationPanel.add(deviationField);
  +		JPanel throughputPanel = new JPanel();
  +		JLabel throughputLabel = new JLabel(JMeterUtils.getResString("graph_results_throughput"));
  +		throughputLabel.setForeground(JMeterColor.dark_green);
  +		throughputField = new JTextField(15);
  +		throughputField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
  +		throughputField.setEditable(false);
  +		throughputField.setForeground(JMeterColor.dark_green);
  +		throughputField.setBackground(getBackground());
  +		throughputPanel.add(throughputLabel);
  +		throughputPanel.add(throughputField);
   		JPanel noSamplesPanel = new JPanel();
   		JLabel noSamplesLabel = new JLabel(JMeterUtils.getResString("graph_results_no_samples"));
   		noSamplesField = new JTextField(10);
  @@ -355,6 +392,7 @@
   		graphInfoPanel.add(dataPanel);
   		graphInfoPanel.add(averagePanel);
   		graphInfoPanel.add(deviationPanel);
  +		graphInfoPanel.add(throughputPanel);
   
   		// Set up the graph with header, footer, Y axis and graph display
   		JPanel graphPanel = new JPanel();
  
  
  
  1.4       +4 -1      jakarta-jmeter/src_1/org/apache/jmeter/visualizers/Sample.java
  
  Index: Sample.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/visualizers/Sample.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Sample.java	29 Apr 2002 17:08:15 -0000	1.3
  +++ Sample.java	23 May 2002 15:47:07 -0000	1.4
  @@ -78,6 +78,8 @@
   		 *  Description of the Field
   		 */
   		public long deviation;
  +		
  +		public float throughput;
   
   		/**
   		 *  Constructor for the Sample object
  @@ -86,10 +88,11 @@
   		 *@param  average    Description of Parameter
   		 *@param  deviation  Description of Parameter
   		 */
  -		public Sample(long data, long average, long deviation)
  +		public Sample(long data, long average, long deviation,float throughput)
   		{
   			this.data = data;
   			this.average = average;
   			this.deviation = deviation;
  +			this.throughput = throughput;
   		}
   	}
  
  
  
  1.5       +3 -3      jakarta-jmeter/src_1/org/apache/jmeter/visualizers/TableDataModel.java
  
  Index: TableDataModel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/visualizers/TableDataModel.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TableDataModel.java	1 May 2002 23:48:53 -0000	1.4
  +++ TableDataModel.java	23 May 2002 15:47:07 -0000	1.5
  @@ -104,9 +104,9 @@
   		return "View Results in Table";
   	}
   
  -	public Sample addNewSample(long time,boolean success,String url)
  +	public Sample addNewSample(long time,long timeStamp,boolean success,String url)
   	{
  -		Sample s = super.addNewSample(time);
  +		Sample s = super.addNewSample(time,timeStamp);
   		successList.add(new Boolean(success));
   		System.out.println("Url = "+url);
   		urlList.add(url);
  @@ -115,7 +115,7 @@
   
   	public Sample addSample(SampleResult e)
   	{
  -		Sample s = addNewSample(e.getTime(),e.isSuccessful(),
  +		Sample s = addNewSample(e.getTime(),e.getTimeStamp(),e.isSuccessful(),
   				(String)e.getSampleLabel());
   		fireDataChanged();
   		return s;
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>