You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2009/05/10 00:57:48 UTC

svn commit: r773282 [4/16] - in /jakarta/jmeter/trunk/docs: ./ localising/ usermanual/

Modified: jakarta/jmeter/trunk/docs/usermanual/best-practices.html
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/usermanual/best-practices.html?rev=773282&r1=773281&r2=773282&view=diff
==============================================================================
--- jakarta/jmeter/trunk/docs/usermanual/best-practices.html (original)
+++ jakarta/jmeter/trunk/docs/usermanual/best-practices.html Sat May  9 22:57:45 2009
@@ -18,28 +18,28 @@
 
 <!-- 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: Best Practices</title>
-		  </head>
-
-		  <body bgcolor="#ffffff" text="#000000" link="#525D76">
-				<table border="0" cellspacing="0">
-					 <!-- TOP IMAGE -->
-					 <tr>
-						  <td>
+<!-- ====================================================================== -->
+<!-- Main Page Section -->
+<!-- ====================================================================== -->
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+
+
+
+<title>JMeter - User's Manual: Best Practices</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>
+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>
@@ -47,416 +47,432 @@
 <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="boss.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div>
-        </td>
-        				<td bgcolor="#525D76">
-        <div align="right"><a href="remote-test.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="best_practices"><strong>16. Best Practices</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  		  </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="limit_threads"><strong>16.1 Limit the Number of Threads</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								Your hardware's capabilities will limit the number of threads you can effectively
+</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="boss.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div>
+</td>
+<td bgcolor="#525D76">
+<div align="right"><a href="remote-test.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="best_practices"><strong>16. Best Practices</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+</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="limit_threads"><strong>16.1 Limit the Number of Threads</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+Your hardware's capabilities will limit the number of threads you can effectively
 run with JMeter.  It will also depend on how fast your server is (a faster server
 gives makes JMeter work harder since it returns request quicker).  The more
 JMeter works, the less accurate its timing information will be.  The more work
 JMeter does, the more each thread has to wait to get access to the CPU, the more
 inflated the timing information gets.  If you need large-scale load testing, consider
 running multiple non-GUI JMeter instances on multiple machines.
-						</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="put_cookie_manager"><strong>16.2 Where to Put the Cookie Manager</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								See 
-												<a	 href="build-web-test-plan.html#adding_cookie_support">
-								Building a Web Test
-						</a>
-									
+</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="put_cookie_manager"><strong>16.2 Where to Put the Cookie Manager</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+See 
+<a href="build-web-test-plan.html#adding_cookie_support">
+Building a Web Test
+</a>
+
 for information.
-						</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="put_auth_manager"><strong>16.3 Where to Put the Authorization Manager</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								See 
-												<a	 href="build-adv-web-test-plan.html#header_manager">
-								Building an Advanced
+</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="put_auth_manager"><strong>16.3 Where to Put the Authorization Manager</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+See 
+<a href="build-adv-web-test-plan.html#header_manager">
+Building an Advanced
 Web Test
-						</a>
-									 for information.
-						</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="proxy_server"><strong>16.4 Using the Proxy Server</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								Refer to 
-												<a href="../usermanual/component_reference.html#HTTP_Proxy_Server">HTTP Proxy Server</a>
-									 for details on setting up the proxy
+</a>
+ for information.
+</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="proxy_server"><strong>16.4 Using the Proxy Server</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+Refer to 
+<a href="../usermanual/component_reference.html#HTTP_Proxy_Server">HTTP Proxy Server</a>
+ for details on setting up the proxy
 server. The most important thing to do is filter out all requests you aren't
 interested in.  For instance, there's no point in recording image requests (JMeter can
 be instructed to download all images on a page - see 
-												<a href="../usermanual/component_reference.html#HTTP_Request">HTTP Request</a>
-									).
+<a href="../usermanual/component_reference.html#HTTP_Request">HTTP Request</a>
+).
 These will just clutter your test plan.  Most likely, there is an extension all your files
 share, such as .jsp, .asp, .php, .html or the like. These you should "include" by
 entering ".*\.jsp" as an "Include Pattern". 
-						</p>
-							  									 				<p	>
-								Alternatively, you can exclude images by entering ".*\.gif" as an "Exclude Pattern".
+</p>
+<p>
+Alternatively, you can exclude images by entering ".*\.gif" as an "Exclude Pattern".
 Depending on your application, this may or may not be a better way to go.  You may
 also have to exclude stylesheets, javascript files, and other included files.  Test
 out your settings to verify you are recording what you want, and then erase and start
 fresh.
-						</p>
-							  									 				<p	>
-								The Proxy Server expects to find a ThreadGroup element with a Recording Controller
+</p>
+<p>
+The Proxy Server expects to find a ThreadGroup element with a Recording Controller
 under it where it will record HTTP Requests to.  This conveniently packages all your samples under one
 controller, which can be given a name that describes the test case.
-						</p>
-							  									 				<p	>
-								Now, go through the steps of a Test Case.  If you have no pre-defined test cases, use
+</p>
+<p>
+Now, go through the steps of a Test Case.  If you have no pre-defined test cases, use
 JMeter to record your actions to define your test cases.  Once you have finished a
 definite series of steps, save the entire test case in an appropriately named file.  Then, wipe
 clean and start a new test case.  By doing this, you can quickly record a large number of
 test case "rough drafts".
