jmeter-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From s...@apache.org
Subject svn commit: r1457581 [3/3] - /jmeter/trunk/xdocs/usermanual/
Date Sun, 17 Mar 2013 22:58:08 GMT
Modified: jmeter/trunk/xdocs/usermanual/functions.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/functions.xml?rev=1457581&r1=1457580&r2=1457581&view=diff
==============================================================================
--- jmeter/trunk/xdocs/usermanual/functions.xml (original)
+++ jmeter/trunk/xdocs/usermanual/functions.xml Sun Mar 17 22:58:08 2013
@@ -30,12 +30,12 @@
 <body>
 
 <!--
-	Because this is an XML document, all tags must be properly closed, including ones
-	which are passed unchanged into the HTML output, e.g. <br/>, not just <br>.
-	
-	Unfortunately Java does not currently allow for this - it outputs the trailing > -
-	which messes up the Help display. 
-	To avoid these artefacts, use the form <br></br>, which Java does seem to handle OK.
+    Because this is an XML document, all tags must be properly closed, including ones
+    which are passed unchanged into the HTML output, e.g. <br/>, not just <br>.
+
+    Unfortunately Java does not currently allow for this - it outputs the trailing > -
+    which messes up the Help display. 
+    To avoid these artefacts, use the form <br></br>, which Java does seem to handle OK.
 
  -->
 
@@ -398,39 +398,39 @@ The reference name is now optional, but 
 <component index="&sect-num;.5.5" name="__StringFromFile">
 
 <description>
-	<p>
-	The StringFromFile function can be used to read strings from a text file. 
-	This is useful for running tests that require lots of variable data.
-	For example when testing a banking application, 100s or 1000s of different account numbers might be required.
-	</p>
-	<p>
-	See also the 
-	<a href="component_reference.html#CSV_Data_Set_Config">CSV Data Set Config test element</a> 
-	which may be easier to use. However, that does not currently support multiple input files.
-	</p>
+    <p>
+    The StringFromFile function can be used to read strings from a text file. 
+    This is useful for running tests that require lots of variable data.
+    For example when testing a banking application, 100s or 1000s of different account numbers might be required.
+    </p>
+    <p>
+    See also the 
+    <a href="component_reference.html#CSV_Data_Set_Config">CSV Data Set Config test element</a> 
+    which may be easier to use. However, that does not currently support multiple input files.
+    </p>
 
-	<p>
-	Each time it is called it reads the next line from the file.
+    <p>
+    Each time it is called it reads the next line from the file.
     All threads share the same instance, so different threads will get different lines.
-	When the end of the file is reached, it will start reading again from the beginning,
-	unless the maximum loop count has been reached.
-	If there are multiple references to the function in a test script, each will open the file independently,
-	even if the file names are the same.
-	[If the value is to be used again elsewhere, use different variable names for each function call.]
-	</p>
+    When the end of the file is reached, it will start reading again from the beginning,
+    unless the maximum loop count has been reached.
+    If there are multiple references to the function in a test script, each will open the file independently,
+    even if the file names are the same.
+    [If the value is to be used again elsewhere, use different variable names for each function call.]
+    </p>
     <note>
     Function instances are shared between threads, and the file is (re-)opened by whatever thread
     happens to need the next line of input, so using the threadNumber as part of the file name
     will result in unpredictable behaviour.
     </note>
-	<p>If an error occurs opening or reading the file, then the function returns the string "**ERR**"</p>
+    <p>If an error occurs opening or reading the file, then the function returns the string "**ERR**"</p>
 </description>
 
 <properties>
         <property name="File Name" required="Yes">Path to the file name.
-        	(The path can be relative to the JMeter launch directory)
-        	If using optional sequence numbers, the path name should be suitable for passing to DecimalFormat.
-        	See below for examples.
+            (The path can be relative to the JMeter launch directory)
+            If using optional sequence numbers, the path name should be suitable for passing to DecimalFormat.
+            See below for examples.
         </property>
         <property name="Variable Name" required="No">
 A reference name - refName - for reusing the value created by this function. Stored values are of the form ${refName}.
@@ -443,11 +443,11 @@ Defaults to "StringFromFile_".
 <p>The reference name parameter (if supplied) is resolved every time the function is executed.</p>
 <p><b>Using sequence numbers:</b></p>
 <p>When using the optional sequence numbers, the path name is used as the format string for java.text.DecimalFormat.
-	The current sequence number is passed in as the only parameter.
+    The current sequence number is passed in as the only parameter.
     If the optional start number is not specified, the path name is used as is.
-	Useful formatting sequences are:
-	</p>
-	<p>
+    Useful formatting sequences are:
+    </p>
+    <p>
 <code>
 # - insert the number, with no leading zeros or spaces<br></br>
 000 - insert the number packed out to 3 digits with leading zeros if necessary
@@ -457,30 +457,30 @@ Examples:<br></br>
  pin000'.'dat -> pin001.dat ... pin099.dat ... pin999.dat ... pin9999.dat<br></br>
  pin'.'dat# -> pin.dat1, ... pin.dat9 ... pin.dat999
 </code><p/>
