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/03/08 00:03:13 UTC
cvs commit: jakarta-jmeter/xdocs/stylesheets site.vsl
mstover1 02/03/07 15:03:13
Modified: docs bugs.html changes.html contributing.html
extending.html index.html installing.html
license.html running.html todo.html
docs/extending index.html
docs/user_manual assertions.html ftp_test.html index.html
interleave.html jdbc_test.html
logical_controllers.html loop_controller.html
modification_manager.html once_only.html
proxy_server.html ready_components.html rmi.html
running.html saving.html sslmanager.html
test_samples.html threadgroups.html timers.html
visualizers.html web_test.html
docs/usermanual best-practices.html boss.html
build-adv-web-test-plan.html
build-db-test-plan.html build-ftp-test-plan.html
build-jndi-test-plan.html build-test-plan.html
build-web-test-plan.html component_reference.html
get-started.html glossary.html index.html
intro.html remote-test.html test_plan.html
src/org/apache/jmeter/gui/action Remove.java
src/org/apache/jmeter/gui/tree JMeterTreeListener.java
src/org/apache/jmeter/resources messages.properties
src/org/apache/jmeter/util JMeterUtils.java
src/org/apache/jmeter/visualizers GraphAccum.java
xdocs changes.xml
xdocs/extending index.xml
xdocs/stylesheets site.vsl
Added: docs/extending JMeter Extension Scenario.html
xdocs/extending JMeter Extension Scenario.xml
Log:
Minor GUI enhancements
Documentation updates
Revision Changes Path
1.21 +1 -1 jakarta-jmeter/docs/bugs.html
Index: bugs.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/bugs.html,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- bugs.html 6 Mar 2002 01:24:58 -0000 1.20
+++ bugs.html 7 Mar 2002 23:03:10 -0000 1.21
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Known Bugs</strong></a>
1.39 +205 -367 jakarta-jmeter/docs/changes.html
Index: changes.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/changes.html,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- changes.html 6 Mar 2002 01:24:58 -0000 1.38
+++ changes.html 7 Mar 2002 23:03:10 -0000 1.39
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>History of Changes</strong></a>
@@ -76,18 +76,11 @@
<tr><td>
<blockquote>
<p >
-
-
-
<b >
- Changes are chronologically ordered from top (most recent) to bottom
-
+ Changes are chronologically ordered from top (most recent) to bottom
(least recent)
</b>
-
-
-
- </p>
+ </p>
<b >
Changes:
</b>
@@ -95,219 +88,187 @@
Version 1.7Beta
</h3>
<ul >
-
-
-
+
+
<li >
Better XML support for special characters (Tushar Bhatia)
</li>
-
-
-
+
+
<li >
Non-GUI functioning & Non-GUI test plan execution (Tushar Bhatia)
</li>
-
-
-
+
+
<li >
Removing Swing dependence from base JMeter classes
</li>
-
-
-
+
+
<li >
Internationalization (Takashi Okamoto)
</li>
-
-
-
+
+
<li >
AllTests bug fix (neth6@atozasia.com)
</li>
-
-
-
+
+
<li >
ClassFinder bug fix (neth6@atozasia.com)
</li>
-
-
-
+
+
<li >
New Loop Controller
</li>
-
-
-
+
+
<li >
- Proxy Server records HTTP samples from browser (and documented in the user manual)
+ Proxy Server records HTTP samples from browser
+ (and documented in the user manual)
</li>
-
-
-
+
<li >
Multipart Form support
</li>
-
-
-
+
+
<li >
HTTP Header class for Header customization
</li>
-
-
-
+
+
<li >
Extracting HTTP Header information from responses (Jamie Davidson)
</li>
-
-
-
+
+
<li >
Mailer Visualizer re-added to JMeter
</li>
-
-
-
+
+
<li >
JMeter now url encodes parameter names and values
</li>
-
-
-
+
+
<li >
listeners no longer give exceptions if their gui's haven't been initialized
</li>
-
-
-
+
+
<li >
HTTPS and Authorization working together
</li>
-
-
-
+
+
<li >
- New Http sampling that automatically parses HTML response for images to download, and includes the downloading of
-
-these images in total time for request (Neth neth6@atozasia.com)
+ New Http sampling that automatically parses HTML response
+ for images to download, and includes the downloading of these
+ images in total time for request (Neth neth6@atozasia.com)
</li>
-
-
-
+
+
<li >
- HTTP responses from server can be parsed for links and forms, and dynamic data can be extracted and added to test
-
-samples at run-time (documented)
+ HTTP responses from server can be parsed for links and forms,
+ and dynamic data can be extracted and added to test samples
+ at run-time (documented)
</li>
-
-
-
+
+
<li >
New Ramp-up feature (Jonathan O'Keefe)
</li>
-
-
-
+
+
<li >
New visualizers (Neth)
</li>
-
-
-
+
+
<li >
New Assertions for functional testing
</li>
-
-
+
</ul>
<h3 >
Version 1.6.1
</h3>
<ul >
-
-
-
+
+
<li >
Fixed saving and loading of test scripts (no more extra lines)
</li>
-
-
-
+
+
<li >
Can save and load special characters (such as "&" and "<").
</li>
-
-
-
+
+
<li >
Can save and load timers and listeners.
</li>
-
-
-
+
+
<li >
- Minor bug fix for cookies (if you cookie value contained an "=", then it broke).
+ Minor bug fix for cookies (if you cookie value
+ contained an "=", then it broke).
</li>
-
-
-
+
+
<li >
- URL's can sample ports other than 80, and can test HTTPS, provided you have the necessary jars (JSSE)
+ URL's can sample ports other than 80, and can test HTTPS,
+ provided you have the necessary jars (JSSE)
</li>
-
-
+
</ul>
<h3 >
Version 1.6 Alpha
</h3>
<ul >
-
-
-
+
+
<li >
New UI
</li>
-
-
-
+
+
<li >
Separation of GUI and Logic code
</li>
-
-
-
+
+
<li >
New Plug-in framework for new modules
</li>
-
-
-
+
+
<li >
Enhanced performance
</li>
-
-
-
+
+
<li >
Layering of test logic for greater flexibility
</li>
-
-
-
+
+
<li >
Added support for saving of test elements
</li>
-
-
-
+
+
<li >
Added support for distributed testing using a single client
</li>
-
+
</ul>
@@ -315,302 +276,240 @@
Version 1.5.1
</h3>
<ul >
-
-
-
+
+
<li >
Fixed bug that caused cookies not to be read if header name case not as expected.
</li>
-
-
-
+
+
<li >
- Clone entries before sending to sampler - prevents relocations from messing up information across threads
+ Clone entries before sending to sampler - prevents relocations from messing up
+ information across threads
</li>
-
-
-
+
+
<li >
- Minor bug fix to convenience dialog for adding paramters to test sample. Bug prevented entries in dialog from appearing in test sample.
+ Minor bug fix to convenience dialog for adding paramters to test sample.
+ Bug prevented entries in dialog from appearing in test sample.
</li>
-
-
-
+
+
<li >
Added xerces.jar to distribution
</li>
-
-
-
+
+
<li >
Added junit.jar to distribution and created a few tests.
</li>
-
-
-
+
+
<li >
Started work on new framework. New files in cvs, but do not effect program yet.
</li>
-
-
-
+
+
<li >
Fixed bug that prevent HTTPJMeterThread from delaying according to chosen timer.
</li>
-
-
+
</ul>
<p >
-
-
+
<h3 >
Version 1.5
</h3>
-
-
+
<ul >
-
-
-
+
+
<li >
- Abstracted out the concept of the Sampler, SamplerController, and TestSample.
-
- A Sampler represents code that understands a protocol (such as HTTP, or FTP, RMI,
-
- SMTP, etc..). It is the code that actually makes the connection to whatever is
-
- being tested.
-
- A SamplerController represents code that understands how to organize and run a group
-
- of test samples. It is what binds together a Sampler and it's test samples and runs them.
-
- A TestSample represents code that understands how to gather information from the
-
- user about a particular test. For a website, it would represent a URL and any
-
- information to be sent with the URL.
+ Abstracted out the concept of the Sampler, SamplerController, and TestSample.
+ A Sampler represents code that understands a protocol (such as HTTP,
+ or FTP, RMI, SMTP, etc..). It is the code that actually makes the
+ connection to whatever is being tested. A SamplerController
+ represents code that understands how to organize and run a group
+ of test samples. It is what binds together a Sampler and it's test
+ samples and runs them. A TestSample represents code that understands
+ how to gather information from the user about a particular test.
+ For a website, it would represent a URL and any information to be sent
+ with the URL.
</li>
-
-
-
+
+
<li >
The UI has been updated to make entering test samples more convenient.
</li>
-
-
-
+
+
<li >
- Thread groups have been added, allowing a user to setup multiple test to run
-
- concurrently, and to allow sharing of test samples between those tests.
+ Thread groups have been added, allowing a user to setup multiple test to run
+ concurrently, and to allow sharing of test samples between those tests.
</li>
-
-
-
+
+
<li >
It is now possible to save and load test samples.
</li>
-
-
-
+
+
<li >
....and many more minor changes/improvements...
</li>
-
-
+
</ul>
-
-
+
</p>
<p >
-
-
+
<b >
Apache JMeter 1.4.1-dev
</b>
-
-
-(
+ (
<a href="mailto:stefano@apache.org">
Stefano Mazzocchi
</a>
- )
-
-
-
+ )
<ul >
-
-
+
<li >
Cleaned up URLSampler code after tons of patches for better readability. (SM)
</li>
-
-
+
<li >
Made JMeter send a special "user-agent" identifier. (SM)
</li>
-
-
+
<li >
Fixed problems with redirection not sending cookies and authentication info and removed
-
- a warning with jikes compilation. Thanks to
+ a warning with jikes compilation. Thanks to
<a href="mailto:wtanaka@yahoo.com">
Wesley
-
- Tanaka
+ Tanaka
</a>
for the patches (SM)
</li>
-
-
+
<li >
Fixed a bug in the URLSampler that caused to skip one URL when testing lists of URLs and
-
- a problem with Cookie handling. Thanks to
+ a problem with Cookie handling. Thanks to
<a href="mailto:gjohnson@investlearning.com">
Graham Johnson
</a>
for the patches (SM)
</li>
-
-
+
<li >
Fixed a problem with POST actions. Thanks to
<a href="mailto:sschaub@bju.edu">
Stephen
-
- Schaub
+ Schaub
</a>
for the patch (SM)
</li>
-
-
+
</ul>
-
-
+
</p>
<p >
-
-
+
<b >
Apache JMeter 1.4
</b>
- - Jul 11 1999
-
-(
+ - Jul 11 1999 (
<a href="mailto:cimjpno@be.ibm.com">
Jean-Pierre Norguet
</a>
- ,
+ ,
+
<a href="mailto:stefano@apache.org">
Stefano Mazzocchi
</a>
)
-
-
-
-
+
<ul >
-
-
+
<li >
Fixed a problem with POST actions. Thanks to
<a href="mailto:bburns@labs.gte.com">
Brendan
-
- Burns
+ Burns
</a>
for the patch (SM)
</li>
-
-
+
<li >
Added close button to the About box for those window managers who don't provide it.
-
- Thanks to Jan-Henrik Haukeland for pointing it out. (SM)
+ Thanks to Jan-Henrik Haukeland for pointing it out. (SM)
</li>
-
-
+
<li >
Added the simple Spline sample visualizer (JPN)
</li>
-
-
+
</ul>
-
-
-
+
</p>
<p >
<b >
Apache JMeter 1.3
</b>
- - Apr 16 1999
-
-(
+ - Apr 16 1999
+ (
<a href="mailto:stefano@apache.org">
Stefano Mazzocchi
</a>
- ,
+ ,
+
<a href="mailto:luta.raphael@networks.vivendi.net">
Rapha?Luta
</a>
)
-
-
-
<ul >
-
-
+
<li >
Run the Garbage Collector and run finalization before starting to sampling to ensure
-
- same state every time (SM)
+ same state every time (SM)
</li>
-
-
+
<li >
Fixed some NullPointerExceptions here and there (SM)
</li>
-
-
+
<li >
Added HTTP authentication capabilities (RL)
</li>
-
-
+
<li >
Added windowed sample visualizer (SM)
</li>
-
-
+
<li >
Fixed stupid bug for command line arguments. Thanks to
<a href="mailto:jbracer@infoneers.com">
@@ -618,224 +517,163 @@
</a>
for pointing this out (SM)
</li>
-
-
+
</ul>
-
-
-
+
</p>
<p >
<b >
Apache JMeter 1.2
</b>
- - Mar 17 1999
-
-(
+ - Mar 17 1999 (
<a href="mailto:sdowd@arcmail.com">
Sean Dowd
</a>
,
- <a href="mailto:stefano@apache.org">
- Stefano
-Mazzocchi
+ <a href="mailto:stefano@apache.org">
+ Stefano Mazzocchi
</a>
- )
-
-
-
+ )
<ul >
-
-
+
<li >
Integrated cookie capabilities with JMeter (SM)
</li>
-
-
+
<li >
Added the Cookie manager and Netscape file parser (SD)
</li>
-
-
+
<li >
Fixed compilation error for JDK 1.1 (SD)
</li>
-
-
-
+
</ul>
-
-
-
+
</p>
<p >
-
-
-
+
<b >
Apache JMeter 1.1
</b>
- - Feb 24 1999
-
-(
+ - Feb 24 1999 (
<a href="mailto:sdowd@arcmail.com">
Sean Dowd
</a>
,
- <a href="mailto:stefano@apache.org">
- Stefano
-Mazzocchi
+ <a href="mailto:stefano@apache.org">
+ Stefano Mazzocchi
</a>
- )
-
-
-
+ )
<ul >
-
-
+
<li >
Created the opportunity to create URL aliasing from the properties file as well as the
-
- ability to associate aliases to URL sequences instead of single URLs (SM) Thanks to
+ ability to associate aliases to URL sequences instead of single URLs (SM) Thanks to
<a href="mailto:chatfield@evergreen.com">
Simon Chatfield
</a>
for the very nice suggestions
-
- and code examples.
+ and code examples.
</li>
-
-
+
<li >
Removed the TextVisualizer and replaced it with the much more useful FileVisualizer (SM)
</li>
-
-
+
<li >
Added the known bug list (SM)
</li>
-
-
+
<li >
Removed the Java Apache logo (SM)
</li>
-
-
+
<li >
Fixed a couple of typos (SM)
</li>
-
-
+
<li >
Added UNIX makefile (SD)
</li>
-
-
-
+
</ul>
-
-
-
+
</p>
<p >
-
-
-
+
<b >
Apache JMeter 1.0.1
</b>
- - Jan 25 1999
-
-(
+ - Jan 25 1999 (
<a href="mailto:stefano@apache.org">
Stefano Mazzocchi
</a>
- )
-
-
-
+ )
<ul >
-
-
+
<li >
Removed pending issues doc issues (SM)
</li>
-
-
+
<li >
Fixed the unix script (SM)
</li>
-
-
+
<li >
Added the possibility of running the JAR directly using "java -jar
-
- ApacheJMeter.jar" with Java 2 (SM)
+ ApacheJMeter.jar" with Java 2 (SM)
</li>
-
-
+
<li >
Some small updates: fixed Swing location after Java 2(tm) release, license update and
-
- small cleanups (SM)
+ small cleanups (SM)
</li>
-
-
+
</ul>
-
-
-
+
</p>
<p >
-
-
-
+
<b >
Apache JMeter 1.0
</b>
- - Dec 15 1998
-
-(
+ - Dec 15 1998 (
<a href="mailto:stefano@apache.org">
Stefano Mazzocchi
</a>
- )
-
+ )
<ul >
-
-
+
<li >
Initial version. (SM)
</li>
-
-
+
</ul>
-
-
-
+
</p>
</blockquote>
</p>
1.22 +1 -1 jakarta-jmeter/docs/contributing.html
Index: contributing.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/contributing.html,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- contributing.html 6 Mar 2002 01:24:58 -0000 1.21
+++ contributing.html 7 Mar 2002 23:03:10 -0000 1.22
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Contributing To The Jakarta Project</strong></a>
1.22 +1 -1 jakarta-jmeter/docs/extending.html
Index: extending.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/extending.html,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- extending.html 6 Mar 2002 01:24:58 -0000 1.21
+++ extending.html 7 Mar 2002 23:03:10 -0000 1.22
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Extending JMeter</strong></a>
1.34 +1 -1 jakarta-jmeter/docs/index.html
Index: index.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/index.html,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- index.html 6 Mar 2002 01:24:58 -0000 1.33
+++ index.html 7 Mar 2002 23:03:10 -0000 1.34
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Apache JMeter</strong></a>
1.27 +2 -2 jakarta-jmeter/docs/installing.html
Index: installing.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/installing.html,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- installing.html 6 Mar 2002 01:24:58 -0000 1.26
+++ installing.html 7 Mar 2002 23:03:10 -0000 1.27
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>requirements</strong></a>
@@ -197,7 +197,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Installing Apache JMeter</strong></a>
1.15 +1 -1 jakarta-jmeter/docs/license.html
Index: license.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/license.html,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- license.html 6 Mar 2002 01:24:58 -0000 1.14
+++ license.html 7 Mar 2002 23:03:10 -0000 1.15
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Apache License</strong></a>
1.35 +2 -2 jakarta-jmeter/docs/running.html
Index: running.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/running.html,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- running.html 7 Mar 2002 14:19:09 -0000 1.34
+++ running.html 7 Mar 2002 23:03:10 -0000 1.35
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Running Apache JMeter</strong></a>
@@ -174,7 +174,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Modifying Properties</strong></a>
@@ -243,7 +243,7 @@
<br >
</br>
-$Id: running.html,v 1.34 2002/03/07 14:19:09 mstover1 Exp $
+$Id: running.html,v 1.35 2002/03/07 23:03:10 mstover1 Exp $
</font>
<br >
1.23 +1 -1 jakarta-jmeter/docs/todo.html
Index: todo.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/todo.html,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- todo.html 6 Mar 2002 01:24:58 -0000 1.22
+++ todo.html 7 Mar 2002 23:03:10 -0000 1.23
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>ToDo List</strong></a>
1.15 +11 -1 jakarta-jmeter/docs/extending/index.html
Index: index.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/extending/index.html,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- index.html 6 Mar 2002 01:24:59 -0000 1.14
+++ index.html 7 Mar 2002 23:03:11 -0000 1.15
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Extending JMeter</strong></a>
@@ -87,7 +87,17 @@
</p>
<ul >
+
+ <li >
+ <a href="JMeter Extension Scenario.html">
+ A good overview of the process of extending JMeter
+ </a>
+ </li>
+
+ <p >
+ </p>
+
<li >
<a href="#timer">
No revision
No revision
No revision
1.7 +3 -3 jakarta-jmeter/docs/user_manual/assertions.html
Index: assertions.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/assertions.html,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- assertions.html 6 Mar 2002 01:24:59 -0000 1.6
+++ assertions.html 7 Mar 2002 23:03:11 -0000 1.7
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Assertions</strong></a>
@@ -105,7 +105,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Assertion Listener</strong></a>
@@ -126,7 +126,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Example test tree</strong></a>
1.10 +2 -2 jakarta-jmeter/docs/user_manual/ftp_test.html
Index: ftp_test.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/ftp_test.html,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ftp_test.html 6 Mar 2002 01:24:59 -0000 1.9
+++ ftp_test.html 7 Mar 2002 23:03:11 -0000 1.10
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>FTP Test Controller</strong></a>
@@ -128,7 +128,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Example test tree</strong></a>
1.16 +1 -1 jakarta-jmeter/docs/user_manual/index.html
Index: index.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/index.html,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- index.html 6 Mar 2002 01:24:59 -0000 1.15
+++ index.html 7 Mar 2002 23:03:11 -0000 1.16
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Overview</strong></a>
1.12 +2 -2 jakarta-jmeter/docs/user_manual/interleave.html
Index: interleave.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/interleave.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- interleave.html 6 Mar 2002 01:24:59 -0000 1.11
+++ interleave.html 7 Mar 2002 23:03:11 -0000 1.12
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Interleave Controller</strong></a>
@@ -110,7 +110,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Example test tree</strong></a>
1.10 +2 -2 jakarta-jmeter/docs/user_manual/jdbc_test.html
Index: jdbc_test.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/jdbc_test.html,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- jdbc_test.html 6 Mar 2002 01:24:59 -0000 1.9
+++ jdbc_test.html 7 Mar 2002 23:03:11 -0000 1.10
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>JDBC Test Controller</strong></a>
@@ -170,7 +170,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Example test tree</strong></a>
1.12 +1 -1 jakarta-jmeter/docs/user_manual/logical_controllers.html
Index: logical_controllers.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/logical_controllers.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- logical_controllers.html 6 Mar 2002 01:24:59 -0000 1.11
+++ logical_controllers.html 7 Mar 2002 23:03:11 -0000 1.12
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Logical Controllers</strong></a>
1.12 +2 -2 jakarta-jmeter/docs/user_manual/loop_controller.html
Index: loop_controller.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/loop_controller.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- loop_controller.html 6 Mar 2002 01:24:59 -0000 1.11
+++ loop_controller.html 7 Mar 2002 23:03:11 -0000 1.12
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Loop Controller</strong></a>
@@ -93,7 +93,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Example test tree</strong></a>
1.12 +3 -3 jakarta-jmeter/docs/user_manual/modification_manager.html
Index: modification_manager.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/modification_manager.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- modification_manager.html 6 Mar 2002 01:24:59 -0000 1.11
+++ modification_manager.html 7 Mar 2002 23:03:11 -0000 1.12
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Modification Manager</strong></a>
@@ -100,7 +100,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Response Based Modifier: HTML Link/Form Modifier</strong></a>
@@ -199,7 +199,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Example test tree</strong></a>
1.12 +2 -2 jakarta-jmeter/docs/user_manual/once_only.html
Index: once_only.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/once_only.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- once_only.html 6 Mar 2002 01:24:59 -0000 1.11
+++ once_only.html 7 Mar 2002 23:03:11 -0000 1.12
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Once-Only Controller</strong></a>
@@ -99,7 +99,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Example test tree</strong></a>
1.14 +5 -5 jakarta-jmeter/docs/user_manual/proxy_server.html
Index: proxy_server.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/proxy_server.html,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- proxy_server.html 6 Mar 2002 01:24:59 -0000 1.13
+++ proxy_server.html 7 Mar 2002 23:03:11 -0000 1.14
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>HTTP Proxy Server to record browser requests</strong></a>
@@ -98,7 +98,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Configuring the Proxy Server</strong></a>
@@ -184,7 +184,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Where do the samples get recorded to?</strong></a>
@@ -217,7 +217,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>All Done</strong></a>
@@ -239,7 +239,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Example test tree</strong></a>
1.11 +1 -1 jakarta-jmeter/docs/user_manual/ready_components.html
Index: ready_components.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/ready_components.html,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- ready_components.html 6 Mar 2002 01:24:59 -0000 1.10
+++ ready_components.html 7 Mar 2002 23:03:11 -0000 1.11
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Built-in Components</strong></a>
1.13 +3 -3 jakarta-jmeter/docs/user_manual/rmi.html
Index: rmi.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/rmi.html,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- rmi.html 6 Mar 2002 01:24:59 -0000 1.12
+++ rmi.html 7 Mar 2002 23:03:11 -0000 1.13
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>JMeter over RMI</strong></a>
@@ -127,7 +127,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Running the JMeter engine on the server</strong></a>
@@ -177,7 +177,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Running the JMeter client</strong></a>
1.12 +1 -1 jakarta-jmeter/docs/user_manual/running.html
Index: running.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/running.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- running.html 6 Mar 2002 01:24:59 -0000 1.11
+++ running.html 7 Mar 2002 23:03:11 -0000 1.12
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Running a TestPlan</strong></a>
1.12 +1 -1 jakarta-jmeter/docs/user_manual/saving.html
Index: saving.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/saving.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- saving.html 6 Mar 2002 01:24:59 -0000 1.11
+++ saving.html 7 Mar 2002 23:03:11 -0000 1.12
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Saving Test Elements</strong></a>
1.8 +3 -3 jakarta-jmeter/docs/user_manual/sslmanager.html
Index: sslmanager.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/sslmanager.html,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- sslmanager.html 6 Mar 2002 01:24:59 -0000 1.7
+++ sslmanager.html 7 Mar 2002 23:03:11 -0000 1.8
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>What is the SSL Manager</strong></a>
@@ -90,7 +90,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Choosing a Client Certificate</strong></a>
@@ -137,7 +137,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Things to Look Out For</strong></a>
1.12 +2 -2 jakarta-jmeter/docs/user_manual/test_samples.html
Index: test_samples.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/test_samples.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- test_samples.html 6 Mar 2002 01:24:59 -0000 1.11
+++ test_samples.html 7 Mar 2002 23:03:11 -0000 1.12
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Generative Controllers</strong></a>
@@ -97,7 +97,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Currently supported protocols</strong></a>
1.13 +3 -3 jakarta-jmeter/docs/user_manual/threadgroups.html
Index: threadgroups.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/threadgroups.html,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- threadgroups.html 6 Mar 2002 01:24:59 -0000 1.12
+++ threadgroups.html 7 Mar 2002 23:03:11 -0000 1.13
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>ThreadGroups</strong></a>
@@ -109,7 +109,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Logic Layering</strong></a>
@@ -185,7 +185,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Ramp-Up</strong></a>
1.12 +1 -1 jakarta-jmeter/docs/user_manual/timers.html
Index: timers.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/timers.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- timers.html 6 Mar 2002 01:24:59 -0000 1.11
+++ timers.html 7 Mar 2002 23:03:11 -0000 1.12
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Timers</strong></a>
1.12 +5 -5 jakarta-jmeter/docs/user_manual/visualizers.html
Index: visualizers.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/visualizers.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- visualizers.html 6 Mar 2002 01:24:59 -0000 1.11
+++ visualizers.html 7 Mar 2002 23:03:11 -0000 1.12
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Visualizers</strong></a>
@@ -88,7 +88,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Graphing Visualizer</strong></a>
@@ -109,7 +109,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>View Results Visualizer</strong></a>
@@ -133,7 +133,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>File Reporter</strong></a>
@@ -158,7 +158,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Spline Visualizer</strong></a>
1.10 +2 -2 jakarta-jmeter/docs/user_manual/web_test.html
Index: web_test.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/web_test.html,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- web_test.html 6 Mar 2002 01:24:59 -0000 1.9
+++ web_test.html 7 Mar 2002 23:03:11 -0000 1.10
@@ -67,7 +67,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Web Test Controller</strong></a>
@@ -183,7 +183,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>Example Web Test</strong></a>
1.12 +5 -5 jakarta-jmeter/docs/usermanual/best-practices.html
Index: best-practices.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/best-practices.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- best-practices.html 7 Mar 2002 14:19:09 -0000 1.11
+++ best-practices.html 7 Mar 2002 23:03:12 -0000 1.12
@@ -65,7 +65,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="best_practices"><strong>11. Best Practices</strong></a>
@@ -78,7 +78,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="limit_threads"><strong>11.1 Limit the Number of Threads</strong></a>
@@ -104,7 +104,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="put_cookie_manager"><strong>11.2 Where to Put the Cookie Manager</strong></a>
@@ -125,7 +125,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="put_auth_manager"><strong>11.3 Where to Put the Authorization Manager</strong></a>
@@ -146,7 +146,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="proxy_server"><strong>11.4 Using the Proxy Server</strong></a>
1.11 +1 -1 jakarta-jmeter/docs/usermanual/boss.html
Index: boss.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/boss.html,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- boss.html 6 Mar 2002 03:52:15 -0000 1.10
+++ boss.html 7 Mar 2002 23:03:12 -0000 1.11
@@ -65,7 +65,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="boss"><strong>12. Help! My boss wants me to load test our web app!</strong></a>
1.11 +3 -3 jakarta-jmeter/docs/usermanual/build-adv-web-test-plan.html
Index: build-adv-web-test-plan.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/build-adv-web-test-plan.html,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- build-adv-web-test-plan.html 6 Mar 2002 03:52:15 -0000 1.10
+++ build-adv-web-test-plan.html 7 Mar 2002 23:03:12 -0000 1.11
@@ -65,7 +65,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="building"><strong>6. Building an Advanced Web Test Plan</strong></a>
@@ -111,7 +111,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="session_url_rewriting"><strong>6.1 Handling User Sessions With URL Rewriting</strong></a>
@@ -196,7 +196,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="header_manager"><strong>6.2 Using a Header Manager</strong></a>
1.10 +1 -1 jakarta-jmeter/docs/usermanual/build-db-test-plan.html
Index: build-db-test-plan.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/build-db-test-plan.html,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- build-db-test-plan.html 6 Mar 2002 03:52:15 -0000 1.9
+++ build-db-test-plan.html 7 Mar 2002 23:03:12 -0000 1.10
@@ -65,7 +65,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>7. Building a Database Test Plan</strong></a>
1.10 +1 -1 jakarta-jmeter/docs/usermanual/build-ftp-test-plan.html
Index: build-ftp-test-plan.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/build-ftp-test-plan.html,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- build-ftp-test-plan.html 6 Mar 2002 03:52:15 -0000 1.9
+++ build-ftp-test-plan.html 7 Mar 2002 23:03:12 -0000 1.10
@@ -65,7 +65,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>8. Building a FTP Test Plan</strong></a>
1.7 +1 -1 jakarta-jmeter/docs/usermanual/build-jndi-test-plan.html
Index: build-jndi-test-plan.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/build-jndi-test-plan.html,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- build-jndi-test-plan.html 6 Mar 2002 03:52:15 -0000 1.6
+++ build-jndi-test-plan.html 7 Mar 2002 23:03:12 -0000 1.7
@@ -65,7 +65,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="building"><strong>8. Building a JNDI Test Plan</strong></a>
1.10 +5 -5 jakarta-jmeter/docs/usermanual/build-test-plan.html
Index: build-test-plan.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/build-test-plan.html,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- build-test-plan.html 6 Mar 2002 03:52:15 -0000 1.9
+++ build-test-plan.html 7 Mar 2002 23:03:12 -0000 1.10
@@ -65,7 +65,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>3. Building a Test Plan</strong></a>
@@ -79,7 +79,7 @@
controllers, listeners, timers, assertions, and configuration elements.
</p>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="add_remove"><strong>3.1 Adding and Removing Elements</strong></a>
@@ -107,7 +107,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="load_save"><strong>3.2 Loading and Saving Elements</strong></a>
@@ -129,7 +129,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="config_element"><strong>3.3 Configuring Tree Elements</strong></a>
@@ -146,7 +146,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="run"><strong>3.4 Running a Test Plan</strong></a>
1.15 +8 -8 jakarta-jmeter/docs/usermanual/build-web-test-plan.html
Index: build-web-test-plan.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/build-web-test-plan.html,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- build-web-test-plan.html 6 Mar 2002 03:52:15 -0000 1.14
+++ build-web-test-plan.html 7 Mar 2002 23:03:12 -0000 1.15
@@ -65,7 +65,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="building"><strong>5. Building a Web Test Plan</strong></a>
@@ -112,7 +112,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="adding_users"><strong>5.1 Adding Users</strong></a>
@@ -197,7 +197,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="adding_defaults"><strong>5.2 Adding Default HTTP Request Properties</strong></a>
@@ -253,7 +253,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="adding_cookie_support"><strong>5.3 Adding Cookie Support</strong></a>
@@ -293,7 +293,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="adding_requests"><strong>5.4 Adding HTTP Requests</strong></a>
@@ -372,7 +372,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="adding_file_reporter"><strong>5.5 Adding a File Reporter to Store the Test Results</strong></a>
@@ -403,7 +403,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="saving"><strong>5.6 Saving the Test Plan</strong></a>
@@ -434,7 +434,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="running"><strong>5.7 Running the Test Plan</strong></a>
1.9 +7 -7 jakarta-jmeter/docs/usermanual/component_reference.html
Index: component_reference.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/component_reference.html,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- component_reference.html 6 Mar 2002 03:52:15 -0000 1.8
+++ component_reference.html 7 Mar 2002 23:03:12 -0000 1.9
@@ -122,7 +122,7 @@
<li><a href="#Data_Analyzer">Data Analyzer</a></li>
</ul>
</ul>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="generative_controllers"><strong>13.1 Generative Controllers</strong></a>
@@ -661,7 +661,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="logic_controllers"><strong>13.2 Logic Controllers</strong></a>
@@ -1116,7 +1116,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="listeners"><strong>13.3 Listeners</strong></a>
@@ -1373,7 +1373,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="config_elements"><strong>13.4 Configuration Elements</strong></a>
@@ -2227,7 +2227,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="assertions"><strong>13.5 Assertions</strong></a>
@@ -2329,7 +2329,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="timers"><strong>13.6 Timers</strong></a>
@@ -2483,7 +2483,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="Miscellaneous_Features"><strong>13.7 Miscellaneous Features</strong></a>
1.12 +18 -18 jakarta-jmeter/docs/usermanual/get-started.html
Index: get-started.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/get-started.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- get-started.html 6 Mar 2002 03:52:15 -0000 1.11
+++ get-started.html 7 Mar 2002 23:03:12 -0000 1.12
@@ -65,7 +65,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="get_started"><strong>2. Getting Started</strong></a>
@@ -125,7 +125,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="requirements"><strong>2.1 Requirements</strong></a>
@@ -136,7 +136,7 @@
<p >
JMeter requires your computing environment meets some minimum requirements.
</p>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="java_ver"><strong>2.1.1 Java Version</strong></a>
@@ -153,7 +153,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="os"><strong>2.1.2 Operating Systems</strong></a>
@@ -175,7 +175,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="optional"><strong>2.2 Optional</strong></a>
@@ -186,7 +186,7 @@
<p >
If you plan on doing JMeter development or want to use Sun's Java Standard Extension packages, then you will need one or more optional packages listed below.
</p>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="opt_compiler"><strong>2.2.1 Java Compiler</strong></a>
@@ -201,7 +201,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="opt_sax"><strong>2.2.2 SAX XML Parser</strong></a>
@@ -231,7 +231,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="opt_email"><strong>2.2.3 Email Support</strong></a>
@@ -251,7 +251,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="opt_ssl"><strong>2.2.4 SSL Encryption</strong></a>
@@ -284,7 +284,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="opt_jdbc"><strong>2.2.5 JDBC Driver</strong></a>
@@ -308,7 +308,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="install"><strong>2.3 Installation</strong></a>
@@ -320,7 +320,7 @@
Installing JMeter is a snap. Specifics depend on which release file you
downloaded.
</p>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="download_release"><strong>2.3.1 Downloading the Latest Release</strong></a>
@@ -344,7 +344,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="download_nightly"><strong>2.3.2 Downloading Nightly Builds</strong></a>
@@ -374,7 +374,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="running"><strong>2.4 Running JMeter</strong></a>
@@ -391,7 +391,7 @@
you will need to rewrite the jmeter.bat/jmeter file to explicitly include all
JAR files that are located in JMeter's "lib" directory in the JMeter classpath.
</p>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="classpath"><strong>2.4.1 JMeter's Classpath</strong></a>
@@ -408,7 +408,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="proxy_server"><strong>2.4.2 Using a Proxy Server</strong></a>
@@ -438,7 +438,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="non_gui"><strong>2.4.3 Non-GUI Mode</strong></a>
@@ -478,7 +478,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="configuring_jmeter"><strong>2.5 Configuring JMeter</strong></a>
1.10 +1 -1 jakarta-jmeter/docs/usermanual/glossary.html
Index: glossary.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/glossary.html,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- glossary.html 6 Mar 2002 01:25:00 -0000 1.9
+++ glossary.html 7 Mar 2002 23:03:12 -0000 1.10
@@ -65,7 +65,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="glossary"><strong>14. Glossary</strong></a>
1.18 +1 -1 jakarta-jmeter/docs/usermanual/index.html
Index: index.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/index.html,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- index.html 6 Mar 2002 03:52:15 -0000 1.17
+++ index.html 7 Mar 2002 23:03:12 -0000 1.18
@@ -65,7 +65,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>User's Manual</strong></a>
1.11 +3 -3 jakarta-jmeter/docs/usermanual/intro.html
Index: intro.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/intro.html,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- intro.html 6 Mar 2002 01:25:00 -0000 1.10
+++ intro.html 7 Mar 2002 23:03:12 -0000 1.11
@@ -65,7 +65,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="intro"><strong>1. Introduction</strong></a>
@@ -111,7 +111,7 @@
results you expect. For maximum flexibility, JMeter lets you create these assertions using
regular expressions.
</p>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="history"><strong>1.1 History</strong></a>
@@ -130,7 +130,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="future"><strong>1.2 The Future</strong></a>
1.11 +1 -1 jakarta-jmeter/docs/usermanual/remote-test.html
Index: remote-test.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/remote-test.html,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- remote-test.html 6 Mar 2002 01:25:00 -0000 1.10
+++ remote-test.html 7 Mar 2002 23:03:12 -0000 1.11
@@ -65,7 +65,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>10. Remote Testing</strong></a>
1.6 +9 -9 jakarta-jmeter/docs/usermanual/test_plan.html
Index: test_plan.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/test_plan.html,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- test_plan.html 6 Mar 2002 03:52:15 -0000 1.5
+++ test_plan.html 7 Mar 2002 23:03:12 -0000 1.6
@@ -65,7 +65,7 @@
</ul>
</td>
<td width="80%" align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name=""><strong>4.0 Elements of a Test Plan</strong></a>
@@ -73,7 +73,7 @@
</td></tr>
<tr><td>
<blockquote>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="thread_group"><strong>4.1 ThreadGroup</strong></a>
@@ -126,7 +126,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="controllers"><strong>4.2 Controllers</strong></a>
@@ -165,7 +165,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="gen_controller"><strong>4.2.1 Generative Controllers</strong></a>
@@ -211,7 +211,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="logic_controller"><strong>4.2.2 Logic Controllers</strong></a>
@@ -390,7 +390,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="listeners"><strong>4.3 Listeners</strong></a>
@@ -427,7 +427,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="timers"><strong>4.4 Timers</strong></a>
@@ -455,7 +455,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="assertions"><strong>4.5 Assertions</strong></a>
@@ -487,7 +487,7 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="config_elements"><strong>4.6 Configuration Elements</strong></a>
1.7 +1 -1 jakarta-jmeter/src/org/apache/jmeter/gui/action/Remove.java
Index: Remove.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/gui/action/Remove.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Remove.java 23 Feb 2002 01:21:06 -0000 1.6
+++ Remove.java 7 Mar 2002 23:03:13 -0000 1.7
@@ -102,11 +102,11 @@
{
GuiPackage guiPackage = GuiPackage.getInstance();
JMeterTreeNode[] nodes = guiPackage.getTreeListener().getSelectedNodes();
+ guiPackage.getTreeListener().removedSelectedNode();
for (int i = nodes.length - 1; i >= 0; i--)
{
guiPackage.getTreeModel().removeNodeFromParent(nodes[i]);
}
- guiPackage.getTreeListener().removedSelectedNode();
ActionRouter.getInstance().actionPerformed(new ActionEvent(e.getSource(),
e.getID(), JMeterUtils.getResString("edit")));
1.14 +4 -2 jakarta-jmeter/src/org/apache/jmeter/gui/tree/JMeterTreeListener.java
Index: JMeterTreeListener.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/gui/tree/JMeterTreeListener.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- JMeterTreeListener.java 23 Feb 2002 01:21:06 -0000 1.13
+++ JMeterTreeListener.java 7 Mar 2002 23:03:13 -0000 1.14
@@ -185,6 +185,8 @@
*/
public void valueChanged(TreeSelectionEvent e)
{
+ currentPath = e.getNewLeadSelectionPath();
+ actionHandler.actionPerformed(new ActionEvent(this, 3333, JMeterUtils.getResString("edit")));
}
@@ -235,18 +237,18 @@
{
currentPath = tree.getPathForLocation(e.getX(), e.getY());
}
-
+ actionHandler.actionPerformed(new ActionEvent(this, e.getID(), JMeterUtils.getResString("edit")));
if (selRow != -1)
{
if (isRightClick(e))
{
+ tree.setSelectionPath(currentPath);
updateMainMenu(createAddMenu((JMeterComponentModel) (getCurrentNode().getUserObject())));
rightClick(currentPath, createAddMenu((JMeterComponentModel) (getCurrentNode().getUserObject())), e.getX(), e.getY());
}
else
{
updateMainMenu(createAddMenu((JMeterComponentModel) (getCurrentNode().getUserObject())));
- actionHandler.actionPerformed(new ActionEvent(this, e.getID(), JMeterUtils.getResString("edit")));
}
}
}
1.45 +5 -0 jakarta-jmeter/src/org/apache/jmeter/resources/messages.properties
Index: messages.properties
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/resources/messages.properties,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -r1.44 -r1.45
--- messages.properties 4 Mar 2002 23:08:54 -0000 1.44
+++ messages.properties 7 Mar 2002 23:03:13 -0000 1.45
@@ -188,3 +188,8 @@
jndi_method_remote_interface_list=Remote Interfaces
jndi_method_button_reflect=Reflect
jndi_method_button_invoke=Invoke
+insert_parent=Insert Parent
+copy=Copy
+cut=Cut
+paste_insert=Paste As Insert
+paste_add=Paste As Add
1.26 +0 -0 jakarta-jmeter/src/org/apache/jmeter/util/JMeterUtils.java
Index: JMeterUtils.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/util/JMeterUtils.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- JMeterUtils.java 4 Mar 2002 23:08:55 -0000 1.25
+++ JMeterUtils.java 7 Mar 2002 23:03:13 -0000 1.26
@@ -76,7 +76,7 @@
*
*@author <a href="mailto://stefano@apache.org">Stefano Mazzocchi</a>
*@created June 28, 2001
- *@version $Revision: 1.25 $ $Date: 2002/03/04 23:08:55 $
+ *@version $Revision: 1.26 $ $Date: 2002/03/07 23:03:13 $
*/
public class JMeterUtils
1.5 +13 -13 jakarta-jmeter/src/org/apache/jmeter/visualizers/GraphAccum.java
Index: GraphAccum.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/visualizers/GraphAccum.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- GraphAccum.java 23 Dec 2001 04:29:57 -0000 1.4
+++ GraphAccum.java 7 Mar 2002 23:03:13 -0000 1.5
@@ -86,10 +86,10 @@
protected boolean noLegendYet = true; // ensure that the legends are only
// drawn once
protected Point[] previousPts; // keep track of previous point
- // needed to draw a line joining
+ // needed to draw a line joining
// the previous point with the current
// one
- protected boolean previousPtsAlloc = false;
+ protected boolean previousPtsAlloc = false;
// Ensure that previousPts is allocated
// once only. It'll be reused at each
// drawSample. It can't be allocated
@@ -243,7 +243,7 @@
// components
int compCount = 0; // number of components
- ArrayList resultList =
+ ArrayList resultList =
(ArrayList)oneSample.getValue(SampleResult.RESULT_LIST);
// allocate previousPts only the first time
int resultListCount = 0;
@@ -287,7 +287,7 @@
else
{
// otherwise, draw from previous point
- g.drawLine((previousPts[0].x)%width, previousPts[0].y, x%width,
+ g.drawLine((previousPts[0].x)%width, previousPts[0].y, x%width,
d.height - data);
}
// store current total time point
@@ -298,7 +298,7 @@
gbc.gridy = compCount++;
gbc.anchor = GridBagConstraints.WEST;
gbc.weightx = 1.0;
- gbc.insets = new Insets(0, 10, 0, 0);
+ gbc.insets = new Insets(0, 10, 0, 0);
JLabel totalTimeLabel = new JLabel("Total time - " + oneSample.toString());
totalTimeLabel.setForeground(currColor);
gridBag.setConstraints(totalTimeLabel, gbc);
@@ -322,7 +322,7 @@
else
{
// otherwise, draw from previous point
- g.drawLine((previousPts[1].x)%width, previousPts[1].y, x%width,
+ g.drawLine((previousPts[1].x)%width, previousPts[1].y, x%width,
d.height - data);
}
// store load time without components
@@ -333,7 +333,7 @@
gbc.gridy = compCount++;
gbc.anchor = GridBagConstraints.WEST;
gbc.weightx = 1.0;
- gbc.insets = new Insets(0, 10, 0, 0);
+ gbc.insets = new Insets(0, 10, 0, 0);
JLabel mainTimeLabel = new JLabel(oneSample.toString());
mainTimeLabel.setForeground(currColor);
gridBag.setConstraints(mainTimeLabel, gbc);
@@ -350,7 +350,7 @@
SampleResult componentRes = (SampleResult)iter.next();
if(catClass.isDebugEnabled())
{
- catClass.debug("drawSample1 : componentRes - " +
+ catClass.debug("drawSample1 : componentRes - " +
componentRes.toString() + " loading time - " +
componentRes.getTime());
}
@@ -367,7 +367,7 @@
else
{
// otherwise, draw from previous point
- g.drawLine((previousPts[currPreviousPts].x)%width,
+ g.drawLine((previousPts[currPreviousPts].x)%width,
previousPts[currPreviousPts].y, x%width, d.height - data);
}
// store the current plot
@@ -378,7 +378,7 @@
gbc.gridy = compCount++;
gbc.anchor = GridBagConstraints.WEST;
gbc.weightx = 1.0;
- gbc.insets = new Insets(0, 10, 0, 0);
+ gbc.insets = new Insets(0, 10, 0, 0);
JLabel compTimeLabel = new JLabel(componentRes.toString());
compTimeLabel.setForeground(currColor);
gridBag.setConstraints(compTimeLabel, gbc);
@@ -413,12 +413,12 @@
{
super.paintComponent(g);
catClass.debug("Start : paintComponent1");
- // for repainting set this to false because all the points needs to be redrawn
- // so no need(shouldn't) use the previousPts
- previousPtsAlloc = false;
Dimension d = this.getSize();
synchronized(model.getList())
{
+ // for repainting set this to false because all the points needs to be redrawn
+ // so no need(shouldn't) use the previousPts
+ previousPtsAlloc = false;
Iterator e = model.getList().iterator();
for (int i = 0; e.hasNext(); i++)
{
1.9 +165 -185 jakarta-jmeter/xdocs/changes.xml
Index: changes.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/changes.xml,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- changes.xml 24 Sep 2001 13:17:01 -0000 1.8
+++ changes.xml 7 Mar 2002 23:03:13 -0000 1.9
@@ -1,185 +1,165 @@
-<?xml version="1.0"?>
-<document>
- <properties>
- <author email="mstover1@apache.org">Michael Stover, et al.</author>
- <title>History of Changes</title>
- </properties>
-<body>
-<section name="History of Changes">
-<p>
-<b>Changes are chronologically ordered from top (most recent) to bottom
-(least recent)</b>
-</p>
-
-<b>Changes:</b>
-<h3>Version 1.7Beta</h3>
-<ul>
-<li>Better XML support for special characters (Tushar Bhatia) </li>
-<li>Non-GUI functioning & Non-GUI test plan execution (Tushar Bhatia)</li>
-<li>Removing Swing dependence from base JMeter classes</li>
-<li>Internationalization (Takashi Okamoto)</li>
-<li>AllTests bug fix (neth6@atozasia.com)</li>
-<li>ClassFinder bug fix (neth6@atozasia.com)</li>
-<li>New Loop Controller</li>
-<li>Proxy Server records HTTP samples from browser (and documented in the user manual)</li>
-<li>Multipart Form support</li>
-<li>HTTP Header class for Header customization</li>
-<li>Extracting HTTP Header information from responses (Jamie Davidson)</li>
-<li>Mailer Visualizer re-added to JMeter</li>
-<li>JMeter now url encodes parameter names and values</li>
-<li>listeners no longer give exceptions if their gui's haven't been initialized</li>
-<li>HTTPS and Authorization working together</li>
-<li>New Http sampling that automatically parses HTML response for images to download, and includes the downloading of
-these images in total time for request (Neth neth6@atozasia.com) </li>
-<li>HTTP responses from server can be parsed for links and forms, and dynamic data can be extracted and added to test
-samples at run-time (documented)</li>
-<li>New Ramp-up feature (Jonathan O'Keefe)</li>
-<li>New visualizers (Neth)</li>
-<li>New Assertions for functional testing</li>
-</ul>
-
-<h3>Version 1.6.1</h3>
-<ul>
-<li>Fixed saving and loading of test scripts (no more extra lines)</li>
-<li>Can save and load special characters (such as "&" and "<").</li>
-<li>Can save and load timers and listeners.</li>
-<li>Minor bug fix for cookies (if you cookie value contained an "=", then it broke).</li>
-<li>URL's can sample ports other than 80, and can test HTTPS, provided you have the necessary jars (JSSE)</li>
-</ul>
-<h3>Version 1.6 Alpha</h3>
-<ul>
-<li>New UI</li>
-<li>Separation of GUI and Logic code</li>
-<li>New Plug-in framework for new modules</li>
-<li>Enhanced performance</li>
-<li>Layering of test logic for greater flexibility</li>
-<li>Added support for saving of test elements</li>
-<li>Added support for distributed testing using a single client</li>
-</ul>
-<h3>Version 1.5.1</h3>
-<ul>
-<li>Fixed bug that caused cookies not to be read if header name case not as expected.</li>
-<li>Clone entries before sending to sampler - prevents relocations from messing up information across threads</li>
-<li>Minor bug fix to convenience dialog for adding paramters to test sample. Bug prevented entries in dialog from appearing in test sample.</li>
-<li>Added xerces.jar to distribution</li>
-<li>Added junit.jar to distribution and created a few tests.</li>
-<li>Started work on new framework. New files in cvs, but do not effect program yet.</li>
-<li>Fixed bug that prevent HTTPJMeterThread from delaying according to chosen timer.</li>
-</ul>
-
-<p>
-<h3>Version 1.5</h3>
-<ul>
- <li>Abstracted out the concept of the Sampler, SamplerController, and TestSample.
- A Sampler represents code that understands a protocol (such as HTTP, or FTP, RMI,
- SMTP, etc..). It is the code that actually makes the connection to whatever is
- being tested.
- A SamplerController represents code that understands how to organize and run a group
- of test samples. It is what binds together a Sampler and it's test samples and runs them.
- A TestSample represents code that understands how to gather information from the
- user about a particular test. For a website, it would represent a URL and any
- information to be sent with the URL.</li>
- <li>The UI has been updated to make entering test samples more convenient.</li>
- <li>Thread groups have been added, allowing a user to setup multiple test to run
- concurrently, and to allow sharing of test samples between those tests.</li>
- <li>It is now possible to save and load test samples.</li>
- <li>....and many more minor changes/improvements...</li>
-</ul>
-</p>
-<p>
-<b>Apache JMeter 1.4.1-dev</b>
-(<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)
-
-<ul>
- <li>Cleaned up URLSampler code after tons of patches for better readability. (SM)</li>
- <li>Made JMeter send a special "user-agent" identifier. (SM)</li>
- <li>Fixed problems with redirection not sending cookies and authentication info and removed
- a warning with jikes compilation. Thanks to <a href="mailto:wtanaka@yahoo.com">Wesley
- Tanaka</a> for the patches (SM)</li>
- <li>Fixed a bug in the URLSampler that caused to skip one URL when testing lists of URLs and
- a problem with Cookie handling. Thanks to <a
- href="mailto:gjohnson@investlearning.com">Graham Johnson</a> for the patches (SM)</li>
- <li>Fixed a problem with POST actions. Thanks to <a href="mailto:sschaub@bju.edu">Stephen
- Schaub</a> for the patch (SM)</li>
-</ul>
-</p>
-<p>
-<b>Apache JMeter 1.4</b> - Jul 11 1999
-(<a href="mailto:cimjpno@be.ibm.com">Jean-Pierre Norguet</a>, <a
-href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)
-
-<ul>
- <li>Fixed a problem with POST actions. Thanks to <a href="mailto:bburns@labs.gte.com">Brendan
- Burns</a> for the patch (SM)</li>
- <li>Added close button to the About box for those window managers who don't provide it.
- Thanks to Jan-Henrik Haukeland for pointing it out. (SM)</li>
- <li>Added the simple Spline sample visualizer (JPN)</li>
-</ul>
-</p>
-
-<p><b>Apache JMeter 1.3</b> - Apr 16 1999
-(<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>, <a
-href="mailto:luta.raphael@networks.vivendi.net">Rapha�l Luta</a>)
-
-<ul>
- <li>Run the Garbage Collector and run finalization before starting to sampling to ensure
- same state every time (SM)</li>
- <li>Fixed some NullPointerExceptions here and there (SM)</li>
- <li>Added HTTP authentication capabilities (RL)</li>
- <li>Added windowed sample visualizer (SM)</li>
- <li>Fixed stupid bug for command line arguments. Thanks to <a
- href="mailto:jbracer@infoneers.com">Jorge Bracer</a> for pointing this out (SM)</li>
-</ul>
-</p>
-
-<p><b>Apache JMeter 1.2</b> - Mar 17 1999
-(<a href="mailto:sdowd@arcmail.com">Sean Dowd</a>, <a href="mailto:stefano@apache.org">Stefano
-Mazzocchi</a>)
-
-<ul>
- <li>Integrated cookie capabilities with JMeter (SM)</li>
- <li>Added the Cookie manager and Netscape file parser (SD)</li>
- <li>Fixed compilation error for JDK 1.1 (SD)</li>
-</ul>
-</p>
-
-<p>
-<b>Apache JMeter 1.1</b> - Feb 24 1999
-(<a href="mailto:sdowd@arcmail.com">Sean Dowd</a>, <a href="mailto:stefano@apache.org">Stefano
-Mazzocchi</a>)
-
-<ul>
- <li>Created the opportunity to create URL aliasing from the properties file as well as the
- ability to associate aliases to URL sequences instead of single URLs (SM) Thanks to <a
- href="mailto:chatfield@evergreen.com">Simon Chatfield</a> for the very nice suggestions
- and code examples.</li>
- <li>Removed the TextVisualizer and replaced it with the much more useful FileVisualizer (SM)</li>
- <li>Added the known bug list (SM)</li>
- <li>Removed the Java Apache logo (SM)</li>
- <li>Fixed a couple of typos (SM)</li>
- <li>Added UNIX makefile (SD)</li>
-</ul>
-</p>
-<p>
-<b>Apache JMeter 1.0.1</b> - Jan 25 1999
-(<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)
-
-<ul>
- <li>Removed pending issues doc issues (SM)</li>
- <li>Fixed the unix script (SM)</li>
- <li>Added the possibility of running the JAR directly using "java -jar
- ApacheJMeter.jar" with Java 2 (SM)</li>
- <li>Some small updates: fixed Swing location after Java 2(tm) release, license update and
- small cleanups (SM)</li>
-</ul>
-</p>
-<p>
-<b>Apache JMeter 1.0</b> - Dec 15 1998
-(<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)
-<ul>
- <li>Initial version. (SM)</li>
-</ul>
-</p>
-</section>
-</body>
-</document>
+<?xml version="1.0"?>
+<document>
+<properties>
+ <author email="mstover1@apache.org">Michael Stover, et al.</author>
+ <title>History of Changes</title>
+</properties>
+<body>
+<section name="History of Changes">
+<p><b>Changes are chronologically ordered from top (most recent) to bottom
+(least recent)</b></p>
+
+<b>Changes:</b>
+<h3>Version 1.7Beta</h3>
+<ul>
+ <li>Better XML support for special characters (Tushar Bhatia) </li>
+ <li>Non-GUI functioning & Non-GUI test plan execution (Tushar Bhatia)</li>
+ <li>Removing Swing dependence from base JMeter classes</li>
+ <li>Internationalization (Takashi Okamoto)</li>
+ <li>AllTests bug fix (neth6@atozasia.com)</li>
+ <li>ClassFinder bug fix (neth6@atozasia.com)</li>
+ <li>New Loop Controller</li>
+ <li>Proxy Server records HTTP samples from browser
+ (and documented in the user manual)</li> <li>Multipart Form support</li>
+ <li>HTTP Header class for Header customization</li>
+ <li>Extracting HTTP Header information from responses (Jamie Davidson)</li>
+ <li>Mailer Visualizer re-added to JMeter</li>
+ <li>JMeter now url encodes parameter names and values</li>
+ <li>listeners no longer give exceptions if their gui's haven't been initialized</li>
+ <li>HTTPS and Authorization working together</li>
+ <li>New Http sampling that automatically parses HTML response
+ for images to download, and includes the downloading of these
+ images in total time for request (Neth neth6@atozasia.com) </li>
+ <li>HTTP responses from server can be parsed for links and forms,
+ and dynamic data can be extracted and added to test samples
+ at run-time (documented)</li>
+ <li>New Ramp-up feature (Jonathan O'Keefe)</li>
+ <li>New visualizers (Neth)</li>
+ <li>New Assertions for functional testing</li>
+</ul>
+
+<h3>Version 1.6.1</h3>
+<ul>
+ <li>Fixed saving and loading of test scripts (no more extra lines)</li>
+ <li>Can save and load special characters (such as "&" and "<").</li>
+ <li>Can save and load timers and listeners.</li>
+ <li>Minor bug fix for cookies (if you cookie value
+ contained an "=", then it broke).</li>
+ <li>URL's can sample ports other than 80, and can test HTTPS,
+ provided you have the necessary jars (JSSE)</li>
+</ul>
+
+<h3>Version 1.6 Alpha</h3>
+<ul>
+ <li>New UI</li>
+ <li>Separation of GUI and Logic code</li>
+ <li>New Plug-in framework for new modules</li>
+ <li>Enhanced performance</li>
+ <li>Layering of test logic for greater flexibility</li>
+ <li>Added support for saving of test elements</li>
+ <li>Added support for distributed testing using a single client</li>
+
+</ul>
+<h3>Version 1.5.1</h3>
+<ul>
+ <li>Fixed bug that caused cookies not to be read if header name case not as expected.</li>
+ <li>Clone entries before sending to sampler - prevents relocations from messing up
+ information across threads</li>
+ <li>Minor bug fix to convenience dialog for adding paramters to test sample.
+ Bug prevented entries in dialog from appearing in test sample.</li>
+ <li>Added xerces.jar to distribution</li>
+ <li>Added junit.jar to distribution and created a few tests.</li>
+ <li>Started work on new framework. New files in cvs, but do not effect program yet.</li>
+ <li>Fixed bug that prevent HTTPJMeterThread from delaying according to chosen timer.</li>
+</ul>
+<p>
+<h3>Version 1.5</h3>
+<ul>
+ <li>Abstracted out the concept of the Sampler, SamplerController, and TestSample.
+ A Sampler represents code that understands a protocol (such as HTTP,
+ or FTP, RMI, SMTP, etc..). It is the code that actually makes the
+ connection to whatever is being tested. A SamplerController
+ represents code that understands how to organize and run a group
+ of test samples. It is what binds together a Sampler and it's test
+ samples and runs them. A TestSample represents code that understands
+ how to gather information from the user about a particular test.
+ For a website, it would represent a URL and any information to be sent
+ with the URL.</li>
+ <li>The UI has been updated to make entering test samples more convenient.</li>
+ <li>Thread groups have been added, allowing a user to setup multiple test to run
+ concurrently, and to allow sharing of test samples between those tests.</li>
+ <li>It is now possible to save and load test samples.</li>
+ <li>....and many more minor changes/improvements...</li>
+</ul>
+</p>
+<p>
+<b>Apache JMeter 1.4.1-dev</b> (<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)
+<ul>
+ <li>Cleaned up URLSampler code after tons of patches for better readability. (SM)</li>
+ <li>Made JMeter send a special "user-agent" identifier. (SM)</li>
+ <li>Fixed problems with redirection not sending cookies and authentication info and removed
+ a warning with jikes compilation. Thanks to <a href="mailto:wtanaka@yahoo.com">Wesley
+ Tanaka</a> for the patches (SM)</li>
+ <li>Fixed a bug in the URLSampler that caused to skip one URL when testing lists of URLs and
+ a problem with Cookie handling. Thanks to <a
+ href="mailto:gjohnson@investlearning.com">Graham Johnson</a> for the patches (SM)</li>
+ <li>Fixed a problem with POST actions. Thanks to <a href="mailto:sschaub@bju.edu">Stephen
+ Schaub</a> for the patch (SM)</li>
+ </ul>
+ </p>
+ <p>
+ <b>Apache JMeter 1.4</b> - Jul 11 1999 (<a href="mailto:cimjpno@be.ibm.com">Jean-Pierre Norguet</a>,
+ <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)
+ <ul>
+ <li>Fixed a problem with POST actions. Thanks to <a href="mailto:bburns@labs.gte.com">Brendan
+ Burns</a> for the patch (SM)</li>
+ <li>Added close button to the About box for those window managers who don't provide it.
+ Thanks to Jan-Henrik Haukeland for pointing it out. (SM)</li>
+ <li>Added the simple Spline sample visualizer (JPN)</li>
+</ul> </p>
+ <p><b>Apache JMeter 1.3</b> - Apr 16 1999
+ (<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>,
+ <a href="mailto:luta.raphael@networks.vivendi.net">Rapha�l Luta</a>)
+<ul>
+ <li>Run the Garbage Collector and run finalization before starting to sampling to ensure
+ same state every time (SM)</li>
+ <li>Fixed some NullPointerExceptions here and there (SM)</li>
+ <li>Added HTTP authentication capabilities (RL)</li>
+ <li>Added windowed sample visualizer (SM)</li>
+ <li>Fixed stupid bug for command line arguments. Thanks to <a
+ href="mailto:jbracer@infoneers.com">Jorge Bracer</a> for pointing this out (SM)</li>
+</ul> </p>
+ <p><b>Apache JMeter 1.2</b> - Mar 17 1999 (<a href="mailto:sdowd@arcmail.com">Sean Dowd</a>,
+<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)
+<ul>
+ <li>Integrated cookie capabilities with JMeter (SM)</li>
+ <li>Added the Cookie manager and Netscape file parser (SD)</li>
+ <li>Fixed compilation error for JDK 1.1 (SD)</li> </ul> </p>
+<p> <b>Apache JMeter 1.1</b> - Feb 24 1999 (<a href="mailto:sdowd@arcmail.com">Sean Dowd</a>,
+<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)
+<ul>
+ <li>Created the opportunity to create URL aliasing from the properties file as well as the
+ ability to associate aliases to URL sequences instead of single URLs (SM) Thanks to <a
+ href="mailto:chatfield@evergreen.com">Simon Chatfield</a> for the very nice suggestions
+ and code examples.</li>
+ <li>Removed the TextVisualizer and replaced it with the much more useful FileVisualizer (SM)</li>
+ <li>Added the known bug list (SM)</li>
+ <li>Removed the Java Apache logo (SM)</li>
+ <li>Fixed a couple of typos (SM)</li>
+ <li>Added UNIX makefile (SD)</li> </ul> </p>
+<p> <b>Apache JMeter 1.0.1</b> - Jan 25 1999 (<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)
+<ul>
+ <li>Removed pending issues doc issues (SM)</li>
+ <li>Fixed the unix script (SM)</li>
+ <li>Added the possibility of running the JAR directly using "java -jar
+ ApacheJMeter.jar" with Java 2 (SM)</li>
+ <li>Some small updates: fixed Swing location after Java 2(tm) release, license update and
+ small cleanups (SM)</li>
+</ul> </p>
+<p> <b>Apache JMeter 1.0</b> - Dec 15 1998 (<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)
+<ul>
+ <li>Initial version. (SM)</li>
+</ul> </p>
+</section>
+</body>
+</document>
\ No newline at end of file
1.4 +847 -423 jakarta-jmeter/xdocs/extending/index.xml
Index: index.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/extending/index.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- index.xml 24 Mar 2001 20:44:24 -0000 1.3
+++ index.xml 7 Mar 2002 23:03:13 -0000 1.4
@@ -1,424 +1,848 @@
-<?xml version="1.0"?>
-<document>
- <properties>
- <author email="bburns@apache.org">Michael Stover, brendan Burns, et al.</author>
- <title>Extending JMeter</title>
- </properties>
-<body>
-<section name="Extending JMeter">
-
-<h2>Extending JMeter</h2>:
-<p>There are several ways to extend JMeter and add functionality. JMeter is designed
-to make this task easier.
-</p>
-<ul>
- <li><a href="#timer">Creating your own Timer</a></li>
- <li><a href="#listener">Creating your own SampleListener (such as a visualizer, or reporter)</a></li>
- <li><a href="#config">Creating your own Config Element</a></li>
- <li><a href="#logical">Creating your own logic SamplerController</a></li>
- <li><a href="#testsample">Creating your own test sample SamplerController</a></li>
- <li><a href="#sampler">Creating your own Sampler</a></li>
- <li><a href="#uicomponent">Making your custom elements play nice as a JMeter UI component</a></li>
- <li><a href="#saveable">Making your custom elements saveable and loadable from within JMeter</a></li>
-</ul>
-<hr/>
-<a name="timer"/>
-<h3>Creating your own Timer</h3>
-<p>The timer interface:</p>
-<pre>
- public long delay();
-</pre>
-<p>Not too complicated. Your delay method must, each time it is called, return a
-long representing the number of milliseconds to delay. The constant timer returns the
-same number every time it's called. A random timer returns a different number each time.
-</p>
-<hr/>
-<a name="listener"/>
-<h3>Creating your own SampleListener</h3>
-<p>The SampleListener interface:</p>
-<pre>
- public void sampleOccurred(SampleEvent e);
- public void sampleStarted(SampleEvent e);
- public void sampleStopped(SampleEvent e);
-</pre>
-<p>sampleOccurred is the method called when a sample is completed, and the data has been
-collected. The SampleEvent object should contain all the information gathered
-from the sample. If your sample listener is primarily concerned with collecting the
-data from a test run, you can implement this method - the other two are for other purposes and
-can be ignored (though the methods have to be there for your class to compile).
-</p>
-<p>sampleStarted and sampleStopped are used to indicate the state of the sampling thread.
-This is useful for visualizers that show the user the state of all running threads
-(ie, they are running and waiting for response, or they're stopped and waiting
-to begin again).
-</p>
-<hr/>
-<a name="config"/>
-<h3>Creating your own Config Element</h3>
-<p>The ConfigElement interface:</p>
-<pre>
- public void addConfigElement(ConfigElement config);
- public boolean expectsModification();
- public Object clone();
-</pre>
-<p>The ConfigElement interface is sparse. All ConfigElements are expected to implement
-a public <b>clone()</b> method. The reason for this is that config elements will be cloned
-for each different sampling thread, and most will be cloned for each sample. </p>
-<p>If your config element expects to be modified in the process of a test run,
-and you want those modifications to carry over from sample to sample (as in
-a cookie manager - you want to save all cookies that gets set throughout
-the test), then return true for the <b>expectsModification()</b> method. Your config element will not be
-cloned for each sample. If your config elements are more static in nature,
-return false. If in doubt, return false.</p>
-<p><b>addConfigElement()</b> is required so that config elements can be layered. For
-instance, let's say a user creates a URL entry that contains default values -
-they might use this to specify a server. Then, all their test samples configure
-individual test cases, but leave out the server field. This information is combined
-via the <b>addConfigElement()</b> method. Your custom config elements should do the right
-thing when this method is called. Normally, this involves ignoring such calls unless
-the passed in ConfigElement is of the same type as yours, and then only merging in
-values that are not already set in the object receiving the call (ie you probably
-don't want to overwrite any values).
-</p>
-<p>You may have noticed there's no specification on how to get the config information
-<b>out</b> of a ConfigElement. This raises the question, who is going to use it?
-At the end of the line, there will be a Sampler that will need the information held
-in your config element. The sampler that uses your config element needs to know more
-about the class than the rest of JMeter - that information is not part of this interface.
-</p>
-<p>If at all possible, extend <b>AbstractConfigElement</b> when creating your own. By doing so,
-and by following some simple rules, you will get cloning and saving to XML of your
-config element for free (as in, you don't have to do anything!). <b>AbstractConfigElement</b>
-stores all it's values in a Map, and provides getProperty and putProperty methods. Your
-config element can provide <b>getXXX()</b> and <b>setXXX()</b> methods, but these should delegate
-to <b>getProperty()</b> and <b>setProperty()</b>, probably using static Strings as keys in the Map.
-<br/>You can store any type of object, provided the objects are clonable and Saveable
-(Strings, Integer, Long, Double, Float are all good in this regard).
-</p>
-<p>One caveat - if your config element has been restored from file, all the values
-held in the Map will be String objects (except for elements that implement Saveable
-on their own), and you may have to do casting and parsing. Example: an Integer will
-have to be converted from a String to an int, so your getXXX() method should check
-for this possibility to avoid exceptions.
-</p>
-<hr/>
-<a name="logical"/>
-<h3>Creating your own logic SamplerController</h3>
-<p>The SamplerController interface looks as follows:</p>
-<pre>
- Entry nextEntry();
- Collection getListeners();
- void addSamplerController(SamplerController controller);
- void addConfigElement(ConfigElement config);
- Object clone();
-</pre>
-<p>Again, <b>clone()</b> is a method that must be implemented to all SamplerControllers to avoid
-contamination between sampling threads.</p>
-<p>The <b>nextEntry()</b> method is the essential job of a SamplerController - to deliver
-Entry objects to be sampled. An Entry object encapsulates all the information needed
-by a Sampler to do its job. The <b>nextEntry()</b> method should work like an iterator and
-continuously return new Entry objects.
-</p>
-<p>There are two boundary conditions that need to be handled. If the Controller has no
-more Entries to give, for the rest of the test, it should return <b>null</b>. Therefore,
-if your Controller has sub-controllers it is receiving Entries from, it should remove
-them from its list of controllers to get Entries from. The other condition is when
-your controller reaches the end of its list of Entries, and it needs to start over
-from the beginning. The parent Controller needs to know this so that it can move
-on to its next controller in its list. Therefore, at the end of each iteration,
-your SamplerController needs to return a CycleEntry object instead of a normal Entry.
-Conversely, this means that if your Controller receives a CycleEntry object, it should
-move on to the next Controller in its list.</p>
-<p>A logic controller does not generate Entries on its own, but simply regulates
-the flow of Entries from its sub-controllers. A logic controller might provide
-looping logic, or it might modify the Entries that pass through it, or whatever.
-GenericController provides an implementation that does absolutely nothing but
-pass Entries on from its sub-controllers. This class is useful both for reference
-purposes and to extend, since it provides a lot of methods you're likely to find
-useful
-</p>
-<p><b>getListeners()</b> is an odd member of this Class. It's there to serve those who
-want their controller to receive sample data. This would be useful for a controller
-that modified Entry objects based on previous sample results (like an HTML spider
-that dynamically reacted to previously sampled webpages for links and forms). The
-responsibility of the controller implementer is to collect all potential listeners
-from the sub-controller list, and add themselves if desired. Most SamplerControllers
-that extend GenericController don't have to do anything.</p>
-<p><b>addSamplerController(SamplerController controller)</b> is the method used to
-add sub controllers to your SamplerController. </p>
-<p><b>addConfigElement(ConfigElement config)</b> Your SamplerController should also
-be capable of holding configuration elements and adding them to Entries as they
-pass through your controller. Again, see GenericController for reference. Essentially,
-all Entry objects that get returned by <b>nextEntry()</b> are handed all the ConfigElements
-of the controller.
-</p>
-<hr/>
-<a name="testsample"/>
-<h3>Creating your own test sample SamplerController</h3>
-<p>A SamplerController that generates Entry objects is just like a logic controller
-except that it creates its own Entry objects instead of gathering them from
-sub-controllers (although, to be fully correct, your test sample SamplerController
-should handle both possibilities). Your test sample SamplerController can also
-benefit from extending GenericController. By doing so, most of your cloning and
-saving needs are handled (but probably not entirely). See HttpTestSample as
-reference.</p>
-<hr/>
-<a name="sampler"/>
-<h3>Creating your own Sampler</h3>
-<p>The Sampler interface:</p>
-<pre>
- public SampleResult sample(Entry e)
-</pre>
-<p>Your Sampler has two responsibilities. Of lesser importance, it should do whatever
-it is you want to do, given an Entry object that hopefully contains information
-about what is to be sampled. Of greater importance, your sampler should return
-a <b>SampleResult</b> object that holds information about the sampling. Information such
-as how long the sample took, the text response from the sample (if appropriate), and
-a string that describes the location of what was sampled. The SampleResult interface
-is essentially a Map with public static Strings as keys. </p>
-<hr/>
-<a name="uicomponent"/>
-<h3>Making your custom elements play nice as a JMeter UI component</h3>
-<p>In order to take part in the JMeter UI, your component needs to implement the
-JMeterComponentModel interface:</p>
-<pre>
- Class getGuiClass();
- public String getName();
- public void setName(String name);
- public Collection getAddList();
- public String getClassLabel();
- public void uncompile();
-</pre>
-<p>Most of this stuff is easy, boring, and tedious. <b>getName()</b>, <b>setName()</b> is a simple
-String property that is the name of the object. <b>getClassLabel()</b> should return
-a String that describes the class. This string will be displayed to the user and
-so should be short but meaningful. <b>getGuiClass()</b> should return a Class object for
-the class that will be used as a GUI component. This class should be a subclass
-of java.awt.Container, and preferably a subclass of <b>javax.swing.JComponent</b>.</p>
-<p><b>getAddList()</b> should return a list of either Strings or JMenus. These Strings
-represent the Classes that can be added to your SamplerController. Each String
-should correspond to the target class's <b>getClassLabel()</b> String. <b>MenuFactory</b> is
-a class that will return some preset menu lists (such as all available SamplerControllers,
-all available ConfigElements, etc).</p>
-<p><b>uncompile()</b> is a cleanup method used between sampling runs. When the user
-hits "Start", JMeter "compiles" the objects in the tree. Child nodes are added
-to their parent objects recursively until there is one TestPlan object, which is
-then submitted for testing. Afterward, these elements have to un-added from their
-parent objects, or uncompiled. To uncompile your class, simply clear all your
-data structures that are holding sub-elements. For your SamplerController, this
-will be the list of sub-controllers and the list of ConfigElements.</p>
-<p>That's it, except for your GUI class. If your SamplerController has no
-configuration needs, just return org.apache.jmeter.gui.NamePanel, and the user will
-at least be able to change the name of your component. Otherwise, create a gui class
-that implements the <b>ModelSupported</b> interface:</p>
-<pre>
- void setModel(Object model);
- public void updateGui();
-</pre>
-<p><b>setModel()</b> is used to hand your JMeterModelComponent class to the GUI class when
-it is instantiated. It is your responsibility for providing the means by which
-the Gui class updates the values in the model class. For updating in the other
-direction, there is <b>updateGui()</b>, which the model class can call if necessary.
-Note, normally, this call is made for you automatically whenever the Gui is brought
-to the screen. If you are creating a Visualizer, then you may need to use <b>updateGui()</b>.
-For reference, refer to UrlConfigGui (in org.apache.jmeter.protocol.http.config.gui).</p>
-<p>If you have done all this correctly, there's just one more step. If you compile
-your classes into the ApacheJMeter.jar file, then you're done. Your classes will
-be automatically found and used. Otherwise, you will need to modify jmeter.properties.
-The <i>search_paths</i> property should be modified to include the path where your
-classes are. This does not obviate the need for your classes to be in the JVM's
-CLASSPATH - it is an additional requirement. Otherwise, your classes will not be
-detected, and the Gui will not make them available to the user.</p>
-<hr/>
-<a name="saveable"/>
-<h3>Making your custom elements saveable and loadable from within JMeter</h3>
-<p>The Saveable interface has just one method:</p>
-<pre>
- public Class getTagHandlerClass()
-</pre>
-<p>This method simply returns the Class object that represents the Class that handles
-the saving and loading of your component.</p>
-<p>To write this SaveHandler, make a class that extends <b>TagHandler</b>
-(from org.apache.jmeter.save.xml). Note, if your component extends AbstractConfigElement,
-it is already fully Saveable - provided you only have information stored in
-the Map from AbstractConfigElement.</p>
-<p>To write your own TagHandler, you will have to implement the following methods:</p>
-<pre>
- public abstract void setAtts(Attributes atts) throws Exception
- public String getPrimaryTagName()
- public void save(Saveable objectToSave,Writer out) throws IOException
-</pre>
-<p><b>getPrimaryTagName()</b> should return the String that is the XML tagname that your
-class handles. When you save your object, it should all be contained within an
-XML tag of the same name. This will ensure that when JMeter's parser hits that tag,
-your class will be called upon to handle the data.</p>
-<p><b>setAtts(Attributes atts)</b> is called when the parser first hits your tag.
-If this primary tag has any attributes, this method represents your chance to save
-the information.</p>
-<p><b>save(Saveable objectToSave,Writer out)</b> - when the user selects "Save",
-JMeter will call this method and hand the Saveable object to be saved (it will be
-the object that specified your TagHandler as the class responsible for it's saving).
-This method should use the given Writer object to print all the XML necessary to
-save the current state of the objectToSave.</p>
-<p>There's more you have to do to handle creating a new Object when JMeter parses
-an XML file. However, there's no standard interface you need to implement, but rather,
-JMeter uses reflection to generate method calls into your class. When JMeter hits
-a tag that corresponds to your PrimaryTagName, an instance of your TagHandler will
-be created, and it's <b>setAtts()</b> method will get called. Thereafter, methods are called
-depending on subsequent tags and character data. For every tag, JMeter calls
-<b><tag-name>TagStart(Attributes atts)</b>, and for every end tag, JMeter calls
-<b><tag-name>TagEnd()</b>.</p>
-<p>Additionally, JMeter will call a method that corresponds to all tags that are
-current. So, for instance, if JMeter runs into a tag name "foo", then
-<b>foo(Attributes atts)</b> will be called. If JMeter then parses character data,
-then <b>foo(String data)</b> will be called. If JMeter parses a tag within foo, called
-"nestedFoo", then JMeter will call <b>foo_nestedFoo(Attributes atts)</b> and
-<b>foo_nestedFoo(String data)</b>. And so on.
-</p>
-<p>An annotated example:</p>
-<pre>
-public class AbstractConfigElementHandler extends TagHandler
-{
- private AbstractConfigElement config;
- private String currentProperty;
-
- public AbstractConfigElementHandler()
- {
- }
-
- <font color="blue">/**
- * Returns the AbstractConfigElement object parsed from the XML. This method
- * is required to fulfill the SaveHandler interface. It is used by the XML
- * routines to gather all the saved objects.
- */</font>
- public Object getModel()
- {
- return config;
- }
-
- <font color="blue">/**
- * This is called when a tag is first encountered for this handler class to handle.
- * The attributes of the tag are passed, and the SaveHandler object is expected
- * to instantiate a new object.
- */</font>
- public void setAtts(Attributes atts) throws Exception
- {
- String className = atts.getValue("type");
- config = (AbstractConfigElement)Class.forName(className).newInstance();
- }
-
- <font color="blue">/**
- * Called by reflection when a <property> tag is encountered. Again, the
- * attributes are passed.
- */</font>
- public void property(Attributes atts)
- {
- currentProperty = atts.getValue("name");
- }
-
- <font color="blue">/**
- * Called by reflection when text between the begin and end <property>
- * tag is encountered.
- */</font>
- public void property(String data)
- {
-
- if(data != null && data.trim().length() > 0)
- {
- config.putProperty(currentProperty,data);
- currentProperty = null;
- }
- }
-
- <font color="blue">/**
- * Called by reflection when the <property> tag is ended.
- */</font>
- public void propertyTagEnd()
- {
- <font color="blue">// Here's a tricky bit. See below for explanation.</font>
- List children = xmlParent.takeChildObjects(this);
- if(children.size() == 1)
- {
- config.putProperty(currentProperty,((TagHandler)children.get(0)).getModel());
- }
- }
-
-
- <font color="blue">/**
- * Gets the tag name that will trigger the use of this object's TagHandler.
- */</font>
- public String getPrimaryTagName()
- {
- return "ConfigElement";
- }
-
- <font color="blue">/**
- * Tells the object to save itself to the given output stream.
- */</font>
- public void save(Saveable obj,Writer out) throws IOException
- {
- AbstractConfigElement saved = (AbstractConfigElement)obj;
- out.write("<ConfigElement type=\"");
- out.write(saved.getClass().getName());
- out.write("\">\n");
- Iterator iter = saved.getPropertyNames().iterator();
- while (iter.hasNext())
- {
- String key = (String)iter.next();
- Object value = saved.getProperty(key);
- writeProperty(out,key,value);
- }
- out.write(</ConfigElement>");
- }
-
- <font color="blue">/**
- * Routine to write each property to xml.
- */</font>
- private void writeProperty(Writer out,String key,Object value) throws IOException
- {
- out.write("<property name=\"");
- out.write(key);
- out.write("\">\n");
- JMeterHandler.writeObject(value,out);
- out.write("\n</property>\n");
- }
-</pre>
-<p>
-In the <b>propertyTagEnd()</b> method, <b>takeChildObjects()</b> is called on the xmlParent
-instance variable. xmlParent is inherited from TagHandler - the DocumentHandler
-object that is running the show. xmlParent takes an XML file that represents a portion of
-the test configuration tree, and recreates a tree-like data structure. When it is
-done, it will convert its tree-like data structure into the test configuration tree
-structure.
-</p>
-<p>However, sometimes, a tree element has sub objects that you do not want represented
-in the tree - rather, they are part of your object. But, they may
-be complicated enough to warrant their own SaveHandler class, and thus, the xmlParent
-picks them up as part of its tree. When the tag is done, and you know that there are
-child objects you want to grab, you can call the <b>takeChildObjects()</b> method and get a
-List object containing them all. This will remove them from the tree, and you can add
-them to your object that you're creating.
-</p>
-<p>
-UrlConfig is good example. It extends AbstractConfigElement, so it uses exactly the
-code above to save and reload itself from XML. However, one of the pieces of data
-that UrlConfig stores is an Arguments object. Arguments is too complicated to save
-to file as a simple string, so it has its own Handler object (ArgumentsHandler). In
-the above code, when the call to <b>JMeterHandler.writeObject(value,out)</b> is made, the
-writeObject method detects whether the object implements Saveable, and if so, calls
-the object's SaveHandler class to deal with it. This means, however, that when
-reading that XML file, the Argument object will show up as a separate entity in
-the data tree, whereas it originally was just part of the data of the UrlConfig
-object. In order to preserve that relationship, it's necessary for the
-AbstractConfigElementHandler to check after each property tag is done for child
-objects in the tree, and take them for its own use.
-</p>
-<p>
-Study the other SaveHandler objects and the TagHandler class to learn more
-about how saving is accomplished. Once you understand the design, writing your
-own SaveHandler is very easy.
-</p>
-
-</section>
-</body>
+<?xml version="1.0"?>
+
+<document>
+
+ <properties>
+
+ <author email="bburns@apache.org">Michael Stover, brendan Burns, et al.</author>
+
+ <title>Extending JMeter</title>
+
+ </properties>
+
+<body>
+
+<section name="Extending JMeter">
+
+
+
+<h2>Extending JMeter</h2>:
+
+<p>There are several ways to extend JMeter and add functionality. JMeter is designed
+
+to make this task easier.
+
+</p>
+
+<ul>
+ <li><a href="JMeter Extension Scenario.html">A good overview of the process of extending JMeter</a></li>
+<p/>
+ <li><a href="#timer">Creating your own Timer</a></li>
+
+ <li><a href="#listener">Creating your own SampleListener (such as a visualizer, or reporter)</a></li>
+
+ <li><a href="#config">Creating your own Config Element</a></li>
+
+ <li><a href="#logical">Creating your own logic SamplerController</a></li>
+
+ <li><a href="#testsample">Creating your own test sample SamplerController</a></li>
+
+ <li><a href="#sampler">Creating your own Sampler</a></li>
+
+ <li><a href="#uicomponent">Making your custom elements play nice as a JMeter UI component</a></li>
+
+ <li><a href="#saveable">Making your custom elements saveable and loadable from within JMeter</a></li>
+
+</ul>
+
+<hr/>
+
+<a name="timer"/>
+
+<h3>Creating your own Timer</h3>
+
+<p>The timer interface:</p>
+
+<pre>
+
+ public long delay();
+
+</pre>
+
+<p>Not too complicated. Your delay method must, each time it is called, return a
+
+long representing the number of milliseconds to delay. The constant timer returns the
+
+same number every time it's called. A random timer returns a different number each time.
+
+</p>
+
+<hr/>
+
+<a name="listener"/>
+
+<h3>Creating your own SampleListener</h3>
+
+<p>The SampleListener interface:</p>
+
+<pre>
+
+ public void sampleOccurred(SampleEvent e);
+
+ public void sampleStarted(SampleEvent e);
+
+ public void sampleStopped(SampleEvent e);
+
+</pre>
+
+<p>sampleOccurred is the method called when a sample is completed, and the data has been
+
+collected. The SampleEvent object should contain all the information gathered
+
+from the sample. If your sample listener is primarily concerned with collecting the
+
+data from a test run, you can implement this method - the other two are for other purposes and
+
+can be ignored (though the methods have to be there for your class to compile).
+
+</p>
+
+<p>sampleStarted and sampleStopped are used to indicate the state of the sampling thread.
+
+This is useful for visualizers that show the user the state of all running threads
+
+(ie, they are running and waiting for response, or they're stopped and waiting
+
+to begin again).
+
+</p>
+
+<hr/>
+
+<a name="config"/>
+
+<h3>Creating your own Config Element</h3>
+
+<p>The ConfigElement interface:</p>
+
+<pre>
+
+ public void addConfigElement(ConfigElement config);
+
+ public boolean expectsModification();
+
+ public Object clone();
+
+</pre>
+
+<p>The ConfigElement interface is sparse. All ConfigElements are expected to implement
+
+a public <b>clone()</b> method. The reason for this is that config elements will be cloned
+
+for each different sampling thread, and most will be cloned for each sample. </p>
+
+<p>If your config element expects to be modified in the process of a test run,
+
+and you want those modifications to carry over from sample to sample (as in
+
+a cookie manager - you want to save all cookies that gets set throughout
+
+the test), then return true for the <b>expectsModification()</b> method. Your config element will not be
+
+cloned for each sample. If your config elements are more static in nature,
+
+return false. If in doubt, return false.</p>
+
+<p><b>addConfigElement()</b> is required so that config elements can be layered. For
+
+instance, let's say a user creates a URL entry that contains default values -
+
+they might use this to specify a server. Then, all their test samples configure
+
+individual test cases, but leave out the server field. This information is combined
+
+via the <b>addConfigElement()</b> method. Your custom config elements should do the right
+
+thing when this method is called. Normally, this involves ignoring such calls unless
+
+the passed in ConfigElement is of the same type as yours, and then only merging in
+
+values that are not already set in the object receiving the call (ie you probably
+
+don't want to overwrite any values).
+
+</p>
+
+<p>You may have noticed there's no specification on how to get the config information
+
+<b>out</b> of a ConfigElement. This raises the question, who is going to use it?
+
+At the end of the line, there will be a Sampler that will need the information held
+
+in your config element. The sampler that uses your config element needs to know more
+
+about the class than the rest of JMeter - that information is not part of this interface.
+
+</p>
+
+<p>If at all possible, extend <b>AbstractConfigElement</b> when creating your own. By doing so,
+
+and by following some simple rules, you will get cloning and saving to XML of your
+
+config element for free (as in, you don't have to do anything!). <b>AbstractConfigElement</b>
+
+stores all it's values in a Map, and provides getProperty and putProperty methods. Your
+
+config element can provide <b>getXXX()</b> and <b>setXXX()</b> methods, but these should delegate
+
+to <b>getProperty()</b> and <b>setProperty()</b>, probably using static Strings as keys in the Map.
+
+<br/>You can store any type of object, provided the objects are clonable and Saveable
+
+(Strings, Integer, Long, Double, Float are all good in this regard).
+
+</p>
+
+<p>One caveat - if your config element has been restored from file, all the values
+
+held in the Map will be String objects (except for elements that implement Saveable
+
+on their own), and you may have to do casting and parsing. Example: an Integer will
+
+have to be converted from a String to an int, so your getXXX() method should check
+
+for this possibility to avoid exceptions.
+
+</p>
+
+<hr/>
+
+<a name="logical"/>
+
+<h3>Creating your own logic SamplerController</h3>
+
+<p>The SamplerController interface looks as follows:</p>
+
+<pre>
+
+ Entry nextEntry();
+
+ Collection getListeners();
+
+ void addSamplerController(SamplerController controller);
+
+ void addConfigElement(ConfigElement config);
+
+ Object clone();
+
+</pre>
+
+<p>Again, <b>clone()</b> is a method that must be implemented to all SamplerControllers to avoid
+
+contamination between sampling threads.</p>
+
+<p>The <b>nextEntry()</b> method is the essential job of a SamplerController - to deliver
+
+Entry objects to be sampled. An Entry object encapsulates all the information needed
+
+by a Sampler to do its job. The <b>nextEntry()</b> method should work like an iterator and
+
+continuously return new Entry objects.
+
+</p>
+
+<p>There are two boundary conditions that need to be handled. If the Controller has no
+
+more Entries to give, for the rest of the test, it should return <b>null</b>. Therefore,
+
+if your Controller has sub-controllers it is receiving Entries from, it should remove
+
+them from its list of controllers to get Entries from. The other condition is when
+
+your controller reaches the end of its list of Entries, and it needs to start over
+
+from the beginning. The parent Controller needs to know this so that it can move
+
+on to its next controller in its list. Therefore, at the end of each iteration,
+
+your SamplerController needs to return a CycleEntry object instead of a normal Entry.
+
+Conversely, this means that if your Controller receives a CycleEntry object, it should
+
+move on to the next Controller in its list.</p>
+
+<p>A logic controller does not generate Entries on its own, but simply regulates
+
+the flow of Entries from its sub-controllers. A logic controller might provide
+
+looping logic, or it might modify the Entries that pass through it, or whatever.
+
+GenericController provides an implementation that does absolutely nothing but
+
+pass Entries on from its sub-controllers. This class is useful both for reference
+
+purposes and to extend, since it provides a lot of methods you're likely to find
+
+useful
+
+</p>
+
+<p><b>getListeners()</b> is an odd member of this Class. It's there to serve those who
+
+want their controller to receive sample data. This would be useful for a controller
+
+that modified Entry objects based on previous sample results (like an HTML spider
+
+that dynamically reacted to previously sampled webpages for links and forms). The
+
+responsibility of the controller implementer is to collect all potential listeners
+
+from the sub-controller list, and add themselves if desired. Most SamplerControllers
+
+that extend GenericController don't have to do anything.</p>
+
+<p><b>addSamplerController(SamplerController controller)</b> is the method used to
+
+add sub controllers to your SamplerController. </p>
+
+<p><b>addConfigElement(ConfigElement config)</b> Your SamplerController should also
+
+be capable of holding configuration elements and adding them to Entries as they
+
+pass through your controller. Again, see GenericController for reference. Essentially,
+
+all Entry objects that get returned by <b>nextEntry()</b> are handed all the ConfigElements
+
+of the controller.
+
+</p>
+
+<hr/>
+
+<a name="testsample"/>
+
+<h3>Creating your own test sample SamplerController</h3>
+
+<p>A SamplerController that generates Entry objects is just like a logic controller
+
+except that it creates its own Entry objects instead of gathering them from
+
+sub-controllers (although, to be fully correct, your test sample SamplerController
+
+should handle both possibilities). Your test sample SamplerController can also
+
+benefit from extending GenericController. By doing so, most of your cloning and
+
+saving needs are handled (but probably not entirely). See HttpTestSample as
+
+reference.</p>
+
+<hr/>
+
+<a name="sampler"/>
+
+<h3>Creating your own Sampler</h3>
+
+<p>The Sampler interface:</p>
+
+<pre>
+
+ public SampleResult sample(Entry e)
+
+</pre>
+
+<p>Your Sampler has two responsibilities. Of lesser importance, it should do whatever
+
+it is you want to do, given an Entry object that hopefully contains information
+
+about what is to be sampled. Of greater importance, your sampler should return
+
+a <b>SampleResult</b> object that holds information about the sampling. Information such
+
+as how long the sample took, the text response from the sample (if appropriate), and
+
+a string that describes the location of what was sampled. The SampleResult interface
+
+is essentially a Map with public static Strings as keys. </p>
+
+<hr/>
+
+<a name="uicomponent"/>
+
+<h3>Making your custom elements play nice as a JMeter UI component</h3>
+
+<p>In order to take part in the JMeter UI, your component needs to implement the
+
+JMeterComponentModel interface:</p>
+
+<pre>
+
+ Class getGuiClass();
+
+ public String getName();
+
+ public void setName(String name);
+
+ public Collection getAddList();
+
+ public String getClassLabel();
+
+ public void uncompile();
+
+</pre>
+
+<p>Most of this stuff is easy, boring, and tedious. <b>getName()</b>, <b>setName()</b> is a simple
+
+String property that is the name of the object. <b>getClassLabel()</b> should return
+
+a String that describes the class. This string will be displayed to the user and
+
+so should be short but meaningful. <b>getGuiClass()</b> should return a Class object for
+
+the class that will be used as a GUI component. This class should be a subclass
+
+of java.awt.Container, and preferably a subclass of <b>javax.swing.JComponent</b>.</p>
+
+<p><b>getAddList()</b> should return a list of either Strings or JMenus. These Strings
+
+represent the Classes that can be added to your SamplerController. Each String
+
+should correspond to the target class's <b>getClassLabel()</b> String. <b>MenuFactory</b> is
+
+a class that will return some preset menu lists (such as all available SamplerControllers,
+
+all available ConfigElements, etc).</p>
+
+<p><b>uncompile()</b> is a cleanup method used between sampling runs. When the user
+
+hits "Start", JMeter "compiles" the objects in the tree. Child nodes are added
+
+to their parent objects recursively until there is one TestPlan object, which is
+
+then submitted for testing. Afterward, these elements have to un-added from their
+
+parent objects, or uncompiled. To uncompile your class, simply clear all your
+
+data structures that are holding sub-elements. For your SamplerController, this
+
+will be the list of sub-controllers and the list of ConfigElements.</p>
+
+<p>That's it, except for your GUI class. If your SamplerController has no
+
+configuration needs, just return org.apache.jmeter.gui.NamePanel, and the user will
+
+at least be able to change the name of your component. Otherwise, create a gui class
+
+that implements the <b>ModelSupported</b> interface:</p>
+
+<pre>
+
+ void setModel(Object model);
+
+ public void updateGui();
+
+</pre>
+
+<p><b>setModel()</b> is used to hand your JMeterModelComponent class to the GUI class when
+
+it is instantiated. It is your responsibility for providing the means by which
+
+the Gui class updates the values in the model class. For updating in the other
+
+direction, there is <b>updateGui()</b>, which the model class can call if necessary.
+
+Note, normally, this call is made for you automatically whenever the Gui is brought
+
+to the screen. If you are creating a Visualizer, then you may need to use <b>updateGui()</b>.
+
+For reference, refer to UrlConfigGui (in org.apache.jmeter.protocol.http.config.gui).</p>
+
+<p>If you have done all this correctly, there's just one more step. If you compile
+
+your classes into the ApacheJMeter.jar file, then you're done. Your classes will
+
+be automatically found and used. Otherwise, you will need to modify jmeter.properties.
+
+The <i>search_paths</i> property should be modified to include the path where your
+
+classes are. This does not obviate the need for your classes to be in the JVM's
+
+CLASSPATH - it is an additional requirement. Otherwise, your classes will not be
+
+detected, and the Gui will not make them available to the user.</p>
+
+<hr/>
+
+<a name="saveable"/>
+
+<h3>Making your custom elements saveable and loadable from within JMeter</h3>
+
+<p>The Saveable interface has just one method:</p>
+
+<pre>
+
+ public Class getTagHandlerClass()
+
+</pre>
+
+<p>This method simply returns the Class object that represents the Class that handles
+
+the saving and loading of your component.</p>
+
+<p>To write this SaveHandler, make a class that extends <b>TagHandler</b>
+
+(from org.apache.jmeter.save.xml). Note, if your component extends AbstractConfigElement,
+
+it is already fully Saveable - provided you only have information stored in
+
+the Map from AbstractConfigElement.</p>
+
+<p>To write your own TagHandler, you will have to implement the following methods:</p>
+
+<pre>
+
+ public abstract void setAtts(Attributes atts) throws Exception
+
+ public String getPrimaryTagName()
+
+ public void save(Saveable objectToSave,Writer out) throws IOException
+
+</pre>
+
+<p><b>getPrimaryTagName()</b> should return the String that is the XML tagname that your
+
+class handles. When you save your object, it should all be contained within an
+
+XML tag of the same name. This will ensure that when JMeter's parser hits that tag,
+
+your class will be called upon to handle the data.</p>
+
+<p><b>setAtts(Attributes atts)</b> is called when the parser first hits your tag.
+
+If this primary tag has any attributes, this method represents your chance to save
+
+the information.</p>
+
+<p><b>save(Saveable objectToSave,Writer out)</b> - when the user selects "Save",
+
+JMeter will call this method and hand the Saveable object to be saved (it will be
+
+the object that specified your TagHandler as the class responsible for it's saving).
+
+This method should use the given Writer object to print all the XML necessary to
+
+save the current state of the objectToSave.</p>
+
+<p>There's more you have to do to handle creating a new Object when JMeter parses
+
+an XML file. However, there's no standard interface you need to implement, but rather,
+
+JMeter uses reflection to generate method calls into your class. When JMeter hits
+
+a tag that corresponds to your PrimaryTagName, an instance of your TagHandler will
+
+be created, and it's <b>setAtts()</b> method will get called. Thereafter, methods are called
+
+depending on subsequent tags and character data. For every tag, JMeter calls
+
+<b><tag-name>TagStart(Attributes atts)</b>, and for every end tag, JMeter calls
+
+<b><tag-name>TagEnd()</b>.</p>
+
+<p>Additionally, JMeter will call a method that corresponds to all tags that are
+
+current. So, for instance, if JMeter runs into a tag name "foo", then
+
+<b>foo(Attributes atts)</b> will be called. If JMeter then parses character data,
+
+then <b>foo(String data)</b> will be called. If JMeter parses a tag within foo, called
+
+"nestedFoo", then JMeter will call <b>foo_nestedFoo(Attributes atts)</b> and
+
+<b>foo_nestedFoo(String data)</b>. And so on.
+
+</p>
+
+<p>An annotated example:</p>
+
+<pre>
+
+public class AbstractConfigElementHandler extends TagHandler
+
+{
+
+ private AbstractConfigElement config;
+
+ private String currentProperty;
+
+
+
+ public AbstractConfigElementHandler()
+
+ {
+
+ }
+
+
+
+ <font color="blue">/**
+
+ * Returns the AbstractConfigElement object parsed from the XML. This method
+
+ * is required to fulfill the SaveHandler interface. It is used by the XML
+
+ * routines to gather all the saved objects.
+
+ */</font>
+
+ public Object getModel()
+
+ {
+
+ return config;
+
+ }
+
+
+
+ <font color="blue">/**
+
+ * This is called when a tag is first encountered for this handler class to handle.
+
+ * The attributes of the tag are passed, and the SaveHandler object is expected
+
+ * to instantiate a new object.
+
+ */</font>
+
+ public void setAtts(Attributes atts) throws Exception
+
+ {
+
+ String className = atts.getValue("type");
+
+ config = (AbstractConfigElement)Class.forName(className).newInstance();
+
+ }
+
+
+
+ <font color="blue">/**
+
+ * Called by reflection when a <property> tag is encountered. Again, the
+
+ * attributes are passed.
+
+ */</font>
+
+ public void property(Attributes atts)
+
+ {
+
+ currentProperty = atts.getValue("name");
+
+ }
+
+
+
+ <font color="blue">/**
+
+ * Called by reflection when text between the begin and end <property>
+
+ * tag is encountered.
+
+ */</font>
+
+ public void property(String data)
+
+ {
+
+
+
+ if(data != null && data.trim().length() > 0)
+
+ {
+
+ config.putProperty(currentProperty,data);
+
+ currentProperty = null;
+
+ }
+
+ }
+
+
+
+ <font color="blue">/**
+
+ * Called by reflection when the <property> tag is ended.
+
+ */</font>
+
+ public void propertyTagEnd()
+
+ {
+
+ <font color="blue">// Here's a tricky bit. See below for explanation.</font>
+
+ List children = xmlParent.takeChildObjects(this);
+
+ if(children.size() == 1)
+
+ {
+
+ config.putProperty(currentProperty,((TagHandler)children.get(0)).getModel());
+
+ }
+
+ }
+
+
+
+
+
+ <font color="blue">/**
+
+ * Gets the tag name that will trigger the use of this object's TagHandler.
+
+ */</font>
+
+ public String getPrimaryTagName()
+
+ {
+
+ return "ConfigElement";
+
+ }
+
+
+
+ <font color="blue">/**
+
+ * Tells the object to save itself to the given output stream.
+
+ */</font>
+
+ public void save(Saveable obj,Writer out) throws IOException
+
+ {
+
+ AbstractConfigElement saved = (AbstractConfigElement)obj;
+
+ out.write("<ConfigElement type=\"");
+
+ out.write(saved.getClass().getName());
+
+ out.write("\">\n");
+
+ Iterator iter = saved.getPropertyNames().iterator();
+
+ while (iter.hasNext())
+
+ {
+
+ String key = (String)iter.next();
+
+ Object value = saved.getProperty(key);
+
+ writeProperty(out,key,value);
+
+ }
+
+ out.write(</ConfigElement>");
+
+ }
+
+
+
+ <font color="blue">/**
+
+ * Routine to write each property to xml.
+
+ */</font>
+
+ private void writeProperty(Writer out,String key,Object value) throws IOException
+
+ {
+
+ out.write("<property name=\"");
+
+ out.write(key);
+
+ out.write("\">\n");
+
+ JMeterHandler.writeObject(value,out);
+
+ out.write("\n</property>\n");
+
+ }
+
+</pre>
+
+<p>
+
+In the <b>propertyTagEnd()</b> method, <b>takeChildObjects()</b> is called on the xmlParent
+
+instance variable. xmlParent is inherited from TagHandler - the DocumentHandler
+
+object that is running the show. xmlParent takes an XML file that represents a portion of
+
+the test configuration tree, and recreates a tree-like data structure. When it is
+
+done, it will convert its tree-like data structure into the test configuration tree
+
+structure.
+
+</p>
+
+<p>However, sometimes, a tree element has sub objects that you do not want represented
+
+in the tree - rather, they are part of your object. But, they may
+
+be complicated enough to warrant their own SaveHandler class, and thus, the xmlParent
+
+picks them up as part of its tree. When the tag is done, and you know that there are
+
+child objects you want to grab, you can call the <b>takeChildObjects()</b> method and get a
+
+List object containing them all. This will remove them from the tree, and you can add
+
+them to your object that you're creating.
+
+</p>
+
+<p>
+
+UrlConfig is good example. It extends AbstractConfigElement, so it uses exactly the
+
+code above to save and reload itself from XML. However, one of the pieces of data
+
+that UrlConfig stores is an Arguments object. Arguments is too complicated to save
+
+to file as a simple string, so it has its own Handler object (ArgumentsHandler). In
+
+the above code, when the call to <b>JMeterHandler.writeObject(value,out)</b> is made, the
+
+writeObject method detects whether the object implements Saveable, and if so, calls
+
+the object's SaveHandler class to deal with it. This means, however, that when
+
+reading that XML file, the Argument object will show up as a separate entity in
+
+the data tree, whereas it originally was just part of the data of the UrlConfig
+
+object. In order to preserve that relationship, it's necessary for the
+
+AbstractConfigElementHandler to check after each property tag is done for child
+
+objects in the tree, and take them for its own use.
+
+</p>
+
+<p>
+
+Study the other SaveHandler objects and the TagHandler class to learn more
+
+about how saving is accomplished. Once you understand the design, writing your
+
+own SaveHandler is very easy.
+
+</p>
+
+
+
+</section>
+
+</body>
+
</document>
No revision
No revision
No revision
1.10 +2 -2 jakarta-jmeter/xdocs/stylesheets/site.vsl
Index: site.vsl
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/stylesheets/site.vsl,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- site.vsl 6 Mar 2002 03:52:03 -0000 1.9
+++ site.vsl 7 Mar 2002 23:03:13 -0000 1.10
@@ -267,7 +267,7 @@
#end
#macro ( subsection $subsection)
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="$subbannerbg">
<font color="$subbannerfg" face="arial,helvetica,sanserif">
<a name="$subsection.getAttributeValue("anchor")"><strong>$subsection.getAttributeValue("name")</strong></a>
@@ -289,7 +289,7 @@
#end
#macro ( section $section)
- <table border="0" cellspacing="0" cellpadding="2">
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="$bannerbg">
<font color="$bannerfg" face="arial,helvetica,sanserif">
<a name="$!section.getAttributeValue("anchor")"><strong>$section.getAttributeValue("name")</strong></a>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>