mstover1 2003/06/12 06:39:43
Modified: docs/usermanual boss.html build-db-test-plan.html
build-ftp-test-plan.html build-test-plan.html
build-web-test-plan.html component_reference.html
functions.html get-started.html remote-test.html
test_plan.html
src/components/org/apache/jmeter/extractor
RegexExtractor.java
src/core/org/apache/jmeter/util JMeterUtils.java
xdocs/stylesheets site_printable.vsl
xdocs/usermanual boss.xml build-db-test-plan.xml
build-ftp-test-plan.xml build-test-plan.xml
build-web-test-plan.xml component_reference.xml
functions.xml get-started.xml remote-test.xml
test_plan.xml
Added: docs/images/screenshots scoping1.png scoping2.png
scoping3.png
Log:
Doc updates
Revision Changes Path
1.1 jakarta-jmeter/docs/images/screenshots/scoping1.png
<<Binary file>>
1.1 jakarta-jmeter/docs/images/screenshots/scoping2.png
<<Binary file>>
1.1 jakarta-jmeter/docs/images/screenshots/scoping3.png
<<Binary file>>
1.28 +8 -0 jakarta-jmeter/docs/usermanual/boss.html
Index: boss.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/boss.html,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- boss.html 11 Jun 2003 19:30:21 -0000 1.27
+++ boss.html 12 Jun 2003 13:39:41 -0000 1.28
@@ -271,6 +271,14 @@
configuration in your published benchmarks.
</p>
+
<p >
+ Don't forget JMeter
batch mode. This can be useful if you have a powerful server
+that supports Java but perhaps does not have a fast graphics implementation,
+or where you need to login remotely.
+Batch mode can reduce the network traffic compared with using a remote display or
client-server mode.
+The batch log file can then be loaded into JMeter on a workstation for analysis, or
you can
+use CSV output and import the data into a spreadsheet.
+ </p>
</blockquote>
</td></tr>
<tr><td><br></td></tr>
1.27 +2 -2 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.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- build-db-test-plan.html 11 Jun 2003 19:30:21 -0000 1.26
+++ build-db-test-plan.html 12 Jun 2003 13:39:41 -0000 1.27
@@ -101,7 +101,7 @@
<a href="build-test-plan.html">
Test Plan
</a>
- to test an
database server.
+ to test a
database server.
You will create ten users that send five SQL requests to the database server.
Also, you will tell the users to run their tests three times. So, the total number
of requests is (10 users) x (2 requests) x (repeat 3 times) = 60 JDBC requests.
@@ -123,7 +123,7 @@
org.postgresql.Driver
</b>
database
driver.
-To use this driver, its' containing .jar file must be copied to the extension
+To use this driver, its containing .jar file must be copied to the extension
.../lib/ directory (see
<a href="get-started.html#classpath">
JMeter's Classpath
1.28 +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.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- build-ftp-test-plan.html 11 Jun 2003 19:30:21 -0000 1.27
+++ build-ftp-test-plan.html 12 Jun 2003 13:39:41 -0000 1.28
@@ -284,7 +284,7 @@
second is for the tutorial file (ftp://ftp.oro.com/pub/msql/java/tutorial.txt).
</p>
<p><table
border="1" bgcolor="#bbbb00" width="50%" cellspacing="0" cellpadding="2">
- <tr><td> JMeter sends
requests in the order that you add them to the tree.
+ <tr><td> JMeter sends
requests in the order that they appear in the tree.
</td></tr>
</table></p>
<p >
1.27 +51 -0 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.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- build-test-plan.html 11 Jun 2003 19:30:21 -0000 1.26
+++ build-test-plan.html 12 Jun 2003 13:39:41 -0000 1.27
@@ -196,6 +196,57 @@
</td></tr>
<tr><td><br></td></tr>
</table>
+
<table border="0" cellspacing="0" cellpadding="2"
width="100%">
+ <tr><td bgcolor="#525D76">
+ <font color="#ffffff" face="arial,helvetica,sanserif">
+ <a name="scoping_rules"><strong>3.5 Scoping Rules</strong></a>
+ </font>
+ </td></tr>
+ <tr><td>
+ <blockquote>
+
<p >
+
+The JMeter test tree contains elements that are both hierarchical and ordered.
Some elements in the test trees are strictly hierarchical (Listeners, Config Elements,
Post-Procesors, Pre-Processors, Assertions, Timers), and some are primarily ordered
(controllers, samplers). When you create your test plan, you will create an ordered
list of sample request (via Samplers) that represent a set of steps to be executed.
These requests are often organized within controllers that are also ordered. Given
the following test tree:
+ </p>
+
<p><table
border="0" cellspacing="0" cellpadding="0"><tr><td><img
src="../images/screenshots/scoping1.png"><br>
+ <font size="-1"> Example test
tree
+ </font></td></tr></table></p>
+
<p >
+ The order of requests
will be, One, Two, Three, Four.
+ </p>
+
<p >
+ Some controllers
affect the order of their subelements, and you can read about these specific
controllers in
+
<a href="component_reference.html">
+ the component reference
+ </a>
+ .
+ </p>
+
<p >
+ Other elements are
hierarchical. An Assertion, for instance, is hierarchical in the test tree. This
means it is applied to all requests that occur at it's level and below. In the
following test tree:
+ </p>
+
<p><table
border="0" cellspacing="0" cellpadding="0"><tr><td><img
src="../images/screenshots/scoping2.png"><br>
+ <font size="-1"> Hierarchy
example
+ </font></td></tr></table></p>
+
<p >
+ Assertion #1 is
applied only to Request One, while Assertion #2 is applied to Requests Two and Three.
+ </p>
+
<p >
+ Another example, this
time using Timers:
+ </p>
+
<p><table
border="0" cellspacing="0" cellpadding="0"><tr><td><img
src="../images/screenshots/scoping3.png"><br>
+ <font size="-1"> complex example
+ </font></td></tr></table></p>
+
<p >
+ In this example, the
requests or named to reflect the order in which they will be executed. Timer #1 will
apply to Requests Two, Three, and Four (notice how order is irrelevant for
hierarchical elements). Assertion #1 will apply only to Request Three. Timer #2 will
affect all the requests.
+ </p>
+
<p >
+ Hopefully these
examples make it clear how configuration (hierarchical) elements are applied. If you
imagine each Request being passed up the tree branches, to its parent, then to its
parent's parent, etc, and each time collecting all the configuration elements of that
parent, then you will see how it works.
+ </p>
+ </blockquote>
+ </p>
+ </td></tr>
+ <tr><td><br></td></tr>
+ </table>
</td>
</tr>
1.36 +2 -3 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.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- build-web-test-plan.html 11 Jun 2003 19:30:21 -0000 1.35
+++ build-web-test-plan.html 12 Jun 2003 13:39:41 -0000 1.36
@@ -324,8 +324,7 @@
Project Guidelines page (http://jakarta.apache.org/site/guidelines.html).
</p>
<p><table
border="1" bgcolor="#bbbb00" width="50%" cellspacing="0" cellpadding="2">
- <tr><td> JMeter sends
requests in the order that you add them
-to the tree.
+ <tr><td> JMeter sends
requests in the order that they appear in the tree.
</td></tr>
</table></p>
<p >
@@ -415,7 +414,7 @@
output file. You can either type it into the filename field, or select the
Browse button and browse to a directory and then enter a filename.
</p>
-
<p><table
border="0" cellspacing="0" cellpadding="0"><tr><td><img
src="../images/screenshots/graph_results.gif"><br>
+
<p><table
border="0" cellspacing="0" cellpadding="0"><tr><td><img
src="../images/screenshots/graph_results.png"><br>
<font size="-1">
Figure 5.7. Graph Results Listener
</font></td></tr></table></p>
1.47 +173 -8 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.46
retrieving revision 1.47
diff -u -r1.46 -r1.47
--- component_reference.html 12 Jun 2003 12:17:17 -0000 1.46
+++ component_reference.html 12 Jun 2003 13:39:41 -0000 1.47
@@ -176,6 +176,10 @@
<li><a href="#__threadNum">__threadNum</a></li>
<li><a href="#__intsum">__intsum</a></li>
<li><a
href="#_StringFromFile">_StringFromFile</a></li>
+ <li><a
href="#__machineName">__machineName</a></li>
+ <li><a
href="#__javaScript">__javaScript</a></li>
+ <li><a href="#__Random">__Random</a></li>
+ <li><a href="#__CSVFile">__CSVFile</a></li>
</ul>
</ul>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
@@ -1204,7 +1208,7 @@
</td>
<td
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
- Because there are no more requests in controller,
JMeter start over and sends the first HTTP Request, which is the News Page.
+ Because there are no more requests in the
controller,<br /> JMeter starts over and sends the first HTTP Request, which is the
News Page.
</font>
</td>
</tr>
@@ -1779,10 +1783,10 @@
<pre >
- timeStamp|time|label|responseCode|threadName|dataType|success|failureMessage
- 02/06/03 08:21:42|1187|Backoffice Home|200|Thread Group-1|text|true|
- 02/06/03 08:21:42|47|Login BO|200|Thread Group-1|text|false|Test Failed,
expected to contain: password
- etc.
+timeStamp|time|label|responseCode|threadName|dataType|success|failureMessage
+02/06/03 08:21:42|1187|Backoffice Home|200|Thread Group-1|text|true|
+02/06/03 08:21:42|47|Login BO|200|Thread Group-1|text|false|Test Failed,
+ expected to contain: password etc.
</pre>
@@ -3947,7 +3951,7 @@
</tr>
<tr>
<td>Reference Name</td>
- <td> The name of
the JMeter variable in which to store the result.
+ <td> The name of
the JMeter variable in which to store the result. Also note that each group is stored
as [refname]_g#, where [refname] is the string you entered as the reference name, and
# is the group number, where group 0 is the entire match, group 1 is the match from
the first set of parentheses, etc.
</td>
<td>
Yes
@@ -4534,8 +4538,7 @@
<tr>
<td>Second argument</td>
<td>
- A reference name - refName - for reusing the value created by this
function.
- Stored values are of the form ${refName}.
+A reference name - refName - for reusing the value created by this function. Stored
values are of the form ${refName}.
</td>
<td>
@@ -4550,6 +4553,168 @@
<p >
The reference name
parameter (if supplied) is resolved every time the function is executed.
</p>
+ </td></tr>
+ <tr><td><br></td></tr>
+ </table>
+ <hr>
+
<table
border="0" cellspacing="0" cellpadding="2">
+ <tr><td>
+ <font face="arial,helvetica,sanserif">
+ <a name="__machineName"><h3>13.10.6 __machineName</h3></a>
+ </font>
+ </td></tr>
+ <tr><td>
+
<p
>
+ The machineName
function returns the local host name
+ </p>
+
<p>
+ <b>Parameters</b>
+ <table border="1" cellspacing="0" cellpadding="2">
+ <tr><th>Attribute</th><th>Description</th><th>Required</th></tr>
+ <tr>
+ <td>Name of function</td>
+ <td> A reference
name for reusing the value
+ computed by this function.
+ </td>
+ <td>
+
Yes
+ </td>
+ </tr>
+ </table>
+ </p>
+ </td></tr>
+ <tr><td><br></td></tr>
+ </table>
+ <hr>
+
<table
border="0" cellspacing="0" cellpadding="2">
+ <tr><td>
+ <font face="arial,helvetica,sanserif">
+ <a name="__javaScript"><h3>13.10.7 __javaScript</h3></a>
+ </font>
+ </td></tr>
+ <tr><td>
+
<p
>
+ The javaScript
function executes a piece of JavaScript (not Java!) code and returns its value
+ </p>
+
+
+
<p>
+ <b>Parameters</b>
+ <table border="1" cellspacing="0" cellpadding="2">
+ <tr><th>Attribute</th><th>Description</th><th>Required</th></tr>
+ <tr>
+ <td>Expression</td>
+ <td> The JavaScript
expression to be executed.
+ </td>
+ <td>
+
Yes
+ </td>
+ </tr>
+ <tr>
+ <td>Name of function</td>
+ <td> A reference
name for reusing the value
+ computed by this function.
+ </td>
+ <td>
+
Yes
+ </td>
+ </tr>
+ </table>
+ </p>
+ </td></tr>
+ <tr><td><br></td></tr>
+ </table>
+ <hr>
+
<table
border="0" cellspacing="0" cellpadding="2">
+ <tr><td>
+ <font face="arial,helvetica,sanserif">
+ <a name="__Random"><h3>13.10.8 __Random</h3></a>
+ </font>
+ </td></tr>
+ <tr><td>
+
<p
>
+ The random function
returns a random number that lies between the given min and max values.
+ </p>
+
<p>
+ <b>Parameters</b>
+ <table border="1" cellspacing="0" cellpadding="2">
+ <tr><th>Attribute</th><th>Description</th><th>Required</th></tr>
+ <tr>
+ <td>Minimum value</td>
+ <td> A number
+ </td>
+ <td>
+
Yes
+ </td>
+ </tr>
+ <tr>
+ <td>Maximum value</td>
+ <td> A bigger number
+ </td>
+ <td>
+
Yes
+ </td>
+ </tr>
+ <tr>
+ <td>Name of function</td>
+ <td> A reference
name for reusing the value
+ computed by this function.
+ </td>
+ <td>
+
Yes
+ </td>
+ </tr>
+ </table>
+ </p>
+ </td></tr>
+ <tr><td><br></td></tr>
+ </table>
+ <hr>
+
<table
border="0" cellspacing="0" cellpadding="2">
+ <tr><td>
+ <font face="arial,helvetica,sanserif">
+ <a name="__CSVFile"><h3>13.10.8 __CSVFile</h3></a>
+ </font>
+ </td></tr>
+ <tr><td>
+
<p
>
+ The CSVFile function
returns a string from a CSV file (c.f.
+
<a href="#_StringFromFile">
+ StringFromFile
+ </a>
+ )
+ </p>
+
+
+
<p >
+ NOTE: A single
instance of the file is opened and used for all threads.
+ </p>
+
<p>
+ <b>Parameters</b>
+ <table border="1" cellspacing="0" cellpadding="2">
+ <tr><th>Attribute</th><th>Description</th><th>Required</th></tr>
+ <tr>
+ <td>File Name</td>
+ <td> The file to
read from
+ </td>
+ <td>
+
Yes
+ </td>
+ </tr>
+ <tr>
+ <td>Column number</td>
+ <td>
+ The column number in the file.
+ 0 = first column, 1 = second etc.
+ "next" - go to next line of file.
+
+ </td>
+ <td>
+
Yes
+ </td>
+ </tr>
+ </table>
+ </p>
</td></tr>
<tr><td><br></td></tr>
</table>
1.17 +2 -2 jakarta-jmeter/docs/usermanual/functions.html
Index: functions.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/functions.html,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- functions.html 11 Jun 2003 19:30:22 -0000 1.16
+++ functions.html 12 Jun 2003 13:39:42 -0000 1.17
@@ -125,7 +125,7 @@
<br >
</br>
-User-defined static values allows the user to define variables to be replaced with
their static value when
+User-defined static values allow the user to define variables to be replaced with
their static value when
a test tree is compiled and submitted to be run. This replacement happens once at
the beginning of the test
run. This could be used to replace the DOMAIN field of all HTTP requests, for
example - making it a simple
matter to change a test to target a different server with the same test.
@@ -134,7 +134,7 @@
<p >
This type of
replacement is possible without functions, but was less convenient and less intuitive.
It required users to create default config elements that would fill in blank values
of Samplers. User-defined
-functions allows one to replace only part of any given value, not just filling in
blank values.
+functions allow one to replace only part of any given value, not just filling in
blank values.
</p>
<p >
1.35 +29 -2 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.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- get-started.html 11 Jun 2003 19:30:22 -0000 1.34
+++ get-started.html 12 Jun 2003 13:39:42 -0000 1.35
@@ -593,10 +593,37 @@
-L[category]=[priority] - overrides a logging setting, setting a particular category
to the given priority level.
</p>
<p >
+ The -L flag can also
be used without the category name to set the root logging level.
+ </p>
+
<p >
<b >
- Example
+ Examples
</b>
- : jmeter
-Duser.dir=/home/mstover/jmeter_stuff -Jremote_hosts=127.0.0.1 -Ljmeter.engine=DEBUG
+ :
+
+
<pre >
+
+jmeter -Duser.dir=/home/mstover/jmeter_stuff \
+ -Jremote_hosts=127.0.0.1 -Ljmeter.engine=DEBUG
+
+jmeter -LDEBUG
+ </pre>
+
+
+ </p>
+
<p >
+
+
+
<b >
+ N.B.
+
<br >
+ </br>
+
+ The command line properties are processed early in startup, but after the
logging system has been set up.
+ Attempts to use the -J flag to update log_level or log_file properties will
have no effect.
+ </b>
+
+
</p>
</blockquote>
</td></tr>
1.30 +8 -0 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.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- remote-test.html 11 Jun 2003 19:30:22 -0000 1.29
+++ remote-test.html 12 Jun 2003 13:39:42 -0000 1.30
@@ -171,6 +171,14 @@
add the value of your running JMeter server's IP address. Multiple such servers
can be added, comma-delimited.
</p>
<p >
+ Note that you can also
use the -J
+
<a href="get-started.html#override">
+ command line option
+ </a>
+ to specify
the remote host(s) to use.
+ E.g. jmeter -Jremote_hosts=host1,127.0.0.1,host2
+ </p>
+
<p >
<b >
Step 3: Start the
JMeter Client
</b>
1.25 +56 -3 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.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- test_plan.html 11 Jun 2003 19:30:22 -0000 1.24
+++ test_plan.html 12 Jun 2003 13:39:42 -0000 1.25
@@ -12,7 +12,7 @@
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1"/>
- <title>JMeter - User's Manual: Thread Group</title>
+ <title>JMeter - User's Manual: Elements of a Test
Plan</title>
</head>
<body bgcolor="#ffffff" text="#000000" link="#525D76">
@@ -154,6 +154,18 @@
Alternatively, you can set the number of times the thread group will loop before
ending. If the number
is set at one, then JMeter will execute the test only once before stopping.
</p>
+
<p >
+ Version 1.9 introduces
a test run
+
<b >
+ scheduler
+ </b>
+ .
+ Click the checkbox at the bottom of the Thread Group panel to reveal two extra
fields
+ in which you can enter the start and end times of the run.
+ When the test is started, JMeter will wait if necessary until the start-time
has been reached.
+ At the end of each cycle, JMeter checks if the end-time has been reached, and
if so, the run is stopped,
+ otherwise the test is allowed to continue until the iteration limit is
reached.
+ </p>
</blockquote>
</td></tr>
<tr><td><br></td></tr>
@@ -207,8 +219,49 @@
<blockquote>
<p >
Samplers tell JMeter
to send requests to a server. JMeter
-currently has four such samplers: FTP Request, HTTP Request, JDBC Request, and
-the Java object request. Each sampler has several properties you can set.
+currently has the following samplers:
+
+
<ul >
+
+
+
<li >
+ FTP Request
+ </li>
+
+
+
<li >
+ HTTP Request
+ </li>
+
+
+
<li >
+ JDBC Request
+ </li>
+
+
+
<li >
+ Java object request
+ </li>
+
+
+
<li >
+ LDAP Request
+ </li>
+
+
+
<li >
+ SOAP/XML-RPC Request
+ </li>
+
+
+
<li >
+ WebService (SOAP)
Request (Alpha Code)
+ </li>
+
+
+ </ul>
+
+Each sampler has several properties you can set.
You can further customize a sampler by adding one or more Configuration Elements to
it.
Also, note that JMeter sends requests in the order that you add them to the tree.
</p>
1.6 +14 -0
jakarta-jmeter/src/components/org/apache/jmeter/extractor/RegexExtractor.java
Index: RegexExtractor.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/extractor/RegexExtractor.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- RegexExtractor.java 2 May 2003 21:38:10 -0000 1.5
+++ RegexExtractor.java 12 Jun 2003 13:39:42 -0000 1.6
@@ -87,11 +87,25 @@
if(match != null)
{
context.getVariables().put(getRefName(), generateResult(match));
+ saveGroups(context.getVariables(),getRefName(),match);
}
}
catch (RuntimeException e)
{
log.warn("Error while generating result");
+ }
+ }
+
+ private void saveGroups(JMeterVariables vars,String basename,MatchResult match)
+ {
+ StringBuffer buf = new StringBuffer();
+ for(int x = 0;x < match.groups();x++)
+ {
+ buf.append(basename);
+ buf.append("_g");
+ buf.append(x);
+ vars.put(buf.toString(),match.group(x));
+ buf.setLength(0);
}
}
1.31 +3 -2 jakarta-jmeter/src/core/org/apache/jmeter/util/JMeterUtils.java
Index: JMeterUtils.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/util/JMeterUtils.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- JMeterUtils.java 11 Jun 2003 14:32:00 -0000 1.30
+++ JMeterUtils.java 12 Jun 2003 13:39:42 -0000 1.31
@@ -96,7 +96,7 @@
*/
public class JMeterUtils implements UnitTestManager
{
- private static final String VERSION="1.9.RC20030611";
+ private static final String VERSION="1.9.RC20030612";
private static PatternCacheLRU patternCache = new PatternCacheLRU(1000,new
Perl5Compiler());
transient private static Logger log = LoggingManager.getLoggerForClass();
@@ -974,6 +974,7 @@
return VERSION;
}
}
+
1.6 +17 -0 jakarta-jmeter/xdocs/stylesheets/site_printable.vsl
Index: site_printable.vsl
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/stylesheets/site_printable.vsl,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- site_printable.vsl 11 Jun 2003 15:49:30 -0000 1.5
+++ site_printable.vsl 12 Jun 2003 13:39:42 -0000 1.6
@@ -345,16 +345,31 @@
#end
#macro (makeIndex $subsections)
+#set ($level2 = $root.getAttributeValue("index-level-2"))
+#set ($colbreak = $root.getAttributeValue("colbreak"))
+#if ("$!colbreak" != "")
+<table width="100%">
+<tr><td valign="top">
+#end
<ul>
#foreach ($sect in $subsections)
+ #if (("$!colbreak" != "") &&
($sect.getAttributeValue("name").startsWith("$colbreak")))
+ </ul></td><td valign="top"><ul>
+ #end
<li><a
href="#$sect.getAttributeValue("anchor")">$sect.getAttributeValue("name")</a></li>
+ #if ("$!level2" != "no")
<ul>
#foreach ($comp in $sect.getChildren("component"))
<li><a
href="#$comp.getAttributeValue("name").replace($space,$udsc)">$comp.getAttributeValue("name")</a></li>
#end
</ul>
+ #end
#end
</ul>
+#if ("$!colbreak" != "")
+ </td></tr>
+</table>
+#end
#end
#macro (getProjectImage)
@@ -419,6 +434,8 @@
#foreach ( $section in $allSections )
#section ($section)
#end
+ <br/>
+ #pagelinks()
</td>
</tr>
1.7 +7 -1 jakarta-jmeter/xdocs/usermanual/boss.xml
Index: boss.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/boss.xml,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- boss.xml 11 Jun 2003 15:49:30 -0000 1.6
+++ boss.xml 12 Jun 2003 13:39:42 -0000 1.7
@@ -84,6 +84,12 @@
software that you have available. Remember to include the hardware/software
configuration in your published benchmarks.
</p>
+<p>Don't forget JMeter batch mode. This can be useful if you have a powerful server
+that supports Java but perhaps does not have a fast graphics implementation,
+or where you need to login remotely.
+Batch mode can reduce the network traffic compared with using a remote display or
client-server mode.
+The batch log file can then be loaded into JMeter on a workstation for analysis, or
you can
+use CSV output and import the data into a spreadsheet.</p>
</subsection>
<subsection name="12.4 Tools">
<p>The following tools will all prove useful. It is definitely worthwhile to
1.6 +3 -3 jakarta-jmeter/xdocs/usermanual/build-db-test-plan.xml
Index: build-db-test-plan.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/build-db-test-plan.xml,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- build-db-test-plan.xml 11 Jun 2003 15:49:30 -0000 1.5
+++ build-db-test-plan.xml 12 Jun 2003 13:39:42 -0000 1.6
@@ -10,7 +10,7 @@
<section name="7. Building a Database Test Plan" anchor="building">
<p>In this section, you will learn how to create a basic
-<a href="build-test-plan.html">Test Plan</a> to test an database server.
+<a href="build-test-plan.html">Test Plan</a> to test a database server.
You will create ten users that send five SQL requests to the database server.
Also, you will tell the users to run their tests three times. So, the total number
of requests is (10 users) x (2 requests) x (repeat 3 times) = 60 JDBC requests.
@@ -19,7 +19,7 @@
<complink name="JDBC Request"/>, <complink name="Graph Results"/>.</p>
<note>This example uses the PostgreSQL <b>org.postgresql.Driver</b> database driver.
-To use this driver, its' containing .jar file must be copied to the extension
+To use this driver, its containing .jar file must be copied to the extension
.../lib/ directory (see <a href="get-started.html#classpath">JMeter's Classpath</a>
for more details). Otherwise, expect a substantial amount of stack traces when
running this test plan.</note>
1.7 +2 -2 jakarta-jmeter/xdocs/usermanual/build-ftp-test-plan.xml
Index: build-ftp-test-plan.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/build-ftp-test-plan.xml,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- build-ftp-test-plan.xml 11 Jun 2003 15:49:30 -0000 1.6
+++ build-ftp-test-plan.xml 12 Jun 2003 13:39:42 -0000 1.7
@@ -122,7 +122,7 @@
O'Reilly mSQL Java README file (ftp://ftp.oro.com/pub/msql/java/README), and the
second is for the tutorial file (ftp://ftp.oro.com/pub/msql/java/tutorial.txt).</p>
-<note>JMeter sends requests in the order that you add them to the tree.</note>
+<note>JMeter sends requests in the order that they appear in the tree.</note>
<p>Start by adding the first <complink name="FTP Request"/>
to the O'Reilly Users element (Add --> Sampler --> FTP Request).
1.9 +16 -1 jakarta-jmeter/xdocs/usermanual/build-test-plan.xml
Index: build-test-plan.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/build-test-plan.xml,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- build-test-plan.xml 11 Jun 2003 15:49:30 -0000 1.8
+++ build-test-plan.xml 12 Jun 2003 13:39:42 -0000 1.9
@@ -52,6 +52,21 @@
</subsection>
</section>
+<section name="3.5 Scoping Rules" anchor="scoping_rules">
+<p>
+The JMeter test tree contains elements that are both hierarchical and ordered.
Some elements in the test trees are strictly hierarchical (Listeners, Config Elements,
Post-Procesors, Pre-Processors, Assertions, Timers), and some are primarily ordered
(controllers, samplers). When you create your test plan, you will create an ordered
list of sample request (via Samplers) that represent a set of steps to be executed.
These requests are often organized within controllers that are also ordered. Given
the following test tree:</p>
+<figure image="../images/screenshots/scoping1.png">Example test tree</figure>
+<p>The order of requests will be, One, Two, Three, Four.</p>
+<p>Some controllers affect the order of their subelements, and you can read about
these specific controllers in <a href="component_reference.html">the component
reference</a>.</p>
+<p>Other elements are hierarchical. An Assertion, for instance, is hierarchical in
the test tree. This means it is applied to all requests that occur at it's level and
below. In the following test tree:</p>
+<figure image="../images/screenshots/scoping2.png">Hierarchy example</figure>
+<p>Assertion #1 is applied only to Request One, while Assertion #2 is applied to
Requests Two and Three.</p>
+<p>Another example, this time using Timers:</p>
+<figure image="../images/screenshots/scoping3.png">complex example</figure>
+<p>In this example, the requests or named to reflect the order in which they will
be executed. Timer #1 will apply to Requests Two, Three, and Four (notice how order
is irrelevant for hierarchical elements). Assertion #1 will apply only to Request
Three. Timer #2 will affect all the requests.</p>
+<p>Hopefully these examples make it clear how configuration (hierarchical) elements
are applied. If you imagine each Request being passed up the tree branches, to its
parent, then to its parent's parent, etc, and each time collecting all the
configuration elements of that parent, then you will see how it works. </p>
+</section>
+
</body>
</document>
1.16 +3 -4 jakarta-jmeter/xdocs/usermanual/build-web-test-plan.xml
Index: build-web-test-plan.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/build-web-test-plan.xml,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- build-web-test-plan.xml 11 Jun 2003 15:49:30 -0000 1.15
+++ build-web-test-plan.xml 12 Jun 2003 13:39:42 -0000 1.16
@@ -139,8 +139,7 @@
Jakarta home page (http://jakarta.apache.org/), and the second one is for the
Project Guidelines page (http://jakarta.apache.org/site/guidelines.html).</p>
-<note>JMeter sends requests in the order that you add them
-to the tree.</note>
+<note>JMeter sends requests in the order that they appear in the tree.</note>
<p>Start by adding the first <complink name="HTTP Request"/>
to the Jakarta Users element (Add --> Sampler --> HTTP Request).
@@ -181,7 +180,7 @@
output file. You can either type it into the filename field, or select the
Browse button and browse to a directory and then enter a filename.</p>
-<figure image="../images/screenshots/graph_results.gif">
+<figure image="../images/screenshots/graph_results.png">
Figure 5.7. Graph Results Listener</figure>
</section>
1.45 +54 -9 jakarta-jmeter/xdocs/usermanual/component_reference.xml
Index: component_reference.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/component_reference.xml,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -r1.44 -r1.45
--- component_reference.xml 12 Jun 2003 12:17:17 -0000 1.44
+++ component_reference.xml 12 Jun 2003 13:39:42 -0000 1.45
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<document index="yes" prev="boss.html" next="functions.html" date="$Date$">
+<document index="yes" index-level-2="yes" colbreak="13.5" prev="boss.html"
next="functions.html" date="$Date$">
<properties>
<title>User's Manual: Component Reference</title>
@@ -326,7 +326,7 @@
<tr valign="top"><td>2</td><td>Log Page</td></tr>
<tr valign="top"><td>3</td><td>Gump Page</td></tr>
<tr valign="top"><td>2</td><td>Log Page</td></tr>
-<tr valign="top"><td>4</td><td>Because there are no more requests in controller,
JMeter start over and sends the first HTTP Request, which is the News Page.</td></tr>
+<tr valign="top"><td>4</td><td>Because there are no more requests in the
controller,<br/> JMeter starts over and sends the first HTTP Request, which is the
News Page.</td></tr>
<tr valign="top"><td>2</td><td>Log Page</td></tr>
<tr valign="top"><td>5</td><td>FAQ Page</td></tr>
<tr valign="top"><td>2</td><td>Log Page</td></tr>
@@ -534,10 +534,10 @@
<p>
<code>
<pre>
- timeStamp|time|label|responseCode|threadName|dataType|success|failureMessage
- 02/06/03 08:21:42|1187|Backoffice Home|200|Thread Group-1|text|true|
- 02/06/03 08:21:42|47|Login BO|200|Thread Group-1|text|false|Test Failed,
expected to contain: password
- etc.
+timeStamp|time|label|responseCode|threadName|dataType|success|failureMessage
+02/06/03 08:21:42|1187|Backoffice Home|200|Thread Group-1|text|true|
+02/06/03 08:21:42|47|Login BO|200|Thread Group-1|text|false|Test Failed,
+ expected to contain: password etc.
</pre>
</code></p>
<p>
@@ -1261,7 +1261,7 @@
generate the template string, and store the result into the given variable
name.</p></description>
<properties>
<property name="Name" required="">Descriptive name for this element that is
shown in the tree.</property>
- <property name="Reference Name" required="Yes">The name of the JMeter
variable in which to store the result.</property>
+ <property name="Reference Name" required="Yes">The name of the JMeter
variable in which to store the result. Also note that each group is stored as
[refname]_g#, where [refname] is the string you entered as the reference name, and #
is the group number, where group 0 is the entire match, group 1 is the match from the
first set of parentheses, etc.</property>
<property name="Regular Expression" required="Yes">The regular expression
used to parse the response data.</property>
<property name="Template" required="Yes">The template used to create a
string from the matches found. This is an arbitrary string
with special elements to refer to groups within the regular expression.
The syntax to refer to a group is: '$1$' to refer to
@@ -1463,13 +1463,58 @@
(The path can be relative to the JMeter launch directory)
</property>
<property name="Second argument" required="No">
- A reference name - refName - for reusing the value created by this
function.
- Stored values are of the form ${refName}.
+A reference name - refName - for reusing the value created by this function. Stored
values are of the form ${refName}.
</property>
</properties>
<p>The file name parameter is resolved when the file is opened or re-opened.</p>
<p>The reference name parameter (if supplied) is resolved every time the function
is executed.</p>
</component>
+
+<component index="13.10.6" name="__machineName">
+<description><p>The machineName function returns the local host
name</p></description>
+
+<properties>
+ <property name="Name of function" required="Yes">A reference name for
reusing the value
+ computed by this function.</property>
+</properties>
+</component>
+
+<component index="13.10.7" name="__javaScript">
+<description><p>The javaScript function executes a piece of JavaScript (not Java!)
code and returns its value</p>
+ </description>
+
+<properties>
+ <property name="Expression" required="Yes">The JavaScript expression to be
executed.</property>
+ <property name="Name of function" required="Yes">A reference name for
reusing the value
+ computed by this function.</property>
+</properties>
+</component>
+
+<component index="13.10.8" name="__Random">
+<description><p>The random function returns a random number that lies between the
given min and max values.</p></description>
+
+<properties>
+ <property name="Minimum value" required="Yes">A number</property>
+ <property name="Maximum value" required="Yes">A bigger number</property>
+ <property name="Name of function" required="Yes">A reference name for
reusing the value
+ computed by this function.</property>
+</properties>
+</component>
+
+<component index="13.10.8" name="__CSVFile">
+<description><p>The CSVFile function returns a string from a CSV file (c.f. <a
href="#_StringFromFile">StringFromFile</a>)</p>
+ <p>NOTE: A single instance of the file is opened and used for all
threads.</p></description>
+
+<properties>
+ <property name="File Name" required="Yes">The file to read from</property>
+ <property name="Column number" required="Yes">
+ The column number in the file.
+ 0 = first column, 1 = second etc.
+ "next" - go to next line of file.
+ </property>
+</properties>
+</component>
+
</section>
</body>
</document>
1.4 +3 -3 jakarta-jmeter/xdocs/usermanual/functions.xml
Index: functions.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/functions.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- functions.xml 11 Jun 2003 15:49:30 -0000 1.3
+++ functions.xml 12 Jun 2003 13:39:42 -0000 1.4
@@ -22,14 +22,14 @@
<subsection name="14.1 What can functions do" anchor="what_can_do">
<p>There are two kinds of functions: user-defined static values, and built-in
functions.<br/>
-User-defined static values allows the user to define variables to be replaced with
their static value when
+User-defined static values allow the user to define variables to be replaced with
their static value when
a test tree is compiled and submitted to be run. This replacement happens once at
the beginning of the test
run. This could be used to replace the DOMAIN field of all HTTP requests, for
example - making it a simple
matter to change a test to target a different server with the same test.
</p>
<p>This type of replacement is possible without functions, but was less convenient
and less intuitive.
It required users to create default config elements that would fill in blank values
of Samplers. User-defined
-functions allows one to replace only part of any given value, not just filling in
blank values.</p>
+functions allow one to replace only part of any given value, not just filling in
blank values.</p>
<p>
With built-in functions users can compute new values at run-time based on previous
response data, which
thread the function is in, the time, and many other sources. These values are
generated fresh for every
1.18 +14 -2 jakarta-jmeter/xdocs/usermanual/get-started.xml
Index: get-started.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/get-started.xml,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- get-started.xml 11 Jun 2003 15:49:30 -0000 1.17
+++ get-started.xml 12 Jun 2003 13:39:42 -0000 1.18
@@ -154,7 +154,19 @@
<p>-D[prop_name]=[value] - defines a java system property value.</p>
<p>-J[prop name]=[value] - overrides a JMeter property.</p>
<p>-L[category]=[priority] - overrides a logging setting, setting a particular
category to the given priority level.</p>
-<p><b>Example</b>: jmeter -Duser.dir=/home/mstover/jmeter_stuff
-Jremote_hosts=127.0.0.1 -Ljmeter.engine=DEBUG</p>
+<p>The -L flag can also be used without the category name to set the root logging
level.</p>
+ <p><b>Examples</b>:
+<pre>
+jmeter -Duser.dir=/home/mstover/jmeter_stuff \
+ -Jremote_hosts=127.0.0.1 -Ljmeter.engine=DEBUG
+
+jmeter -LDEBUG</pre>
+</p>
+<p>
+<b>N.B.<br/>
+ The command line properties are processed early in startup, but after the
logging system has been set up.
+ Attempts to use the -J flag to update log_level or log_file properties will
have no effect.</b>
+ </p>
</subsection>
</section>
1.12 +3 -2 jakarta-jmeter/xdocs/usermanual/remote-test.xml
Index: remote-test.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/remote-test.xml,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- remote-test.xml 11 Jun 2003 19:01:32 -0000 1.11
+++ remote-test.xml 12 Jun 2003 13:39:42 -0000 1.12
@@ -41,6 +41,8 @@
<p><b>Step 2: Add the server IP to your client's Properties File</b></p>
<p>Edit the properties file <i>on the controlling JMeter machine</i>. In
/bin/jmeter.properties, find the property named, "remote_hosts", and
add the value of your running JMeter server's IP address. Multiple such servers
can be added, comma-delimited.</p>
+<p>Note that you can also use the -J <a href="get-started.html#override">command
line option</a> to specify the remote host(s) to use.
+ E.g. jmeter -Jremote_hosts=host1,127.0.0.1,host2</p>
<p><b>Step 3: Start the JMeter Client</b></p>
<p>Now you are ready to start the controlling JMeter client. For MS-Windows, start
the client with the script "bin/jmeter.bat". For UNIX,
@@ -49,7 +51,6 @@
normal JMeter start and stop menu items.</p>
<p><img src="../images/screenshots/remote/run-menu00.gif" width="232"
height="156"></img>
<br>Figure 1 - Run Menu</br></p>
-
<subsection name="10.1 Doing it Manually" anchor="detail_instructions">
<p>In some cases, the jmeter-server script may not work for you (if you are using
an OS platform not anticipated by the JMeter developers). Here is how to start the
JMeter servers (step 1 above) with a more manual process:</p>
<p><b>Step 1a: Start the RMI Registry</b></p>
1.10 +20 -4 jakarta-jmeter/xdocs/usermanual/test_plan.xml
Index: test_plan.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/test_plan.xml,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- test_plan.xml 11 Jun 2003 15:49:30 -0000 1.9
+++ test_plan.xml 12 Jun 2003 13:39:42 -0000 1.10
@@ -2,7 +2,7 @@
<document prev="build-test-plan.html" next="build-web-test-plan.html" date="$Date$">
<properties>
- <title>User's Manual: Thread Group</title>
+ <title>User's Manual: Elements of a Test Plan</title>
</properties>
<body>
@@ -41,6 +41,13 @@
<p>By default, a thread group is configured to loop indefinitely through its
elements.
Alternatively, you can set the number of times the thread group will loop before
ending. If the number
is set at one, then JMeter will execute the test only once before stopping.</p>
+
+<p>Version 1.9 introduces a test run <b>scheduler</b>.
+ Click the checkbox at the bottom of the Thread Group panel to reveal two extra
fields
+ in which you can enter the start and end times of the run.
+ When the test is started, JMeter will wait if necessary until the start-time
has been reached.
+ At the end of each cycle, JMeter checks if the end-time has been reached, and
if so, the run is stopped,
+ otherwise the test is allowed to continue until the iteration limit is
reached.</p>
</subsection>
<subsection name="4.2 Controllers" anchor="controllers">
@@ -66,8 +73,17 @@
<subsection name="4.2.1 Samplers" anchor="samplers">
<p>Samplers tell JMeter to send requests to a server. JMeter
-currently has four such samplers: FTP Request, HTTP Request, JDBC Request, and
-the Java object request. Each sampler has several properties you can set.
+currently has the following samplers:
+<ul>
+ <li>FTP Request</li>
+ <li>HTTP Request</li>
+ <li>JDBC Request</li>
+ <li>Java object request</li>
+ <li>LDAP Request</li>
+ <li>SOAP/XML-RPC Request</li>
+ <li>WebService (SOAP) Request (Alpha Code)</li>
+</ul>
+Each sampler has several properties you can set.
You can further customize a sampler by adding one or more Configuration Elements to
it.
Also, note that JMeter sends requests in the order that you add them to the
tree.</p>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]