-	If more digits are required than there are formatting characters, the number will be
-	expanded as necessary.<br></br>
-	<b>To prevent a formatting character from being interpreted,
-	enclose it in single quotes. Note that "." is a formatting character,
-	and must be enclosed in single quotes</b>
-	(though #. and 000. work as expected in locales where the decimal point is also ".")
-	<br></br>
-	In other locales (e.g. fr), the decimal point is "," - which means that "#."
-	becomes "nnn,".<br></br>
-	See the documentation for DecimalFormat for full details.<br></br>
-	If the path name does not contain any special formatting characters,
-	the current sequence number will be appended to the name, otherwise
-	the number will be inserted aaccording to the fomatting instructions.<br></br>
-	If the start sequence number is omitted, and the end sequence number is specified,
-	the sequence number is interpreted as a loop count, and the file will be used at most "end" times.
-	In this case the filename is not formatted.
-	<code>
-	<br></br>
-	${_StringFromFile(PIN#'.'DAT,,1,2)} - reads PIN1.DAT, PIN2.DAT<br></br>
-	${_StringFromFile(PIN.DAT,,,2)} - reads PIN.DAT twice<br></br>
-	</code>
-	Note that the "." in PIN.DAT above should <u>not</u> be quoted.
-	In this case the start number is omitted, so the file name is used exactly as is.
-	</p>
+    If more digits are required than there are formatting characters, the number will be
+    expanded as necessary.<br></br>
+    <b>To prevent a formatting character from being interpreted,
+    enclose it in single quotes. Note that "." is a formatting character,
+    and must be enclosed in single quotes</b>
+    (though #. and 000. work as expected in locales where the decimal point is also ".")
+    <br></br>
+    In other locales (e.g. fr), the decimal point is "," - which means that "#."
+    becomes "nnn,".<br></br>
+    See the documentation for DecimalFormat for full details.<br></br>
+    If the path name does not contain any special formatting characters,
+    the current sequence number will be appended to the name, otherwise
+    the number will be inserted aaccording to the fomatting instructions.<br></br>
+    If the start sequence number is omitted, and the end sequence number is specified,
+    the sequence number is interpreted as a loop count, and the file will be used at most "end" times.
+    In this case the filename is not formatted.
+    <code>
+    <br></br>
+    ${_StringFromFile(PIN#'.'DAT,,1,2)} - reads PIN1.DAT, PIN2.DAT<br></br>
+    ${_StringFromFile(PIN.DAT,,,2)} - reads PIN.DAT twice<br></br>
+    </code>
+    Note that the "." in PIN.DAT above should <u>not</u> be quoted.
+    In this case the start number is omitted, so the file name is used exactly as is.
+    </p>
 </component>
 
 <component index="&sect-num;.5.6a" name="__machineName">
@@ -537,15 +537,15 @@ JMeter is not a browser, and does not in
 
 <properties>
         <property name="Expression" required="Yes">The JavaScript expression to be executed. For example:
-        	<ul>
-        		<li>new Date() - return the current date and time</li>
-        		<li>Math.floor(Math.random()*(${maxRandom}+1))
-        			- a random number between 0 and the variable maxRandom</li>
-        		<li>${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1))
-        			- a random number between the variables minRandom and maxRandom</li>
-        		<li>"${VAR}"=="abcd"</li>
-        	</ul>
-        	</property>
+            <ul>
+                <li>new Date() - return the current date and time</li>
+                <li>Math.floor(Math.random()*(${maxRandom}+1))
+                    - a random number between 0 and the variable maxRandom</li>
+                <li>${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1))
+                    - a random number between the variables minRandom and maxRandom</li>
+                <li>"${VAR}"=="abcd"</li>
+            </ul>
+            </property>
         <property name="Variable Name" required="No">A reference name for reusing the value
                 computed by this function.</property>
 </properties>
@@ -589,47 +589,47 @@ the comma after 7 is escaped.</note>
 
 <component index="&sect-num;.5.8" name="__CSVRead">
 <description><p>The CSVRead function returns a string from a CSV file (c.f. <a href="#_StringFromFile">StringFromFile</a>)</p>
-	<p>NOTE: versions up to 1.9.1 only supported a single file. 
-		JMeter versions since 1.9.1 support multiple file names.
-	</p>
-	<p><b>In most cases, the newer 
-	<a href="component_reference.html#CSV_Data_Set_Config">CSV Data Set Config element</a>
-	 is easier to use.</b></p>
-	<p>
-	When a filename is first encountered, the file is opened and read into an internal
-	array. If a blank line is detected, this is treated as end of file - this allows
-	trailing comments to be used (N.B. this feature was introduced in versions after 1.9.1)
-	</p>
-	<p>All subsequent references to the same file name use the same internal array.
-	N.B. the filename case is significant to the function, even if the OS doesn't care,
-	so CSVRead(abc.txt,0) and CSVRead(aBc.txt,0) would refer to different internal arrays.
-	</p>
-	<p>
-	The *ALIAS feature allows the same file to be opened more than once,
-	and also allows for shorter file names.
-	</p>
-	<p>
-	Each thread has its own internal pointer to its current row in the file array.
-	When a thread first refers to the file it will be allocated the next free row in
-	the array, so each thread will access a different row from all other threads.
-	[Unless there are more threads than there are rows in the array.]
-	</p>
-	<p>
-	Note: the function splits the line at every comma by default.
-	If you want to enter columns containing commas, then you will need
-	to change the delimiter to a character that does not appear in any
-	column data, by setting the property: csvread.delimiter
-	</p>
+    <p>NOTE: versions up to 1.9.1 only supported a single file. 
+        JMeter versions since 1.9.1 support multiple file names.
+    </p>
+    <p><b>In most cases, the newer 
+    <a href="component_reference.html#CSV_Data_Set_Config">CSV Data Set Config element</a>
+     is easier to use.</b></p>
+    <p>
+    When a filename is first encountered, the file is opened and read into an internal
+    array. If a blank line is detected, this is treated as end of file - this allows
+    trailing comments to be used (N.B. this feature was introduced in versions after 1.9.1)
+    </p>
+    <p>All subsequent references to the same file name use the same internal array.
+    N.B. the filename case is significant to the function, even if the OS doesn't care,
+    so CSVRead(abc.txt,0) and CSVRead(aBc.txt,0) would refer to different internal arrays.
+    </p>
+    <p>
+    The *ALIAS feature allows the same file to be opened more than once,
+    and also allows for shorter file names.
+    </p>
+    <p>
+    Each thread has its own internal pointer to its current row in the file array.
+    When a thread first refers to the file it will be allocated the next free row in
+    the array, so each thread will access a different row from all other threads.
+    [Unless there are more threads than there are rows in the array.]
+    </p>
+    <p>
+    Note: the function splits the line at every comma by default.
+    If you want to enter columns containing commas, then you will need
+    to change the delimiter to a character that does not appear in any
+    column data, by setting the property: csvread.delimiter
+    </p>
 </description>
 
 <properties>
         <property name="File Name" required="Yes">The file (or *ALIAS) to read from</property>
         <property name="Column number" required="Yes">
-        	The column number in the file.
-        	0 = first column, 1 = second etc.
-        	"next" - go to next line of file.
-        	*ALIAS - open a file and assign it to the alias
-        	</property>
+            The column number in the file.
+            0 = first column, 1 = second etc.
+            "next" - go to next line of file.
+            *ALIAS - open a file and assign it to the alias
+            </property>
 </properties>
 <p>For example, you could set up some variables as follows:
 <ul>
@@ -651,17 +651,17 @@ or <a href="#__StringFromFile">StringFro
 
 <component index="&sect-num;.5.9" name="__property">
 <description><p>The property function returns the value of a JMeter property. 
-	If the property value cannot be found, and no default has been supplied, it returns the property name.
-	When supplying a default value, there is no need to provide a function name - the parameter can be set to null, and it will be ignored.
-	</p>For example:<p>
-		<ul>
+    If the property value cannot be found, and no default has been supplied, it returns the property name.
+    When supplying a default value, there is no need to provide a function name - the parameter can be set to null, and it will be ignored.
+    </p>For example:<p>
+        <ul>
 <li>${__property(user.dir)} - return value of user.dir</li>
 <li>${__property(user.dir,UDIR)} - return value of user.dir and save in UDIR</li>
 <li>${__property(abcd,ABCD,atod)} - return value of property abcd (or "atod" if not defined) and save in ABCD</li>
 <li>${__property(abcd,,atod)} - return value of property abcd (or "atod" if not defined) but don't save it</li>
 </ul>
 </p>
-	</description>
+    </description>
 
 <properties>
         <property name="Property Name" required="Yes">The property name to be retrieved.</property>
@@ -673,12 +673,12 @@ or <a href="#__StringFromFile">StringFro
 
 <component index="&sect-num;.5.10" name="__P">
 <description><p>This is a simplified property function which is
-	intended for use with properties defined on the command line.
-	Unlike the __property function, there is no option to save the value in a variable,
-	and if no default value is supplied, it is assumed to be 1. 
-	The value of 1 was chosen because it is valid for common test variables such
-	as loops, thread count, ramp up etc.
-	</p>For example:<p>
+    intended for use with properties defined on the command line.
+    Unlike the __property function, there is no option to save the value in a variable,
+    and if no default value is supplied, it is assumed to be 1. 
+    The value of 1 was chosen because it is valid for common test variables such
+    as loops, thread count, ramp up etc.
+    </p>For example:<p>
 <code>
 Define the property value:
 <br></br>
@@ -698,20 +698,20 @@ In the examples above, the first functio
 the second would return 1 and the last would return www.dummy.org
 (unless those properties were defined elsewhere!)
 </p>
-	</description>
+    </description>
 
 <properties>
         <property name="Property Name" required="Yes">The property name to be retrieved.</property>
         <property name="Default Value" required="No">The default value for the property.
-        	If omitted, the default is set to "1".</property>
+            If omitted, the default is set to "1".</property>
 </properties>
 </component>
 
 <component index="&sect-num;.5.11" name="__log">
 <description>
-	<p>
-	The log function logs a message, and returns its input string
-	</p>
+    <p>
+    The log function logs a message, and returns its input string
+    </p>
 </description>
 
 <properties>
@@ -722,7 +722,7 @@ the second would return 1 and the last w
         Useful for identifying what is being logged.</property>
 </properties>
 <p>The OUT and ERR log level names are used to direct the output to System.out and System.err respectively.
-	In this case, the output is always printed - it does not depend on the current log setting.
+    In this case, the output is always printed - it does not depend on the current log setting.
 </p>
 <pre>
 For example:
@@ -734,9 +734,9 @@ For example:
 
 <component index="&sect-num;.5.12" name="__logn">
 <description>
-	<p>
-	The logn function logs a message, and returns the empty string
-	</p>
+    <p>
+    The logn function logs a message, and returns the empty string
+    </p>
 </description>
 
 <properties>
@@ -745,7 +745,7 @@ For example:
         <property name="Throwable text" required="No">If non-empty, creates a Throwable to pass to the logger</property>
 </properties>
 <p>The OUT and ERR log level names are used to direct the output to System.out and System.err respectively.
-	In this case, the output is always printed - it does not depend on the current log setting.
+    In this case, the output is always printed - it does not depend on the current log setting.
 </p>
 <pre>
 For example:
@@ -755,8 +755,8 @@ For example:
 
 <component index="&sect-num;.5.13" name="__BeanShell">
 <description>
-	<p>
-	The BeanShell function evaluates the script passed to it, and returns the result.
+    <p>
+    The BeanShell function evaluates the script passed to it, and returns the result.
 </p>
 <p>
 <b>For full details on using BeanShell, please see the BeanShell web-site at <a href="http://www.beanshell.org/">http://www.beanshell.org/</a>
@@ -812,37 +812,37 @@ Remember to include any necessary quotes
 
 <component index="&sect-num;.5.14" name="__split">
 <description>
-	<p>
-	The split function splits the string passed to it according to the delimiter,
+    <p>
+    The split function splits the string passed to it according to the delimiter,
     and returns the original string. If any delimiters are adjacent, "?" is returned as the value.
     The split strings are returned in the variables ${VAR_1}, ${VAR_2} etc. 
     The count of variables is returned in ${VAR_n}. 
     From JMeter 2.1.2 onwards, a trailing delimiter is treated as a missing variable, and "?" is returned.
     Also, to allow it to work better with the ForEach controller, 
     __split now deletes the first unused variable in case it was set by a previous split.
-	</p>
-	<p/>
-	Example:
-	<code>
-	<br></br>
-	Define VAR="a||c|" in the test plan.
-	<br></br>
-	${__split(${VAR},VAR,|)}
-	<br></br>
-	This will return the contents of VAR, i.e. "a||c|" and set the following variables:
-	<br></br>
+    </p>
+    <p/>
+    Example:
+    <code>
+    <br></br>
+    Define VAR="a||c|" in the test plan.
+    <br></br>
+    ${__split(${VAR},VAR,|)}
+    <br></br>
+    This will return the contents of VAR, i.e. "a||c|" and set the following variables:
+    <br></br>
         VAR_n=4 (3 in JMeter 2.1.1 and earlier)
-	<br></br>
+    <br></br>
         VAR_1=a
-	<br></br>
+    <br></br>
         VAR_2=?
-	<br></br>
+    <br></br>
         VAR_3=c
-	<br></br>
+    <br></br>
         VAR_4=? (null in JMeter 2.1.1 and earlier)
-	<br></br>
+    <br></br>
         VAR_5=null (in JMeter 2.1.2 and later)
-	</code>
+    </code>
 </description>
 
 <properties>
@@ -857,24 +857,24 @@ If omitted, <b>,</b> is used. Note that 
 </component>
 <component index="&sect-num;.5.15" name="__XPath">
 <description>
-	<p>
-	The XPath function reads an XML file and matches the XPath.
-	Each time the function is called, the next match will be returned.
-	At end of file, it will wrap around to the start.
-	If no nodes matched, then the function will return the empty string,
-	and a warning message will be written to the JMeter log file.
-	<note>Note that the entire NodeList is held in memory.</note>
-	</p>
-	<p/>
-	Example:
-	<code>
-	<br></br>
-		
-	<br></br>
-	${__XPath(/path/to/build.xml, //target/@name)}
-	<br></br>
-	This will match all targets in build.xml and return the contents of the next name attribute
-	</code>
+    <p>
+    The XPath function reads an XML file and matches the XPath.
+    Each time the function is called, the next match will be returned.
+    At end of file, it will wrap around to the start.
+    If no nodes matched, then the function will return the empty string,
+    and a warning message will be written to the JMeter log file.
+    <note>Note that the entire NodeList is held in memory.</note>
+    </p>
+    <p/>
+    Example:
+    <code>
+    <br></br>
+
+    <br></br>
+    ${__XPath(/path/to/build.xml, //target/@name)}
+    <br></br>
+    This will match all targets in build.xml and return the contents of the next name attribute
+    </code>
 </description>
 
 <properties>
@@ -885,13 +885,13 @@ If omitted, <b>,</b> is used. Note that 
 
 <component index="&sect-num;.5.16" name="__setProperty">
 <description>
-	<p>The setProperty function sets the value of a JMeter property. 
-		The default return value from the function is the empty string,
-		so the function call can be used anywhere functions are valid.</p>
+    <p>The setProperty function sets the value of a JMeter property. 
+        The default return value from the function is the empty string,
+        so the function call can be used anywhere functions are valid.</p>
         <p>The original value can be returned by setting the optional 3rd parameter to "true".</p>
-	<p>Properties are global to JMeter,
-		so can be used to communicate between threads and thread groups</p>
-	</description>
+    <p>Properties are global to JMeter,
+        so can be used to communicate between threads and thread groups</p>
+    </description>
 
 <properties>
         <property name="Property Name" required="Yes">The property name to be set.</property>
@@ -903,8 +903,8 @@ If omitted, <b>,</b> is used. Note that 
 
 <component index="&sect-num;.5.17" name="__time">
 <description>
-	<p>The time function returns the current time in various formats.</p>
-	</description>
+    <p>The time function returns the current time in various formats.</p>
+    </description>
 
 <properties>
         <property name="Format" required="No">
@@ -935,16 +935,16 @@ time.YMD=yyMMdd
 
 <component index="&sect-num;.5.18" name="__jexl" tag="__jexl2">
 <description>
-	<p>The jexl function returns the result of evaluating a 
-	<a href="http://commons.apache.org/jexl">Commons JEXL expression</a>. 
-	See links below for more information on JEXL expressions.
-	</p>
+    <p>The jexl function returns the result of evaluating a 
+    <a href="http://commons.apache.org/jexl">Commons JEXL expression</a>. 
+    See links below for more information on JEXL expressions.
+    </p>
     <p>The __jexl function uses Commons JEXL 1, and the __jexl2 function uses Commons JEXL 2</p>
-	<ul>
-	<li><a href="http://commons.apache.org/jexl/reference/syntax.html">JEXL syntax description</a></li>
-	<li><a href="http://commons.apache.org/jexl/reference/examples.html#Example_Expressions">JEXL examples</a></li>
-	</ul>
-	</description>
+    <ul>
+    <li><a href="http://commons.apache.org/jexl/reference/syntax.html">JEXL syntax description</a></li>
+    <li><a href="http://commons.apache.org/jexl/reference/examples.html#Example_Expressions">JEXL examples</a></li>
+    </ul>
+    </description>
 
 <properties>
         <property name="Expression" required="Yes">
@@ -988,16 +988,16 @@ The following variables are made availab
 
 <component index="&sect-num;.5.19" name="__V">
 <description>
-	<p>The V (variable) function returns the result of evaluating a variable name expression.
-	This can be used to evaluate nested variable references (which are not currently supported).
-	</p>
-	<p>For example, if one has variables A1,A2 and N=1:</p>
-	<ul>
-	<li>${A1} - works OK</li>
-	<li>${A${N}} - does not work (nested variable reference)</li>
-	<li>${__V(A${N})} - works OK. A${N} becomes A1, and the __V function returns the value of A1</li>
-	</ul>
-	</description>
+    <p>The V (variable) function returns the result of evaluating a variable name expression.
+    This can be used to evaluate nested variable references (which are not currently supported).
+    </p>
+    <p>For example, if one has variables A1,A2 and N=1:</p>
+    <ul>
+    <li>${A1} - works OK</li>
+    <li>${A${N}} - does not work (nested variable reference)</li>
+    <li>${__V(A${N})} - works OK. A${N} becomes A1, and the __V function returns the value of A1</li>
+    </ul>
+    </description>
 
 <properties>
         <property name="Variable name" required="Yes">
@@ -1008,15 +1008,15 @@ The following variables are made availab
 
 <component index="&sect-num;.5.20" name="__evalVar">
 <description>
-	<p>The eval function returns the result of evaluating an expression stored in a variable.
-	</p>
-	<p>
-	This allows one to read a string from a file, and process any variable references in it.
-	For example, if the variable "query" contains "select ${column} from ${table}" 
-	and "column" and "table" contain "name" and "customers", then ${__evalVar(query)}
-	will evaluate as "select name from customers". 
-	</p>
-	</description>
+    <p>The eval function returns the result of evaluating an expression stored in a variable.
+    </p>
+    <p>
+    This allows one to read a string from a file, and process any variable references in it.
+    For example, if the variable "query" contains "select ${column} from ${table}" 
+    and "column" and "table" contain "name" and "customers", then ${__evalVar(query)}
+    will evaluate as "select name from customers". 
+    </p>
+    </description>
 
 <properties>
         <property name="Variable name" required="Yes">
@@ -1026,24 +1026,24 @@ The following variables are made availab
 </component>
 <component index="&sect-num;.5.21" name="__eval">
 <description>
-	<p>The eval function returns the result of evaluating a string expression.
-	</p>
-	<p>
-	This allows one to interpolate variable and function references in a string
-	which is stored in a variable.	For example, given the following variables:
-	<ul>
-	<li>name=Smith</li>
-	<li>column=age</li>
-	<li>table=birthdays</li>
-	<li>SQL=select ${column} from ${table} where name='${name}'</li>
-	</ul>
-	then ${__eval(${SQL})} will evaluate as "select age from birthdays where name='Smith'". 
-	</p>
-	<p>
-	This can be used in conjunction with CSV Dataset, for example 
-	where the both SQL statements and the values are defined in the data file.
-	</p>
-	</description>
+    <p>The eval function returns the result of evaluating a string expression.
+    </p>
+    <p>
+    This allows one to interpolate variable and function references in a string
+    which is stored in a variable.    For example, given the following variables:
+    <ul>
+    <li>name=Smith</li>
+    <li>column=age</li>
+    <li>table=birthdays</li>
+    <li>SQL=select ${column} from ${table} where name='${name}'</li>
+    </ul>
+    then ${__eval(${SQL})} will evaluate as "select age from birthdays where name='Smith'". 
+    </p>
+    <p>
+    This can be used in conjunction with CSV Dataset, for example 
+    where the both SQL statements and the values are defined in the data file.
+    </p>
+    </description>
 
 <properties>
         <property name="Variable name" required="Yes">

Modified: jmeter/trunk/xdocs/usermanual/get-started.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/get-started.xml?rev=1457581&r1=1457580&r2=1457581&view=diff
==============================================================================
--- jmeter/trunk/xdocs/usermanual/get-started.xml (original)
+++ jmeter/trunk/xdocs/usermanual/get-started.xml Sun Mar 17 22:58:08 2013
@@ -341,7 +341,7 @@ To do so, use the following options:</p>
 <p>-G[propertyfile] - defines a file containing JMeter properties to be sent to all remote servers.</p>
 <p>-L[category]=[priority] - overrides a logging setting, setting a particular category to the given priority level.</p>
 <p>The -L flag can also be used without the category name to set the root logging level.</p>
-	<p><b>Examples</b>:
+    <p><b>Examples</b>:
 <pre>
 jmeter -Duser.dir=/home/mstover/jmeter_stuff \
     -Jremote_hosts=127.0.0.1 -Ljmeter.engine=DEBUG
@@ -350,9 +350,9 @@ jmeter -LDEBUG</pre>
 </p>
 <p>
 <b>N.B.<br/>
-	The command line properties are processed early in startup, but after the logging system has been set up.
-	Attempts to use the -J flag to update log_level or log_file properties will have no effect.</b>
-	</p>
+    The command line properties are processed early in startup, but after the logging system has been set up.
+    Attempts to use the -J flag to update log_level or log_file properties will have no effect.</b>
+    </p>
 </subsection>
 <subsection name="&sect-num;.4.6 Logging and error messages" anchor="logging">
     <note>
@@ -360,30 +360,30 @@ jmeter -LDEBUG</pre>
     running tests. Nor does it report any error for a mis-spelt variable or function; instead the
     reference is just used as is. See <a href="functions.html">Functions and Variables for more information</a>.
     </note>
-	<p>If JMeter detects an error during a test, a message will be written to the log file. 
-		The log file name is defined in the jmeter.properties file (or using the -j option, see below).
-		It defaults to <b>jmeter.log</b>, and will be found in the directory from which JMeter was launched.
-		</p>
-		<p>
-		Since JMeter 2.6, menu <b>Options > Log Viewer</b> displays the log file in a bottom pane on main JMeter window. 
-		</p>
-		<p>
-		Since JMeter 2.7 (GUI mode), the number of error/fatal messages logged in the log file is displayed at top-right. 
-		</p>
-		<figure image="log_errors_counter.png">Error/fatal counter</figure>
-		<p>
-		JMeter versions after 2.2 added a new command-line option, -j jmeterlogfile. 
-		This is processed after the initial properties file is read,
-		and before any further properties are processed. 
-		It therefore allows the default of jmeter.log to be overridden.
-		The jmeter scripts that take a test plan name as a parameter (e.g. jmeter-n.cmd) have been updated
-		to define the log file using the test plan name,
-		e.g. for the test plan Test27.jmx the log file is set to Test27.log.
-		</p>
-		<p>When running on Windows, the file may appear as just <b>jmeter</b> unless you have set Windows to show file extensions.
-		[Which you should do anyway, to make it easier to detect viruses and other nasties that pretend to be text files...]
-		</p>
-		<p>As well as recording errors, the jmeter.log file records some information about the test run. For example:</p>
+    <p>If JMeter detects an error during a test, a message will be written to the log file. 
+        The log file name is defined in the jmeter.properties file (or using the -j option, see below).
+        It defaults to <b>jmeter.log</b>, and will be found in the directory from which JMeter was launched.
+        </p>
+        <p>
+        Since JMeter 2.6, menu <b>Options > Log Viewer</b> displays the log file in a bottom pane on main JMeter window. 
+        </p>
+        <p>
+        Since JMeter 2.7 (GUI mode), the number of error/fatal messages logged in the log file is displayed at top-right. 
+        </p>
+        <figure image="log_errors_counter.png">Error/fatal counter</figure>
+        <p>
+        JMeter versions after 2.2 added a new command-line option, -j jmeterlogfile. 
+        This is processed after the initial properties file is read,
+        and before any further properties are processed. 
+        It therefore allows the default of jmeter.log to be overridden.
+        The jmeter scripts that take a test plan name as a parameter (e.g. jmeter-n.cmd) have been updated
+        to define the log file using the test plan name,
+        e.g. for the test plan Test27.jmx the log file is set to Test27.log.
+        </p>
+        <p>When running on Windows, the file may appear as just <b>jmeter</b> unless you have set Windows to show file extensions.
+        [Which you should do anyway, to make it easier to detect viruses and other nasties that pretend to be text files...]
+        </p>
+        <p>As well as recording errors, the jmeter.log file records some information about the test run. For example:</p>
 <div overflow="scroll">
 <pre>
 10/17/2003 12:19:20 PM INFO  - jmeter.JMeter: Version 1.9.20031002 
@@ -393,11 +393,11 @@ jmeter -LDEBUG</pre>
 10/17/2003 12:19:52 PM INFO  - jmeter.engine.StandardJMeterEngine: Continue on error 
 10/17/2003 12:19:52 PM INFO  - jmeter.threads.JMeterThread: Thread BSH1-1 started 
 10/17/2003 12:19:52 PM INFO  - jmeter.threads.JMeterThread: Thread BSH1-1 is done 
-10/17/2003 12:19:52 PM INFO  - jmeter.engine.StandardJMeterEngine: Test has ended 	
+10/17/2003 12:19:52 PM INFO  - jmeter.engine.StandardJMeterEngine: Test has ended
 </pre>
 </div>
 <p>The log file can be helpful in determining the cause of an error,
-	as JMeter does not interrupt a test to display an error dialogue.</p>
+    as JMeter does not interrupt a test to display an error dialogue.</p>
 </subsection>
 <subsection name="&sect-num;.4.7 Full list of command-line options" anchor="options">
 <p>Invoking JMeter as "jmeter -?" will print a list of all the command-line options. 
@@ -494,17 +494,17 @@ If set to 0, then JMeter does not start 
   Similarly, <b>system.properties</b> is used to update system properties.
   </note>
   <properties>
-	<property name="ssl.provider">You can specify the class for your SSL
-	implementation if you don't want to use the built-in Java implementation.
-	</property>
-	<property name="xml.parser">You can specify an implementation as your XML
-	parser.  The default value is: org.apache.xerces.parsers.SAXParser</property>
+    <property name="ssl.provider">You can specify the class for your SSL
+    implementation if you don't want to use the built-in Java implementation.
+    </property>
+    <property name="xml.parser">You can specify an implementation as your XML
+    parser.  The default value is: org.apache.xerces.parsers.SAXParser</property>
   <property name="remote_hosts">Comma-delimited list of remote JMeter hosts (or host:port if required).
-	If you are running JMeter in a distributed environment, list the machines where
+    If you are running JMeter in a distributed environment, list the machines where
   you have JMeter remote servers running.  This will allow you to control those
-	servers from this machine's GUI</property>
+    servers from this machine's GUI</property>
   <property name="not_in_menu">A list of components you do not want to see in
-	JMeter's menus.  As JMeter has more and more components added, you may wish to
+    JMeter's menus.  As JMeter has more and more components added, you may wish to
   customize your JMeter to show only those components you are interested in.
   You may list their classname or their class label (the string that appears
   in JMeter's UI) here, and they will no longer appear in the menus.</property>

Modified: jmeter/trunk/xdocs/usermanual/index.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/index.xml?rev=1457581&r1=1457580&r2=1457581&view=diff
==============================================================================
--- jmeter/trunk/xdocs/usermanual/index.xml (original)
+++ jmeter/trunk/xdocs/usermanual/index.xml Sun Mar 17 22:58:08 2013
@@ -23,8 +23,8 @@
 <body>
 <section name="User's Manual" anchor="index">
 <p>Click on the section name to go straight to the section. 
-	Click on the "+" to go to the relevant section of the detailed section list,
-	where you can select individual subsections.</p>
+    Click on the "+" to go to the relevant section of the detailed section list,
+    where you can select individual subsections.</p>
 
 <subsection name="Section Summary" anchor="summary">
 <ul>
@@ -58,99 +58,99 @@
 <ul>
   <li><a name="intro"/><a href="intro.html">1. Introduction</a></li>
   <ul>
-	 <li><a href="intro.html#history">1.1 History</a></li>
-	 <li><a href="intro.html#future">1.2 The Future</a></li>
+     <li><a href="intro.html#history">1.1 History</a></li>
+     <li><a href="intro.html#future">1.2 The Future</a></li>
   </ul>
   <li><a name="get-started"/><a href="get-started.html">2. Getting Started</a></li>
   <ul>
-	 <li><a href="get-started.html#requirements">2.1 Requirements</a></li>
-	 <ul>
-		<li><a href="get-started.html#java_versions">2.1.1 Java Version</a></li>
-		<li><a href="get-started.html#os">2.1.2 Operating Systems</a></li>
-	 </ul>
-	 <li><a href="get-started.html#optional">2.2 Optional</a></li>
-	 <ul>
-		<li><a href="get-started.html#opt_compiler">2.2.1 Java Compiler</a></li>
-		<li><a href="get-started.html#opt_sax">2.2.2 SAX XML Parser</a></li>
-		<li><a href="get-started.html#opt_email">2.2.3 Email Support</a></li>
-		<li><a href="get-started.html#opt_ssl">2.2.4 SSL Encryption</a></li>
-		<li><a href="get-started.html#opt_jdbc">2.2.5 JDBC Driver</a></li>
-		<li><a href="get-started.html#opt_soap">2.2.6 Apache SOAP</a></li>
+     <li><a href="get-started.html#requirements">2.1 Requirements</a></li>
+     <ul>
+        <li><a href="get-started.html#java_versions">2.1.1 Java Version</a></li>
+        <li><a href="get-started.html#os">2.1.2 Operating Systems</a></li>
+     </ul>
+     <li><a href="get-started.html#optional">2.2 Optional</a></li>
+     <ul>
+        <li><a href="get-started.html#opt_compiler">2.2.1 Java Compiler</a></li>
+        <li><a href="get-started.html#opt_sax">2.2.2 SAX XML Parser</a></li>
+        <li><a href="get-started.html#opt_email">2.2.3 Email Support</a></li>
+        <li><a href="get-started.html#opt_ssl">2.2.4 SSL Encryption</a></li>
+        <li><a href="get-started.html#opt_jdbc">2.2.5 JDBC Driver</a></li>
+        <li><a href="get-started.html#opt_soap">2.2.6 Apache SOAP</a></li>
         <li><a href="get-started.html#opt_beanshell">2.2.7 BeanShell</a></li>
         <li><a href="get-started.html#libraries_activemq">2.2.8 Libraries for ActiveMQ 3.0</a></li>
-	 </ul>
-	 <li><a href="get-started.html#install">2.3 Installation</a></li>
-	 <ul>
-		<li><a href="get-started.html#download_release">2.3.1 Downloading the Latest Release</a></li>
-		<li><a href="get-started.html#download_nightly">2.3.2 Downloading Nightly Builds</a></li>
-	 </ul>
-	 <li><a href="get-started.html#running">2.4 Running JMeter</a></li>
-	 <ul>
-		<li><a href="get-started.html#classpath">2.4.1 JMeter's Classpath</a></li>
-		<li><a href="get-started.html#proxy_server">2.4.2 Using a Proxy Server</a></li>
-		<li><a href="get-started.html#non_gui">2.4.3 Non-GUI Mode</a></li>
-		<li><a href="get-started.html#server">2.4.4 Distributed Mode</a></li>
-		<li><a href="get-started.html#override">2.4.5 Overriding Properties Via The Command Line</a></li>
-		<li><a href="get-started.html#logging">2.4.6 Logging and Error Messages</a></li>
-		<li><a href="get-started.html#options">2.4.7 Full list of command-line options</a></li>
-	 </ul>
-	 <li><a href="get-started.html#configuring_jmeter">2.5 Configuring JMeter</a></li>
+     </ul>
+     <li><a href="get-started.html#install">2.3 Installation</a></li>
+     <ul>
+        <li><a href="get-started.html#download_release">2.3.1 Downloading the Latest Release</a></li>
+        <li><a href="get-started.html#download_nightly">2.3.2 Downloading Nightly Builds</a></li>
+     </ul>
+     <li><a href="get-started.html#running">2.4 Running JMeter</a></li>
+     <ul>
+        <li><a href="get-started.html#classpath">2.4.1 JMeter's Classpath</a></li>
+        <li><a href="get-started.html#proxy_server">2.4.2 Using a Proxy Server</a></li>
+        <li><a href="get-started.html#non_gui">2.4.3 Non-GUI Mode</a></li>
+        <li><a href="get-started.html#server">2.4.4 Distributed Mode</a></li>
+        <li><a href="get-started.html#override">2.4.5 Overriding Properties Via The Command Line</a></li>
+        <li><a href="get-started.html#logging">2.4.6 Logging and Error Messages</a></li>
+        <li><a href="get-started.html#options">2.4.7 Full list of command-line options</a></li>
+     </ul>
+     <li><a href="get-started.html#configuring_jmeter">2.5 Configuring JMeter</a></li>
   </ul>
   <li><a name="build-test-plan"/><a href="build-test-plan.html">3. Building a Test Plan</a></li>
   <ul>
-	 <li><a href="build-test-plan.html#add_remove">3.1 Adding and Removing Elements</a></li>
-	 <li><a href="build-test-plan.html#load_save">3.2 Loading and Saving Elements</a></li>
-	 <li><a href="build-test-plan.html#config_element">3.3 Configuring Tree Elements</a></li>
+     <li><a href="build-test-plan.html#add_remove">3.1 Adding and Removing Elements</a></li>
+     <li><a href="build-test-plan.html#load_save">3.2 Loading and Saving Elements</a></li>
+     <li><a href="build-test-plan.html#config_element">3.3 Configuring Tree Elements</a></li>
      <li><a href="build-test-plan.html#save">3.4 Saving the Test Plan</a></li>
-	 <li><a href="build-test-plan.html#run">3.5 Running a Test Plan</a></li>
-	 <li><a href="build-test-plan.html#error_reporting">3.6 Error reporting</a></li>
+     <li><a href="build-test-plan.html#run">3.5 Running a Test Plan</a></li>
+     <li><a href="build-test-plan.html#error_reporting">3.6 Error reporting</a></li>
   </ul>
   <li><a name="test_plan"/><a href="test_plan.html">4. Elements of a Test Plan</a></li>
   <ul>
-	 <li><a href="test_plan.html#thread_group">4.1 Thread Group</a></li>
-	 <li><a href="test_plan.html#controllers">4.2 Controllers</a></li>
-	 <ul>
-		<li><a href="test_plan.html#samplers">4.2.1 Samplers</a></li>
-		<li><a href="test_plan.html#logic_controller">4.2.2 Logic Controllers</a></li>
-	 </ul>
-	 <li><a href="test_plan.html#listeners">4.3 Listeners</a></li>
-	 <li><a href="test_plan.html#timers">4.4 Timers</a></li>
-	 <li><a href="test_plan.html#assertions">4.5 Assertions</a></li>
-	 <li><a href="test_plan.html#config_elements">4.6 Configuration Elements</a></li>
-	 <li><a href="test_plan.html#preprocessors">4.7 Pre-Processor Elements</a></li>
-	 <li><a href="test_plan.html#postprocessors">4.8 Post-Processor Elements</a></li>
-	 <li><a href="test_plan.html#executionorder">4.9 Execution order</a></li>
-	 <li><a href="test_plan.html#scoping_rules">4.10 Scoping Rules</a></li>
-	 <li><a href="test_plan.html#properties">4.11 Properties and Variables</a></li>
+     <li><a href="test_plan.html#thread_group">4.1 Thread Group</a></li>
+     <li><a href="test_plan.html#controllers">4.2 Controllers</a></li>
+     <ul>
+        <li><a href="test_plan.html#samplers">4.2.1 Samplers</a></li>
+        <li><a href="test_plan.html#logic_controller">4.2.2 Logic Controllers</a></li>
+     </ul>
+     <li><a href="test_plan.html#listeners">4.3 Listeners</a></li>
+     <li><a href="test_plan.html#timers">4.4 Timers</a></li>
+     <li><a href="test_plan.html#assertions">4.5 Assertions</a></li>
+     <li><a href="test_plan.html#config_elements">4.6 Configuration Elements</a></li>
+     <li><a href="test_plan.html#preprocessors">4.7 Pre-Processor Elements</a></li>
+     <li><a href="test_plan.html#postprocessors">4.8 Post-Processor Elements</a></li>
+     <li><a href="test_plan.html#executionorder">4.9 Execution order</a></li>
+     <li><a href="test_plan.html#scoping_rules">4.10 Scoping Rules</a></li>
+     <li><a href="test_plan.html#properties">4.11 Properties and Variables</a></li>
      <li><a href="test_plan.html#using_variables">4.12 Using Variables to parameterise tests</a></li>
-	</ul>
+    </ul>
  <li><a name="build-web-test-plan"/><a href="build-web-test-plan.html">5. Building a Web Test Plan</a></li>
-	 <ul>
-		<li><a href="build-web-test-plan.html#adding_users">5.1 Adding Users</a></li>
-		<li><a href="build-web-test-plan.html#adding_defaults">5.2 Adding Default HTTP Request Properties</a></li>
-		<li><a href="build-web-test-plan.html#adding_cookie_support">5.3 Adding Cookie Support</a></li>
-		<li><a href="build-web-test-plan.html#adding_requests">5.4 Adding HTTP Requests</a></li>
-		<li><a href="build-web-test-plan.html#adding_listener">5.5 Adding a Listener to View/Store the Test Results</a></li>
-		<li><a href="build-web-test-plan.html#logging_in">5.6 Logging in to a web-site</a></li>
-	 </ul>
+     <ul>
+        <li><a href="build-web-test-plan.html#adding_users">5.1 Adding Users</a></li>
+        <li><a href="build-web-test-plan.html#adding_defaults">5.2 Adding Default HTTP Request Properties</a></li>
+        <li><a href="build-web-test-plan.html#adding_cookie_support">5.3 Adding Cookie Support</a></li>
+        <li><a href="build-web-test-plan.html#adding_requests">5.4 Adding HTTP Requests</a></li>
+        <li><a href="build-web-test-plan.html#adding_listener">5.5 Adding a Listener to View/Store the Test Results</a></li>
+        <li><a href="build-web-test-plan.html#logging_in">5.6 Logging in to a web-site</a></li>
+     </ul>
  <li><a name="build-adv-web-test-plan"/><a href="build-adv-web-test-plan.html">6. Building an Advanced Web Test Plan</a></li>
-	 <ul>
-		<li><a href="build-adv-web-test-plan.html#session_url_rewriting">6.1 Handling User Sessions With URL Rewriting</a></li>
-		<li><a href="build-adv-web-test-plan.html#header_manager">6.2 Using a Header Manager</a></li>
-	 </ul>
+     <ul>
+        <li><a href="build-adv-web-test-plan.html#session_url_rewriting">6.1 Handling User Sessions With URL Rewriting</a></li>
+        <li><a href="build-adv-web-test-plan.html#header_manager">6.2 Using a Header Manager</a></li>
+     </ul>
  <li><a name="build-db-test-plan"/><a href="build-db-test-plan.html">7. Building a Database Test Plan</a></li>
-	 <ul>
-		<li><a href="build-db-test-plan.html#adding_users">7.1 Adding Users</a></li>
-		<li><a href="build-db-test-plan.html#adding_requests">7.2 Adding JDBC Requests</a></li>
-		<li><a href="build-db-test-plan.html#adding_listener">7.3 Adding a Listener to View/Store the Test Results</a></li>
-	 </ul>
+     <ul>
+        <li><a href="build-db-test-plan.html#adding_users">7.1 Adding Users</a></li>
+        <li><a href="build-db-test-plan.html#adding_requests">7.2 Adding JDBC Requests</a></li>
+        <li><a href="build-db-test-plan.html#adding_listener">7.3 Adding a Listener to View/Store the Test Results</a></li>
+     </ul>
  <li><a name="build-ftp-test-plan"/><a href="build-ftp-test-plan.html">8. Building an FTP Test Plan</a></li>
-	 <ul>
-		<li><a href="build-ftp-test-plan.html#adding_users">8.1 Adding Users</a></li>
-		<li><a href="build-ftp-test-plan.html#adding_defaults">8.2 Adding Default FTP Request Properties</a></li>
-		<li><a href="build-ftp-test-plan.html#adding_requests">8.3 Adding FTP Requests</a></li>
-		<li><a href="build-ftp-test-plan.html#adding_listener">8.4 Adding a Listener to View/Store the Test Results</a></li>
-	 </ul>
+     <ul>
+        <li><a href="build-ftp-test-plan.html#adding_users">8.1 Adding Users</a></li>
+        <li><a href="build-ftp-test-plan.html#adding_defaults">8.2 Adding Default FTP Request Properties</a></li>
+        <li><a href="build-ftp-test-plan.html#adding_requests">8.3 Adding FTP Requests</a></li>
+        <li><a href="build-ftp-test-plan.html#adding_listener">8.4 Adding a Listener to View/Store the Test Results</a></li>
+     </ul>
  <li><a name="build-ldap-test-plan"/><a href="build-ldap-test-plan.html">9a. Building an LDAP Test Plan</a></li>
   <ul>
     <li><a href="build-ldap-test-plan.html#adding_users">9a.1 Adding Users</a></li>
@@ -174,16 +174,16 @@
  <li><a name="remote-test"/><a href="remote-test.html">15. Remote Testing</a></li>
  <li><a name="best-practices"/><a href="best-practices.html">16. Best Practices</a></li>
   <ul>
-	 <li><a href="best-practices.html#limit_threads">16.1 Limit the Number of Threads</a></li>
-	 <li><a href="best-practices.html#put_cookie_manager">16.2 Where to Put the Cookie Manager</a></li>
-	 <li><a href="best-practices.html#put_auth_manager">16.3 Where to Put the Authorization Manager</a></li>
-	 <li><a href="best-practices.html#proxy_server">16.4 Using the Proxy Server to record test scripts</a></li>
-	 <li><a href="best-practices.html#user_variables">16.5 User variables</a></li>
-	 <li><a href="best-practices.html#lean_mean">16.6 Reducing resource requirements</a></li>
-	 <li><a href="best-practices.html#beanshell_server">16.7 BeanShell server</a></li>
-	 <li><a href="best-practices.html#bsh_scripting">16.8 BeanShell scripting</a></li>
-	 <li><a href="best-practices.html#developing_scripts">16.9 Developing script functions in BeanShell, Javascript or Jexl etc.</a></li>
-	 <li><a href="best-practices.html#parameterising_tests">16.10 Parameterising tests</a></li>
+     <li><a href="best-practices.html#limit_threads">16.1 Limit the Number of Threads</a></li>
+     <li><a href="best-practices.html#put_cookie_manager">16.2 Where to Put the Cookie Manager</a></li>
+     <li><a href="best-practices.html#put_auth_manager">16.3 Where to Put the Authorization Manager</a></li>
+     <li><a href="best-practices.html#proxy_server">16.4 Using the Proxy Server to record test scripts</a></li>
+     <li><a href="best-practices.html#user_variables">16.5 User variables</a></li>
+     <li><a href="best-practices.html#lean_mean">16.6 Reducing resource requirements</a></li>
+     <li><a href="best-practices.html#beanshell_server">16.7 BeanShell server</a></li>
+     <li><a href="best-practices.html#bsh_scripting">16.8 BeanShell scripting</a></li>
+     <li><a href="best-practices.html#developing_scripts">16.9 Developing script functions in BeanShell, Javascript or Jexl etc.</a></li>
+     <li><a href="best-practices.html#parameterising_tests">16.10 Parameterising tests</a></li>
   </ul>
  <li><a name="boss"/><a href="boss.html">17. Help! My boss wants me to load test our web app!</a></li>
 

Modified: jmeter/trunk/xdocs/usermanual/ldapanswer_xml.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/ldapanswer_xml.xml?rev=1457581&r1=1457580&r2=1457581&view=diff
==============================================================================
--- jmeter/trunk/xdocs/usermanual/ldapanswer_xml.xml (original)
+++ jmeter/trunk/xdocs/usermanual/ldapanswer_xml.xml Sun Mar 17 22:58:08 2013
@@ -17,33 +17,33 @@
 -->
 <document>   
 <properties>     
-	<title>User's Manual: LDAP answer XML description</title>   
+    <title>User's Manual: LDAP answer XML description</title>   
     <author email="Dolf.Smits@Siemens.com">Dolf Smits</author>
   </properties> 
 <body> 
 
 <section name="description of the ldapanswer XML definition" anchor="ldapans_xml">
 <p>
-	The extended LDAP sampler was built to support testing for very complex testpurposes.
-	It was aimed at supporting the LDAP operations as close as possible.
-	As the results are not passed back in a user-readable form, I invented my own xml definition to 
-	construct an answer in xml encoding, so the results may be parsed with regextracter or alike functions.
+    The extended LDAP sampler was built to support testing for very complex testpurposes.
+    It was aimed at supporting the LDAP operations as close as possible.
+    As the results are not passed back in a user-readable form, I invented my own xml definition to 
+    construct an answer in xml encoding, so the results may be parsed with regextracter or alike functions.
 </p>
 
 <subsection name="1 Global overview" anchor="overview">
 <p>
-	The global structure is as follows:<br/>
+    The global structure is as follows:<br/>
 <!--
 <ol>
 <li>
-	&lt;ldapanswer&gt; and &lt;ldapanswer/&gt; are the begin and endtags which are used to define the beginning ands end of the answer.
+    &lt;ldapanswer&gt; and &lt;ldapanswer/&gt; are the begin and endtags which are used to define the beginning ands end of the answer.
 
 </li>
 <li>
-	each ldapanswer contains 4 sections, an "operation" section (enclosed by 
-	&lt;operation&gt; tags) a respons code section (enclosed by &lt;responsecode&gt; tags), a 
-	response message (enclosed by &lt;responsemessage&gt; tags and (only with a search 
-	request) a searchresult section (enclosed with &ltsearchresult&gt tags>
+    each ldapanswer contains 4 sections, an "operation" section (enclosed by 
+    &lt;operation&gt; tags) a respons code section (enclosed by &lt;responsecode&gt; tags), a 
+    response message (enclosed by &lt;responsemessage&gt; tags and (only with a search 
+    request) a searchresult section (enclosed with &ltsearchresult&gt tags>
 </li>
 </ol>
 -->
@@ -55,35 +55,35 @@ following tags (with a short explanation
 <!--
 <ol>
 <li>
-	&lt;opertype&gt;<br>
-	Thise describes which kind of operation was sent, it can have the following values:
-	<ol>
-	<li>
-	bind<br>
-	(this code is used for both a thread bind as a single bind/unbind operation)
-	</li>
-	<li>
-	unbind
-	</li>
-	<li>
-	compare
-	</li>
-	<li>
-	add
-	</li>
-	<li>
-	delete
-	</li>
-	<li>
-	modfy
-	</li>
-	<li>
-	rename
-	</li>
-	<li>
-	search
-	</li>
-	</ol>
+    &lt;opertype&gt;<br>
+    Thise describes which kind of operation was sent, it can have the following values:
+    <ol>
+    <li>
+    bind<br>
+    (this code is used for both a thread bind as a single bind/unbind operation)
+    </li>
+    <li>
+    unbind
+    </li>
+    <li>
+    compare
+    </li>
+    <li>
+    add
+    </li>
+    <li>
+    delete
+    </li>
+    <li>
+    modfy
+    </li>
+    <li>
+    rename
+    </li>
+    <li>
+    search
+    </li>
+    </ol>
 </li>
 <li>
 &lt;attributes&gt;

Modified: jmeter/trunk/xdocs/usermanual/ldapops_tutor.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/ldapops_tutor.xml?rev=1457581&r1=1457580&r2=1457581&view=diff
==============================================================================
--- jmeter/trunk/xdocs/usermanual/ldapops_tutor.xml (original)
+++ jmeter/trunk/xdocs/usermanual/ldapops_tutor.xml Sun Mar 17 22:58:08 2013
@@ -17,98 +17,97 @@
 -->
 <document>   
 <properties>     
-	<title>JMeter - User's Manual: LDAP Operations</title>   
+    <title>JMeter - User's Manual: LDAP Operations</title>   
     <author email="Dolf.Smits@Siemens.com">Dolf Smits</author>
   </properties> 
 <body> 
 
 <section name="A short LDAP Operations tutorial" anchor="ops">
-		  						<p>
-								The extended LDAP sampler was built to support testing for very complex testpurposes.
-								It was aimed at supporting the LDAP operations as close as possible.
-								In this short tutorial, I will explain which LDAP operations exist and what they do.
-								Per operation, I will shortly explain how these operations are implemented.<br/>
-								LDAP servers are some kind of hierarchical database, they store objects (entries) in a tree. The uppermost part of a tree is called the ROOT of the tree.<br/>
-								eg. When a tree starts with dc=com, the root equals dc=com.<br/>
-								The next level can exist under the root, eg dc=Siemens. The full name of this object (the "distinghuised name") is "dc=siemens,dc=com.<br/>
-								Again, a following level can be made, by adding the user "cn=admin" under dc=siemens,dc=com. This object has a DN (distinguished name) of "cn=admin,dc=siemens,dc=com".<br/>
-								The relative distinguished name (RDN) is the last part of the DN, eg. cn=admin.<br/>
-								The characteristics of an object are determined by the objectClasses, which can be seen as a collection of attributes.<br/>
-								The type of an object is determined by the "structural objectClass" eg person, organizationalUnit or country.<br/>
-								The attributes contain the data of an object, eg mailadress, name, streetadress etc. Each attribute can have 0, 1 or more values.
-								</p>
+    <p>
+    The extended LDAP sampler was built to support testing for very complex testpurposes.
+    It was aimed at supporting the LDAP operations as close as possible.
+    In this short tutorial, I will explain which LDAP operations exist and what they do.
+    Per operation, I will shortly explain how these operations are implemented.<br/>
+    LDAP servers are some kind of hierarchical database, they store objects (entries) in a tree. The uppermost part of a tree is called the ROOT of the tree.<br/>
+    eg. When a tree starts with dc=com, the root equals dc=com.<br/>
+    The next level can exist under the root, eg dc=Siemens. The full name of this object (the "distinghuised name") is "dc=siemens,dc=com.<br/>
+    Again, a following level can be made, by adding the user "cn=admin" under dc=siemens,dc=com. This object has a DN (distinguished name) of "cn=admin,dc=siemens,dc=com".<br/>
+    The relative distinguished name (RDN) is the last part of the DN, eg. cn=admin.<br/>
+    The characteristics of an object are determined by the objectClasses, which can be seen as a collection of attributes.<br/>
+    The type of an object is determined by the "structural objectClass" eg person, organizationalUnit or country.<br/>
+    The attributes contain the data of an object, eg mailadress, name, streetadress etc. Each attribute can have 0, 1 or more values.
+    </p>
 <subsection name="1 Bind operation" anchor="bind">
-		  					<p>
-							Any contact with an LDAP server MUST start with a bind request. LDAP is a state dependent protocol. Without opening a session to
-							a LDAP server, no additional request can be made.
-							Due to some peculiarities in the JAVA libraries, 2 different bind operations are implemented.
-							</p>
+    <p>
+    Any contact with an LDAP server MUST start with a bind request. LDAP is a state dependent protocol. Without opening a session to
+    a LDAP server, no additional request can be made.
+    Due to some peculiarities in the JAVA libraries, 2 different bind operations are implemented.
+    </p>
 <subsection name="1.1 Thread Bind" anchor="thread_bind">
-				 				<p>
-								This bind is meant to open a session to a LDAP server. Any testplan should use this operation as the starting point from a session.
-								For each Thread (each virtual user) a seperate connection with the LDAP server is build, and so a seperate Thread bind is performed.
-							</p>
+    <p>
+    This bind is meant to open a session to a LDAP server. Any testplan should use this operation as the starting point from a session.
+    For each Thread (each virtual user) a seperate connection with the LDAP server is build, and so a seperate Thread bind is performed.
+    </p>
 </subsection>
 <subsection name="1.2 Single bind/unbind" anchor="single">
-			 				<p	>
-								This bind is used for user authentication verification.
-								A proper developed LDAP client, who needs an authenticated user, perform a bind with a given distinguished name and password.
-								This Single bind/unbind operation is for this purpose. It builds it own seperate connection to the LDAP server, performs a
-								bind operation, and ends the connection again (by sending an unbind).
-						</p>
+    <p>
+        This bind is used for user authentication verification.
+        A proper developed LDAP client, who needs an authenticated user, perform a bind with a given distinguished name and password.
+        This Single bind/unbind operation is for this purpose. It builds it own seperate connection to the LDAP server, performs a
+        bind operation, and ends the connection again (by sending an unbind).
+    </p>
 </subsection>
 </subsection>
 <subsection name="2 Unbind" anchor="unbind">
-			 				<p>
-								To close a connection to a LDAP server, an unbind operation is needed.
-								As the Single bind/unbind operation already (implicitly) performs an unbind, only a Thread unbind operation is needed.
-								This Thread unbind just closes the connection and cleans up any resources it has used.
-						</p>
+    <p>
+        To close a connection to a LDAP server, an unbind operation is needed.
+        As the Single bind/unbind operation already (implicitly) performs an unbind, only a Thread unbind operation is needed.
+        This Thread unbind just closes the connection and cleans up any resources it has used.
+    </p>
 </subsection>
 <subsection name="3 Compare" anchor="compare">
-						<p>
-		  				The compare operation needs the full distinguished name from a LDAP object, as well as a attribute and a value for the attribute.
-		  				It will simply check: "Has this object really this attribute with this value?".
-		  				Typical use is checking the membership of a certain user with a given group.
-						</p>
+    <p>
+    The compare operation needs the full distinguished name from a LDAP object, as well as a attribute and a value for the attribute.
+    It will simply check: "Has this object really this attribute with this value?".
+    Typical use is checking the membership of a certain user with a given group.
+    </p>
 </subsection>
 <subsection name="4 Search" anchor="search">
-		  					<p>
-								The search test simply searches for all objects which comply with a given search filter, eg.
-								all persons with a "employeeType=inactive" or "all persons with a userID equals user1"
-
-						</p>
+    <p>
+    The search test simply searches for all objects which comply with a given search filter, eg.
+    all persons with a "employeeType=inactive" or "all persons with a userID equals user1"
+    </p>
 </subsection>
 <subsection name="5 Add" anchor="add">
-		  				<p>
-								This simply add an object to the LDAP directory.
-								Off course the combination of attributes and distinguishedName must be valid!
-						</p>
+    <p>
+    This simply add an object to the LDAP directory.
+    Off course the combination of attributes and distinguishedName must be valid!
+    </p>
 </subsection>
 <subsection name="6 Modify" anchor="modify">
-		  					<p>
-								This operation modifies one or more attributes from a given object.
-								It needs the distinghised name from the object, as well as the attributes and the new values for this attribute.<br/>
-								Three versions are available, add, for adding an attribute value<br/>
-								replace, for overwriting the old attribute value with a new value<br/>
-								delete, to delete a value form an attribute, or to delete all the values of an attribute<br/>
-						</p>
+    <p>
+        This operation modifies one or more attributes from a given object.
+        It needs the distinghised name from the object, as well as the attributes and the new values for this attribute.<br/>
+        Three versions are available, add, for adding an attribute value<br/>
+        replace, for overwriting the old attribute value with a new value<br/>
+        delete, to delete a value form an attribute, or to delete all the values of an attribute<br/>
+    </p>
 </subsection>
 <subsection name="7 Delete" anchor="delete">
-		  				<p>
-								This operation deletes an object from the LDAP server.
-								It needs the distinghised name from the object.
-						</p>
+    <p>
+        This operation deletes an object from the LDAP server.
+        It needs the distinghised name from the object.
+    </p>
 </subsection>
 <subsection name="8 modDN" anchor="moddn">
-		  					<p>
-								This operation modifies the distinguished name from an object (it "moves" the object).<br/>
-								It comes in two flavours, just renaming an entry, then you specify a new RDN (relative distinguished name, this is the lowest part of the DN)<br/>
-								eg, you can rename "cn=admin,dc=siemens,dc=com" to cn=administrator,dc=Siemens,dc=com"<br/>
-								The second flavour is renaming (moving) a complete subtree by specifying a "new superior"<br/>
-								eg you can move a complete subtree "ou=retired,ou=people,dc=siemens,dc=com" to a new subtree "ou=retired people,dc=siemens,dc=com" by specifying
-								a new rdn "ou=retired people" and a new superior of "dc=siemens,dc=com"
-						</p>
+    <p>
+        This operation modifies the distinguished name from an object (it "moves" the object).<br/>
+        It comes in two flavours, just renaming an entry, then you specify a new RDN (relative distinguished name, this is the lowest part of the DN)<br/>
+        eg, you can rename "cn=admin,dc=siemens,dc=com" to cn=administrator,dc=Siemens,dc=com"<br/>
+        The second flavour is renaming (moving) a complete subtree by specifying a "new superior"<br/>
+        eg you can move a complete subtree "ou=retired,ou=people,dc=siemens,dc=com" to a new subtree "ou=retired people,dc=siemens,dc=com" by specifying
+        a new rdn "ou=retired people" and a new superior of "dc=siemens,dc=com"
+    </p>
 </subsection>
 </section>
 

Modified: jmeter/trunk/xdocs/usermanual/listeners.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/listeners.xml?rev=1457581&r1=1457580&r2=1457581&view=diff
==============================================================================
--- jmeter/trunk/xdocs/usermanual/listeners.xml (original)
+++ jmeter/trunk/xdocs/usermanual/listeners.xml Sun Mar 17 22:58:08 2013
@@ -84,7 +84,7 @@ output results like:.</p>
 timeStamp|time|label|responseCode|threadName|dataType|success|failureMessage
 02/06/03 08:21:42|1187|Home|200|Thread Group-1|text|true|
 02/06/03 08:21:42|47|Login|200|Thread Group-1|text|false|Test Failed: 
-	expected to contain: password etc.
+    expected to contain: password etc.
 </pre>
 </code></p>
 <p>

Modified: jmeter/trunk/xdocs/usermanual/remote-test.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/remote-test.xml?rev=1457581&r1=1457580&r2=1457581&view=diff
==============================================================================
--- jmeter/trunk/xdocs/usermanual/remote-test.xml (original)
+++ jmeter/trunk/xdocs/usermanual/remote-test.xml Sun Mar 17 22:58:08 2013
@@ -95,7 +95,7 @@ If this is non-zero, it will be used as 
 add the value of your running JMeter server's IP address.  Multiple such servers can be added, comma-delimited.</p>
 <p>Note that you can use the -R <a href="get-started.html#override">command line option</a>
 instead to specify the remote host(s) to use. This has the same effect as using -r and -Jremote_hosts={serverlist}.
-	E.g. jmeter -Rhost1,127.0.0.1,host2</p>
+    E.g. jmeter -Rhost1,127.0.0.1,host2</p>
 <p>If you define the JMeter property server.exitaftertest=true, then the server will exit after it runs a single test.
 See also the -X flag (described below)
 </p>
@@ -137,9 +137,9 @@ and follow the instructions below.
 to run the RMI Registry application (which is named, "rmiregistry") that comes with the JDK and is located in the "bin" 
 directory.  Before running rmiregistry, make sure that the following jars are in your system claspath:
 <ul>
-	<li>JMETER_HOME/lib/ext/ApacheJMeter_core.jar</li>
-	<li>JMETER_HOME/lib/jorphan.jar</li>
-	<li>JMETER_HOME/lib/logkit-1.2.jar</li>
+    <li>JMETER_HOME/lib/ext/ApacheJMeter_core.jar</li>
+    <li>JMETER_HOME/lib/jorphan.jar</li>
+    <li>JMETER_HOME/lib/logkit-1.2.jar</li>
 </ul>
 The 
 rmiregistry application needs access to certain JMeter classes.  Run rmiregistry with no parameters.  By default the 

Modified: jmeter/trunk/xdocs/usermanual/test_plan.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/test_plan.xml?rev=1457581&r1=1457580&r2=1457581&view=diff
==============================================================================
--- jmeter/trunk/xdocs/usermanual/test_plan.xml (original)
+++ jmeter/trunk/xdocs/usermanual/test_plan.xml Sun Mar 17 22:58:08 2013
@@ -74,13 +74,13 @@ Start with Ramp-up = number of threads a
 <p>By default, the thread group is configured to loop once through its elements.</p>
 
 <p>Version 1.9 introduces a test run <b>scheduler</b>. 
-	Click the checkbox at the bottom of the Thread Group panel to reveal extra fields
-	 in which you can enter the start and end times of the run. 
-	 When the test is started, JMeter will wait if necessary until the start-time has been reached.
-	 At the end of each cycle, JMeter checks if the end-time has been reached, and if so, the run is stopped,
-	 otherwise the test is allowed to continue until the iteration limit is reached.</p>
-	 <p>Alternatively, one can use the relative delay and duration fields. 
-	 Note that delay overrides start-time, and duration over-rides end-time.</p>
+    Click the checkbox at the bottom of the Thread Group panel to reveal extra fields
+     in which you can enter the start and end times of the run. 
+     When the test is started, JMeter will wait if necessary until the start-time has been reached.
+     At the end of each cycle, JMeter checks if the end-time has been reached, and if so, the run is stopped,
+     otherwise the test is allowed to continue until the iteration limit is reached.</p>
+     <p>Alternatively, one can use the relative delay and duration fields. 
+     Note that delay overrides start-time, and duration over-rides end-time.</p>
 </subsection>
 
 <subsection name="&sect-num;.2 Controllers" anchor="controllers">
@@ -114,13 +114,13 @@ Controllers can be used to modify the nu
 <p>
 JMeter samplers include:
 <ul>
-	<li>FTP Request</li>
-	<li>HTTP Request</li>
-	<li>JDBC Request</li>
-	<li>Java object request</li>
-	<li>LDAP Request</li>
-	<li>SOAP/XML-RPC Request</li>
-	<li>WebService (SOAP) Request</li>
+    <li>FTP Request</li>
+    <li>HTTP Request</li>
+    <li>JDBC Request</li>
+    <li>Java object request</li>
+    <li>LDAP Request</li>
+    <li>SOAP/XML-RPC Request</li>
+    <li>WebService (SOAP) Request</li>
 </ul>
 Each sampler has several properties you can set.
 You can further customize a sampler by adding one or more Configuration Elements to the Test Plan.
@@ -158,24 +158,24 @@ following test tree:</p>
 <p>
 <ul>
 <li>Test Plan</li>
-	<ul>
-	<li>Thread Group</li>
-		<ul>
-		<li>Once Only Controller</li>
-			<ul>
-			<li>Login Request (an <complink name="HTTP Request"/>)</li>
-			</ul>
-		<li>Load Search Page (HTTP Sampler)</li>
-		<li>Interleave Controller</li>
-			<ul>
-			<li>Search "A" (HTTP Sampler)</li>
-			<li>Search "B" (HTTP Sampler)</li>
-			<li>HTTP default request (Configuration Element)</li>
-			</ul>
-		<li>HTTP default request (Configuration Element)</li>
-		<li>Cookie Manager (Configuration Element)</li>
-		</ul>
-	</ul>
+    <ul>
+    <li>Thread Group</li>
+        <ul>
+        <li>Once Only Controller</li>
+            <ul>
+            <li>Login Request (an <complink name="HTTP Request"/>)</li>
+            </ul>
+        <li>Load Search Page (HTTP Sampler)</li>
+        <li>Interleave Controller</li>
+            <ul>
+            <li>Search "A" (HTTP Sampler)</li>
+            <li>Search "B" (HTTP Sampler)</li>
+            <li>HTTP default request (Configuration Element)</li>
+            </ul>
+        <li>HTTP default request (Configuration Element)</li>
+        <li>Cookie Manager (Configuration Element)</li>
+        </ul>
+    </ul>
 </ul>
 </p>
 
@@ -320,8 +320,8 @@ Since we placed "Web Defaults 1" inside 
 requests will use "Web Defaults 2", since we placed it in the Thread Group (the "parent" of all other branches).</p>
 
 <figure image="http-config/http-config-example.png">Figure 1 -
-	Test Plan Showing Accessability of Configuration Elements</figure>
-	
+    Test Plan Showing Accessability of Configuration Elements</figure>
+
 <note>
 The <complink name="User Defined Variables"/> Configuration element is different. 
 It is processed at the start of a test, no matter where it is placed.



Mime
View raw message