-						</p>
-							  									 				<p	>
-								One of the most useful features of the Proxy Server is that you can abstract out
+</p>
+<p>
+One of the most useful features of the Proxy Server is that you can abstract out
 certain common elements from the recorded samples.  By defining some
 
-												<a	 href="functions.html">
-								user-defined variables
-						</a>
-									 at the Test Plan level or in
+<a href="functions.html">
+user-defined variables
+</a>
+ at the Test Plan level or in
 
-												<a href="../usermanual/component_reference.html#User_Defined_Variables">User Defined Variables</a>
-									 elements, you can have JMeter automatically
+<a href="../usermanual/component_reference.html#User_Defined_Variables">User Defined Variables</a>
+ elements, you can have JMeter automatically
 replace values in you recorded samples.  For instance, if you are testing an app on
 server "xxx.example.com", then you can define a variable called "server" with the value of
 "xxx.example.com", and anyplace that value is found in your recorded samples will be replaced
 with "${server}".
 
 
-												<p><table border="1" bgcolor="#bbbb00" width="50%" cellspacing="0" cellpadding="2">
-		<tr><td>						Please note that matching is case-sensitive.
-			</td></tr>
-	</table></p>
-									
-
-
-						</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="user_variables"><strong>16.5 User variables</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								
+<p>
+<table border="1" bgcolor="#bbbb00" width="50%" cellspacing="0" cellpadding="2">
+<tr><td>Please note that matching is case-sensitive.
+</td></tr>
+</table>
+</p>
+
+
+
+</p>
+<p>
+
+If JMeter does not record any samples, check that the brower really is using the proxy.
+If the browser works OK even if JMeter is not running, then the browser cannot be using the proxy.
+Some browsers ignore proxy settings for localhost or 127.0.0.1; try using the local hostname or IP instead.
+
+</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="user_variables"><strong>16.5 User variables</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+
 Some test plans need to use different values for different users/threads. 
 For example, you might want to test a sequence that requires a unique login for each user.
 This is easy to achieve with the facilities provided by JMeter.
 
-						</p>
-							  									 				<p	>
-								For example:
-						</p>
-							  									 				<ul	>
-								
+</p>
+<p>
+For example:
+</p>
+<ul>
+
 
-												<li	>
-								Create a text file containing the user names and passwords, separated by commas.
+<li>
+Create a text file containing the user names and passwords, separated by commas.
 Put this in the same directory as your test plan.
 
-						</li>
-									
+</li>
+
+
+<li>
 
-												<li	>
-								
 Add a CSV DataSet configuration element to the test plan.
 Name the variables USER and PASS.
 
-						</li>
-									
+</li>
+
+
+<li>
 
-												<li	>
-								
 Replace the login name with ${USER} and the password with ${PASS} on the appropriate
 samplers
 
-						</li>
-									
+</li>
+
+
+</ul>
+<p>
+The CSV Data Set element will read a new line for each thread. 
+
+</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="lean_mean"><strong>16.6 Reducing resource requirements</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
 
-						</ul>
-							  									 				<p	>
-								The CSV Data Set element will read a new line for each thread. 
-
-						</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="lean_mean"><strong>16.6 Reducing resource requirements</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								
 Some suggestions on reducing resource usage.
 
-						</p>
-							  									 				<ul	>
-								
-
-												<li	>
-								Use non-GUI mode: jmeter -n -t test.jmx -l test.jtl
-						</li>
-									
-
-												<li	>
-								Use as few Listeners as possible; if using the -l flag as above they can all be deleted or disabled.
-						</li>
-									
+</p>
+<ul>
+
+
+<li>
+Use non-GUI mode: jmeter -n -t test.jmx -l test.jtl
+</li>
 
-												<li	>
-								Rather than using lots of similar samplers, 
+
+<li>
+Use as few Listeners as possible; if using the -l flag as above they can all be deleted or disabled.
+</li>
+
+
+<li>
+Rather than using lots of similar samplers, 
 use the same sampler in a loop, and use variables (CSV Data Set) to vary the sample. 
 Or perhaps use the Access Log Sampler.
 [The Include Controller does not help here, as it adds all the test elements in the file to the test plan.]
 
-						</li>
-									
+</li>
+
+
+<li>
+Don't use functional mode
+</li>
+
+
+<li>
+Use CSV output rather than XML
+</li>
+
+
+<li>
+Only save the data that you need
+</li>
+
+
+<li>
+Use as few Assertions as possible
+</li>
+
+
+</ul>
+<p>
+
+If your test needs large amounts of data - particularly if it needs to be randomised - create the test data in a file
+that can be read with CSV Dataset. This avoids wasting resources at run-time. 
+
+</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="beanshell_server"><strong>16.7 BeanShell server</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
 
-												<li	>
-								Don't use functional mode
-						</li>
-									
-
-												<li	>
-								Use CSV output rather than XML
-						</li>
-									
-
-												<li	>
-								Only save the data that you need
-						</li>
-									
-
-												<li	>
-								Use as few Assertions as possible
-						</li>
-									
-
-						</ul>
-							  		  </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="beanshell_server"><strong>16.7 BeanShell server</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								
 The BeanShell interpreter has a very useful feature - it can act as a server,
 which is accessible by telnet or http.
 
