mirror of https://github.com/apache/jmeter.git
538 lines
19 KiB
HTML
538 lines
19 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
this work for additional information regarding copyright ownership.
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
(the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<!-- Content Stylesheet for Site -->
|
|
|
|
|
|
<!-- start the processing -->
|
|
<!-- ====================================================================== -->
|
|
<!-- Main Page Section -->
|
|
<!-- ====================================================================== -->
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
|
|
|
|
|
|
|
|
<title>JMeter - User's Manual: Building a JMS (Java Messaging Service) Test Plan</title>
|
|
</head>
|
|
|
|
<body bgcolor="#ffffff" text="#000000" link="#525D76">
|
|
<table border="0" cellspacing="0">
|
|
<!-- TOP IMAGE -->
|
|
<tr>
|
|
<td>
|
|
<!-- Need to specify height otherwise iframe seems to grab extra -->
|
|
<iframe src="http://www.apache.org/ads/halfbanner.html" height="102"
|
|
style="border-width:0; float: left" frameborder="0" scrolling="no"></iframe>
|
|
</td>
|
|
<td align="left">
|
|
<a href="http://jakarta.apache.org"><img width="505" height="48" src="../images/jakarta-logo.gif" alt="Jakarta" title="Jakarta" border="0"/></a>
|
|
</td>
|
|
<td align="right">
|
|
<a href="http://jakarta.apache.org/jmeter/"><img width="221" height="102" src="../images/logo.jpg" alt="JMeter" title="JMeter" border="0"/></a>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table border="0" width="100%" cellspacing="4">
|
|
<tr><td colspan="2">
|
|
<hr noshade size="1"/>
|
|
</td></tr>
|
|
|
|
<tr>
|
|
<!-- LEFT SIDE NAVIGATION -->
|
|
<td width="20%" valign="top" nowrap="true">
|
|
<p><strong>About</strong></p>
|
|
<ul>
|
|
<li> <a href="../index.html">Overview</a>
|
|
</li>
|
|
<li> <a href="../changes.html">Changes</a>
|
|
</li>
|
|
<li> <a href="../known_bugs.html">Known Bugs</a>
|
|
</li>
|
|
<li> <a href="../license.html">License</a>
|
|
</li>
|
|
<li> <a href="http://wiki.apache.org/jakarta-jmeter/JMeterCommitters">Contributors</a>
|
|
</li>
|
|
</ul>
|
|
<p><strong>Download</strong></p>
|
|
<ul>
|
|
<li> <a href="http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi">Download Releases</a>
|
|
</li>
|
|
<li> <a href="../nightly.html">Developer (Nightly) Builds</a>
|
|
</li>
|
|
</ul>
|
|
<p><strong>Documentation</strong></p>
|
|
<ul>
|
|
<li> <a href="../usermanual/index.html">User Manual</a>
|
|
</li>
|
|
<li> <a href="../api/index.html">Javadocs</a>
|
|
</li>
|
|
<li> <a href="../localising/index.html">Localisation (Translator's Guide)</a>
|
|
</li>
|
|
<li> <a href="../building.html">Building JMeter and Add-Ons</a>
|
|
</li>
|
|
<li> <a href="http://wiki.apache.org/jakarta-jmeter">JMeter Wiki</a>
|
|
</li>
|
|
<li> <a href="http://wiki.apache.org/jakarta-jmeter/JMeterFAQ">FAQ (Wiki)</a>
|
|
</li>
|
|
</ul>
|
|
<p><strong>Tutorials (PDF format)</strong></p>
|
|
<ul>
|
|
<li> <a href="../usermanual/jmeter_distributed_testing_step_by_step.pdf">Distributed Testing</a>
|
|
</li>
|
|
<li> <a href="../usermanual/jmeter_proxy_step_by_step.pdf">Recording Tests</a>
|
|
</li>
|
|
<li> <a href="../usermanual/junitsampler_tutorial.pdf">JUnit Sampler</a>
|
|
</li>
|
|
<li> <a href="../usermanual/jmeter_accesslog_sampler_step_by_step.pdf">Access Log Sampler</a>
|
|
</li>
|
|
<li> <a href="../extending/jmeter_tutorial.pdf">Extending JMeter</a>
|
|
</li>
|
|
</ul>
|
|
<p><strong>Community</strong></p>
|
|
<ul>
|
|
<li> <a href="http://jakarta.apache.org/site/getinvolved.html">Get Involved</a>
|
|
</li>
|
|
<li> <a href="http://jakarta.apache.org/site/mail.html">Mailing Lists</a>
|
|
</li>
|
|
<li> <a href="http://jakarta.apache.org/site/cvsindex.html">SVN Repositories</a>
|
|
</li>
|
|
</ul>
|
|
</td>
|
|
<td width="80%" align="left" valign="top">
|
|
<table>
|
|
<tr>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="index.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Index</font></a></div>
|
|
</td>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="build-monitor-test-plan.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div>
|
|
</td>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="build-jms-point-to-point-test-plan.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Prev</font></a></div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#525D76">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="building"><strong>12. Building a JMS Topic Test Plan</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p><table border="1" bgcolor="#bbbb00" width="50%" cellspacing="0" cellpadding="2">
|
|
<tr><td>
|
|
JMS requires some optional jars to be downloaded. Please refer to
|
|
<a href="get-started.html">
|
|
Getting Started
|
|
</a>
|
|
for full details.
|
|
|
|
</td></tr>
|
|
</table></p>
|
|
<p >
|
|
In this section, you will learn how to create a
|
|
|
|
<a href="build-test-plan.html">
|
|
Test Plan
|
|
</a>
|
|
to test JMS Providers. You will
|
|
create five subscribers and one publisher. You will create 2 thread groups and set
|
|
each one to 10 iterations. The total messages is (6 threads) x (1 message) x
|
|
(repeat 10 times) = 60 messages. To construct the Test Plan, you will use the
|
|
following elements:
|
|
|
|
<a href="test_plan.html#thread_group">
|
|
Thread Group
|
|
</a>
|
|
,
|
|
|
|
<a href="../usermanual/component_reference.html#JMS_Publisher">JMS Publisher</a>
|
|
,
|
|
|
|
<a href="../usermanual/component_reference.html#JMS_Subscriber">JMS Subscriber</a>
|
|
, and
|
|
|
|
<a href="../usermanual/component_reference.html#Graph_Results">Graph Results</a>
|
|
.
|
|
</p>
|
|
<p >
|
|
General notes on JMS: There are currently two JMS samplers. One uses JMS topics
|
|
and the other uses queues. Topic messages are commonly known as pub/sub messaging.
|
|
Topic messaging is generally used in cases where a message is published by a producer and
|
|
consumed by multiple subscribers. Queue messaging is generally used for transactions
|
|
where the sender expects a response. Messaging systems are quite different from
|
|
normal HTTP requests. In HTTP, a single user sends a request and gets a response.
|
|
Messaging system can work in sychronous and asynchronous mode. A JMS sampler needs
|
|
the JMS implementation jar files; for example, from Apache ActiveMQ.
|
|
See
|
|
<a href="#libraries_activemq">
|
|
here
|
|
</a>
|
|
for the list of jars provided by ActiveMQ 3.0.
|
|
</p>
|
|
</blockquote>
|
|
</p>
|
|
</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="adding_users"><strong>12.1 Adding Users</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
The first step is add a
|
|
<a href="test_plan.html#thread_group">
|
|
Thread Group
|
|
</a>
|
|
|
|
element. The Thread Group tells JMeter the number of users you want to simulate,
|
|
how often the users should send requests, and how many requests they should
|
|
send.
|
|
</p>
|
|
<p >
|
|
Go ahead and add the ThreadGroup element by first selecting the Test Plan,
|
|
clicking your right mouse button to get the Add menu, and then select
|
|
Add --> ThreadGroup.
|
|
</p>
|
|
<p >
|
|
You should now see the Thread Group element under Test Plan. If you do not
|
|
see the element, then "expand" the Test Plan tree by clicking on the
|
|
Test Plan element.
|
|
</p>
|
|
<p >
|
|
Next, you need to modify the default properties. Select the Thread Group element
|
|
in the tree, if you have not already selected it. You should now see the Thread
|
|
Group Control Panel in the right section of the JMeter window (see Figure 12.1
|
|
below)
|
|
</p>
|
|
<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img src="../images/screenshots/webtest/threadgroup.png"><br>
|
|
<font size="-1">
|
|
Figure 12.1. Thread Group with Default Values
|
|
</font></td></tr></table></p>
|
|
<p >
|
|
Start by providing a more descriptive name for our Thread Group. In the name
|
|
field, enter Subscribers.
|
|
</p>
|
|
<p >
|
|
Next, increase the number of users (called threads) to 5.
|
|
</p>
|
|
<p >
|
|
In the next field, the Ramp-Up Period, set the value to 0
|
|
seconds. This property tells JMeter how long to delay between starting each
|
|
user. For example, if you enter a Ramp-Up Period of 5 seconds, JMeter will
|
|
finish starting all of your users by the end of the 5 seconds. So, if we have
|
|
5 users and a 5 second Ramp-Up Period, then the delay between starting users
|
|
would be 1 second (5 users / 5 seconds = 1 user per second). If you set the
|
|
value to 0, JMeter will immediately start all users.
|
|
</p>
|
|
<p >
|
|
Clear the checkbox labeled "Forever", and enter a value of 10 in the Loop
|
|
Count field. This property tells JMeter how many times to repeat your test.
|
|
If you enter a loop count value of 0, then JMeter will run your test only
|
|
once. To have JMeter repeatedly run your Test Plan, select the Forever
|
|
checkbox.
|
|
</p>
|
|
<p >
|
|
Repeat the process and add another thread group. For the second thread
|
|
group, enter "Publisher" in the name field, set the number of threads to 1,
|
|
and set the iteration to 10.
|
|
|
|
</p>
|
|
<p><table border="1" bgcolor="#bbbb00" width="50%" cellspacing="0" cellpadding="2">
|
|
<tr><td> In most applications, you have to manually accept
|
|
changes you make in a Control Panel. However, in JMeter, the Control Panel
|
|
automatically accepts your changes as you make them. If you change the
|
|
name of an element, the tree will be updated with the new text after you
|
|
leave the Control Panel (for example, when selecting another tree element).
|
|
</td></tr>
|
|
</table></p>
|
|
</blockquote>
|
|
</p>
|
|
</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="adding_subscriber_publisher"><strong>12.2 Adding JMS Subscriber and Publisher</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
Make sure the required jar files are in JMeter's lib directory. If they are
|
|
not, shutdown JMeter, copy the jar files over and restart JMeter.
|
|
</p>
|
|
<p >
|
|
Start by adding the sampler
|
|
<a href="../usermanual/component_reference.html#JMS_Subscriber">JMS Subscriber</a>
|
|
|
|
to the Subscribers element (Add --> Sampler --> JMS Subscriber).
|
|
Then, select the JMS Subscriber element in the tree and edit the following properties:
|
|
|
|
|
|
<ol >
|
|
|
|
|
|
<li >
|
|
Change the Name field to "sample subscriber"
|
|
</li>
|
|
|
|
|
|
<li >
|
|
If the JMS provider uses the jndi.properties file, check the box
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Enter the name of the InitialContextFactory class
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Enter the provider URL. This is the URL for the JNDI server, if there is one
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Enter the name of the connection factory. Please refer to the documentation
|
|
of the JMS provider for the information
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Enter the name of the message topic
|
|
</li>
|
|
|
|
|
|
<li >
|
|
If the JMS provider requires authentication, check "required" and enter the
|
|
username and password. For example, Orion JMS requires authentication, while ActiveMQ
|
|
and MQSeries does not
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Enter 10 in "Number of samples to aggregate". For performance reasons, the sampler
|
|
will aggregate messages, since small messages will arrive very quickly. If the sampler
|
|
didn't aggregate the messages, JMeter wouldn't be able to keep up.
|
|
</li>
|
|
|
|
|
|
<li >
|
|
If you want to read the response, check the box
|
|
</li>
|
|
|
|
|
|
<li >
|
|
There are two client implementations for subscribers. If the JMS provider
|
|
exhibits zombie threads with one client, try the other.
|
|
</li>
|
|
|
|
|
|
</ol>
|
|
|
|
|
|
</p>
|
|
<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img src="../images/screenshots/jms/jms_sub.png"><br>
|
|
<font size="-1">
|
|
Figure 12.2. JMS Subscriber
|
|
</font></td></tr></table></p>
|
|
<p >
|
|
Next add the sampler
|
|
<a href="../usermanual/component_reference.html#JMS_Publisher">JMS Publisher</a>
|
|
|
|
to the Publisher element (Add --> Sampler --> JMS Subscriber).
|
|
Then, select the JMS Publisher element in the tree and edit the following properties:
|
|
|
|
</p>
|
|
<ol >
|
|
|
|
|
|
<li >
|
|
Change the Name field to "sample publisher".
|
|
</li>
|
|
|
|
|
|
<li >
|
|
If the JMS provider uses the jndi.properties file, check the box
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Enter the name of the InitialContextFactory class.
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Enter the provider URL. This is the URL for the JNDI server, if there is one
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Enter the name of the connection factory. Please refer to the documentation
|
|
of the JMS provider for the information
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Enter the name of the message topic
|
|
</li>
|
|
|
|
|
|
<li >
|
|
If the JMS provider requires authentication, check "required" and enter the
|
|
username and password. For example, Orion JMS requires authentication, while ActiveMQ
|
|
and MQSeries does not
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Enter 10 in "Number of samples to aggregate". For performance reasons, the sampler
|
|
will aggregate messages, since small messages will arrive very quickly. If the sampler
|
|
didn't aggregate the messages, JMeter wouldn't be able to keep up.
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Select the appropriate configuration for getting the message to publish. If you
|
|
want the sampler to randomly select the message, place the messages in a directory
|
|
and select the directory using browse.
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Select the message type. If the message is in object format, make sure the
|
|
message is generated correctly.
|
|
</li>
|
|
|
|
|
|
</ol>
|
|
<p >
|
|
</p>
|
|
<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img src="../images/screenshots/jms/jms_pub.png"><br>
|
|
<font size="-1">
|
|
Figure 12.3. JMS Publisher
|
|
</font></td></tr></table></p>
|
|
</blockquote>
|
|
</p>
|
|
</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="adding_listener"><strong>12.3 Adding a Listener to View Store the Test Results</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
The final element you need to add to your Test Plan is a
|
|
|
|
<a href="component_reference.html#listeners">
|
|
Listener
|
|
</a>
|
|
. This element is
|
|
responsible for storing all of the results of your HTTP requests in a file and presenting
|
|
a visual model of the data.
|
|
</p>
|
|
<p >
|
|
Select the Test Plan element and add a
|
|
<a href="../usermanual/component_reference.html#Graph_Results">Graph Results</a>
|
|
listener (Add --> Listener
|
|
--> Graph Results). Next, you need to specify a directory and filename of the
|
|
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.png"><br>
|
|
<font size="-1">
|
|
Figure 12.4. Graph Results Listener
|
|
</font></td></tr></table></p>
|
|
</blockquote>
|
|
</p>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table>
|
|
<tr>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="index.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Index</font></a></div>
|
|
</td>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="build-monitor-test-plan.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div>
|
|
</td>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="build-jms-point-to-point-test-plan.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Prev</font></a></div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr><td colspan="2">
|
|
<hr noshade size="1"/>
|
|
</td></tr>
|
|
<tr><td colspan="2">
|
|
<div align="center"><font color="#525D76" size="-1"><em>
|
|
Copyright © 1999-2008, Apache Software Foundation
|
|
</em></font></div>
|
|
</td></tr>
|
|
</table>
|
|
</body>
|
|
</html>
|
|
<!-- end the processing -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|