mstover1 2003/07/15 10:48:50
Modified: xdocs/usermanual component_reference.xml
Log:
Doc update prior to RC3 release
Revision Changes Path
1.52 +419 -177 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.51
retrieving revision 1.52
diff -u -r1.51 -r1.52
--- component_reference.xml 15 Jul 2003 16:27:59 -0000 1.51
+++ component_reference.xml 15 Jul 2003 17:48:50 -0000 1.52
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<document index="yes">
+<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>
@@ -10,7 +10,7 @@
<section name="13.1 Samplers" anchor="samplers">
-<component index="13.1.1" name="FTP Request"
screenshot="../images/screenshots/gen-controller/ftp-request.gif">
+<component index="13.1.1" name="FTP Request"
screenshot="gen-controller/ftp-request.gif">
<description>This controller lets you send an FTP "retrieve file" request to an FTP
server.
If you are going to send multiple requests to the same FTP server, consider
using a <complink name="FTP Request Defaults"/> Configuration
@@ -32,7 +32,7 @@
</component>
-<component name="HTTP Request" index="13.1.2"
screenshot="../images/screenshots/gen-controller/http-request.png">
+<component name="HTTP Request" index="13.1.2"
screenshot="gen-controller/http-request.png">
<description>
<p>This sampler lets you send an HTTP/HTTPS request to a web server. It
@@ -74,7 +74,8 @@
"Send Parameters With the Request" section.</property>
<property name="Send Parameters With the Request" required="No">The query
string will
be generated from the list of parameters you provide. Each parameter has a
<i>name</i> and
- <i>value</i>. The query string will be generated in the correct fashion,
depending on
+ <i>value</i>, the options to encode the parameter, and an option to include
or exclude an equals sign (some applications
+ don't expect an equals when the value is the empty string). The query
string will be generated in the correct fashion, depending on
the choice of "Method" you made (ie if you chose GET, the query string will
be
appended to the URL, if POST, then it will be sent separately). Also, if
you are
sending a file using a multipart form, the query string will be created
using the
@@ -107,7 +108,7 @@
</component>
-<component name="JDBC Request" index="13.1.3"
screenshot="../images/screenshots/gen-controller/jdbc-request.gif">
+<component name="JDBC Request" index="13.1.3"
screenshot="gen-controller/jdbc-request.gif">
<description><p>This sampler lets you send an JDBC Request (an SQL query) to a
database.</p>
<p>If you are going to send multiple requests to the same database, consider
@@ -147,7 +148,7 @@
</component>
-<component name="Java Request" index="13.1.4"
screenshot="../images/screenshots/java_request.gif">
+<component name="Java Request" index="13.1.4" screenshot="java_request.gif">
<description><p>This sampler lets you control a java class that implements the
JavaSamplerClient interface. By writing your own implementation of this interface,
@@ -170,9 +171,11 @@
</component>
-<component name="SOAP/XML-RPC Request" index="13.1.5"
screenshot="../images/screenshots/soap_sampler.png">
+<component name="SOAP/XML-RPC Request" index="13.1.5" screenshot="soap_sampler.png">
-<description><p>This sampler lets you send a SOAP request to a webservice. It can
also be used to send XML-RPC over HTTP. It creates an HTTP POST request, with the
specified XML as the POST content.</p>
+<description><p>This sampler lets you send a SOAP request to a webservice. It can
also be
+used to send XML-RPC over HTTP. It creates an HTTP POST request, with the
specified XML as the
+POST content.</p>
</description>
<properties>
@@ -185,75 +188,97 @@
</component>
-<component name="LDAP Request" index="13.1.6"
screenshot="../images/screenshots/ldap_request.png">
- <description>For testing LDAP servers</description>
- <p>There are two ways to create test cases for testing a LDAP Server.</p>
- <ol><li>Inbuilt Test cases.</li>
- <li>User defined Test cases.</li></ol>
-
-<p>There are four test scenarios of testing LDAP. The tests are given below:</p>
- <ol>
- <li>Add Test</li>
- <ol><li>Inbuilt test :
- <p>This will add a pre-defined entry in the LDAP Server and
calculate
- the execution time. After execution of the test, the created entry will be
- deleted from the LDAP
- Server.</p></li>
- <li>User defined test :
- <p>This will add the entry in the LDAP Server. User has to enter
all the
- attributes in the table.The entries are collected from the table to add. The
- execution time is calculated. The created entry will not be deleted after the
- test.</p></li></ol>
-
- <li>Modify Test</li>
- <ol><li>Inbuilt test :
- <p>This will create a pre-defined entry first, then will modify
the
- created entry in the LDAP Server.And calculate the execution time. After
- execution
- of the test, the created entry will be deleted from the LDAP Server.</p></li>
- <li>User defined test
- <p>This will modify the entry in the LDAP Server. User has to
enter all the
- attributes in the table. The entries are collected from the table to modify.
- The execution time is calculated. The entry will not be deleted from the LDAP
- Server.</p></li></ol>
-
- <li>Search Test</li>
- <ol><li>Inbuilt test :
- <p>This will create the entry first, then will search if the
attributes
- are available. It calculates the execution time of the search query. At the
- end of the execution,created entry will be deleted from the LDAP
Server.</p></li>
- <li>User defined test
- <p>This will search the user defined entry(Search filter) in the
Search
- base (again, defined by the user). The entries should be available in the LDAP
- Server. The execution time is calculated.</p></li></ol>
-
- <li>Delete Test</li>
- <ol><li>Inbuilt test :
- <p>This will create a pre-defined entry first, then it will be
deleted
- from the LDAP Server. The execution time is calculated.</p></li>
-
- <li>User defined test
- <p>This will delete the user-defined entry in the LDAP Server.
The entries
- should be available in the LDAP Server. The execution time is
calculated.</p></li></ol></ol>
-</component>
+<component name="LDAP Request" index="13.1.6" screenshot="ldap_request.png">
+ <description>This Sampler lets you send a different Ldap request(Add, Modify,
Delete and Search) to a LDAP server.
+ <p>If you are going to send multiple requests to the same LDAP server, consider
+ using an <complink name="LDAP Request Defaults"/>
+ Configuration Element so you do not have to enter the same information for
each
+ LDAP Request.</p> The same way the <complink name="Login Config Element"/>
also using for Login and password.
+ </description>
+
+ <p>There are two ways to create test cases for testing a LDAP Server.</p>
+ <ol><li>Inbuilt Test cases.</li>
+ <li>User defined Test cases.</li></ol>
+
+ <p>There are four test scenarios of testing LDAP. The tests are given below:</p>
+ <ol>
+ <li>Add Test</li>
+ <ol><li>Inbuilt test :
+ <p>This will add a pre-defined entry in the LDAP Server and calculate
+ the execution time. After execution of the test, the created entry will be
+ deleted from the LDAP
+ Server.</p></li>
+ <li>User defined test :
+ <p>This will add the entry in the LDAP Server. User has to enter all the
+ attributes in the table.The entries are collected from the table to
add. The
+ execution time is calculated. The created entry will not be deleted
after the
+ test.</p></li></ol>
+
+ <li>Modify Test</li>
+ <ol><li>Inbuilt test :
+ <p>This will create a pre-defined entry first, then will modify the
+ created entry in the LDAP Server.And calculate the execution
time. After
+ execution
+ of the test, the created entry will be deleted from the LDAP
Server.</p></li>
+ <li>User defined test
+ <p>This will modify the entry in the LDAP Server. User has to
enter all the
+ attributes in the table. The entries are collected from the
table to modify.
+ The execution time is calculated. The entry will not be
deleted from the LDAP
+ Server.</p></li></ol>
+
+ <li>Search Test</li>
+ <ol><li>Inbuilt test :
+ <p>This will create the entry first, then will search if
the attributes
+ are available. It calculates the execution time of the
search query. At the
+ end of the execution,created entry will be deleted from
the LDAP Server.</p></li>
+ <li>User defined test
+ <p>This will search the user defined entry(Search
filter) in the Search
+ base (again, defined by the user). The entries should
be available in the LDAP
+ Server. The execution time is
calculated.</p></li></ol>
+
+ <li>Delete Test</li>
+ <ol><li>Inbuilt test :
+ <p>This will create a pre-defined entry first, then
it will be deleted
+ from the LDAP Server. The execution time is
calculated.</p></li>
+
+ <li>User defined test
+ <p>This will delete the user-defined entry in
the LDAP Server. The entries
+ should be available in the LDAP Server. The
execution time is calculated.</p></li></ol></ol>
+ <properties>
+ <property name="Name"
required="No">Descriptive name for this controller that is shown in the
tree.</property>
+ <property name="Server Name or IP"
required="Yes">Domain name or IP address of the LDAP server.
+ JMeter assumes the LDAP server is
listening on the default port(389).</property>
+ <property name="Port"
required="Yes">default port(389).</property>
+ <property name="root DN"
required="Yes">DN for the server to communicate</property>
+ <property name="Username"
required="Usually">LDAP server username.</property>
+ <property name="Password"
required="Usually">LDAP server password.</property>
+ <property name="Entry DN"
required="yes">the name of the context to create or Modify; may not be empty Example:
do you want to add cn=apache,ou=test
+ you have to add in table name=cn,
value=apache
+ </property>
+ <property name="Delete"
required="yes">the name of the context to Delete; may not be empty</property>
+ <property name="Search base"
required="yes">the name of the context or object to search</property>
+ <property name="Search filter"
required="yes"> the filter expression to use for the search; may not be null</property>
+ <property name="add test" required="yes">
this name, value pair to added in the given context object</property>
+ <property name="modify test"
required="yes"> this name, value pair to add or modify in the given context
object</property>
+ </properties>
+
+ <links>
+ <link
href="build-ldap-test-plan.html">Building a Ldap Test Plan</link>
+ <complink name="LDAP Request Defaults"/>
+ </links>
-<component name="Webservice Request" index="13.1.7"
screenshot="../images/screenshots/webservice_sampler.png">
+</component>
+<component name="WebService(SOAP) Request (Alpha Code)" index="13.1.7"
screenshot="webservice_sampler.png">
-<description><p>This sampler has been tested with IIS Webservice running .NET 1.0.
It hasn't been tested with SUN or IBM webservice providers, but it should work. The
sampler uses Apache SOAP driver, to serialize the message and set the header with the
correct SOAPAction. Basic WSDL support is provided for configuring the request. Both
IBM and SUN provide WSDL drivers, but the sampler doesn't use them. The sampler
requires activation.jar and mail.jar since Apache SOAP requires those libraries. You
can put the XML message in a file and use the file option. The sampler will randomly
select a file from a directory when "message folder" has a valid entry. The order of
precedence is path, file, then text.</p>
-<p>If you want to configure the request using WSDL, enter the WSDL URL in the field
and click "Load WSDL". Once the WSDL is loaded, "Webmethods" drop down will be
populated. Select the method you want and click configure. For the message content,
you can use either the text box, text file or a directory. If the XML Messages are
static and don't need to change between requests, caching the DOM Document will
improve performance and avoid parsing XML. If the client system doesn't have much
memory, uncheck "Read SOAP Response".</p>
+<description><p>This sampler has been tested with IIS Webservice running .NET 1.0.
It hasn't been tested with SUN or IBM webservices providers, but it should work. The
sampler uses Apache SOAP driver, to serialize the message and set the header with the
correct SOAPAction. Right now the sampler doesn't support automatic WSDL handling,
since Apache SOAP currently doesn't provide support for it. Both IBM and SUN provide
WSDL drivers.</p>
</description>
<properties>
<property name="Name" required="No">Descriptive name for this sampler
that is shown in the tree.</property>
<property name="URL" required="Yes">The URL to direct the SOAP request
to.</property>
- <property name="WSDL URL" required="No">The URL where WSDL is
located.</property>
<property name="SOAPAction" required="Yes">The SOAPAction defined in the
webservice description or WSDL.</property>
<property name="Soap Data" required="Yes">The Soap XML message</property>
- <property name="File name" required="No">File containing the Soap XML
message</property>
- <property name="Message Path" required="No">Directory containing multiple
SOAP messages.<br/>The sampler will randomly select a file and use it.</property>
- <property name="Memory Cache" required="No">Cache DOM Document in memory to
avoid parsing</property>
- <property name="Read SOAP Response" required="No">Should the sampler read
and save the response</property>
</properties>
</component>
@@ -262,12 +287,13 @@
<section name="13.2 Logic Controllers" anchor="logic_controllers">
-<component index="13.2.1" name="Interleave Controller"
screenshot="../images/screenshots/logic-controller/interleave-controller.gif">
+<component index="13.2.1" name="Interleave Controller"
screenshot="logic-controller/interleave-controller.png">
<description><p>If you add Generative or Logic Controllers to an Interleave
Controller, JMeter will alternate among each of the
other controllers for each loop iteration. </p>
</description>
<properties>
<property name="name" required="No">Descriptive name for this controller
that is shown in the tree.</property>
+ <property name="ignore sub-controller blocks" required="No">If checked, the
interleave controller will treat sub-controllers like single request elements and only
allow one request per controller at a time. </property>
</properties>
<!--
@@ -289,21 +315,24 @@
<p><a href="../demos/InterleaveTestPlan.jmx">Download</a> this example (see Figure
1). In this example,
we configured the Thread Group to have two threads and a loop count of five, for a
total of ten
-requests. See the table below for the sequence JMeter sends the HTTP Requests.</p>
+requests per thread. See the table below for the sequence JMeter sends the HTTP
Requests.</p>
-<figure image="../images/screenshots/logic-controller/interleave.gif">Figure 1 -
Interleave Controller Example 1</figure>
+<figure image="logic-controller/interleave.png">Figure 1 - Interleave Controller
Example 1</figure>
<table border="1" cellspacing="0" cellpadding="4">
<tr valign="top"><td>Loop Iteration</td><td>Each JMeter Thread Sends These HTTP
Requests</td></tr>
<tr valign="top"><td>1</td><td>News Page</td></tr>
+<tr valign="top"><td>2</td><td>Log Page</td></tr>
<tr valign="top"><td>2</td><td>FAQ Page</td></tr>
+<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>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>2</td><td>Log 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>
</table>
-<p>Note, the File Reporter is configured to store the results in a file named
-"interleave-test.dat" in the current directory.</p>
</example>
@@ -314,18 +343,23 @@
to have a single thread and a loop count of eight. Notice that the Test Plan has
an outer Interleave Controller with
two Interleave Controllers inside of it.</p>
-<figure image="../images/screenshots/logic-controller/interleave2.gif">
+<figure image="logic-controller/interleave2.png">
Figure 2 - Interleave Controller Example 2
</figure>
<p>The outer Interleave Controller alternates between the
two inner ones. Then, each inner Interleave Controller alternates between each of
the HTTP Requests. Each JMeter
-thread will send the requests in the following order: Home Page, Bug Page, CVS
Page, and FAQ Page.
+thread will send the requests in the following order: Home Page, Interleaved, Bug
Page, Interleaved, CVS Page, Interleaved, and FAQ Page, Interleaved.
Note, the File Reporter is configured to store the results in a file named
"interleave-test2.dat" in the current directory.</p>
+
+<figure image="logic-controller/interleave3.png">
+ Figure 3 - Interleave Controller Example 3
+</figure>
+<p>If the two interleave controllers under the main interleave controller were
instead simple controllers, then the order would be: Home Page, CVS Page, Interleaved,
Bug Page, FAQ Page, Interleaved. However, if "ignore sub-controller blocks" was
checked on the main interleave controller, then the order would be: Home Page,
Interleaved, Bug Page, Interleaved, CVS Page, Interleaved, and FAQ Page,
Interleaved.</p>
</example>
</component>
-<component index="13.2.2" name="Loop Controller" anchor="loop"
screenshot="../images/screenshots/logic-controller/loop-controller.gif">
+<component index="13.2.2" name="Loop Controller" anchor="loop"
screenshot="logic-controller/loop-controller.gif">
<description><p>If you add Generative or Logic Controllers to a Loop Controller,
JMeter will
loop through them a certain number of times, in addition to the loop value you
specified for the Thread Group. For example, if you add one HTTP Request to a
@@ -349,7 +383,7 @@
In this example, we created a Test Plan that sends a particular HTTP Request
only once and sends another HTTP Request five times.</p>
-<figure image="../images/screenshots/logic-controller/loop-example.gif">Figure 3 -
Loop Controller Example</figure>
+<figure image="logic-controller/loop-example.gif">Figure 3 - Loop Controller
Example</figure>
<p>We configured the Thread Group for a single thread and a loop count value of
one. Instead of letting the Thread Group control the looping, we used a Loop
@@ -364,11 +398,13 @@
</component>
-<component index="13.2.4" name="Once Only Controller" anchor="once_only_controller"
-screenshot="../images/screenshots/logic-controller/once-only-controller.gif">
+<component index="13.2.3" name="Once Only Controller" anchor="once_only_controller"
+screenshot="logic-controller/once-only-controller.gif">
<description>
-<p>The Once Only Logic Controller tells JMeter to process the controller(s) inside
it only once, regardless of the loop
-count value you specify in the Thread Group or Loop Controller.</p>
+<p>The Once Only Logic Controller tells JMeter to process the controller(s) inside
it only once, and pass over any requests under it
+during further iterations through the test plan.</p>
+
+<p>The Once Only Controller will now execute always during the first iteration of
any looping parent controller. Thus, if the Once Only Controller is placed under a
Loop Controller specified to loop 5 times, then the Once Only Controller will execute
only on the first iteration through the Loop Controller (ie, every 5 times). Note
this means the Once Only Controller will still behave as previously expected if put
under a Thread Group (runs only once per test), but now the user has more flexibility
in the use of the Once Only Controller.</p>
<p>For testing that requires a login, consider placing the login request in this
controller since each thread only needs
to login once to establish a session.</p>
@@ -383,14 +419,14 @@
Each thread sends one request to the Home Page, followed by three requests to the
Bug Page.
Although we configured the Thread Group to iterate three times, each JMeter thread
only
sends one request to the Home Page because this request lives inside a Once Only
Controller.</p>
-<figure image="../images/screenshots/logic-controller/once-only-example.gif">Figure
4. Once Only Controller Example</figure>
+<figure image="logic-controller/once-only-example.png">Figure 4. Once Only
Controller Example</figure>
<p>Each JMeter thread will send the requests in the following order: Home Page, Bug
Page,
Bug Page, Bug Page. Note, the File Reporter is configured to store the results in a
file named "loop-test.dat" in the current directory.</p>
</example>
</component>
-<component index="13.2.5" name="Simple Controller" anchor="simple_controller"
screenshot="../images/screenshots/logic-controller/simple-controller.gif">
+<component index="13.2.4" name="Simple Controller" anchor="simple_controller"
screenshot="logic-controller/simple-controller.gif">
<description>
<p>The Simple Logic Controller lets you organize your Samplers and other
Logic Controllers. Unlike other Logic Controllers, this controller provides no
functionality beyond that of a
@@ -409,12 +445,12 @@
following order: Ant Home Page, Ant News Page, Log4J Home Page, Log4J History Page.
Note, the File Reporter
is configured to store the results in a file named "simple-test.dat" in the current
directory.</p>
-<figure image="../images/screenshots/logic-controller/simple-example.gif">Figure 5
Simple Controller Example</figure>
+<figure image="logic-controller/simple-example.gif">Figure 5 Simple Controller
Example</figure>
</example>
</component>
-<component index="13.2.6" name="Random Controller"
screenshot="../images/screenshots/logic-controller/random-controller.gif">
+<component index="13.2.5" name="Random Controller"
screenshot="logic-controller/random-controller.gif">
<description>
<p>The Random Logic Controller acts similarly to the Interleave Controller, except
that
instead of going in order through its sub-controllers and samplers, it picks one
@@ -429,7 +465,7 @@
</component>
-<component index="13.2.7" name="Recording Controller"
screenshot="../images/screenshots/logic-controller/recording-controller.gif">
+<component index="13.2.6" name="Recording Controller"
screenshot="logic-controller/recording-controller.gif">
<description>
<p>The Recording Controller is a place holder indicating where the proxy server
should
record samples to. During test run, it has no effect, similar to the Simple
Controller. But during
@@ -442,6 +478,40 @@
</properties>
</component>
+
+<component index="13.2.7" name="Module Controller"
screenshot="module_controller.png">
+<description>
+<p>The Module Controller provides a mechanism for substituting test plan fragments
into the current test plan at run-time. To use this
+module effectively, one might have a number of Controllers under the <complink
name="WorkBench"/>, each with a different series of
+samplers under them. The module controller can then be used to easily switch
between these multiple test cases simply by choosing
+the appropriate controller in it's drop down box. This provides convenience for
running many alternate test plans quickly and easily.
+</p>
+</description>
+<note>The Module Controller should not be used with remote testing or non-gui
testing in conjunction with Workbench components since the Workbench test elements are
not part of test plan .jmx files. Any such test will fail.</note>
+<properties>
+ <property name="Name" required="No">Descriptive name for this controller
that is shown in the tree.</property>
+ <property name="Module to Run" required="Yes">The module controller
provides a list of all controllers loaded into the gui. Select
+ the one you want to substitute in at runtime.</property>
+</properties>
+
+</component>
+
+<component index="13.2.8" name="Throughput Controller"
screenshot="throughput_controller.png">
+<description>
+<p>The Throughput Controller allows the user to control how often it is executed.
There are two modes - percent execution and total executions. Percent executions
causes the controller to execute a certain percentage of the iterations through the
test plan. Total
+executions causes the controller to stop executing after a certain number of
executions have occurred. Like the Once Only Controller, this
+setting is reset when a parent Loop Controller restarts.
+</p>
+</description>
+<note>The Throughput Controller can yield very complex behavior when combined with
other controllers - in particular with interleave or random controllers as parents
(also very useful).</note>
+<properties>
+ <property name="Name" required="No">Descriptive name for this controller
that is shown in the tree.</property>
+ <property name="Execution Style" required="Yes">Whether the controller will
run in percent executions or total executions mode.</property>
+ <property name="Throughput" required="Yes">A number. for percent execution
mode, a number from 0-100 that indicates the percentage of times the controller will
execute. "50" means the controller will execute during half the iterations throught
the test plan. for total execution mode, the number indicates the total number of
times the controller will execute.</property>
+ <property name="Per User" required="No">If checked, per user will cause the
controller to calculate whether it should execute on a per user (per thread) basis.
if unchecked, then the calculation will be global for all users. for example, if
using total execution mode, and uncheck "per user", then the number given for
throughput will be the total number of executions made. if "per user" is checked,
then the total number of executions would be the number of users times the number
given for throughput.</property>
+</properties>
+
+</component>
</section>
<section name="13.3 Listeners" anchor="listeners">
@@ -453,15 +523,16 @@
The saving and reading of test results is generic. The various
listeners generally have a panel whereby one can specify the file to
which the results will be written (or read). By default,
-the results are stored as XML
-files, typically with a ".jtl" extension.</p>
+the results are stored as CSV
+files, typically with a ".jtl" extension. Storing as CSV is the most efficient
option, but is less detailed than XML (the other available option).</p>
+<p>To change the format, in jmeter.properties, find the following line:</p>
+<p>jmeter.save.saveservice.output_format=csv</p>
+<p>Change "csv" to "xml" for greater detail.</p>
<p>
-The information to be saved is configurable. If one specifies the
-"Functional Test Mode" on the Test Plan element, one gets the largest
-amount of information. If this box is not checked, the default saved
+The information to be saved is configurable. For maximum information, choose "xml"
as the format and specify "Functional Test Mode" on the Test Plan element. If this
box is not checked, the default saved
data includes a time stamp (the number of milliseconds since midnight,
January 1, 1970 UTC), the data type, the thread name, the label, the
-response time, message, and code, and a success indicator.</p>
+response time, message, and code, and a success indicator. If checked, all
information, including the full response data will be logged.</p>
<p>
One can get a more selective set of information my modifying the
jmeter.properties file. The following example indicates how to set
@@ -470,10 +541,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>
@@ -530,14 +601,10 @@
make it impossible for JMeter to interpret the value when it is read
in later for viewing purposes.</p>
<p>
-Note that reading of comma-separated values is also not
-supported. This format is provided for use with external viewing
-and data manipulation tools like spreadsheets or databases.</p>
-<p>
The internal viewing capabilities are described in the following subsections.</p>
</description>
-<component index="13.3.1" name="Mailer Visualizer"
screenshot="../images/screenshots/mailer_vis.png">
+<component index="13.3.1" name="Mailer Visualizer" screenshot="mailer_vis.png">
<description><p>The mailer visualizer can be set up to send email if a test run
receives too many
failed responses from the server.</p></description>
@@ -564,7 +631,7 @@
<description>No Description</description>
</component>
-<component index="13.3.3" name="Graph Results"
screenshot="../images/screenshots/graph_results.gif">
+<component index="13.3.3" name="Graph Results" screenshot="graph_results.png">
<description><p>The Graph Results listener generates a simple graph that plots all
sample times. Along
the bottom of the graph, the current sample (black), the current average of all
samples(blue), the
current standard deviation (red), and the current throughput rate (green) are
displayed in milliseconds.</p>
@@ -577,14 +644,14 @@
number.</p></description>
</component>
-<component index="13.3.4" name="Spline Visualizer"
screenshot="../images/screenshots/spline_visualizer.gif">
+<component index="13.3.4" name="Spline Visualizer"
screenshot="spline_visualizer.png">
<description><p>The Spline Visualizer provides a view of all sample times from the
start
of the test till the end, regardless of how many samples have been taken. The
spline
has 10 points, each representing 10% of the samples, and connected using spline
logic to show a single continuous line.</p></description>
</component>
-<component index="13.3.5" name="Assertion Results"
screenshot="../images/screenshots/assertion_results.gif">
+<component index="13.3.5" name="Assertion Results"
screenshot="assertion_results.png">
<description><p>The Assertion Results visualizer shows the URL of each sample taken
(no time information
is shown). It also reports failures of any <a
href="test_plan.html#assertions">Assertions</a> that
are part of the test plan.</p></description>
@@ -594,7 +661,7 @@
</links>
</component>
-<component index="13.3.6" name="View Results Tree"
screenshot="../images/screenshots/view_results_tree.png">
+<component index="13.3.6" name="View Results Tree"
screenshot="view_results_tree.png">
<description>The View Results Tree shows a tree of all sample responses, allowing
you to view the
response for any sample. In addition to showing the response, you can see the time
it took to get
this response, and some response codes.
@@ -608,13 +675,13 @@
</description>
</component>
-<component index="13.3.7" name="Aggregate Report"
screenshot="../images/screenshots/aggregate_report.png">
+<component index="13.3.7" name="Aggregate Report" screenshot="aggregate_report.png">
<description>The aggregate report creates a table row for each differently named
request in your test. For each
request, it totals the response information and provides request count, min, max,
average, error rate, and an
idealized throughput calculation.</description>
</component>
-<component index="13.3.8" name="View Results in Table"
screenshot="../images/screenshots/table_results.gif">
+<component index="13.3.8" name="View Results in Table"
screenshot="table_results.png">
<description>This visualizer creates a row for every sample result. Each sample
result's URL,
time in milliseconds, success/failure is displayed. Like the <complink name="View
Results Tree"/>,
this visualizer uses a lot of memory.</description>
@@ -630,7 +697,7 @@
<section name="13.4 Configuration Elements" anchor="config_elements">
-<component index="13.4.1" name="HTTP Authorization Manager"
screenshot="../images/screenshots/http-config/http-auth-manager.gif">
+<component index="13.4.1" name="HTTP Authorization Manager"
screenshot="http-config/http-auth-manager.gif">
<description>
<p>The Authorization Manager lets you specify one or more user logins for web pages
that are
@@ -677,8 +744,8 @@
to "/secret/index1.html" and "/secret/index2.html". The other HTTP request, named
"NoSecretPage" makes a request to
"/index.html".</p>
-<figure image="../images/screenshots/http-config/auth-manager-example1a.gif">Figure
6 - Test Plan</figure>
-<figure image="../images/screenshots/http-config/auth-manager-example1b.gif">Figure
7 - Authorization Manager Control Panel</figure>
+<figure image="http-config/auth-manager-example1a.gif">Figure 6 - Test Plan</figure>
+<figure image="http-config/auth-manager-example1b.gif">Figure 7 - Authorization
Manager Control Panel</figure>
<p>When we run the Test Plan, JMeter looks in the Authorization table for the URL
it is requesting. If the Base URL matches
the URL, then JMeter passes this information along with the request.</p>
@@ -689,7 +756,7 @@
</component>
-<component index="13.4.2" name="HTTP Cookie Manager"
screenshot="../images/screenshots/http-config/http-cookie-manager.gif">
+<component index="13.4.2" name="HTTP Cookie Manager"
screenshot="http-config/http-cookie-manager.gif">
<description><p>The Cookie Manager element has two functions:<br/>
First, it stores and sends cookies just like a web browser. If you have an HTTP
Request and
@@ -714,7 +781,7 @@
</component>
-<component index="13.4.3" name="HTTP Proxy Server"
screenshot="../images/screenshots/proxy_control.png">
+<component index="13.4.3" name="HTTP Proxy Server" screenshot="proxy_control.png">
<description><p>The Proxy Server allows JMeter to watch and record your actions
while you browse your web application
with your normal browser (such as Internet Explorer). JMeter will create test
sample objects and store them
@@ -761,11 +828,8 @@
the port # is from the Proxy Control Panel shown above.</note>
<b>Where Do Samples Get Recorded?</b>
-<p>JMeter places the recorded samples in the Thread Group, or if you have a Simple
Logic Controller, JMeter places
-them there. Also, if you have a HTTP Request Defaults element, then the recorded
samples will have empty fields for
-the default values you specified.</p>
-<note>If you have more than one Simple Logic Controller, JMeter records the samples
to each
-of your Simple Logic Controllers. We plan to correct this in a future
release.</note>
+<p>JMeter places the recorded samples in a Recording Controller found under a
Thread Group (so be sure to add a ThreadGroup and then a Recording Controller before
you start recording). Also, if you have a HTTP Request Defaults element, then the
recorded samples will have empty fields for
+the default values you specified. Additionally, you can specify user-defined
values that will replaced in your samples as they are recorded. See <a
href="best-practices.html#proxy_server">Best Practices with the Proxy Server</a> for
more info.</p>
<p>When you are done recording your test samples, stop the proxy server (hit the
"stop" button). Remember to reset
your browser's proxy settings. Now, you may want to sort and re-order the test
script, add timers, listeners, a
@@ -774,7 +838,7 @@
</component>
<component index="13.4.4" name="HTTP Request Defaults"
- screenshot="../images/screenshots/http-config/http-request-defaults.gif">
+ screenshot="http-config/http-request-defaults.png">
<description><p>This element lets you set default values that your HTTP Request
controllers use. For example, if you are
creating a Test Plan with 25 HTTP Request controllers and all of the requests are
being sent to the same server,
you could add a single HTTP Request Defaults element with the "Server Name or IP"
field filled in. Then, when
@@ -802,28 +866,28 @@
</component>
<component index="13.4.5" name="FTP Request Defaults"
-
screenshot="../images/screenshots/ftp-config/ftp-request-defaults.gif">
+ screenshot="ftp-config/ftp-request-defaults.gif">
<description></description>
</component>
<component index="13.4.6" name="JDBC Database Connection Pool Defaults"
-
screenshot="../images/screenshots/jdbc-config/jdbc-db-conn-pool.gif">
+ screenshot="jdbc-config/jdbc-db-conn-pool.gif">
<description></description>
</component>
<component index="13.4.7" name="JDBC Database Login Defaults"
- screenshot="../images/screenshots/jdbc-config/jdbc-db-login.gif">
+ screenshot="jdbc-config/jdbc-db-login.gif">
<description></description>
</component>
<component index="13.4.8" name="JDBC SQL Query Defaults"
- screenshot="../images/screenshots/jdbc-config/jdbc-sql-query.gif">
+ screenshot="jdbc-config/jdbc-sql-query.gif">
<description></description>
</component>
-<component index="13.4.9" name="HTTP Header Manager"
screenshot="../images/screenshots/http-config/http-header-manager.gif">
+<component index="13.4.9" name="HTTP Header Manager"
screenshot="http-config/http-header-manager.gif">
<description><p>The Header Manager lets you add or override HTTP request
headers.</p>
</description>
@@ -846,51 +910,56 @@
that tells JMeter to override the default "User-Agent" request header and use a
particular Internet Explorer agent string
instead. (see figures 9 and 10).</p>
-<figure
image="../images/screenshots/http-config/header-manager-example1a.gif">Figure 9 - Test
Plan</figure>
-<figure
image="../images/screenshots/http-config/header-manager-example1b.gif">Figure 10 -
Header Manager Control Panel</figure>
+<figure image="http-config/header-manager-example1a.gif">Figure 9 - Test
Plan</figure>
+<figure image="http-config/header-manager-example1b.gif">Figure 10 - Header Manager
Control Panel</figure>
</example>
</component>
-<component index="13.4.10" name="User Parameters"
screenshot="../images/screenshots/user_params.png">
-<description><p>Allows the user to specify values for User Variables specific to
individual threads.</p>
-<p>User Variables can also be specified in the Test Plan but not specific to
individual threads. This panel allows
-you to specify a series of values for any User Variable. For each thread, the
variable will be assigned one of the values from the series
-in sequence. If there are more threads than values, the values get re-used. For
example, this can be used to assign a distinct
-user id to be used by each thread. User variables can be referenced in any field of
any jMeter Component.</p>
+<component index="13.4.10" name="Login Config Element"
screenshot="login-config.png">
+<description><p>The Login Config Element lets you add or override username and
password settings in samplers that use username and password as part of their
setup.</p>
+</description>
-<p>The variable is specified by clicking the Add Variable button in the bottom of
the panel and filling in the Variable name in the 'Name:' column.
-To add a new value to the series, click the 'Add User' button and fill in the
desired value in the newly added column.</p>
+<properties>
+ <property name="Name" required="No">Descriptive name for this element that
is shown in the tree. </property>
+ <property name="Username" required="No">The default username to use.</property>
+ <property name="Password" required="No">The default password to use.</property>
+</properties>
-<p>Values can be accessed in any test component in the same thread group, using the
<a href="functions.html">function syntax</a>: ${variable}.</p>
-</description>
</component>
-<component index="13.4.11" name="Counter"
screenshot="../images/screenshots/counter.png">
-<description><p>Allows the user to create a counter that can be referenced anywhere
-in the Thread Group. The counter config lets the user configure a starting point,
a maximum,
-and the increment. The counter will loop from the start to the max, and then start
over
-with the start, continuing on like that until the test is ended. </p></description>
+<component index="13.4.11" name="Simple Config Element"
screenshot="simple_config_element.png">
+<description><p>The Simple Config Element lets you add or override arbitrary values
in samplers. You can choose the name of the value
+and the value itself. Although some adventurous users might find a use for this
element, it's here primarily for developers as a basic
+GUI that they can use while developing new JMeter components.</p>
+</description>
+
<properties>
- <property name="Name" required="">Descriptive name for this element that is
shown in the tree.</property>
- <property name="Start" required="Yes">The starting number for the counter.
The counter will equal this
- number during the first iteration.</property>
- <property name="Increment" required="Yes">How much to increment the counter
by after each
- iteration.</property>
- <property name="Maximum" required="Yes">If the counter exceeds the maximum,
then it is reset to the Start value.</property>
- <property name="Reference Name" required="Yes">This controls how you refer
to this value in other elements. Syntax is
- as in <a href="functions.html">user-defined values</a>:
<code>$(reference_name}</code>.</property>
- <property name="Track Counter Independently for each User" required="No">In
other words, is this a global counter, or does each user get their
- own counter? If unchecked, the counter is global (ie, user #1 will get
value "1", and user #2 will get value "2" on
- the first iteration). If checked, each user has an independent
counter.</property>
+ <property name="Name" required="No">Descriptive name for this element that
is shown in the tree. </property>
+ <property name="Parameter Name" required="Yes">The name of each parameter. These
values are internal to JMeter's workings and
+ are not generally documented. Only those familiar with the code will know these
values.</property>
+ <property name="Parameter Value" required="Yes">The value to apply to that
parameter.</property>
</properties>
+
+</component>
+
+<component index="13.4.12" name="LDAP Request Defaults"
screenshot="ldap_defaults.png">
+<description><p>The LDAP Request Defaults component lets you set default values for
LDAP testing. See the <complink name="LDAP Request"/>.</p>
+</description>
+
+</component>
+
+<component index="13.4.13" name="Java Request Defaults"
screenshot="java_defaults.png">
+<description><p>The Java Request Defaults component lets you set default values for
Java testing. See the <complink name="Java Request"/>.</p>
+</description>
+
</component>
</section>
<section name="13.5 Assertions" anchor="assertions">
-<component index="13.5.1" name="Response Assertion" anchor="basic_assertion"
screenshot="../images/screenshots/assertion/assertion.gif">
+<component index="13.5.1" name="Response Assertion" anchor="basic_assertion"
screenshot="assertion/assertion.gif">
<description><p>The response assertion control panel let's you add strings to be
tested. These strings can
be regular expressions. You can also choose whether the strings will be expected
@@ -911,16 +980,16 @@
</properties>
<example title="Assertion Examples" anchor="assertion_examples">
-<figure image="../images/screenshots/assertion/example1a.gif">Figure 7 - Test
Plan</figure>
-<figure image="../images/screenshots/assertion/example1b.gif">Figure 8 - Assertion
Control Panel with Pattern</figure>
-<figure image="../images/screenshots/assertion/example1c-pass.gif">Figure 9 -
Assertion Listener Results (Pass)</figure>
-<figure image="../images/screenshots/assertion/example1c-fail.gif">Figure 10 -
Assertion Listener Results (Fail)</figure>
+<figure image="assertion/example1a.png">Figure 7 - Test Plan</figure>
+<figure image="assertion/example1b.gif">Figure 8 - Assertion Control Panel with
Pattern</figure>
+<figure image="assertion/example1c-pass.gif">Figure 9 - Assertion Listener Results
(Pass)</figure>
+<figure image="assertion/example1c-fail.gif">Figure 10 - Assertion Listener Results
(Fail)</figure>
</example>
</component>
-<component index="13.5.2" name="Duration Assertion"
screenshot="../images/screenshots/duration_assertion.png">
+<component index="13.5.2" name="Duration Assertion"
screenshot="duration_assertion.png">
<description><p>The Duration Assertion tests that each response was received within
a given amount
of time. Any response that takes longer than the given number of milliseconds
(specified by the
user) is marked as a failed response.</p></description>
@@ -933,11 +1002,34 @@
</properties>
</component>
+<component index="13.5.3" name="Size Assertion" screenshot="size_assertion.png">
+<description><p>The Size Assertion tests that each response contains the right
number of bytes in it. You can specify that
+the size be equal to, greater than, less than, or not equal to a given number of
bytes.</p></description>
+
+<properties>
+<property name="Name" required="">Descriptive name for this element that is shown
in the tree.</property>
+ <property name="Size in bytes" required="Yes">The number of bytes to use in
testing the size of the response.</property>
+ <property name="Type of Comparison" required="Yes">Whether to test that the
response is equal to, greater than, less than,
+ or not equal to, the number of bytes specified.</property>
+
+</properties>
+</component>
+
+<component index="13.5.4" name="XML Assertion" screenshot="xml_assertion.png">
+<description><p>The XML Assertion tests that the response data consists of a
formally correct XML document. It does not
+validate the XML based on a DTD or schema or do any further
validation.</p></description>
+
+<properties>
+<property name="Name" required="">Descriptive name for this element that is shown
in the tree.</property>
+
+</properties>
+</component>
+
</section>
<section name="13.6 Timers" anchor="timers">
-<component index="13.6.1" name="Constant Timer" anchor="constant"
screenshot="../images/screenshots/timers/constant_timer.gif">
+<component index="13.6.1" name="Constant Timer" anchor="constant"
screenshot="timers/constant_timer.gif">
<description>
<p>If you want to have each thread pause for the same amount of time between
requests, use this timer.</p></description>
@@ -948,7 +1040,7 @@
</properties>
</component>
-<component index="13.6.2" name="Gaussian Random Timer"
screenshot="../images/screenshots/timers/gauss_random_timer.gif">
+<component index="13.6.2" name="Gaussian Random Timer"
screenshot="timers/gauss_random_timer.gif">
<description><p>This timer pauses each thread request for a random amount of time,
with most
of the time intervals ocurring near a particular value. The total delay is the
@@ -965,7 +1057,7 @@
</component>
-<component index="13.6.3" name="Uniform Random Timer"
screenshot="../images/screenshots/timers/uniform_random_timer.gif">
+<component index="13.6.3" name="Uniform Random Timer"
screenshot="timers/uniform_random_timer.gif">
<description><p>This timer pauses each thread request for a random amount of time,
with
each time interval having the same probability of occurring. The total delay
@@ -981,7 +1073,7 @@
</component>
-<component index="13.6.4" name="Constant Throughput Timer"
screenshot="../images/screenshots/timers/constant_throughput_timer.gif">
+<component index="13.6.4" name="Constant Throughput Timer"
screenshot="timers/constant_throughput_timer.gif">
<description><p>This timer introduces variable pauses, calculated to keep the total
throughput (in terms of samples per minute) as close as possible to a give figure. Of
course the throughput will be lower if the server is not capable of handling it, or if
other timers or time-consuming test elements prevent it.</p>
@@ -995,7 +1087,7 @@
</component>
</section>
-<section name="13.7 Modifiers" anchor="Modifiers">
+<section name="13.7 Pre Processors" anchor="preprocessors">
<component index="13.7.1" name="HTML Link Parser" anchor="html_link_parser">
<description>
<p>This modifier parses HTML response from the server and extracts
@@ -1010,7 +1102,7 @@
<p>Consider a simple example: let's say you wanted JMeter to "spider"
through your site,
hitting link after link parsed from the HTML returned from your server (this is not
actually the most useful thing to do, but it serves as a good example). You would
create
-a <complink name="Simple Controller"/>, and add the "HTML Link Parser" to
it. Then, create a
+a <complink name="Simple Controller"/>, and add the "HTML Link Parser" to
it. Then, create an
HTTP Request, and set the domain to ".*", and the path likewise. This will
cause your test sample to match with any link found on the returned pages. If you
wanted to
restrict the spidering to a particular domain, then change the domain value
@@ -1037,7 +1129,7 @@
will choose at random, and replace the value in your URL test sample. Each time
through
the test, a new random value will be chosen.</p>
-<figure image="../images/screenshots/modification.png">Figure 8 - Online Poll
Example</figure>
+<figure image="modification.png">Figure 8 - Online Poll Example</figure>
<note>One important thing to remember is that you must create a test sample
immediately
prior that will return an HTML page with the links and forms that are relevant to
@@ -1046,7 +1138,7 @@
</component>
-<component index="13.7.2" name="HTTP URL Re-writing Modifier"
screenshot="../images/screenshots/url_rewriter.gif">
+<component index="13.7.2" name="HTTP URL Re-writing Modifier"
screenshot="url_rewriter.png">
<description><p>This modifier works similarly to the HTML Link Parser, except it
has a specific purpose for which
it is easier to use than the HTML Link Parser, and more efficient. For web
applications that
use URL Re-writing to store session ids instead of cookies, this element can be
attached at the
@@ -1065,10 +1157,11 @@
grab the value assigned to it, whether it's in an HREF or a form.</property>
<property name="Path Extension" required="No">Some web apps rewrite URLs by
appending
a semi-colon plus the session id parameter. Check this box if that is
so.</property>
+ <property name="Do not use equals in path extension" required="No">Some web
apps rewrite URLs without using an "=" sign between the parameter name and
value (such as Intershop Enfinity).</property>
</properties>
</component>
-<component index="13.7.3" name="HTML Parameter Mask" useinstead="Counter"
screenshot="../images/screenshots/parameter_mask.png">
+<component index="13.7.3" name="HTML Parameter Mask" useinstead="Counter"
screenshot="parameter_mask.png">
<description><p>The HTML Parameter Mask is used to generate unique values for HTML
arguments. By
specifying the name of the parameter, a value prefix and suffix, and counter
parameters, this
modifier will generate values of the form "<code>name=prefixcountersuffix</code>".
Any HTTP
@@ -1096,7 +1189,7 @@
</properties>
</component>
-<component index="13.7.4" name="HTTP User Parameter Modifier" useinstead="User
Parameters" screenshot="../images/screenshots/user_param_modifier.gif">
+<component index="13.7.4" name="HTTP User Parameter Modifier" useinstead="User
Parameters" screenshot="user_param_modifier.gif">
<description><p>The User Parameter Modifier uses an XML file get values for HTTP
arguments. Any
HTTP Request that this modifier modifies will be checked for the existence of the
specified
arguments. If found, the values for those arguments will be replaced by the values
found in the
@@ -1115,11 +1208,95 @@
</properties>
</component>
+<component index="13.7.5" name="User Parameters" screenshot="user_params.png">
+<description><p>Allows the user to specify values for User Variables specific to
individual threads.</p>
+<p>User Variables can also be specified in the Test Plan but not specific to
individual threads. This panel allows
+you to specify a series of values for any User Variable. For each thread, the
variable will be assigned one of the values from the series
+in sequence. If there are more threads than values, the values get re-used. For
example, this can be used to assign a distinct
+user id to be used by each thread. User variables can be referenced in any field of
any jMeter Component.</p>
+
+<p>The variable is specified by clicking the Add Variable button in the bottom of
the panel and filling in the Variable name in the 'Name:' column.
+To add a new value to the series, click the 'Add User' button and fill in the
desired value in the newly added column.</p>
+
+<p>Values can be accessed in any test component in the same thread group, using the
<a href="functions.html">function syntax</a>: ${variable}.</p>
+</description>
+
+<properties>
+ <property name="Name" required="">Descriptive name for this element that is
shown in the tree.</property>
+ <property name="Update Once Per Iteration" required="Yes">A flag to
indicate whether the User Paramters element
+ should update it's variables only once per iteration. if you embed
functions into the UP, then you may need greater
+ control over how often the values of the variables are updated. Keep this
box checked to ensure the values are
+ updated each time through the UP's parent controller. Uncheck the box, and
the UP will update the parameters for
+ every sample request made within it's <a
href="build-test-plan.html#scoping_rules">scope</a>.</property>
+
+</properties>
+</component>
+
+<component index="13.7.6" name="Counter" screenshot="counter.png">
+<description><p>Allows the user to create a counter that can be referenced anywhere
+in the Thread Group. The counter config lets the user configure a starting point,
a maximum,
+and the increment. The counter will loop from the start to the max, and then start
over
+with the start, continuing on like that until the test is ended. </p></description>
+<properties>
+ <property name="Name" required="">Descriptive name for this element that is
shown in the tree.</property>
+ <property name="Start" required="Yes">The starting number for the counter.
The counter will equal this
+ number during the first iteration.</property>
+ <property name="Increment" required="Yes">How much to increment the counter
by after each
+ iteration.</property>
+ <property name="Maximum" required="Yes">If the counter exceeds the maximum,
then it is reset to the Start value.</property>
+ <property name="Reference Name" required="Yes">This controls how you refer
to this value in other elements. Syntax is
+ as in <a href="functions.html">user-defined values</a>:
<code>$(reference_name}</code>.</property>
+ <property name="Track Counter Independently for each User" required="No">In
other words, is this a global counter, or does each user get their
+ own counter? If unchecked, the counter is global (ie, user #1 will get
value "1", and user #2 will get value "2" on
+ the first iteration). If checked, each user has an independent
counter.</property>
+</properties>
+</component>
+
+</section>
+
+<section name="13.8 Post-Processors" anchor="postprocessors">
+<component index="13.8.1" name="Regular Expression Extractor"
screenshot="regex_extractor.png">
+<description><p>Allows the user to extract values from a server response using a
Perl-type regular expression. As a post-processor,
+this element will execute after each Sample request in its <scope/>, applying the
regular expression, extracting the requested values,
+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. 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
+ group 1, '$2$' to refer to group 2, etc.</property>
+ <property name="Match No." required="Yes">Indicates which match to use.
The regular expression may match multiple times. Use a
+ value of zero to indicate JMeter should choose a match at random.
Otherwise, select the numbered match assuming they
+ are ordered as they appear in the response data.</property>
+ <property name="Default Value" required="No">If no matches are found, the
default value is stored in the variable.</property>
+</properties>
+</component>
</section>
-<section name="13.8 Miscellaneous Features" anchor="Miscellaneous_Features">
+<section name="13.9 Miscellaneous Features" anchor="Miscellaneous_Features">
+
+<component index="13.9.1" name="Test Plan" screenshot="testplan.png">
+<description><p>At the Test Plan level, static variables can be defined that allow
users to abstract values that are repeated throughout their tests, such as server
names. Here, one can instruct JMeter to save the maximum sample information to file
by selecting "functional testing". Also, an option exists here to instruct JMeter to
run the <complink name="Thread Group"/> serially rather than in
parallel.</p></description>
+</component>
+
+<component index="13.9.2" name="Thread Group" screenshot="threadgroup.png">
+<description><p>A Thread Group defines a pool of users that will execute a
particular test case against your server. In the Thread Group GUI, you can control
the number of users simulated (num of threads), the ramp up time (how long it takes to
start all the threads), the number of times to perform the test, and optionally, a
start and stop time for the test.</p></description>
+
+<properties>
+ <property name="Name" required="">Descriptive name for this element that is
shown in the tree.</property>
+ <property name="Number of Threads" required="Yes">Number of users to
simulate.</property>
+ <property name="Ramp-up Period" required="Yes">How long JMeter should take
to get all the threads started. If there are 10 threads and a ramp-up time of 100
seconds, then each thread will begin 10 seconds after the previous thread started, for
a total time of 100 seconds to get the test fully up to speed.</property>
+ <property name="Loop Count" required="No">Number of times to perform the
test case. Alternatively, "forever" can be selected causing the test to run until
manually stopped.</property>
+ <property name="Start Time" required="No">If the scheduler checkbox is
selected, one can choose an absolute start time. When you start your test, JMeter
will wait until the specified start time to begin testing.</property>
+ <property name="End Time" required="No">If the scheduler checkbox is
selected, one can choose an absolute end time. When you start your test, JMeter will
wait until the specified start time to begin testing, and it will stop at the
specified end time.</property></properties>
+</component>
+
+<component index="13.9.3" name="WorkBench" screenshot="workbench.png">
+<description><p>The WorkBench simply provides a place to temporarily store test
elements while not in use, for copy/paste purposes, or any other purpose you desire.
When you save your test plan, WorkBench items are not saved with it. Your WorkBench
can be saved independently, if you like (right-click on WorkBench and choose
Save).</p></description>
+</component>
-<component index="13.8.1" name="SSL Manager" screenshot="">
+<component index="13.9.4" name="SSL Manager" screenshot="">
<p>
The SSL Manager is a way to select a client certificate so that you can test
applications that use Public Key Infrastructure (PKI). In order to use it,
@@ -1174,11 +1351,11 @@
</component>
</section>
-<section name="13.9 Functions" anchor="functions">
+<section name="13.10 Functions" anchor="functions">
<p>Please read the <a href="functions.html">general description</a> of how
functions work. Here is given only the details of
specific functions.</p>
-<component index="13.9.1" name="__regexFunction">
+<component index="13.10.1" name="__regexFunction">
<description><p>The Regex Function is used to parse the previous response using any
regular
expression (provided by user). The function returns the template string with
variable values filled
in.</p>
@@ -1225,7 +1402,7 @@
</properties>
</component>
-<component index="13.9.2" name="__counter">
+<component index="13.10.2" name="__counter">
<description><p>The counter generates a new number each time it is called, starting
with 1
and incrementing by +1 each time. The counter can be configured to keep each
simulated user's values
separate, or to use the same counter for all user. If each user's values is
incremented separately,
@@ -1242,7 +1419,7 @@
</properties>
</component>
-<component index="13.9.3" name="__threadNum">
+<component index="13.10.3" name="__threadNum">
<description><p>The thread number function simply returns the number of the thread
currently
being executed. These numbers are independent of ThreadGroup, meaning thread #1 in
one threadgroup
is indistinguishable from thread #1 in another threadgroup, from the point of view
of this function.</p>
@@ -1251,7 +1428,7 @@
</description>
</component>
-<component index="13.9.4" name="__intsum">
+<component index="13.10.4" name="__intSum">
<description><p>The intsum function can be used to compute the sum of two or more
integer values.
</p></description>
@@ -1264,7 +1441,7 @@
</properties>
</component>
-<component index="13.9.5" name="_StringFromFile">
+<component index="13.10.5" name="_StringFromFile">
<description>
<p>
The StringFromFile function can be used to read strings from a text file.
@@ -1286,13 +1463,78 @@
(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. For example:
+ <ul>
+ <li>new Date() - return the current date and time</li>
+ <li>Math.floor(Math.random()*(${maxRandom}+1))
+ - a random number between 0 and the variable
maxRandom</li>
+
<li>${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1))
+ - a random number between the variables minRandom and
maxRandom</li>
+ </ul>
+ </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="__CSVRead">
+<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>
+
+<component index="13.10.9" name="__property">
+<description><p>The property function returns the value of a JMeter property.
+ If the property value cannot be found, it returns the property name.</p>
+ </description>
+
+<properties>
+ <property name="Property Name" required="Yes">The property name to be
retrieved.</property>
+ <property name="Name of function" required="No">A reference name for
reusing the value
+ computed by this function.</property>
+</properties>
+</component>
+
</section>
</body>
</document>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]