-						</p>
-							  									 				<p><table border="1" bgcolor="#bbbb00" width="50%" cellspacing="0" cellpadding="2">
-		<tr><td>						
+</p>
+<p>
+<table border="1" bgcolor="#bbbb00" width="50%" cellspacing="0" cellpadding="2">
+<tr><td>
 There is no security. Anyone who can connect to the port can issue any BeanShell commands.
 These can provide unrestricted access to the JMeter application and the host.
 
-												<b	>
-								Do not enable the server unless the ports are protected against access, e.g. by a firewall.
-						</b>
-									
-
-			</td></tr>
-	</table></p>
-							  									 				<p	>
-								
+<b>
+Do not enable the server unless the ports are protected against access, e.g. by a firewall.
+</b>
+
+
+</td></tr>
+</table>
+</p>
+<p>
+
 If you do wish to use the server, define the following in jmeter.properties:
 
-						</p>
-							  									 				<pre	>
-								
+</p>
+<pre>
+
 beanshell.server.port=9000
 beanshell.server.file=../extras/startup.bsh
 
-						</pre>
-							  									 				<p	>
-								
+</pre>
+<p>
+
 In the above example, the server will be started, and will listen on ports 9000 and 9001.
 Port 9000 will be used for http access. Port 9001 will be used for telnet access.
 The startup.bsh file will be processed by the server, and can be used to define various functions and set up variables.
 The startup file defines methods for setting and printing JMeter and system properties.
 This is what you should see in the JMeter console:
 
-						</p>
-							  									 				<pre	>
-								
+</p>
+<pre>
+
 Startup script running
 Startup script completed
 Httpd started on port: 9000
 Sessiond started on port: 9001
 
-						</pre>
-							  									 				<p	>
-								
+</pre>
+<p>
+
 As a practical example, assume you have a long-running JMeter test running in non-GUI mode,
 and you want to vary the throughput at various times during the test. 
 The test-plan includes a Constant Throughput Timer which is defined in terms of a property,
 e.g. ${__P(throughput)}. 
 The following BeanShell commands could be used to change the test:
 
-						</p>
-							  									 				<pre	>
-								
+</p>
+<pre>
+
 printprop("throughput");
 curr=Integer.decode(args[0]); // Start value
 inc=Integer.decode(args[1]);  // Increment
@@ -469,168 +485,255 @@
 }
 printprop("throughput");
 
-						</pre>
-							  									 				<p	>
-								The script can be stored in a file (throughput.bsh, say), and sent to the server using bshclient.jar.
+</pre>
+<p>
+The script can be stored in a file (throughput.bsh, say), and sent to the server using bshclient.jar.
 For example:
 
-						</p>
-							  									 				<pre	>
-								
+</p>
+<pre>
+
 java -jar ../lib/bshclient.jar localhost 9000 throughput.bsh 70 5 100 60
 
-						</pre>
-							  		  </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="bsh_scripting"><strong>16.8 BeanShell scripting</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="bsh_overview"><strong>16.8.1 Overview</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								
+</pre>
+</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="bsh_scripting"><strong>16.8 BeanShell scripting</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="bsh_overview"><strong>16.8.1 Overview</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+
 Each BeanShell test element has its own copy of the interpreter (for each thread).
 If the test element is repeatedly called, e.g. within a loop, then the interpreter is retained
 between invocations unless the "Reset bsh.Interpreter before each call" option is selected.
 
-						</p>
-							  									 				<p	>
-								
+</p>
+<p>
+
 Some long-running tests may cause the interpreter to use lots of memory; if this is the case try using the reset option.
 
-						</p>
-							  									 				<p	>
-								
+</p>
+<p>
+
 You can test BeanShell scripts outside JMeter by using the command-line interpreter:
 
-												<pre	>
-								
+<pre>
+
 $ java -cp bsh-xxx.jar[;other jars as needed] bsh.Interperter file.bsh [parameters]
 or
 $ java -cp bsh-xxx.jar bsh.Interperter
 bsh% source("file.bsh");
 bsh% exit(); // or use EOF key (e.g. ^Z or ^D)
 
-						</pre>
-									
+</pre>
+
+
+</p>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="bsh_variables"><strong>16.8.2 Sharing Variables</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
 
-						</p>
-							  		  </blockquote>
-		</td></tr>
-		<tr><td><br></td></tr>
-	 </table>
-							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="bsh_variables"><strong>16.8.2 Sharing Variables</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								
 Variables can be defined in startup (initialisation) scripts.
 These will be retained across invocations of the test element, unless the reset option is used.\
 
-						</p>
-							  									 				<p	>
-								
+</p>
+<p>
+
 Scripts can also access JMeter variables using the get() and put() methods of the "vars" variable,
 for example: 
-												<code	>
-								vars.get("HOST"); vars.put("MSG","Successful");
-						</code>
-									.
+<code>
+vars.get("HOST"); vars.put("MSG","Successful");
+</code>
+.
 The get() and put() methods only support variables with String values,
 but there are also getObject() and putObject() methods which can be used for arbitrary objects.
 JMeter variables are local to a thread, but can be used by all test elements (not just Beanshell).
 
-						</p>
-							  									 				<p	>
-								
+</p>
+<p>
+
 If you need to share variables between threads, then JMeter properties can be used:
 
-												<pre	>
-								
+<pre>
+
 import org.apache.jmeter.util.JMeterUtils;
 String value=JMeterUtils.getPropDefault("name","");
 JMeterUtils.setProperty("name", "value");
 
