mstover1 01/03/15 05:18:38
Modified: docs bugs.html changes.html contributing.html
extending.html how_to_use_jmeter.html
httpsamplercontroller.html index.html
installing.html jdbcsamplercontroller.html
todo.html
src/org/apache/jmeter/control GenericController.java
src/org/apache/jmeter/gui/action AddToTree.java
xdocs index.xml
xdocs/stylesheets project.xml
Added: src/org/apache/jmeter/control InterleaveControl.java
xdocs/user_manual index.xml test_samples.xml
threadgroups.xml
Log:
Fixed minor bugs, updating documentation
Revision Changes Path
1.7 +1 -1 jakarta-jmeter/docs/bugs.html
Index: bugs.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/bugs.html,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- bugs.html 2001/03/12 23:57:38 1.6
+++ bugs.html 2001/03/15 13:18:33 1.7
@@ -38,7 +38,7 @@
<ul>
<li> <a href="./index.html">Overview</a>
</li>
- <li> <a href="./how_to_use_jmeter.html">Usage</a>
+ <li> <a href="./user_manual/index.html">Usage</a>
</li>
<li> <a
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
</li>
1.20 +1 -1 jakarta-jmeter/docs/changes.html
Index: changes.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/changes.html,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- changes.html 2001/03/12 23:57:38 1.19
+++ changes.html 2001/03/15 13:18:33 1.20
@@ -38,7 +38,7 @@
<ul>
<li> <a href="./index.html">Overview</a>
</li>
- <li> <a href="./how_to_use_jmeter.html">Usage</a>
+ <li> <a href="./user_manual/index.html">Usage</a>
</li>
<li> <a
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
</li>
1.9 +1 -1 jakarta-jmeter/docs/contributing.html
Index: contributing.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/contributing.html,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- contributing.html 2001/03/12 23:57:39 1.8
+++ contributing.html 2001/03/15 13:18:33 1.9
@@ -38,7 +38,7 @@
<ul>
<li> <a href="./index.html">Overview</a>
</li>
- <li> <a href="./how_to_use_jmeter.html">Usage</a>
+ <li> <a href="./user_manual/index.html">Usage</a>
</li>
<li> <a
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
</li>
1.10 +1 -1 jakarta-jmeter/docs/extending.html
Index: extending.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/extending.html,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- extending.html 2001/03/12 23:57:39 1.9
+++ extending.html 2001/03/15 13:18:33 1.10
@@ -38,7 +38,7 @@
<ul>
<li> <a href="./index.html">Overview</a>
</li>
- <li> <a href="./how_to_use_jmeter.html">Usage</a>
+ <li> <a href="./user_manual/index.html">Usage</a>
</li>
<li> <a
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
</li>
1.12 +1 -1 jakarta-jmeter/docs/how_to_use_jmeter.html
Index: how_to_use_jmeter.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/how_to_use_jmeter.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- how_to_use_jmeter.html 2001/03/12 23:57:39 1.11
+++ how_to_use_jmeter.html 2001/03/15 13:18:33 1.12
@@ -38,7 +38,7 @@
<ul>
<li> <a href="./index.html">Overview</a>
</li>
- <li> <a href="./how_to_use_jmeter.html">Usage</a>
+ <li> <a href="./user_manual/index.html">Usage</a>
</li>
<li> <a
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
</li>
1.10 +1 -1 jakarta-jmeter/docs/httpsamplercontroller.html
Index: httpsamplercontroller.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/httpsamplercontroller.html,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- httpsamplercontroller.html 2001/03/12 23:57:39 1.9
+++ httpsamplercontroller.html 2001/03/15 13:18:33 1.10
@@ -38,7 +38,7 @@
<ul>
<li> <a href="./index.html">Overview</a>
</li>
- <li> <a href="./how_to_use_jmeter.html">Usage</a>
+ <li> <a href="./user_manual/index.html">Usage</a>
</li>
<li> <a
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
</li>
1.21 +13 -39 jakarta-jmeter/docs/index.html
Index: index.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/index.html,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- index.html 2001/03/12 23:57:39 1.20
+++ index.html 2001/03/15 13:18:33 1.21
@@ -38,7 +38,7 @@
<ul>
<li> <a href="./index.html">Overview</a>
</li>
- <li> <a href="./how_to_use_jmeter.html">Usage</a>
+ <li> <a href="./user_manual/index.html">Usage</a>
</li>
<li> <a
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
</li>
@@ -77,16 +77,16 @@
<tr><td>
<blockquote>
<p>
-<b>Apache JMeter</b> is a 100% pure Java desktop application designed to load test
functional
-behavior and measure performance. It was originally designed for testing Web
Applications but has
+<b>Apache JMeter</b> is a 100% pure Java desktop application designed to load test
functional
+behavior and measure performance. It was originally designed for testing Web
Applications but has
since expanded to other test functions.
</p>
<h2>What can I do with it?</h2>
<p>
Apache JMeter may be used to test performance both on static and dynamic
resources (files or CGI, Servlets, Perl scripts, Java Objects). It may well be
used to simulate a heavy
- load on a server, network or object to test its strength or to analyse overall
performance under
- different load types. You can use it to make a graphical analysis of
performance or to
+ load on a server, network or object to test its strength or to analyse
overall performance under
+ different load types. You can use it to make a graphical analysis of
performance or to
test your server/script/object behavior under heavy concurrent load.</p>
<p>
<a HREF="how_to_use_jmeter.html">Using JMeter</a>
@@ -94,40 +94,14 @@
<h2>What does it do?</h2>
<p>Apache JMeter features
include:</p>
<ul>
- <li>Complete portability and <b>100% Java purity</b>.</li>
- <li>Full <b>Swing</b> and lightweight component support (precompiled JAR uses
packages <code>javax.swing.*</code>).</li>
- <li>Pluggable Samplers allow unlimited testing capabilities.</li>
- <li>Full <b>multithreading</b> framework allows concurrent sampling by many
threads and simultaneous sampling of different functions by seperate thread
groups.</li>
- <li>Several load statistics may be choosen with <b>pluggable timers</b>.</li>
- <li>Data analisys and <b>visualisation plugins</b> allow great extendibility as
well as
- personalization.</li>
- <li>Careful <b>GUI</b> design allows faster operation and more precise
timings.</li>
- </ul>
- <p>
-Here you find all the information you need to use, understand and enhance Apache
JMeter.
-</p>
- <ul>
- <li><a HREF="license.html">Public license</a></li>
- <li><a href="dist">Download</a></li>
- <li><a HREF="installing.html">Installation</a></li>
- <ul>
- <li><a HREF="installing.html#requirements">System requirements</a></li>
- <li><a HREF="installing.html#installing">Installing Apache JMeter</a></li>
- </ul>
- <li><a HREF="running.html">Running Apache JMeter</a></li>
- <ul>
- <li><a HREF="running.html#scripts">Using system wrappers</a></li>
- <li><a HREF="running.html#command">From the command line</a></li>
- </ul>
- <li><a HREF="how_to_use_jmeter.html">Using JMeter</a></li>
- <li>
- <a HREF="extending.html">Extending/Customizing JMeter for your needs</a>
- </li>
- <li><a HREF="api/index.html">Code documentation (javadoc)</a></li>
- <li><a HREF="changes.html">Changes history</a></li>
- <li><a href="bugs.html">Known bugs</a></li>
- <li><a href="todo.html">Wish and Todo List</a></li>
- <li><a HREF="contributing.html">How to contribute</a></li>
+ <li>Complete portability and <b>100% Java purity</b>.</li>
+ <li>Full <b>Swing</b> and lightweight component support (precompiled JAR uses
packages <code>javax.swing.*</code>).</li>
+ <li>Pluggable Samplers allow unlimited testing capabilities.</li>
+ <li>Full <b>multithreading</b> framework allows concurrent sampling by many
threads and simultaneous sampling of different functions by seperate thread
groups.</li>
+ <li>Several load statistics may be choosen with <b>pluggable timers</b>.</li>
+ <li>Data analisys and <b>visualisation plugins</b> allow great extendibility
as well as
+ personalization.</li>
+ <li>Careful <b>GUI</b> design allows faster operation and more precise
timings.</li>
</ul>
</blockquote>
</td></tr>
1.15 +1 -1 jakarta-jmeter/docs/installing.html
Index: installing.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/installing.html,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- installing.html 2001/03/12 23:57:39 1.14
+++ installing.html 2001/03/15 13:18:34 1.15
@@ -38,7 +38,7 @@
<ul>
<li> <a href="./index.html">Overview</a>
</li>
- <li> <a href="./how_to_use_jmeter.html">Usage</a>
+ <li> <a href="./user_manual/index.html">Usage</a>
</li>
<li> <a
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
</li>
1.5 +1 -1 jakarta-jmeter/docs/jdbcsamplercontroller.html
Index: jdbcsamplercontroller.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/jdbcsamplercontroller.html,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- jdbcsamplercontroller.html 2001/03/12 23:57:39 1.4
+++ jdbcsamplercontroller.html 2001/03/15 13:18:35 1.5
@@ -38,7 +38,7 @@
<ul>
<li> <a href="./index.html">Overview</a>
</li>
- <li> <a href="./how_to_use_jmeter.html">Usage</a>
+ <li> <a href="./user_manual/index.html">Usage</a>
</li>
<li> <a
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
</li>
1.9 +1 -1 jakarta-jmeter/docs/todo.html
Index: todo.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/todo.html,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- todo.html 2001/03/12 23:57:39 1.8
+++ todo.html 2001/03/15 13:18:35 1.9
@@ -38,7 +38,7 @@
<ul>
<li> <a href="./index.html">Overview</a>
</li>
- <li> <a href="./how_to_use_jmeter.html">Usage</a>
+ <li> <a href="./user_manual/index.html">Usage</a>
</li>
<li> <a
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
</li>
1.9 +178 -65
jakarta-jmeter/src/org/apache/jmeter/control/GenericController.java
Index: GenericController.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/org/apache/jmeter/control/GenericController.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- GenericController.java 2001/03/13 03:23:46 1.8
+++ GenericController.java 2001/03/15 13:18:37 1.9
@@ -1,95 +1,168 @@
+/*
+ * ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache JMeter" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact [EMAIL PROTECTED]
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache JMeter", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
package org.apache.jmeter.control;
import java.util.*;
-import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.config.ConfigElement;
-import org.apache.jmeter.samplers.*;
import org.apache.jmeter.gui.*;
+import org.apache.jmeter.samplers.*;
+import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.save.Saveable;
/************************************************************
* Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
*
*@author Michael Stover
- *@created $Date: 2001/03/13 03:23:46 $
+ *@created $Date: 2001/03/15 13:18:37 $
*@version 1.0
***********************************************************/
-public class GenericController implements
SamplerController,JMeterComponentModel,Saveable
+public class GenericController implements SamplerController, JMeterComponentModel,
Saveable
{
protected List subControllers = new LinkedList();
protected SamplerController current;
- private List configs = new LinkedList();
protected Iterator controlIt;
+ private List configs = new LinkedList();
private boolean returnedNull = false;
private boolean done = false, timeForNext = false;
private String name;
private static List addableList = new LinkedList();
- static
- {
- addableList.add(MenuFactory.getControllerMenu());
- addableList.add(MenuFactory.getConfigElementMenu());
- }
/************************************************************
* !ToDo (Constructor description)
***********************************************************/
public GenericController()
+ {
+ name = getClassLabel();
+ }
+
+ /************************************************************
+ * !ToDo (Method description)
+ *
+ *@param name !ToDo (Parameter description)
+ ***********************************************************/
+ public void setName(String name)
{
- name=getClassLabel();
+ this.name = name;
}
+ /************************************************************
+ * Gets the TagHandlerClass attribute of the GenericController object
+ *
+ *@return The TagHandlerClass value
+ ***********************************************************/
public Class getTagHandlerClass()
{
return org.apache.jmeter.save.handlers.GenericControllerHandler.class;
}
+ /************************************************************
+ * Gets the ConfigElements attribute of the GenericController object
+ *
+ *@return The ConfigElements value
+ ***********************************************************/
public List getConfigElements()
{
return configs;
}
+ /************************************************************
+ * Gets the SubControllers attribute of the GenericController object
+ *
+ *@return The SubControllers value
+ ***********************************************************/
public List getSubControllers()
{
return subControllers;
}
- public void uncompile()
- {
- subControllers.clear();
- configs.clear();
- current = null;
- controlIt = null;
- returnedNull = false;
- done = false;
- timeForNext = false;
- }
-
/************************************************************
- * !ToDo (Method description)
+ * Gets the GuiClass attribute of the GenericController object
*
- *@param name !ToDo (Parameter description)
+ *@return The GuiClass value
***********************************************************/
- public void setName(String name)
- {
- this.name = name;
- }
-
public Class getGuiClass()
{
return org.apache.jmeter.gui.NamePanel.class;
}
+ /************************************************************
+ * Gets the ClassLabel attribute of the GenericController object
+ *
+ *@return The ClassLabel value
+ ***********************************************************/
public String getClassLabel()
{
return "Default Controller";
}
+ /************************************************************
+ * Gets the Editable attribute of the GenericController object
+ *
+ *@return The Editable value
+ ***********************************************************/
public boolean isEditable()
{
return true;
}
+ /************************************************************
+ * Gets the AddList attribute of the GenericController object
+ *
+ *@return The AddList value
+ ***********************************************************/
public Collection getAddList()
{
return addableList;
@@ -114,7 +187,7 @@
{
Collection listeners = new LinkedList();
Iterator iter = subControllers.iterator();
- while (iter.hasNext())
+ while(iter.hasNext())
{
SamplerController item = (SamplerController)iter.next();
listeners.addAll(item.getListeners());
@@ -123,15 +196,24 @@
return listeners;
}
- protected void addSelfOrNot(Collection listeners)
+ /************************************************************
+ * Description of the Method
+ ***********************************************************/
+ public void uncompile()
{
+ subControllers.clear();
+ configs.clear();
+ current = null;
+ controlIt = null;
+ returnedNull = false;
+ done = false;
+ timeForNext = false;
}
/************************************************************
* !ToDo (Method description)
*
- *@return !ToDo (Return description)
- *@exception NoEntryException !ToDo (Exception description)
+ *@return !ToDo (Return description)
***********************************************************/
public Entry nextEntry()
{
@@ -156,27 +238,7 @@
return entry;
}
- protected Entry removeFromIterator()
- {
- controlIt.remove();
- return endEntryCycle();
- }
- protected Entry endEntryCycle()
- {
- if(controlIt.hasNext())
- {
- current = (SamplerController)controlIt.next();
- }
- else
- {
- controlIt = null;
- return new CycleEntry();
- }
- return nextEntry();
- }
-
-
/************************************************************
* !ToDo (Method description)
*
@@ -215,16 +277,50 @@
public Object clone()
{
GenericController control = new GenericController();
- Iterator iter = configs.iterator();
- while (iter.hasNext())
- {
- control.addConfigElement((ConfigElement)iter.next());
- }
standardCloneProc(control);
return control;
}
/************************************************************
+ * Adds a feature to the SelfOrNot attribute of the GenericController object
+ *
+ *@param listeners The feature to be added to the SelfOrNot attribute
+ ***********************************************************/
+ protected void addSelfOrNot(Collection listeners)
+ {
+ }
+
+ /************************************************************
+ * Description of the Method
+ *
+ *@return Description of the Returned Value
+ ***********************************************************/
+ protected Entry removeFromIterator()
+ {
+ controlIt.remove();
+ return endEntryCycle();
+ }
+
+ /************************************************************
+ * Description of the Method
+ *
+ *@return Description of the Returned Value
+ ***********************************************************/
+ protected Entry endEntryCycle()
+ {
+ if(controlIt.hasNext())
+ {
+ current = (SamplerController)controlIt.next();
+ }
+ else
+ {
+ controlIt = null;
+ return new CycleEntry();
+ }
+ return nextEntry();
+ }
+
+ /************************************************************
* !ToDo (Method description)
*
*@param control !ToDo (Parameter description)
@@ -232,24 +328,30 @@
protected void standardCloneProc(SamplerController control)
{
Iterator iter = this.getConfigElements().iterator();
- while (iter.hasNext()) {
- control.addConfigElement((ConfigElement) iter.next());
+ while(iter.hasNext())
+ {
+ control.addConfigElement((ConfigElement)iter.next());
}
iter = subControllers.iterator();
- while (iter.hasNext())
+ while(iter.hasNext())
{
control.addSamplerController((SamplerController)((SamplerController)iter.next()).clone());
}
control.setName(getName());
}
+ /************************************************************
+ * Description of the Method
+ *
+ *@return Description of the Returned Value
+ ***********************************************************/
protected boolean init()
{
- if (controlIt == null)
+ if(controlIt == null)
{
controlIt = subControllers.iterator();
- if (controlIt.hasNext())
+ if(controlIt.hasNext())
{
current = (SamplerController)controlIt.next();
}
@@ -261,15 +363,26 @@
return true;
}
+ /************************************************************
+ * Adds a feature to the ConfigElements attribute of the GenericController
+ * object
+ *
+ *@param entry The feature to be added to the ConfigElements attribute
+ ***********************************************************/
protected void addConfigElements(Entry entry)
{
- if (entry != null)
+ if(entry != null)
{
Iterator iter = configs.iterator();
- while (iter.hasNext())
+ while(iter.hasNext())
{
entry.addConfigElement((ConfigElement)iter.next());
}
}
+ }
+ static
+ {
+ addableList.add(MenuFactory.getControllerMenu());
+ addableList.add(MenuFactory.getConfigElementMenu());
}
}
1.1
jakarta-jmeter/src/org/apache/jmeter/control/InterleaveControl.java
Index: InterleaveControl.java
===================================================================
package org.apache.jmeter.control;
import java.util.*;
import org.apache.jmeter.samplers.*;
import org.apache.jmeter.config.ConfigElement;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company:
* @author Michael Stover
* @version 1.0
*/
public class InterleaveControl extends GenericController
{
public InterleaveControl()
{
}
public String getClassLabel()
{
return "Interleave Logic";
}
/************************************************************
* !ToDo (Method description)
*
*@return !ToDo (Return description)
*@exception NoEntryException !ToDo (Exception description)
***********************************************************/
public Entry nextEntry()
{
Entry entry = null;
if(!init())
{
return null;
}
if(current == null)
{
entry = new CycleEntry();
}
else
{
entry = current.nextEntry();
}
if(entry == null)
{
return removeFromIterator();
}
else if(entry instanceof CycleEntry)
{
return endEntryCycle();
}
else
{
addConfigElements(entry);
}
return entry;
}
protected boolean init()
{
if (controlIt == null)
{
controlIt = subControllers.iterator();
if (controlIt.hasNext())
{
current = (SamplerController)controlIt.next();
}
else
{
return false;
}
}
else
{
if(controlIt.hasNext())
{
current = (SamplerController)controlIt.next();
}
else
{
current = null;
controlIt = null;
}
}
return true;
}
/************************************************************
* !ToDo (Method description)
*
*@return !ToDo (Return description)
***********************************************************/
public Object clone()
{
InterleaveControl control = new InterleaveControl();
Iterator iter = this.getConfigElements().iterator();
while (iter.hasNext())
{
control.addConfigElement((ConfigElement)iter.next());
}
standardCloneProc(control);
return control;
}
}
1.4 +24 -27 jakarta-jmeter/src/org/apache/jmeter/gui/action/AddToTree.java
Index: AddToTree.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/gui/action/AddToTree.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AddToTree.java 2001/03/07 12:45:31 1.3
+++ AddToTree.java 2001/03/15 13:18:37 1.4
@@ -6,7 +6,7 @@
* companies.
*
* All rights reserved
- * $Header:
/home/cvs/jakarta-jmeter/src/org/apache/jmeter/gui/action/AddToTree.java,v 1.3
2001/03/07 12:45:31 mstover1 Exp $
+ * $Header:
/home/cvs/jakarta-jmeter/src/org/apache/jmeter/gui/action/AddToTree.java,v 1.4
2001/03/15 13:18:37 mstover1 Exp $
*/
package org.apache.jmeter.gui.action;
import org.apache.jmeter.gui.*;
@@ -21,42 +21,39 @@
* !ToDo (Class description)
*
*@author $Author: mstover1 $
- *@created $Date: 2001/03/07 12:45:31 $
- *@version $Revision: 1.3 $
+ *@created $Date: 2001/03/15 13:18:37 $
+ *@version $Revision: 1.4 $
*/
public class AddToTree implements Command
{
- static Map allJMeterComponentCommands = null;
+ private Map allJMeterComponentCommands;
public AddToTree()
{
- if(allJMeterComponentCommands == null ||
allJMeterComponentCommands.size() == 0)
+ allJMeterComponentCommands = new HashMap();
+ List classes;
+ try
{
- allJMeterComponentCommands = new HashMap();
- List classes;
+ classes = ClassFinder.findClassesThatExtend(
+ new Class[]{JMeterComponentModel.class});
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ classes = new LinkedList();
+ }
+
+ Iterator iter = classes.iterator();
+ while (iter.hasNext())
+ {
try
{
- classes = ClassFinder.findClassesThatExtend(
- new
Class[]{JMeterComponentModel.class});
+ JMeterComponentModel item = (JMeterComponentModel)
+ Class.forName((String)
iter.next()).newInstance();
+ allJMeterComponentCommands.put(item.getClassLabel(),
item.getClass());
}
- catch (Exception ex)
- {
- ex.printStackTrace();
- classes = new LinkedList();
- }
-
- Iterator iter = classes.iterator();
- while (iter.hasNext())
+ catch (Throwable ex)
{
- try
- {
- JMeterComponentModel item =
(JMeterComponentModel)
- Class.forName((String)
iter.next()).newInstance();
-
allJMeterComponentCommands.put(item.getClassLabel(), item.getClass());
- }
- catch (Throwable ex)
- {
- }
}
}
}
1.2 +44 -69 jakarta-jmeter/xdocs/index.xml
Index: index.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/index.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- index.xml 2001/03/07 06:38:36 1.1
+++ index.xml 2001/03/15 13:18:38 1.2
@@ -1,69 +1,44 @@
-<?xml version="1.0"?>
-<document>
- <properties>
- <author email="[EMAIL PROTECTED]">Brendan Burns, et al.</author>
- <title>Apache JMeter</title>
- </properties>
-
-<body>
-<section name="Apache JMeter">
-<p>
-<b>Apache JMeter</b> is a 100% pure Java desktop application designed to load test
functional
-behavior and measure performance. It was originally designed for testing Web
Applications but has
-since expanded to other test functions.
-</p>
-
-
-<h2>What can I do with it?</h2>
-<p>
-Apache JMeter may be used to test performance both on static and dynamic
- resources (files or CGI, Servlets, Perl scripts, Java Objects). It may well be
used to simulate a heavy
- load on a server, network or object to test its strength or to analyse overall
performance under
- different load types. You can use it to make a graphical analysis of
performance or to
- test your server/script/object behavior under heavy concurrent load.</p>
-<p>
-<a HREF="how_to_use_jmeter.html">Using JMeter</a>
-</p>
-
-<h2>What does it do?</h2>
- <p>Apache JMeter features include:</p>
-<ul>
- <li>Complete portability and <b>100% Java purity</b>.</li>
- <li>Full <b>Swing</b> and lightweight component support (precompiled JAR uses
packages <code>javax.swing.*</code>).</li>
- <li>Pluggable Samplers allow unlimited testing capabilities.</li>
- <li>Full <b>multithreading</b> framework allows concurrent sampling by many
threads and simultaneous sampling of different functions by seperate thread
groups.</li>
- <li>Several load statistics may be choosen with <b>pluggable timers</b>.</li>
- <li>Data analisys and <b>visualisation plugins</b> allow great extendibility as
well as
- personalization.</li>
- <li>Careful <b>GUI</b> design allows faster operation and more precise
timings.</li>
- </ul>
-
- <p>
-Here you find all the information you need to use, understand and enhance Apache
JMeter.
-</p>
- <ul>
- <li><a HREF="license.html">Public license</a></li>
- <li><a href="dist">Download</a></li>
- <li><a HREF="installing.html">Installation</a></li>
- <ul>
- <li><a HREF="installing.html#requirements">System requirements</a></li>
- <li><a HREF="installing.html#installing">Installing Apache JMeter</a></li>
- </ul>
- <li><a HREF="running.html">Running Apache JMeter</a></li>
- <ul>
- <li><a HREF="running.html#scripts">Using system wrappers</a></li>
- <li><a HREF="running.html#command">From the command line</a></li>
- </ul>
- <li><a HREF="how_to_use_jmeter.html">Using JMeter</a></li>
- <li>
- <a HREF="extending.html">Extending/Customizing JMeter for your needs</a>
- </li>
- <li><a HREF="api/index.html">Code documentation (javadoc)</a></li>
- <li><a HREF="changes.html">Changes history</a></li>
- <li><a href="bugs.html">Known bugs</a></li>
- <li><a href="todo.html">Wish and Todo List</a></li>
- <li><a HREF="contributing.html">How to contribute</a></li>
- </ul>
-</section>
-</body>
-</document>
+<?xml version="1.0"?>
+<document>
+ <properties>
+ <author email="[EMAIL PROTECTED]">Brendan Burns, et al.</author>
+ <title>Apache JMeter</title>
+ </properties>
+
+<body>
+<section name="Apache JMeter">
+<p>
+<b>Apache JMeter</b> is a 100% pure Java desktop application designed to load test
functional
+behavior and measure performance. It was originally designed for testing Web
Applications but has
+since expanded to other test functions.
+</p>
+
+
+<h2>What can I do with it?</h2>
+<p>
+Apache JMeter may be used to test performance both on static and dynamic
+ resources (files or CGI, Servlets, Perl scripts, Java Objects). It may well be
used to simulate a heavy
+ load on a server, network or object to test its strength or to analyse
overall performance under
+ different load types. You can use it to make a graphical analysis of
performance or to
+ test your server/script/object behavior under heavy concurrent load.</p>
+<p>
+<a HREF="how_to_use_jmeter.html">Using JMeter</a>
+</p>
+
+<h2>What does it do?</h2>
+ <p>Apache JMeter features include:</p>
+<ul>
+ <li>Complete portability and <b>100% Java purity</b>.</li>
+ <li>Full <b>Swing</b> and lightweight component support (precompiled JAR uses
packages <code>javax.swing.*</code>).</li>
+ <li>Pluggable Samplers allow unlimited testing capabilities.</li>
+ <li>Full <b>multithreading</b> framework allows concurrent sampling by many
threads and simultaneous sampling of different functions by seperate thread
groups.</li>
+ <li>Several load statistics may be choosen with <b>pluggable timers</b>.</li>
+ <li>Data analisys and <b>visualisation plugins</b> allow great extendibility
as well as
+ personalization.</li>
+ <li>Careful <b>GUI</b> design allows faster operation and more precise
timings.</li>
+ </ul>
+
+
+</section>
+</body>
+</document>
1.2 +1 -1 jakarta-jmeter/xdocs/stylesheets/project.xml
Index: project.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/stylesheets/project.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- project.xml 2001/03/12 23:57:42 1.1
+++ project.xml 2001/03/15 13:18:38 1.2
@@ -9,7 +9,7 @@
<body>
<menu name="About">
<item name="Overview" href="/index.html"/>
- <item name="Usage" href="/how_to_use_jmeter.html"/>
+ <item name="Usage" href="/user_manual/index.html"/>
<item name="Download"
href="http://jakarta.apache.org/builds/jakarta-jmeter/"/>
<item name="Install" href="/installing.html"/>
<item name="Running" href="/running.html"/>
1.1 jakarta-jmeter/xdocs/user_manual/index.xml
Index: index.xml
===================================================================
<?xml version="1.0"?>
<document>
<properties>
<author email="[EMAIL PROTECTED]">Michael Stover, brendan Burns, et
al.</author>
<title>Using JMeter</title>
</properties>
<body>
<section name="Using JMeter">
<h2>Using JMeter effectively consists of the following activities</h2>:
<UL>
<li><a href="#overview">Overview</a></li>
<li><a HREF="threadgroups.html">Creating ThreadGroups</a></li>
<li><a HREF="test_samples.html">Creating Test Samples</a></li>
<li><a HREF="#Choosing_a_delay">Creating Flow Logic Controls</a></li>
<li><a HREF="#Managing_Thread_Groups">Using Visualizers</a></li>
<li><a HREF="#Choosing_a_Visualizer">Choosing a Visualizer</a></li>
<li><a HREF="#Running_the_test script">Running the test script</a></li>
<li><a href="saving.html">Saving test script elements</a></li>
</UL>
<p>
<a NAME="overview"></a>
<H2>Overview</H2>
JMeter 1.6 has a new UI layout. The screen is divided into two sections. On the
left is
a tree which represents your test configuration. Trees are good for representing
data that is hierarchical and ordered, and your test data is both. On the right,
or the main window, control panels will be shown allowing you to enter your test
data for
each element in the tree. It is also the window for you to view the data
visualizers.
</p>
<table border="5"><tr><td><b>Most functions in the UI are available from popup menus
that appear when you right-click on the element you wish to
affect</b></td></tr></table>
<p>
The tree begins with two elements - TestPlan and WorkBench. Under the testplan
element
will go all the elements involved with your test. The workbench is simply an area to
store test elements while you work.
</p>
<p>
A testplan consists of one or more ThreadGroups. A ThreadGroup may contain
<b>timers</b>,
<b>listeners</b>, <b>controllers</b>, and <b>config elements</b>. It also defines a
number of threads
to be used for the threadgroup. ThreadGroups cannot be nested.
</p>
<ul>
<li>A <b>timer</b> is a simple element that controls how long JMeter should delay
between each test
sample when it runs. This allows JMeter to simulate human actions more closely.
Timers do not
contain sub-elements in the tree.
</li>
<li>A <b>listener</b> receives information about response data while JMeter runs.
For instance, during testing
of a website, a listener receives and collects sample data that indicates how many
milliseconds it took the web server to respond to each request. Normally, these
listeners
are visualizers (represent the data visually in the main window), or reporters
(store the data
to file). Listeners also do not contain sub-elements in the tree.
</li>
<li>A <b>controller</b> is an element that controls the flow of test samples. It
also controls the process by which
test samples are created. They are the heart of JMeter. Controllers may have other
controllers and/or config elements as
sub-elements in the tree.
</li>
<li>A <b>Config Element</b> represents a coherent set of information that is usually
specifically targeted at a particular
protocol. For instance, setting up a database test requires three config elements -
one to configure the basic
information about the database (what host, what driver, login and password to use),
one to configure the SQL query
to be tested, and one to configure the pool of database connections (how many
connections to store in pool, etc).
Config Elements do not have sub-elements in the tree.
</li>
</ul>
<p>As a user, you create elements in the tree, and start your test when ready. When
you start the test, JMeter
"compiles" your test script (note: this doesn't refer to an executable script, as in
Python or Perl, but to the
data in the hierarchical tree). All elements in the tree are added up - meaning
child objects are added to their
parent objects until a single TestPlan object is created. A JMeterEngine is then
created, and the TestPlan sends
all of its ThreadGroups to the engine. The engine creates threads, and each thread
iterates through the test cases.
</p>
<p>
It's important to understand that all elements in the tree will be applied to all
elements at
that level and below. This is why it makes sense to add a URL Config Element to the
ThreadGroup in addition to a Web Test Controller with multiple test samples. If the
top level config element has only a host name, the host name will be applied to all
URL test samples that are used within the ThreadGroup.
</p>
</section>
</body>
</document>
1.1 jakarta-jmeter/xdocs/user_manual/test_samples.xml
Index: test_samples.xml
===================================================================
<?xml version="1.0"?>
<document>
<properties>
<author email="[EMAIL PROTECTED]">Michael Stover, brendan Burns, et
al.</author>
<title>ThreadGroups</title>
</properties>
<body>
<section name="Test Samples">
<h2>Test Samples describe Test Cases</h2>:
<p>
A test sample element is a controller that controls the creation of test cases.
Although all controllers can technically contain sub-controllers, test sample
controllers
will almost never do so. Their purpose is to describe specific test cases and to
provide the logic necessary to create those test cases.
</p>
<p>
Most test sample controllers will allow users to specify configurations for multiple
test cases by allowing the user to add one or more configuration elements. The Web
Sample controller, for instance, allows users to add many URL config elements, and
each one will generate one executable test case. The order of iteration through
these
sub-elements is the order they appear in the tree. Also, the Web Sample controller
allows one to specify a cookie manage and an authorization manager, as well as a
default
URL config element. These extra elements all act like default values, and will be
applied to all test cases generated by the controller.
</p>
<p>
For convenience, one can
configure just the default URL element and forego adding sub-URL elements to the
controller.
The controller will treat the default as its single test case (this is only true if
NO URL config elements have been added to the controller).
</p>
<p>
Although one can add cookie managers and authorization managers, it's almost always
preferable to add such elements at the ThreadGroup level.
</p>
</section>
</body>
</document>
1.1 jakarta-jmeter/xdocs/user_manual/threadgroups.xml
Index: threadgroups.xml
===================================================================
<?xml version="1.0"?>
<document>
<properties>
<author email="[EMAIL PROTECTED]">Michael Stover, brendan Burns, et
al.</author>
<title>ThreadGroups</title>
</properties>
<body>
<section name="ThreadGroups">
<h2>ThreadGroups hold test scripts</h2>:
<p>A ThreadGroup primarily holds controllers which deliver test cases to be tested.
During test run, a ThreadGroup will iterate through all its controllers and extract
test samples to execute. The order of iteration is determined by the order the
controllers
appear in the tree.
</p>
<p>
Controllers can be nested, so the actual behavior of the iterative process can
be arbitrarily complex.
</p>
<p>
Additionally, ThreadGroups can have timers added to them. The timer will be used to
create a delay between the execution of samples. Although multiple timers can be
added to a ThreadGroup, there isn't much point to doing so. The timers delay values
will simply be summed.
</p>
<p>
Listeners can also be added to ThreadGroups. Listeners collect test data and do
some useful function with the data, such as displaying the data visually (sometimes,
such listeners are called visualizers). Other listeners save the data to file.
Multiple visualizers can be added, allowing one multiple views of the data.
</p>
<p>
Probably the most important concept to understand is the layering of logic that
occurs
when a test script is compiled and run. ThreadGroups can have config elements added
to them. These config elements can be used to generate default settings for any
sample that gets executed.
</p>
<p>
Let's say one creates 10 web samples and configures them all, but leaves the "server"
field blank. One can then add a URL sample element to the ThreadGroup which has only
its server field filled in. When this script runs, all the test samples that get
generated will have this top level config element applied to them, and their server
fields
will get filled in. Note that fields from lower level samples are never overwritten
by
higher level config elements - they're only filled in if not already present.
</p>
<p>
Two very common uses of this is to add a cookie manager to the ThreadGroup - this
ensures that all
samples are run with the same cookies. Otherwise, one would have to use multiple
cookie managers added to each separate controller, and there would be no guarantee
that
the same cookies were being used for all samples (actually, you'd be guaranteed that
the cookies would be different). Another common use is to have a single top level
URL config element that specifies the server. This allows a script to be portable
from one server to another with only a single change.
</p>
</section>
</body>
</document>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]