-						</pre>
-									
+</pre>
+
 The sample .bshrc files contain sample definitions of getprop() and setprop() methods.
 
-						</p>
-							  									 				<p	>
-								
+</p>
+<p>
+
 Another possible method of sharing variables is to use the "bsh.shared" shared namespace.
 For example:
 
-												<pre	>
-								
+<pre>
+
 if (bsh.shared.myObj == void){
     // not yet defined, so create it:
     myObj=new AnyObject();
 }
 bsh.shared.myObj.process();
 
-						</pre>
-									
+</pre>
+
 Rather than creating the object in the test element, it can be created in the startup file
 defined by the JMeter property "beanshell.init.file". This is only processed once.
 
-						</p>
-							  		  </blockquote>
-		</td></tr>
-		<tr><td><br></td></tr>
-	 </table>
-							  		  </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="boss.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div>
-        </td>
-        				<td bgcolor="#525D76">
-        <div align="right"><a href="remote-test.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 &copy; 1999-2008, Apache Software Foundation
-						  </em></font></div>
-					 </td></tr>
-				</table>
-		  </body>
-	 </html>
+</p>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+</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="developing_scripts"><strong>16.9 Developing script functions in BeanShell, Javascript or Jexl etc.</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+
+It's quite hard to write and test scripts as functions.
+However, JMeter has the BSF (and BeanShell) samplers which can be used instead.  
+
+</p>
+<p>
+
+Create a simple Test Plan containing the BSF Sampler and Tree View Listener.
+Code the script in the sampler script pane, and test it by running the test.
+If there are any errors, these will show up in the Tree View.
+Also the result of running the script will show up as the response.
+
+</p>
+<p>
+
+Once the script is working properly, it can be stored as a variable on the Test Plan.
+The script variable can then be used to create the function call.
+For example, suppose a BeanShell script is stored in the variable RANDOM_NAME.
+The function call can then be coded as 
+<code>
+${__BeanShell(${RANDOM_NAME})}
+</code>
+.
+There is no need to escape any commas in the script, 
+because the function call is parsed before the variable's value is interpolated.
+
+</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="parameterising_tests"><strong>16.10 Parameterising tests</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+
+Often it is useful to be able to re-run the same test with different settings.
+For example, changing the number of threads or loops, or changing a hostname.
+
+</p>
+<p>
+
+One way to do this is to define a set of variables on the Test Plan, and then use those variables in the test elements.
+For example, one could define the variable LOOPS=10, and refer to that in the Thread Group as ${LOOPS}. 
+To run the test with 20 loops, just change the value of the LOOPS variable on the Test Plan.
+
+</p>
+<p>
+
+This quickly becomes tedious if you want to run lots of tests in non-GUI mode.
+One solution to this is to define the Test Plan variable in terms of a property,
+for example 
+<code>
+LOOPS=${__P(loops,10))}
+</code>
+.
+This uses the value of the property "loops", defaulting to 10 if the property is not found.
+The "loops" property can then be defined on the JMeter command-line:
+
+<code>
+jmeter ... -Jloops=12 ...
+</code>
+.
+If there are a lot of properties that need to be changed together, 
+then one way to achieve this is to use a set of property files.
+The appropriate property file can be passed in to JMeter using the -q command-line option.
+
+</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="boss.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div>
+</td>
+<td bgcolor="#525D76">
+<div align="right"><a href="remote-test.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 &copy; 1999-2009, Apache Software Foundation
+</em></font></div>
+</td></tr>
+</table>
+</body>
+</html>
 <!-- end the processing -->
 
 

Modified: jakarta/jmeter/trunk/docs/usermanual/boss.html
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/usermanual/boss.html?rev=773282&r1=773281&r2=773282&view=diff
==============================================================================
--- jakarta/jmeter/trunk/docs/usermanual/boss.html (original)
+++ jakarta/jmeter/trunk/docs/usermanual/boss.html Sat May  9 22:57:45 2009
@@ -18,30 +18,30 @@
 
 <!-- Content Stylesheet for Site -->
 
-	 
+
 <!-- start the processing -->
-	 <!-- ====================================================================== -->
-	 <!-- Main Page Section -->
-	 <!-- ====================================================================== -->
-	 <html>
-		  <head>
-				<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
-
-				
-													 				<meta name="author" value="Martin Ramshaw">
-				<meta name="email" value="mramshaw@alumni.concordia.ca">
-				
-				<title>JMeter - User's Manual: My boss wants me to...</title>
-		  </head>
-
-		  <body bgcolor="#ffffff" text="#000000" link="#525D76">
-				<table border="0" cellspacing="0">
-					 <!-- TOP IMAGE -->
-					 <tr>
-						  <td>
+<!-- ====================================================================== -->
+<!-- Main Page Section -->
+<!-- ====================================================================== -->
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+
+
+<meta name="author" value="Martin Ramshaw">
+<meta name="email" value="mramshaw@alumni.concordia.ca">
+
+<title>JMeter - User's Manual: My boss wants me to...</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>
+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>
@@ -49,167 +49,166 @@
 <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="component_reference.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div>
-        </td>
-        				<td bgcolor="#525D76">
-        <div align="right"><a href="best-practices.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="boss"><strong>17. Help! My boss wants me to load test our web app!</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								This is a fairly open-ended proposition. There are a number of questions to
+</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="component_reference.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div>
+</td>
+<td bgcolor="#525D76">
+<div align="right"><a href="best-practices.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="boss"><strong>17. Help! My boss wants me to load test our web app!</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+This is a fairly open-ended proposition. There are a number of questions to
 be asked first, and additionally a number of resources that will be needed. You
 will need some hardware to run the benchmarks/load-tests from. A number of
 tools will prove useful. There are a number of products to consider.  And finally,
 why is Java a good choice to implement a load-testing/Benchmarking product.
 
-						</p>
-							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="questions"><strong>17.1 Questions to ask</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								What is our anticipated average number of users (normal load) ?
-
-						</p>
-							  									 				<p	>
-								What is our anticipated peak number of users ?
-
-						</p>
-							  									 				<p	>
-								When is a good time to load-test our application (i.e. off-hours or week-ends),
+</p>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="questions"><strong>17.1 Questions to ask</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+What is our anticipated average number of users (normal load) ?
+
+</p>
+<p>
+What is our anticipated peak number of users ?
+
+</p>
+<p>
+When is a good time to load-test our application (i.e. off-hours or week-ends),
 bearing in mind that this may very well crash one or more of our servers ?
 
-						</p>
-							  									 				<p	>
-								Does our application have state ? If so, how does our application manage it
+</p>
+<p>
+Does our application have state ? If so, how does our application manage it
 (cookies, session-rewriting, or some other method) ?
 
-						</p>
-							  									 				<p	>
-								What is the testing intended to achieve?
-						</p>
-							  		  </blockquote>
-		</td></tr>
-		<tr><td><br></td></tr>
-	 </table>
-							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="resources"><strong>17.2 Resources</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								The following resources will prove very helpful. Bear in mind that if you
+</p>
+<p>
+What is the testing intended to achieve?
+</p>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="resources"><strong>17.2 Resources</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+The following resources will prove very helpful. Bear in mind that if you
 cannot locate these resources, 
-												<b	>
-								you
-						</b>
-									 will become these resources. As you
+<b>
+you
+</b>
+ will become these resources. As you
 already have your work cut out for you, it is worth knowing who the following
 people are, so that you can ask them for help if you need it.
 
-						</p>
-							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="network"><strong>17.2.1 Network</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								Who knows our network topology ? If you run into any firewall or
+</p>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="network"><strong>17.2.1 Network</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+Who knows our network topology ? If you run into any firewall or
 	proxy issues, this will become very important. As well, a private
 	testing network (which will therefore have very low network latency)
 	would be a very nice thing. Knowing who can set one up for you
@@ -217,192 +216,192 @@
 	application doesn't scale as expected, who can add additional
 	hardware ?
 	
-						</p>
-							  		  </blockquote>
-		</td></tr>
-		<tr><td><br></td></tr>
-	 </table>
-							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="application"><strong>17.2.2 Application</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								Who knows how our application functions ? The normal sequence is
+</p>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="application"><strong>17.2.2 Application</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+Who knows how our application functions ? The normal sequence is
 	
-												<ul	>
-								
+<ul>
+
 		
-												<li	>
-								test (low-volume - can we benchmark our application?)
-						</li>
-									
+<li>
+test (low-volume - can we benchmark our application?)
+</li>
+
 		
-												<li	>
-								benchmark (the average number of users)
-						</li>
-									
+<li>
+benchmark (the average number of users)
+</li>
+
 		
-												<li	>
-								load-test (the maximum number of users)
-						</li>
-									
+<li>
+load-test (the maximum number of users)
+</li>
+
 		
-												<li	>
-								test destructively (what is our hard limit?)
-						</li>
-									
+<li>
+test destructively (what is our hard limit?)
+</li>
+
 	
-						</ul>
-									
+</ul>
+
 	The 
-												<b	>
-								test
-						</b>
-									 process may progress from black-box testing to
+<b>
+test
+</b>
+ process may progress from black-box testing to
 	white-box testing (the difference is that the first requires
 	no knowledge of the application [it is treated as a "black box"]
 	while the second requires some knowledge of the application).
 	It is not uncommon to discover problems with the application
 	during this process, so be prepared to defend your work.
 	
-						</p>
-							  		  </blockquote>
-		</td></tr>
-		<tr><td><br></td></tr>
-	 </table>
-							  		  </blockquote>
-		</td></tr>
-		<tr><td><br></td></tr>
-	 </table>
-							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="platform"><strong>17.3 What platform should I use to run the benchmarks/load-tests ?</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								This should be a widely-used piece of hardware, with a standard
+</p>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="platform"><strong>17.3 What platform should I use to run the benchmarks/load-tests ?</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+This should be a widely-used piece of hardware, with a standard
 (i.e. vanilla) software installation. Remember, if you publish your results,
 the first thing your clients will do is hire a graduate student to verify them.
 You might as well make it as easy for this person as you possibly can.
 
-						</p>
-							  									 				<p	>
-								For Windows, Windows XP Professional should be a minimum (the others
+</p>
+<p>
+For Windows, Windows XP Professional should be a minimum (the others
 do not multi-thread past 50-60 connections, and you probably anticipate
 more users than that).
 
-						</p>
-							  									 				<p	>
-								Good free platforms include the linuxes, the BSDs, and Solaris Intel. If
+</p>
+<p>
+Good free platforms include the linuxes, the BSDs, and Solaris Intel. If
 you have a little more money, there are commercial linuxes. If you can justify
 it, a commercial Unix (Solaris, etc) is probably the best choice.
 
-						</p>
-							  									 				<p	>
-								
+</p>
+<p>
+
 For non-Windows platforms, investigate "ulimit -n unlimited" with a view to
 including it in your user account startup scripts (.bashrc or .cshrc scripts
 for the testing account).
 
-						</p>
-							  									 				<p	>
-								As you progress to larger-scale benchmarks/load-tests, this platform
+</p>
+<p>
+As you progress to larger-scale benchmarks/load-tests, this platform
 will become the limiting factor. So it's worth using the best hardware and
 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 
+</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 (non-GUI) 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>
-	 </table>
-							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="tools"><strong>17.4 Tools</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								The following tools will all prove useful. It is definitely worthwhile to
+</p>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="tools"><strong>17.4 Tools</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+The following tools will all prove useful. It is definitely worthwhile to
 become familiar with them. This should include trying them out, and reading the
 appropriate documentation (man-pages, info-files, application --help messages,
 and any supplied documentation).
 
-						</p>
-							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="ping"><strong>17.4.1 ping</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								
+</p>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="ping"><strong>17.4.1 ping</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+
 	This can be used to establish whether or not you can reach your
 	target site. Options can be specified so that 'ping' provides the
 	same type of route reporting as 'traceroute'.
 	
-						</p>
-							  		  </blockquote>
-		</td></tr>
-		<tr><td><br></td></tr>
-	 </table>
-							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="dig"><strong>17.4.2 nslookup/dig</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								
+</p>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="dig"><strong>17.4.2 nslookup/dig</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+
 	While the 
-												<u	>
-								user
-						</u>
-									 will normally use a human-readable internet
+<u>
+user
+</u>
+ will normally use a human-readable internet
 	address, 
-												<u	>
-								you
-						</u>
-									 may wish to avoid the overhead of DNS lookups when
+<u>
+you
+</u>
+ may wish to avoid the overhead of DNS lookups when
 	performing benchmarking/load-testing. These can be used to determine
 	the unique address (dotted quad) of your target site.
 	
-						</p>
-							  		  </blockquote>
-		</td></tr>
-		<tr><td><br></td></tr>
-	 </table>
-							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="traceroute"><strong>17.4.3 traceroute</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								
+</p>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="traceroute"><strong>17.4.3 traceroute</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+
 	If you cannot "ping" your target site, this may be used to determine 
 	the problem (possibly a firewall or a proxy). It can also be used
 	to estimate the overall network latency (running locally should give
@@ -410,141 +409,141 @@
 	be running over a possibly busy internet). Generally, the fewer hops
 	the better.
 	
-						</p>
-							  		  </blockquote>
-		</td></tr>
-		<tr><td><br></td></tr>
-	 </table>
-							  		  </blockquote>
-		</td></tr>
-		<tr><td><br></td></tr>
-	 </table>
-							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="products"><strong>17.5 What other products are there ?</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								There are a number of commercial products, which generally have fairly
+</p>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="products"><strong>17.5 What other products are there ?</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+There are a number of commercial products, which generally have fairly
 hefty pricetags. If you can justify it, these are probably the way to go.
 If, however, these products do not do exactly what you want, or you are on a
 limited budget, the following are worth a look. In fact, you should probably
 start by trying the Apache 
-												<b	>
-								ab
-						</b>
-									 tool, as it may very well do the job
+<b>
+ab
+</b>
+ tool, as it may very well do the job
 if your requirements are not particularly complicated.
 
-						</p>
-							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="ab"><strong>17.5.1 Apache 'ab' tool</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								
+</p>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="ab"><strong>17.5.1 Apache 'ab' tool</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+
 	You should definitely start with this one. It handles HTTP 'get' requests
 	very well, and can be made to handle HTTP 'post' requests with a little
 	effort. Written in 'C', it performs very well, and offers good (if basic)
 	performance reporting.
 	
-						</p>
-							  		  </blockquote>
-		</td></tr>
-		<tr><td><br></td></tr>
-	 </table>
-							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="httpunit"><strong>17.5.2 HttpUnit</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								
+</p>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="httpunit"><strong>17.5.2 HttpUnit</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+
 	This is worth a look. It is a library (and therefore of more interest to
 	developers) that can be used to perform HTTP tests/benchmarks. It is
 	intended to be used instead of a web browser (therefore no GUI) in
 	conjunction with 
-												<b	>
-								JUnit
-						</b>
-									.
-	
-						</p>
-							  		  </blockquote>
-		</td></tr>
-		<tr><td><br></td></tr>
-	 </table>
-							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="WAS"><strong>17.5.3 Microsoft WAS</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								
+<b>
+JUnit
+</b>
+.
+	
+</p>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="WAS"><strong>17.5.3 Microsoft WAS</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+
 	This is definitely worth a look. It has an excellent user interface
 	but it may not do exactly what you want. If this is the case, be aware
 	that the functionality of this product is not likely to change.
 	
-						</p>
-							  		  </blockquote>
-		</td></tr>
-		<tr><td><br></td></tr>
-	 </table>
-							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="JMeter"><strong>17.5.4 JMeter</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								
+</p>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="JMeter"><strong>17.5.4 JMeter</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+
 	If you have non-standard requirements, then this solution offers an
 	open-source community to provide them (of course, if you are reading
 	
-												<u	>
-								this
-						</u>
-									, you are probably already committed to this one). This
+<u>
+this
+</u>
+, you are probably already committed to this one). This
 	product is free to evolve along with your requirements.
 	
-						</p>
-							  		  </blockquote>
-		</td></tr>
-		<tr><td><br></td></tr>
-	 </table>
-							  		  </blockquote>
-		</td></tr>
-		<tr><td><br></td></tr>
-	 </table>
-							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
-		<tr><td bgcolor="#828DA6">
-		  <font color="#ffffff" face="arial,helvetica,sanserif">
-			 <a name="java"><strong>17.6 Why Java ?</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								Why not Perl or C ?
-
-						</p>
-							  									 				<p	>
-								Well, Perl might be a very good choice except that the Benchmark package
+</p>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+<table border="0" cellspacing="0" cellpadding="2" width="100%">
+<tr><td bgcolor="#828DA6">
+<font color="#ffffff" face="arial,helvetica,sanserif">
+<a name="java"><strong>17.6 Why Java ?</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+Why not Perl or C ?
+
+</p>
+<p>
+Well, Perl might be a very good choice except that the Benchmark package
 seems to give fairly fuzzy results. Also, simulating multiple users with
 Perl is a tricky proposition (multiple connections can be simulated by forking
 many processes from a shell script, but these will not be threads, they will
@@ -552,68 +551,67 @@
 someone has already written something that seems useful, this could be a very
 good solution.
 
-						</p>
-							  									 				<p	>
-								C, of course, is a very good choice (check out the Apache 
-												<b	>
-								ab
-						</b>
-									 tool).
+</p>
+<p>
+C, of course, is a very good choice (check out the Apache 
+<b>
+ab
+</b>
+ tool).
 But be prepared to write all of the custom networking, threading, and state
 management code that you will need to benchmark your application.
 
-						</p>
-							  									 				<p	>
-								Java gives you (for free) the custom networking, threading, and state
+</p>
+<p>
+Java gives you (for free) the custom networking, threading, and state
 management code that you will need to benchmark your application. Java is
 aware of HTTP, FTP, and HTTPS - as well as RMI, IIOP, and JDBC (not to mention
 cookies, URL-encoding, and URL-rewriting). In addition Java gives you automatic
 garbage-collection, and byte-code level security.
 
-						</p>
-							  									 				<p	>
-								And once Microsoft moves to a CLR (common language run-time) a Windows Java
+</p>
+<p>
+And once Microsoft moves to a CLR (common language run-time) a Windows Java
 solution will not be any slower than any other type of solution on the Windows
 platform.
 
-						</p>
-							  		  </blockquote>
-		</td></tr>
-		<tr><td><br></td></tr>
-	 </table>
-							  		  </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="component_reference.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div>
-        </td>
-        				<td bgcolor="#525D76">
-        <div align="right"><a href="best-practices.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 &copy; 1999-2008, Apache Software Foundation
-						  </em></font></div>
-					 </td></tr>
-				</table>
-		  </body>
-	 </html>
+</p>
+</blockquote>
+</td></tr>
+<tr><td><br></td></tr>
+</table>
+</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="component_reference.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div>
+</td>
+<td bgcolor="#525D76">
+<div align="right"><a href="best-practices.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 &copy; 1999-2009, Apache Software Foundation
+</em></font></div>
+</td></tr>
+</table>
+</body>
+</html>
 <!-- end the processing -->
 
 

Modified: jakarta/jmeter/trunk/docs/usermanual/build-adv-web-test-plan.html
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/usermanual/build-adv-web-test-plan.html?rev=773282&r1=773281&r2=773282&view=diff
==============================================================================
--- jakarta/jmeter/trunk/docs/usermanual/build-adv-web-test-plan.html (original)
+++ jakarta/jmeter/trunk/docs/usermanual/build-adv-web-test-plan.html Sat May  9 22:57:45 2009
@@ -18,28 +18,28 @@
 
 <!-- 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 an Advanced Web Test Plan</title>
-		  </head>
-
-		  <body bgcolor="#ffffff" text="#000000" link="#525D76">
-				<table border="0" cellspacing="0">
-					 <!-- TOP IMAGE -->
-					 <tr>
-						  <td>
+<!-- ====================================================================== -->
+<!-- Main Page Section -->
+<!-- ====================================================================== -->
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+
+
+
+<title>JMeter - User's Manual: Building an Advanced Web 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>
+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>
@@ -47,238 +47,236 @@
 <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-db-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-web-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>6. Building an Advanced Web Test Plan</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								In this section, you will learn how to create advanced
-
-												<a	 href="build-test-plan.html">
-								Test Plans
-						</a>
-									 to test a Web site.
-						</p>
-							  									 				<p	>
-								For an example of a basic Test Plan, see
-
-												<a	 href="build-web-test-plan.html">
-								Building a Web Test Plan
-						</a>
-									.
-						</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="session_url_rewriting"><strong>6.1 Handling User Sessions With URL Rewriting</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								If your web application uses URL rewriting rather than cookies to save session information,
+</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-db-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-web-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>6. Building an Advanced Web Test Plan</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+In this section, you will learn how to create advanced
+
+<a href="build-test-plan.html">
+Test Plans
+</a>
+ to test a Web site.
+</p>
+<p>
+For an example of a basic Test Plan, see
+
+<a href="build-web-test-plan.html">
+Building a Web Test Plan
+</a>
+.
+</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="session_url_rewriting"><strong>6.1 Handling User Sessions With URL Rewriting</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+If your web application uses URL rewriting rather than cookies to save session information,
 then you'll need to do a bit of extra work to test your site.
-						</p>
-							  									 				<p	>
-								To respond correctly to URL rewriting, JMeter needs to parse the HTML
+</p>
+<p>
+To respond correctly to URL rewriting, JMeter needs to parse the HTML
 received from the server and retrieve the unique session ID.  Use the appropriate 
-												<a href="../usermanual/component_reference.html#HTTP_URL_Re-writing_Modifier">HTTP URL Re-writing Modifier</a>
-									
+<a href="../usermanual/component_reference.html#HTTP_URL_Re-writing_Modifier">HTTP URL Re-writing Modifier</a>
+
 to accomplish this.  Simply enter the name of your session ID parameter into the modifier, and it
 will find it and add it to each request.  If the request already has a value, it will be replaced.
 If "Cache Session Id?" is checked, then the last found session id will be saved,
 and will be used if the previous HTTP sample does not contain a session id.
 
-						</p>
-							  									 				<a name="$example.getAttributeValue("anchor")"/>
-	<p><b>URL Rewriting Example</b></p>
-							
-
-												<p	>
-								Download 
-												<a	 href="../demos/URLRewritingExample.jmx">
-								this example
-						</a>
-									. In Figure 1 is shown a 
+</p>
+<a name="$example.getAttributeValue("anchor")"/>
+<p><b>URL Rewriting Example</b></p>
+
+
+<p>
+Download 
+<a href="../demos/URLRewritingExample.jmx">
+this example
+</a>
+. In Figure 1 is shown a 
 test plan using URL rewriting.  Note that the URL Re-writing modifier is added to the SimpleController,
 thus assuring that it will only affect requests under that SimpleController.
-						</p>
-									
+</p>
+
 
-													<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img  src="../images/screenshots/url_rewrite_example_a.png"><br>
-	<font size="-1">						Figure 1 - Test Tree
-			</font></td></tr></table></p>
-									
+<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img  src="../images/screenshots/url_rewrite_example_a.png"><br>
+<font size="-1">Figure 1 - Test Tree
+</font></td></tr></table></p>
 
-												<p	>
-								In Figure 2, we see the URL Re-writing modifier GUI, which just has a field for the user to specify
+
+<p>
+In Figure 2, we see the URL Re-writing modifier GUI, which just has a field for the user to specify
 the name of the session ID parameter.  There is also a checkbox for indicating that the session ID should
 be part of the path (separated by a ";"), rather than a request parameter
-						</p>
-									
+</p>
+
 
-													<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img  src="../images/screenshots/url_rewrite_example_b.png"><br>
-	<font size="-1">						Figure 2 - Request parameters
-			</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="header_manager"><strong>6.2 Using a Header Manager</strong></a>
-		  </font>
-		</td></tr>
-		<tr><td>
-		  <blockquote>
-		  									 				<p	>
-								The 
-												<a href="../usermanual/component_reference.html#HTTP_Header_Manager">HTTP Header Manager</a>
-									 lets you customize what information
+<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img  src="../images/screenshots/url_rewrite_example_b.png"><br>
+<font size="-1">Figure 2 - Request parameters
+</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="header_manager"><strong>6.2 Using a Header Manager</strong></a>
+</font>
+</td></tr>
+<tr><td>
+<blockquote>
+<p>
+The 
+<a href="../usermanual/component_reference.html#HTTP_Header_Manager">HTTP Header Manager</a>
+ lets you customize what information
 JMeter sends in the HTTP request header.  This header includes properties like "User-Agent",
 "Pragma", "Referer", etc.
-						</p>
-							  									 				<p	>
-								The 
-												<a href="../usermanual/component_reference.html#HTTP_Header_Manager">HTTP Header Manager</a>
-									, like the 
-												<a href="../usermanual/component_reference.html#HTTP_Cookie_Manager">HTTP Cookie Manager</a>
-									,
+</p>
+<p>
+The 
+<a href="../usermanual/component_reference.html#HTTP_Header_Manager">HTTP Header Manager</a>
+, like the 
+<a href="../usermanual/component_reference.html#HTTP_Cookie_Manager">HTTP Cookie Manager</a>
+,
 should probably be added at the Thread Group level, unless for some reason you wish to
 specify different headers for the different 
-												<a href="../usermanual/component_reference.html#HTTP_Request">HTTP Request</a>
-									 objects in
+<a href="../usermanual/component_reference.html#HTTP_Request">HTTP Request</a>
+ objects in
 your test.
-						</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-db-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-web-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 &copy; 1999-2008, Apache Software Foundation
-						  </em></font></div>
-					 </td></tr>
-				</table>
-		  </body>
-	 </html>
+</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-db-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-web-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 &copy; 1999-2009, Apache Software Foundation
+</em></font></div>
+</td></tr>
+</table>
+</body>
+</html>
 <!-- end the processing -->
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org