<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="en">
<head>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<title>Apache JMeter
          -
          User's Manual: Component Reference</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=Merriweather:400normal" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="../css/new-style.css">
<link rel="apple-touch-icon-precomposed" href="../images/apple-touch-icon.png">
<link rel="icon" href="../images/favicon.png">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="../images/mstile-144x144.png">
<meta name="theme-color" content="#ffffff">
</head>
<body role="document">
<a href="#content" class="hidden">Main content</a>
<div class="header">
<!--
            APACHE LOGO
          -->
<div>
<a href="https://www.apache.org"><img title="Apache Software Foundation" class="asf-logo logo" src="../images/asf-logo.svg" alt="Logo ASF"></a>
</div>
<!--
              PROJECT LOGO
            -->
<div>
<a href="https://jmeter.apache.org/"><img class="logo" src="../images/logo.svg" alt="Apache JMeter"></a>
</div>
<div class="banner">
<a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-234x60.png" alt="Current Apache event teaser"></a>
<div class="clear"></div>
</div>
</div>
<div class="nav">
<ul class="menu">
<li onClick="return true">
<div class="menu-title">About</div>
<ul>
<li>
<a href="../index.html">Overview</a>
</li>
<li>
<a href="https://www.apache.org/licenses/">License</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Download</div>
<ul>
<li>
<a href="../download_jmeter.cgi">Download Releases</a>
</li>
<li>
<a href="../changes.html">Release Notes</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Documentation</div>
<ul>
<li>
<a href="../usermanual/get-started.html">Get Started</a>
</li>
<li>
<a href="../usermanual/index.html">User Manual</a>
</li>
<li>
<a href="../usermanual/best-practices.html">Best Practices</a>
</li>
<li>
<a href="../usermanual/component_reference.html">Component Reference</a>
</li>
<li>
<a href="../usermanual/functions.html">Functions Reference</a>
</li>
<li>
<a href="../usermanual/properties_reference.html">Properties Reference</a>
</li>
<li>
<a href="../changes_history.html">Change History</a>
</li>
<li>
<a href="../api/index.html">Javadocs</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/Home">JMeter Wiki</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterFAQ">FAQ (Wiki)</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Tutorials</div>
<ul>
<li>
<a href="../usermanual/jmeter_distributed_testing_step_by_step.html">Distributed Testing</a>
</li>
<li>
<a href="../usermanual/jmeter_proxy_step_by_step.html">Recording Tests</a>
</li>
<li>
<a href="../usermanual/junitsampler_tutorial.html">JUnit Sampler</a>
</li>
<li>
<a href="../usermanual/jmeter_accesslog_sampler_step_by_step.html">Access Log Sampler</a>
</li>
<li>
<a href="../usermanual/jmeter_tutorial.html">Extending JMeter</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Community</div>
<ul>
<li>
<a href="../issues.html">Issue Tracking</a>
</li>
<li>
<a href="https://www.apache.org/security/">Security</a>
</li>
<li>
<a href="../mail.html">Mailing Lists</a>
</li>
<li>
<a href="../svnindex.html">Source Repositories</a>
</li>
<li>
<a href="../building.html">Building and Contributing</a>
</li>
<li>
<a href="https://projects.apache.org/project.html?jmeter">Project info at Apache</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterCommitters">Contributors</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Foundation</div>
<ul>
<li>
<a href="https://www.apache.org/">The Apache Software Foundation (ASF)</a>
</li>
<li>
<a href="https://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a>
</li>
<li>
<a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li>
<a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
</ul>
</li>
</ul>
</div>
<div class="main" id="content">
<div class="social-media">
<ul class="social-media-links">
<li class="twitter">
<a href="https://twitter.com/ApacheJMeter" title="Follow us on Twitter"><i class="fa fa-twitter" aria-hidden="true"></i>Twitter</a>
</li>
<li class="github">
<a href="https://github.com/apache/jmeter" title="Fork us on github"><i class="fa fa-github" aria-hidden="true"></i>github</a>
</li>
</ul>
</div>
<ul class="pagelinks">
<li>
<a href="boss.html">&lt; Prev</a>
</li>
<li>
<a href="../index.html">Index</a>
</li>
<li>
<a href="properties_reference.html">Next &gt;</a>
</li>
</ul>
<ul class="section-index">
<li>
<a href="#introduction">18 Introduction</a>
<ul></ul>
</li>
<li>
<a href="#samplers">18.1 Samplers</a>
<ul>
<li>
<a href="#FTP_Request">FTP Request</a>
</li>
<li>
<a href="#HTTP_Request">HTTP Request</a>
</li>
<li>
<a href="#JDBC_Request">JDBC Request</a>
</li>
<li>
<a href="#Java_Request">Java Request</a>
</li>
<li>
<a href="#LDAP_Request">LDAP Request</a>
</li>
<li>
<a href="#LDAP_Extended_Request">LDAP Extended Request</a>
</li>
<li>
<a href="#Access_Log_Sampler">Access Log Sampler</a>
</li>
<li>
<a href="#BeanShell_Sampler">BeanShell Sampler</a>
</li>
<li>
<a href="#JSR223_Sampler">JSR223 Sampler</a>
</li>
<li>
<a href="#TCP_Sampler">TCP Sampler</a>
</li>
<li>
<a href="#JMS_Publisher">JMS Publisher</a>
</li>
<li>
<a href="#JMS_Subscriber">JMS Subscriber</a>
</li>
<li>
<a href="#JMS_Point-to-Point">JMS Point-to-Point</a>
</li>
<li>
<a href="#JUnit_Request">JUnit Request</a>
</li>
<li>
<a href="#Mail_Reader_Sampler">Mail Reader Sampler</a>
</li>
<li>
<a href="#Flow_Control_Action">Flow Control Action
                    (was:
                    Test Action
                    )
                  </a>
</li>
<li>
<a href="#SMTP_Sampler">SMTP Sampler</a>
</li>
<li>
<a href="#OS_Process_Sampler">OS Process Sampler</a>
</li>
<li>
<a href="#MongoDB_Script_(DEPRECATED)">MongoDB Script (DEPRECATED)</a>
</li>
<li>
<a href="#Bolt_Request">Bolt Request</a>
</li>
</ul>
</li>
<li>
<a href="#logic_controllers">18.2 Logic Controllers</a>
<ul>
<li>
<a href="#Simple_Controller">Simple Controller</a>
</li>
<li>
<a href="#Loop_Controller">Loop Controller</a>
</li>
<li>
<a href="#Once_Only_Controller">Once Only Controller</a>
</li>
<li>
<a href="#Interleave_Controller">Interleave Controller</a>
</li>
<li>
<a href="#Random_Controller">Random Controller</a>
</li>
<li>
<a href="#Random_Order_Controller">Random Order Controller</a>
</li>
<li>
<a href="#Throughput_Controller">Throughput Controller</a>
</li>
<li>
<a href="#Runtime_Controller">Runtime Controller</a>
</li>
<li>
<a href="#If_Controller">If Controller</a>
</li>
<li>
<a href="#While_Controller">While Controller</a>
</li>
<li>
<a href="#Switch_Controller">Switch Controller</a>
</li>
<li>
<a href="#ForEach_Controller">ForEach Controller</a>
</li>
<li>
<a href="#Module_Controller">Module Controller</a>
</li>
<li>
<a href="#Include_Controller">Include Controller</a>
</li>
<li>
<a href="#Transaction_Controller">Transaction Controller</a>
</li>
<li>
<a href="#Recording_Controller">Recording Controller</a>
</li>
<li>
<a href="#Critical_Section_Controller">Critical Section Controller</a>
</li>
</ul>
</li>
<li>
<a href="#listeners">18.3 Listeners</a>
<ul>
<li>
<a href="#Sample_Result_Save_Configuration">Sample Result Save Configuration</a>
</li>
<li>
<a href="#Graph_Results">Graph Results</a>
</li>
<li>
<a href="#Assertion_Results">Assertion Results</a>
</li>
<li>
<a href="#View_Results_Tree">View Results Tree</a>
</li>
<li>
<a href="#Aggregate_Report">Aggregate Report</a>
</li>
<li>
<a href="#View_Results_in_Table">View Results in Table</a>
</li>
<li>
<a href="#Simple_Data_Writer">Simple Data Writer</a>
</li>
<li>
<a href="#Aggregate_Graph">Aggregate Graph</a>
</li>
<li>
<a href="#Response_Time_Graph">Response Time Graph</a>
</li>
<li>
<a href="#Mailer_Visualizer">Mailer Visualizer</a>
</li>
<li>
<a href="#BeanShell_Listener">BeanShell Listener</a>
</li>
<li>
<a href="#Summary_Report">Summary Report</a>
</li>
<li>
<a href="#Save_Responses_to_a_file">Save Responses to a file</a>
</li>
<li>
<a href="#JSR223_Listener">JSR223 Listener</a>
</li>
<li>
<a href="#Generate_Summary_Results">Generate Summary Results</a>
</li>
<li>
<a href="#Comparison_Assertion_Visualizer">Comparison Assertion Visualizer</a>
</li>
<li>
<a href="#Backend_Listener">Backend Listener</a>
</li>
</ul>
</li>
<li>
<a href="#config_elements">18.4 Configuration Elements</a>
<ul>
<li>
<a href="#CSV_Data_Set_Config">CSV Data Set Config</a>
</li>
<li>
<a href="#FTP_Request_Defaults">FTP Request Defaults</a>
</li>
<li>
<a href="#DNS_Cache_Manager">DNS Cache Manager</a>
</li>
<li>
<a href="#HTTP_Authorization_Manager">HTTP Authorization Manager</a>
</li>
<li>
<a href="#HTTP_Cache_Manager">HTTP Cache Manager</a>
</li>
<li>
<a href="#HTTP_Cookie_Manager">HTTP Cookie Manager</a>
</li>
<li>
<a href="#HTTP_Request_Defaults">HTTP Request Defaults</a>
</li>
<li>
<a href="#HTTP_Header_Manager">HTTP Header Manager</a>
</li>
<li>
<a href="#Java_Request_Defaults">Java Request Defaults</a>
</li>
<li>
<a href="#JDBC_Connection_Configuration">JDBC Connection Configuration</a>
</li>
<li>
<a href="#Keystore_Configuration">Keystore Configuration</a>
</li>
<li>
<a href="#Login_Config_Element">Login Config Element</a>
</li>
<li>
<a href="#LDAP_Request_Defaults">LDAP Request Defaults</a>
</li>
<li>
<a href="#LDAP_Extended_Request_Defaults">LDAP Extended Request Defaults</a>
</li>
<li>
<a href="#TCP_Sampler_Config">TCP Sampler Config</a>
</li>
<li>
<a href="#User_Defined_Variables">User Defined Variables</a>
</li>
<li>
<a href="#Random_Variable">Random Variable</a>
</li>
<li>
<a href="#Counter">Counter</a>
</li>
<li>
<a href="#Simple_Config_Element">Simple Config Element</a>
</li>
<li>
<a href="#MongoDB_Source_Config_(DEPRECATED)">MongoDB Source Config (DEPRECATED)</a>
</li>
<li>
<a href="#Bolt_Connection_Configuration">Bolt Connection Configuration</a>
</li>
</ul>
</li>
<li>
<a href="#assertions">18.5 Assertions</a>
<ul>
<li>
<a href="#Response_Assertion">Response Assertion</a>
</li>
<li>
<a href="#Duration_Assertion">Duration Assertion</a>
</li>
<li>
<a href="#Size_Assertion">Size Assertion</a>
</li>
<li>
<a href="#XML_Assertion">XML Assertion</a>
</li>
<li>
<a href="#BeanShell_Assertion">BeanShell Assertion</a>
</li>
<li>
<a href="#MD5Hex_Assertion">MD5Hex Assertion</a>
</li>
<li>
<a href="#HTML_Assertion">HTML Assertion</a>
</li>
<li>
<a href="#XPath_Assertion">XPath Assertion</a>
</li>
<li>
<a href="#XPath2_Assertion">XPath2 Assertion</a>
</li>
<li>
<a href="#XML_Schema_Assertion">XML Schema Assertion</a>
</li>
<li>
<a href="#JSR223_Assertion">JSR223 Assertion</a>
</li>
<li>
<a href="#Compare_Assertion">Compare Assertion</a>
</li>
<li>
<a href="#SMIME_Assertion">SMIME Assertion</a>
</li>
<li>
<a href="#JSON_Assertion">JSON Assertion</a>
</li>
<li>
<a href="#JSON_JMESPath_Assertion">JSON JMESPath Assertion</a>
</li>
</ul>
</li>
<li>
<a href="#timers">18.6 Timers</a>
<ul>
<li>
<a href="#Constant_Timer">Constant Timer</a>
</li>
<li>
<a href="#Gaussian_Random_Timer">Gaussian Random Timer</a>
</li>
<li>
<a href="#Uniform_Random_Timer">Uniform Random Timer</a>
</li>
<li>
<a href="#Constant_Throughput_Timer">Constant Throughput Timer</a>
</li>
<li>
<a href="#Precise_Throughput_Timer">Precise Throughput Timer</a>
</li>
<li>
<a href="#Synchronizing_Timer">Synchronizing Timer</a>
</li>
<li>
<a href="#BeanShell_Timer">BeanShell Timer</a>
</li>
<li>
<a href="#JSR223_Timer">JSR223 Timer</a>
</li>
<li>
<a href="#Poisson_Random_Timer">Poisson Random Timer</a>
</li>
</ul>
</li>
<li>
<a href="#preprocessors">18.7 Pre Processors</a>
<ul>
<li>
<a href="#HTML_Link_Parser">HTML Link Parser</a>
</li>
<li>
<a href="#HTTP_URL_Re-writing_Modifier">HTTP URL Re-writing Modifier</a>
</li>
<li>
<a href="#User_Parameters">User Parameters</a>
</li>
<li>
<a href="#BeanShell_PreProcessor">BeanShell PreProcessor</a>
</li>
<li>
<a href="#JSR223_PreProcessor">JSR223 PreProcessor</a>
</li>
<li>
<a href="#JDBC_PreProcessor">JDBC PreProcessor</a>
</li>
<li>
<a href="#RegEx_User_Parameters">RegEx User Parameters</a>
</li>
<li>
<a href="#Sample_Timeout">Sample Timeout</a>
</li>
</ul>
</li>
<li>
<a href="#postprocessors">18.8 Post-Processors</a>
<ul>
<li>
<a href="#Regular_Expression_Extractor">Regular Expression Extractor</a>
</li>
<li>
<a href="#CSS_Selector_Extractor">CSS Selector Extractor
                    (was:
                    CSS/JQuery Extractor
                    )
                  </a>
</li>
<li>
<a href="#XPath2_Extractor">XPath2 Extractor</a>
</li>
<li>
<a href="#XPath_Extractor">XPath Extractor</a>
</li>
<li>
<a href="#JSON_JMESPath_Extractor">JSON JMESPath Extractor</a>
</li>
<li>
<a href="#Result_Status_Action_Handler">Result Status Action Handler</a>
</li>
<li>
<a href="#BeanShell_PostProcessor">BeanShell PostProcessor</a>
</li>
<li>
<a href="#JSR223_PostProcessor">JSR223 PostProcessor</a>
</li>
<li>
<a href="#JDBC_PostProcessor">JDBC PostProcessor</a>
</li>
<li>
<a href="#JSON_Extractor">JSON Extractor</a>
</li>
<li>
<a href="#Boundary_Extractor">Boundary Extractor</a>
</li>
</ul>
</li>
<li>
<a href="#Miscellaneous_Features">18.9 Miscellaneous Features</a>
<ul>
<li>
<a href="#Test_Plan">Test Plan</a>
</li>
<li>
<a href="#Thread_Group">Thread Group</a>
</li>
<li>
<a href="#WorkBench">WorkBench</a>
</li>
<li>
<a href="#SSL_Manager">SSL Manager</a>
</li>
<li>
<a href="#HTTP(S)_Test_Script_Recorder">HTTP(S) Test Script Recorder
                    (was:
                    HTTP Proxy Server
                    )
                  </a>
</li>
<li>
<a href="#HTTP_Mirror_Server">HTTP Mirror Server</a>
</li>
<li>
<a href="#Property_Display">Property Display</a>
</li>
<li>
<a href="#Debug_Sampler">Debug Sampler</a>
</li>
<li>
<a href="#Debug_PostProcessor">Debug PostProcessor</a>
</li>
<li>
<a href="#Test_Fragment">Test Fragment</a>
</li>
<li>
<a href="#setUp_Thread_Group">setUp Thread Group</a>
</li>
<li>
<a href="#tearDown_Thread_Group">tearDown Thread Group</a>
</li>
</ul>
</li>
</ul>
<div class="section">
<h1 id="introduction">18 Introduction<a class="sectionlink" href="#introduction" title="Link to here">&para;</a>
</h1>

<div class="description">

<p>


</p>
 
<div class="clear"></div>
<div class="note">
 Several test elements use JMeter properties to control their behaviour.
 These properties are normally resolved when the class is loaded.
 This generally occurs before the test plan starts, so it's not possible to change the settings by using the <span class="code"><a href="../usermanual/functions.html#__setProperty">__setProperty()</a></span> function.
</div>
<div class="clear"></div>

<p>

</p>

</div>

</div>
<div class="section">
<h1 id="samplers">18.1 Samplers<a class="sectionlink" href="#samplers" title="Link to here">&para;</a>
</h1>

<div class="description">
    
<p>
    Samplers perform the actual work of JMeter.
    Each sampler (except <a href="../usermanual/component_reference.html#Flow_Control_Action">Flow Control Action</a>) generates one or more sample results.
    The sample results have various attributes (success/fail, elapsed time, data size etc.) and can be viewed in the various listeners.
    </p>

</div>

<div class="component">
<h2 id="FTP_Request">FTP Request<a class="sectionlink" href="#FTP_Request" title="Link to here">&para;</a>
</h2>
<div class="description">
This controller lets you send an FTP "retrieve file" or "upload file" request to an FTP server.
If you are going to send multiple requests to the same FTP server, consider
using a <a href="../usermanual/component_reference.html#FTP_Request_Defaults">FTP Request Defaults</a> Configuration
Element so you do not have to enter the same information for each FTP Request Generative
Controller. When downloading a file, it can be stored on disk (Local File) or in the Response Data, or both.
<p>
Latency is set to the time it takes to login.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/ftptest/ftp-request.png"><img src="../images/screenshots/ftptest/ftp-request.png" width="911" height="274" alt="Screenshot for Control-Panel of FTP Request"></a>
<figcaption>Screenshot of Control-Panel of FTP Request</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="FTP_Request_parms1">
        Parameters
        <a class="sectionlink" href="#FTP_Request_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Server Name or IP</div>
<div class="description req-true">Domain name or IP address of the FTP server.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Port</div>
<div class="description req-false">Port to use. If this is <span class="code">&gt;0</span>, then this specific port is used,
           otherwise JMeter uses the default FTP port.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Remote File:</div>
<div class="description req-true">File to retrieve or name of destination file to upload.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Local File:</div>
<div class="description req-true">File to upload, or destination for downloads (defaults to remote file name).</div>
<div class="required req-true">Yes, if uploading (*)</div>
</div>
        
<div class="property">
<div class="name req-true">Local File Contents:</div>
<div class="description req-true">Provides the contents for the upload, overrides the Local File property.</div>
<div class="required req-true">Yes, if uploading (*)</div>
</div>
        
<div class="property">
<div class="name req-true">get(RETR) / put(STOR)</div>
<div class="description req-true">Whether to retrieve or upload a file.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Use Binary mode?</div>
<div class="description req-true">Check this to use Binary mode (default ASCII)</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Save File in Response?</div>
<div class="description req-true">
        Whether to store contents of retrieved file in response data.
        If the mode is ASCII, then the contents will be visible in the <a href="../usermanual/component_reference.html#View_Results_Tree">View Results Tree</a>.
        </div>
<div class="required req-true">Yes, if downloading</div>
</div>
        
<div class="property">
<div class="name req-false">Username</div>
<div class="description req-false">FTP account username.</div>
<div class="required req-false">Usually</div>
</div>
        
<div class="property">
<div class="name req-false">Password</div>
<div class="description req-false">FTP account password. N.B. This will be visible in the test plan.</div>
<div class="required req-false">Usually</div>
</div>

</div>
<div class="links">
<div class="title">See also:</div>
<ul class="links">
<li>
<a href="test_plan.html#assertions">Assertions</a>
</li>
<li>
<a href="../usermanual/component_reference.html#FTP_Request_Defaults">FTP Request Defaults</a>
</li>
<li>
<a href="build-ftp-test-plan.html">Building an FTP Test Plan</a>
</li>
</ul>
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="HTTP_Request">HTTP Request<a class="sectionlink" href="#HTTP_Request" title="Link to here">&para;</a>
</h2>
<div class="description">
        
<p>This sampler lets you send an HTTP/HTTPS request to a web server.  It
        also lets you control whether or not JMeter parses HTML files for images and
        other embedded resources and sends HTTP requests to retrieve them.
        The following types of embedded resource are retrieved:</p>
        
<ul>
        
<li>images</li>
        
<li>applets</li>
        
<li>stylesheets (CSS) and resources referenced from those files</li>
        
<li>external scripts</li>
        
<li>frames, iframes</li>
        
<li>background images (body, table, TD, TR)</li>
        
<li>background sound</li>
        
</ul>
        
<p>
        The default parser is <span class="code">org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser</span>.
        This can be changed by using the property "<span class="code">htmlparser.className</span>" - see <span class="code">jmeter.properties</span> for details.
        </p>
        
<p>If you are going to send multiple requests to the same web server, consider
        using an <a href="../usermanual/component_reference.html#HTTP_Request_Defaults">HTTP Request Defaults</a>
        Configuration Element so you do not have to enter the same information for each
        HTTP Request.</p>

        
<p>Or, instead of manually adding HTTP Requests, you may want to use
        JMeter's <a href="../usermanual/component_reference.html#HTTP(S)_Test_Script_Recorder">HTTP(S) Test Script Recorder</a> to create
        them.  This can save you time if you have a lot of HTTP requests or requests with many
        parameters.</p>

        
<p>
<b>There are two different test elements used to define the samplers:</b>
</p>
        
<dl>
        
<dt>AJP/1.3 Sampler</dt>
<dd>uses the Tomcat mod_jk protocol (allows testing of Tomcat in AJP mode without needing Apache httpd)
        The AJP Sampler does not support multiple file upload; only the first file will be used.
        </dd>
        
<dt>HTTP Request</dt>
<dd>this has an implementation drop-down box, which selects the HTTP protocol implementation to be used:
          <dl>
            
<dt>
<span class="code">Java</span>
</dt>
<dd>uses the HTTP implementation provided by the JVM.
            This has some limitations in comparison with the HttpClient implementations - see below.</dd>
            
<dt>
<span class="code">HTTPClient4</span>
</dt>
<dd>uses Apache HttpComponents HttpClient 4.x.</dd>
            
<dt>Blank Value</dt>
<dd>does not set implementation on HTTP Samplers, so relies on HTTP Request Defaults if present or on <span class="code">jmeter.httpsampler</span> property defined in <span class="code">jmeter.properties</span>
</dd>
          
</dl>
        
</dd>
        
</dl>
         
<p>The Java HTTP implementation has some limitations:</p>
         
<ul>
         
<li>There is no control over how connections are re-used.
         When a connection is released by JMeter, it may or may not be re-used by the same thread.</li>
         
<li>The API is best suited to single-threaded usage - various settings
         are defined via system properties, and therefore apply to all connections.</li>
         
<li>No support of Kerberos authentication</li>
         
<li>It does not support client based certificate testing with Keystore Config.</li>
         
<li>Better control of Retry mechanism</li>
         
<li>It does not support virtual hosts.</li>
         
<li>It supports only the following methods: <span class="code">GET</span>, <span class="code">POST</span>, <span class="code">HEAD</span>, <span class="code">OPTIONS</span>, <span class="code">PUT</span>, <span class="code">DELETE</span> and <span class="code">TRACE</span>
</li>
         
<li>Better control on DNS Caching with <a href="../usermanual/component_reference.html#DNS_Cache_Manager">DNS Cache Manager</a>
</li>
         
</ul>
         
<div class="clear"></div>
<div class="note">Note: the <span class="code">FILE</span> protocol is intended for testing purposes only.
         It is handled by the same code regardless of which HTTP Sampler is used.</div>
<div class="clear"></div>
        
<p>If the request requires server or proxy login authorization (i.e. where a browser would create a pop-up dialog box),
         you will also have to add an <a href="../usermanual/component_reference.html#HTTP_Authorization_Manager">HTTP Authorization Manager</a> Configuration Element.
         For normal logins (i.e. where the user enters login information in a form), you will need to work out what the form submit button does,
         and create an HTTP request with the appropriate method (usually <span class="code">POST</span>) 
         and the appropriate parameters from the form definition.
         If the page uses HTTP, you can use the JMeter Proxy to capture the login sequence.
        </p>
        
<p>
        A separate SSL context is used for each thread.
        If you want to use a single SSL context (not the standard behaviour of browsers), set the JMeter property:</p>

<pre class="source">
https.sessioncontext.shared=true
</pre>
        By default, since version 5.0, the SSL context is retained during a Thread Group iteration and reset for each test iteration.
        If in your test plan the same user iterates multiple times, then you should set this to false.
<pre class="source">
httpclient.reset_state_on_thread_group_iteration=true
</pre>
        
<div class="clear"></div>
<div class="note">
         Note: this does not apply to the Java HTTP implementation.
        </div>
<div class="clear"></div>
        JMeter defaults to the SSL protocol level TLS.
        If the server needs a different level, e.g. <span class="code">SSLv3</span>, change the JMeter property, for example:
<pre class="source">
https.default.protocol=SSLv3
</pre>
        
<p>
        JMeter also allows one to enable additional protocols, by changing the property <span class="code">https.socket.protocols</span>.
        </p>
        
<p>If the request uses cookies, then you will also need an
        <a href="../usermanual/component_reference.html#HTTP_Cookie_Manager">HTTP Cookie Manager</a>.  You can
        add either of these elements to the Thread Group or the HTTP Request. If you have
        more than one HTTP Request that needs authorizations or cookies, then add the
        elements to the Thread Group. That way, all HTTP Request controllers will share the
        same Authorization Manager and Cookie Manager elements.</p>

        
<p>If the request uses a technique called "URL Rewriting" to maintain sessions,
        then see section
        <a href="build-adv-web-test-plan.html#session_url_rewriting">6.1 Handling User Sessions With URL Rewriting</a>
        for additional configuration steps.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/http-request.png"><img src="../images/screenshots/http-request.png" width="953" height="611" alt="Screenshot for Control-Panel of HTTP Request"></a>
<figcaption>Screenshot of Control-Panel of HTTP Request</figcaption>
</figure>
</div>
<figure>
<a href="../images/screenshots/http-request-advanced-tab.png"><img src="../images/screenshots/http-request-advanced-tab.png" width="951" height="284" alt="HTTP Request Advanced config fields"></a>
<figcaption>HTTP Request Advanced config fields</figcaption>
</figure>
<div class="properties">
<h3 id="HTTP_Request_parms1">
        Parameters
        <a class="sectionlink" href="#HTTP_Request_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Server</div>
<div class="description req-false">
             Domain name or IP address of the web server, e.g. <span class="code">www.example.com</span>. [Do not include the <span class="code">http://</span> prefix.]
             Note: If the "<span class="code">Host</span>" header is defined in a Header Manager, then this will be used
             as the virtual host name.
             <div class="clear"></div>
<div class="note">Server is required, unless:
              <ul>
                
<li>it is provided by <a href="../usermanual/component_reference.html#HTTP_Request_Defaults">HTTP Request Defaults</a>
</li>
                
<li>or a full URL including scheme, host and port (<span class="code">scheme://host:port</span>) is set in <b>Path</b> field</li>
              
</ul>
             
</div>
<div class="clear"></div>
        
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Port</div>
<div class="description req-false">Port the web server is listening to. Default: <span class="code">80</span>
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Connect Timeout</div>
<div class="description req-false">Connection Timeout. Number of milliseconds to wait for a connection to open.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Response Timeout</div>
<div class="description req-false">Response Timeout. Number of milliseconds to wait for a response.
        Note that this applies to each wait for a response. If the server response is sent in several chunks, the overall
        elapsed time may be longer than the timeout.
        <p>A <a href="../usermanual/component_reference.html#Duration_Assertion">Duration Assertion</a> can be used to detect responses that take too long to complete.</p>
        
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Server (proxy)</div>
<div class="description req-false">Hostname or IP address of a proxy server to perform request. [Do not include the <span class="code">http://</span> prefix.]</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Port</div>
<div class="description req-false">Port the proxy server is listening to.</div>
<div class="required req-false">No, unless proxy hostname is specified</div>
</div>
        
<div class="property">
<div class="name req-false">Username</div>
<div class="description req-false">(Optional) username for proxy server.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Password</div>
<div class="description req-false">(Optional) password for proxy server. (N.B. this is stored unencrypted in the test plan)</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Implementation</div>
<div class="description req-false">
<span class="code">Java</span>, <span class="code">HttpClient4</span>.
        If not specified (and not defined by HTTP Request Defaults), the default depends on the value of the JMeter property
        <span class="code">jmeter.httpsampler</span>, failing that, the HttpClient4 implementation is used.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Protocol</div>
<div class="description req-false">
<span class="code">HTTP</span>, <span class="code">HTTPS</span> or <span class="code">FILE</span>. Default: <span class="code">HTTP</span>
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Method</div>
<div class="description req-true">
<span class="code">GET</span>, <span class="code">POST</span>, <span class="code">HEAD</span>, <span class="code">TRACE</span>,
          <span class="code">OPTIONS</span>, <span class="code">PUT</span>, <span class="code">DELETE</span>, <span class="code">PATCH</span> (not supported for
          <span class="code">JAVA</span> implementation). With <span class="code">HttpClient4</span>, the following methods related to WebDav are
          also allowed: <span class="code">COPY</span>, <span class="code">LOCK</span>, <span class="code">MKCOL</span>, <span class="code">MOVE</span>,
          <span class="code">PROPFIND</span>, <span class="code">PROPPATCH</span>, <span class="code">UNLOCK</span>, <span class="code">REPORT</span>, <span class="code">MKCALENDAR</span>,
          <span class="code">SEARCH</span>.
          <p>More methods can be pre-defined for the HttpClient4 by using the JMeter property
            <span class="code">httpsampler.user_defined_methods</span>.</p>
        
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Content Encoding</div>
<div class="description req-false">
        Content encoding to be used (for <span class="code">POST</span>, <span class="code">PUT</span>, <span class="code">PATCH</span> and <span class="code">FILE</span>).
        This is the character encoding to be used, and is not related to the Content-Encoding HTTP header.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Redirect Automatically</div>
<div class="description req-false">
        Sets the underlying http protocol handler to automatically follow redirects,
        so they are not seen by JMeter, and thus will not appear as samples.
        Should only be used for <span class="code">GET</span> and <span class="code">HEAD</span> requests.
        The HttpClient sampler will reject attempts to use it for <span class="code">POST</span> or <span class="code">PUT</span>.
        <div class="clear"></div>
<div class="note">Warning: see below for information on cookie and header handling.</div>
<div class="clear"></div>
        
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Follow Redirects</div>
<div class="description req-false">
        This only has any effect if "<span class="code">Redirect Automatically</span>" is not enabled.
        If set, the JMeter sampler will check if the response is a redirect and follow it if so.
        The initial redirect and further responses will appear as additional samples.
        The URL and data fields of the parent sample will be taken from the final (non-redirected)
        sample, but the parent byte count and elapsed time include all samples.
        The latency is taken from the initial response.
        Note that the HttpClient sampler may log the following message:
        <pre class="source">"Redirect requested but followRedirects is disabled"</pre>
        This can be ignored.
        <br>
        JMeter will collapse paths of the form '<span class="code">/../segment</span>' in
        both absolute and relative redirect URLs. For example <span class="code">http://host/one/../two</span> will be collapsed into <span class="code">http://host/two</span>.
        If necessary, this behaviour can be suppressed by setting the JMeter property
        <span class="code">httpsampler.redirect.removeslashdotdot=false</span>
        
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Use KeepAlive</div>
<div class="description req-false">JMeter sets the Connection: <span class="code">keep-alive</span> header. This does not work properly with the default HTTP implementation, as connection re-use is not under user-control.
                  It does work with the Apache HttpComponents HttpClient implementations.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Use multipart/form-data for HTTP POST</div>
<div class="description req-false">
        Use a <span class="code">multipart/form-data</span> or <span class="code">application/x-www-form-urlencoded</span> post request
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Browser-compatible headers</div>
<div class="description req-false">
        When using <span class="code">multipart/form-data</span>, this suppresses the <span class="code">Content-Type</span> and
        <span class="code">Content-Transfer-Encoding</span> headers; only the <span class="code">Content-Disposition</span> header is sent.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Path</div>
<div class="description req-false">The path to resource (for example, <span class="code">/servlets/myServlet</span>). If the
resource requires query string parameters, add them below in the
"Send Parameters With the Request" section.
<div class="clear"></div>
<div class="note">
As a special case, if the path starts with "<span class="code">http://</span>" or "<span class="code">https://</span>" then this is used as the full URL.
</div>
<div class="clear"></div>
In this case, the server, port and protocol fields are ignored; parameters are also ignored for <span class="code">GET</span> and <span class="code">DELETE</span> methods.
Also please note that the path is not encoded - apart from replacing spaces with <span class="code">%20</span> -
so unsafe characters may need to be encoded to avoid errors such as <span class="code">URISyntaxException</span>.
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Send Parameters With the Request</div>
<div class="description req-false">The query string will
        be generated from the list of parameters you provide.  Each parameter has a <span class="code">name</span> and
        <span class="code">value</span>, the options to encode the parameter, and an option to include or exclude an equals sign (some applications
        don't expect an equals sign when the value is the empty string).  The query string will be generated in the correct fashion, depending on
        the choice of "Method" you made (i.e. if you chose <span class="code">GET</span> or <span class="code">DELETE</span>, the query string will be
        appended to the URL, if <span class="code">POST</span> or <span class="code">PUT</span>, then it will be sent separately).  Also, if you are
        sending a file using a multipart form, the query string will be created using the
        multipart form specifications.
        <b>See below for some further information on parameter handling.</b>
        
<p>
        Additionally, you can specify whether each parameter should be URL encoded.  If you are not sure what this
        means, it is probably best to select it.  If your values contain characters such as the following then encoding is usually required.:
        </p>
        
<ul>
            
<li>ASCII Control Chars</li>
            
<li>Non-ASCII characters</li>
            
<li>Reserved characters:URLs use some characters for special use in defining their syntax. When these characters are not used in their special role inside a URL, they need to be encoded, example : '<span class="code">$</span>', '<span class="code">&amp;</span>', '<span class="code">+</span>', '<span class="code">,</span>' , '<span class="code">/</span>', '<span class="code">:</span>', '<span class="code">;</span>', '<span class="code">=</span>', '<span class="code">?</span>', '<span class="code">@</span>'</li>
            
<li>Unsafe characters: Some characters present the possibility of being misunderstood within URLs for various reasons. These characters should also always be encoded, example : '<span class="code"> </span>', '<span class="code">&lt;</span>', '<span class="code">&gt;</span>', '<span class="code">#</span>', '<span class="code">%</span>', &hellip;</li>
        
</ul>
        
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">File Path:</div>
<div class="description req-false">Name of the file to send.  If left blank, JMeter
        does not send a file, if filled in, JMeter automatically sends the request as
        a multipart form request.
        <p>
        If it is a <span class="code">POST</span> or <span class="code">PUT</span> or <span class="code">PATCH</span> request and there is a single file whose 'Parameter name' attribute (below) is omitted, 
        then the file is sent as the entire body
        of the request, i.e. no wrappers are added. This allows arbitrary bodies to be sent. This functionality is present for <span class="code">POST</span> requests, 
        and also for <span class="code">PUT</span> requests.
        <b>See below for some further information on parameter handling.</b>
        
</p>
        
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Parameter name:</div>
<div class="description req-false">Value of the "<span class="code">name</span>" web request parameter.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">MIME Type</div>
<div class="description req-false">MIME type (for example, <span class="code">text/plain</span>).
        If it is a <span class="code">POST</span> or <span class="code">PUT</span> or <span class="code">PATCH</span> request and either the '<span class="code">name</span>' attribute (below) are omitted or the request body is
        constructed from parameter values only, then the value of this field is used as the value of the
        <span class="code">content-type</span> request header.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Retrieve All Embedded Resources from HTML Files</div>
<div class="description req-false">Tell JMeter to parse the HTML file
and send HTTP/HTTPS requests for all images, Java applets, JavaScript files, CSSs, etc. referenced in the file.
        See below for more details.
        </div>
<div class="required req-false">No</div>
</div>
       
<div class="property">
<div class="name req-false">Save response as MD5 hash?</div>
<div class="description req-false">
       If this is selected, then the response is not stored in the sample result.
       Instead, the 32 character MD5 hash of the data is calculated and stored instead.
       This is intended for testing large amounts of data.
       </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Embedded URLs must match:</div>
<div class="description req-false">
        If present, this must be a regular expression that is used to match against any embedded URLs found.
        So if you only want to download embedded resources from <span class="code">http://example.com/</span>, use the expression:
        <span class="code">http://example\.com/.*</span>
        
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Use concurrent pool</div>
<div class="description req-false">Use a pool of concurrent connections to get embedded resources.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Size</div>
<div class="description req-false">Pool size for concurrent connections used to get embedded resources.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Source address type</div>
<div class="description req-false">
        
<i>[Only for HTTP Request with HTTPClient implementation]</i> 
<br>
        To distinguish the source address value, select the type of these:
        <ul>
        
<li>Select <i>IP/Hostname</i> to use a specific IP address or a (local) hostname</li>
        
<li>Select <i>Device</i> to pick the first available address for that interface which
        this may be either IPv4 or IPv6</li>
        
<li>Select <i>Device IPv4</i> to select the IPv4 address of the device name (like <span class="code">eth0</span>, <span class="code">lo</span>, <span class="code">em0</span>, etc.)</li>
        
<li>Select <i>Device IPv6</i> to select the IPv6 address of the device name (like <span class="code">eth0</span>, <span class="code">lo</span>, <span class="code">em0</span>, etc.)</li>
        
</ul>
        
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Source address field</div>
<div class="description req-false">
        
<i>[Only for HTTP Request with HTTPClient implementation]</i> 
<br>
        This property is used to enable IP Spoofing.
        It overrides the default local IP address for this sample.
        The JMeter host must have multiple IP addresses (i.e. IP aliases, network interfaces, devices).
        The value can be a host name, IP address, or a network interface device such as "<span class="code">eth0</span>" or "<span class="code">lo</span>" or "<span class="code">wlan0</span>".<br>
        If the property <span class="code">httpclient.localaddress</span> is defined, that is used for all HttpClient requests.
        </div>
<div class="required req-false">No</div>
</div>

</div>
<div class="clear"></div>
<div class="note">
When using Automatic Redirection, cookies are only sent for the initial URL.
This can cause unexpected behaviour for web-sites that redirect to a local server.
E.g. if <span class="code">www.example.com</span> redirects to <span class="code">www.example.co.uk</span>.
In this case the server will probably return cookies for both URLs, but JMeter will only see the cookies for the last
host, i.e. <span class="code">www.example.co.uk</span>. If the next request in the test plan uses <span class="code">www.example.com</span>,
rather than <span class="code">www.example.co.uk</span>, it will not get the correct cookies.
Likewise, Headers are sent for the initial request, and won't be sent for the redirect.
This is generally only a problem for manually created test plans,
as a test plan created using a recorder would continue from the redirected URL.
</div>
<div class="clear"></div>
<p>

<b>Parameter Handling:</b>
<br>
For the <span class="code">POST</span> and <span class="code">PUT</span> method, if there is no file to send, and the name(s) of the parameter(s) are omitted,
then the body is created by concatenating all the value(s) of the parameters.
Note that the values are concatenated without adding any end-of-line characters.
These can be added by using the <span class="code"><a href="../usermanual/functions.html#__char">__char()</a></span> function in the value fields.
This allows arbitrary bodies to be sent.
The values are encoded if the encoding flag is set.
See also the MIME Type above how you can control the <span class="code">content-type</span> request header that is sent.
<br>
For other methods, if the name of the parameter is missing,
then the parameter is ignored. This allows the use of optional parameters defined by variables.
</p>
<br>
<p>You have the option to switch to <span class="code">Body Data</span> tab when a request has only unnamed parameters
(or no parameters at all).
This option is useful in the following cases (amongst others):</p>
<ul>

<li>GWT RPC HTTP Request</li>

<li>JSON REST HTTP Request</li>

<li>XML REST HTTP Request</li>

<li>SOAP HTTP Request</li>

</ul>
<div class="clear"></div>
<div class="note">
Note that once you leave the Tree node, you cannot switch back to the parameter tab unless you clear the <span class="code">Body Data</span> tab from its data.
</div>
<div class="clear"></div>
<p>
In <span class="code">Body Data</span> mode, each line will be sent with <span class="code">CRLF</span> appended, apart from the last line.
To send a <span class="code">CRLF</span> after the last line of data, just ensure that there is an empty line following it.
(This cannot be seen, except by noting whether the cursor can be placed on the subsequent line.)
</p>
<figure>
<a href="../images/screenshots/http-request-raw-single-parameter.png"><img src="../images/screenshots/http-request-raw-single-parameter.png" width="902" height="421" alt="Figure 1 - HTTP Request with one unnamed parameter"></a>
<figcaption>Figure 1 - HTTP Request with one unnamed parameter</figcaption>
</figure>
<figure>
<a href="../images/screenshots/http-request-confirm-raw-body.png"><img src="../images/screenshots/http-request-confirm-raw-body.png" width="908" height="212" alt="Figure 2 - Confirm dialog to switch"></a>
<figcaption>Figure 2 - Confirm dialog to switch</figcaption>
</figure>
<figure>
<a href="../images/screenshots/http-request-raw-body.png"><img src="../images/screenshots/http-request-raw-body.png" width="905" height="423" alt="Figure 3 - HTTP Request using Body Data"></a>
<figcaption>Figure 3 - HTTP Request using Body Data</figcaption>
</figure>
<p>

<b>Method Handling:</b>
<br>
The <span class="code">GET</span>, <span class="code">DELETE</span>, <span class="code">POST</span>, <span class="code">PUT</span> and <span class="code">PATCH</span> request methods work similarly, except that as of 3.1, only <span class="code">POST</span> method supports multipart requests
or file upload.
The <span class="code">PUT</span> and <span class="code">PATCH</span> method body must be provided as one of the following:</p>
<ul>

<li>define the body as a file with empty Parameter name field; in which case the MIME Type is used as the Content-Type</li>

<li>define the body as parameter value(s) with no name</li>

<li>use the <span class="code">Body Data</span> tab</li>

</ul>
<p>
The <span class="code">GET</span>, <span class="code">DELETE</span> and <span class="code">POST</span> methods have an additional way of passing parameters by using the <span class="code">Parameters</span> tab.
<span class="code">GET</span>, <span class="code">DELETE</span>, <span class="code">PUT</span> and <span class="code">PATCH</span> require a Content-Type.
If not using a file, attach a Header Manager to the sampler and define the Content-Type there.
</p>
<p>JMeter scan responses from embedded resources. It uses the property <span class="code">HTTPResponse.parsers</span>, which is a list of parser ids,
 e.g. <span class="code">htmlParser</span>, <span class="code">cssParser</span> and <span class="code">wmlParser</span>. For each id found, JMeter checks two further properties:</p>
<ul>
 
<li>
<span class="code">id.types</span> - a list of content types</li>
 
<li>
<span class="code">id.className</span> - the parser to be used to extract the embedded resources</li>
 
</ul>
<p>See <span class="code">jmeter.properties</span> file for the details of the settings.
 If the <span class="code">HTTPResponse.parser</span> property is not set, JMeter reverts to the previous behaviour,
 i.e. only <span class="code">text/html</span> responses will be scanned</p>
<b>Emulating slow connections:</b>
<br>
<p>

<span class="code">HttpClient4</span> and <span class="code">Java</span> Sampler support emulation of slow connections; see the following entries in <span class="code">jmeter.properties</span>:
<pre class="source">
# Define characters per second &gt; 0 to emulate slow connections
#httpclient.socket.http.cps=0
#httpclient.socket.https.cps=0
</pre>
However the <span class="code">Java</span> sampler only supports slow HTTPS connections.
</p>
<p>
<b>Response size calculation</b>
<br>


<div class="clear"></div>
<div class="note">
The <span class="code">Java</span> implementation does not include transport overhead such as
chunk headers in the response body size.<br>
The <span class="code">HttpClient4</span> implementation does include the overhead in the response body size,
so the value may be greater than the number of bytes in the response content.
</div>
<div class="clear"></div>

</p>
<p>

<b>Retry handling</b>
<br>
By default retry has been set to 0 for both HttpClient4 and Java implementations, meaning no retry is attempted.<br>  
For HttpClient4, the retry count can be overridden by setting the relevant JMeter property, for example:

<pre class="source">
httpclient4.retrycount=3
</pre>

<div class="clear"></div>
<div class="note">
With HC4 Implementation, retry will be done on Idempotent Http Methods by default.
If you want to retry for all methods, then set property
<pre class="source">
httpclient4.request_sent_retry_enabled=true
</pre>
</div>
<div class="clear"></div>

Note that the Java implementation does not retry neither by default, you can change this by setting <pre class="source">http.java.sampler.retries=3</pre>

</p>
<p>

<b>Note: Certificates does not conform to algorithm constraints</b>
<br>
You may encounter the following error: <span class="code">java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</span>
 if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature
 algorithm using MD2 (like <span class="code">md2WithRSAEncryption</span>) or with a SSL certificate with a size lower than 1024 bits.
</p>
<p>
This error is related to increased security in Java 8.
</p>
<p>
To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing
the Java <span class="code">jdk.certpath.disabledAlgorithms</span> property. Remove the MD2 value or the constraint on size, depending on your case.
</p>
<p>
This property is in this file:</p>
<pre class="source">JAVA_HOME/jre/lib/security/java.security</pre>
<p>See  <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=56357">
      Bug
      56357</a> for details.
</p>
<div class="links">
<div class="title">See also:</div>
<ul class="links">
<li>
<a href="test_plan.html#assertions">Assertion</a>
</li>
<li>
<a href="build-web-test-plan.html">Building a Web Test Plan</a>
</li>
<li>
<a href="build-adv-web-test-plan.html">Building an Advanced Web Test Plan</a>
</li>
<li>
<a href="../usermanual/component_reference.html#HTTP_Authorization_Manager">HTTP Authorization Manager</a>
</li>
<li>
<a href="../usermanual/component_reference.html#HTTP_Cookie_Manager">HTTP Cookie Manager</a>
</li>
<li>
<a href="../usermanual/component_reference.html#HTTP_Header_Manager">HTTP Header Manager</a>
</li>
<li>
<a href="../usermanual/component_reference.html#HTML_Link_Parser">HTML Link Parser</a>
</li>
<li>
<a href="../usermanual/component_reference.html#HTTP(S)_Test_Script_Recorder">HTTP(S) Test Script Recorder</a>
</li>
<li>
<a href="../usermanual/component_reference.html#HTTP_Request_Defaults">HTTP Request Defaults</a>
</li>
<li>
<a href="build-adv-web-test-plan.html#session_url_rewriting">HTTP Requests and Session ID's: URL Rewriting</a>
</li>
</ul>
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="JDBC_Request">JDBC Request<a class="sectionlink" href="#JDBC_Request" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>This sampler lets you send a JDBC Request (an SQL query) to a database.</p>

<p>Before using this you need to set up a
<a href="../usermanual/component_reference.html#JDBC_Connection_Configuration">JDBC Connection Configuration</a> Configuration element
</p>

<p>
If the Variable Names list is provided, then for each row returned by a Select statement, the variables are set up
with the value of the corresponding column (if a variable name is provided), and the count of rows is also set up.
For example, if the Select statement returns 2 rows of 3 columns, and the variable list is <span class="code">A,,C</span>,
then the following variables will be set up:</p>

<pre class="source">
A_#=2 (number of rows)
A_1=column 1, row 1
A_2=column 1, row 2
C_#=2 (number of rows)
C_1=column 3, row 1
C_2=column 3, row 2
</pre>

<p>
If the Select statement returns zero rows, then the <span class="code">A_#</span> and <span class="code">C_#</span> variables would be set to <span class="code">0</span>, and no other variables would be set.
</p>

<p>
Old variables are cleared if necessary - e.g. if the first select retrieves six rows and a second select returns only three rows,
the additional variables for rows four, five and six will be removed.
</p>

<div class="clear"></div>
<div class="note">The latency time is set from the time it took to acquire a connection.</div>
<div class="clear"></div>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/jdbctest/jdbc-request.png"><img src="../images/screenshots/jdbctest/jdbc-request.png" width="710" height="629" alt="Screenshot for Control-Panel of JDBC Request"></a>
<figcaption>Screenshot of Control-Panel of JDBC Request</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="JDBC_Request_parms1">
        Parameters
        <a class="sectionlink" href="#JDBC_Request_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Variable Name of Pool declared in JDBC Connection Configuration</div>
<div class="description req-true">
        Name of the JMeter variable that the connection pool is bound to.
        This must agree with the '<span class="code">Variable Name</span>' field of a <a href="../usermanual/component_reference.html#JDBC_Connection_Configuration">JDBC Connection Configuration</a>.
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Query Type</div>
<div class="description req-true">Set this according to the statement type:
            <ul>
            
<li>Select Statement</li>
            
<li>Update Statement - use this for Inserts and Deletes as well</li>
            
<li>Callable Statement</li>
            
<li>Prepared Select Statement</li>
            
<li>Prepared Update Statement - use this for Inserts and Deletes as well</li>
            
<li>Commit</li>
            
<li>Rollback</li>
            
<li>Autocommit(false)</li>
            
<li>Autocommit(true)</li>
            
<li>Edit - this should be a variable reference that evaluates to one of the above</li>
            
</ul>
        
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">SQL Query</div>
<div class="description req-true">
        SQL query.
        <div class="clear"></div>
<div class="note">Do not enter a trailing semi-colon.</div>
<div class="clear"></div>
        There is generally no need to use <span class="code">{</span> and <span class="code">}</span> to enclose Callable statements;
        however they may be used if the database uses a non-standard syntax.
        <div class="clear"></div>
<div class="note">The JDBC driver automatically converts the statement if necessary when it is enclosed in <span class="code">{}</span>.</div>
<div class="clear"></div>
        For example:
        <ul>
        
<li>
<span class="code">select * from t_customers where id=23</span>
</li>
        
<li>
<span class="code">CALL SYSCS_UTIL.SYSCS_EXPORT_TABLE (null, ?, ?, null, null, null)</span>
        
<ul>
        
<li>Parameter values: <span class="code">tablename</span>,<span class="code">filename</span>
</li>
        
<li>Parameter types:  <span class="code">VARCHAR</span>,<span class="code">VARCHAR</span>
</li>
        
</ul>
        
</li>
        
</ul>
        The second example assumes you are using Apache Derby.
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Parameter values</div>
<div class="description req-true">
        Comma-separated list of parameter values. Use <span class="code">]NULL[</span> to indicate a <span class="code">NULL</span> parameter.
        (If required, the null string can be changed by defining the property "<span class="code">jdbcsampler.nullmarker</span>".)
        <br>
        The list must be enclosed in double-quotes if any of the values contain a comma or double-quote,
        and any embedded double-quotes must be doubled-up, for example:
        <pre class="source">"Dbl-Quote: "" and Comma: ,"</pre>
        
<div class="clear"></div>
<div class="note">There must be as many values as there are placeholders in the statement even if your parameters are <span class="code">OUT</span> ones.
        Be sure to set a value even if the value will not be used (for example in a CallableStatement).</div>
<div class="clear"></div>
        
</div>
<div class="required req-true">Yes, if a prepared or callable statement has parameters</div>
</div>
        
<div class="property">
<div class="name req-true">Parameter types</div>
<div class="description req-true">
        Comma-separated list of SQL parameter types (e.g. <span class="code">INTEGER</span>, <span class="code">DATE</span>, <span class="code">VARCHAR</span>, <span class="code">DOUBLE</span>) or integer values of Constants. Those integer values can be used, when you use custom database types proposed by driver (For example <span class="code">OracleTypes.CURSOR</span> could be represented by its integer value <span class="code">-10</span>).<br>
        These are defined as fields in the class <span class="code">java.sql.Types</span>, see for example:<br>
        
<a href="http://docs.oracle.com/javase/8/docs/api/java/sql/Types.html">Javadoc for java.sql.Types</a>.<br>
        
<div class="clear"></div>
<div class="note">Note: JMeter will use whatever types are defined by the runtime JVM,
        so if you are running on a different JVM, be sure to check the appropriate documentation</div>
<div class="clear"></div>
        
<b>If the callable statement has <span class="code">INOUT</span> or <span class="code">OUT</span> parameters, then these must be indicated by prefixing the
        appropriate parameter types, e.g. instead of "<span class="code">INTEGER</span>", use "<span class="code">INOUT INTEGER</span>".</b> 
<br>
        If not specified, "<span class="code">IN</span>" is assumed, i.e. "<span class="code">DATE</span>" is the same as "<span class="code">IN DATE</span>".
        <br>
        If the type is not one of the fields found in <span class="code">java.sql.Types</span>, JMeter also
        accepts the corresponding integer number, e.g. since <span class="code">OracleTypes.CURSOR == -10</span>, you can use "<span class="code">INOUT -10</span>".
        <br>
        There must be as many types as there are placeholders in the statement.
        </div>
<div class="required req-true">Yes, if a prepared or callable statement has parameters</div>
</div>
        
<div class="property">
<div class="name req-false">Variable Names</div>
<div class="description req-false">Comma-separated list of variable names to hold values returned by Select statements, Prepared Select Statements or CallableStatement. 
        Note that when used with CallableStatement, list of variables must be in the same sequence as the <span class="code">OUT</span> parameters returned by the call.
        If there are less variable names than <span class="code">OUT</span> parameters only as many results shall be stored in the thread-context variables as variable names were supplied.
        If more variable names than <span class="code">OUT</span> parameters exist, the additional variables will be ignored</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Result Variable Name</div>
<div class="description req-false">
        If specified, this will create an Object variable containing a list of row maps.
        Each map contains the column name as the key and the column data as the value. Usage:<br>
        
<pre class="source">columnValue = vars.getObject("resultObject").get(0).get("Column Name");</pre>
        
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Query timeout(s)</div>
<div class="description req-false">Set a timeout in seconds for query, empty value means 0 which is infinite. <span class="code">-1</span> means don't set any query timeout
which might be needed for use case or when certain drivers don't support timeout. Defaults to 0.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Limit ResultSet</div>
<div class="description req-false">Limits the number of rows to iterate through the ResultSet. Empty value means <span class="code">-1</span>, e.g. no limitation, which is also the default. This can help to reduce the amount of data to be fetched from the database via the JDBC driver, but affects all possible options of <span class="code">Handle ResultSet</span> respectively &ndash; e.g. incomplete ResultSet and a record count &le; the limit.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Handle ResultSet</div>
<div class="description req-false">Defines how ResultSet returned from callable statements be handled:
            <ul>
                
<li>
<span class="code">Store As String</span> (default) - All variables on Variable Names list are stored as strings, will not iterate through a <span class="code">ResultSet</span> when present on the list. <span class="code">CLOB</span>s will be converted to Strings. <span class="code">BLOB</span>s will be converted to Strings as if they were an UTF-8 encoded byte-array. Both <span class="code">CLOB</span>s and <span class="code">BLOB</span>s will be cut off after <span class="code">jdbcsampler.max_retain_result_size</span> bytes.</li>
                
<li>
<span class="code">Store As Object</span> - Variables of <span class="code">ResultSet</span> type on Variables Names list will be stored as Object and can be accessed in subsequent tests/scripts and iterated, will not iterate through the <span class="code">ResultSet</span>. <span class="code">CLOB</span>s will be handled as if <span class="code">Store As String</span> was selected. <span class="code">BLOBs</span> will be stored as a byte array. Both <span class="code">CLOB</span>s and <span class="code">BLOB</span>s will be cut off after <span class="code">jdbcsampler.max_retain_result_size</span> bytes.</li>
                
<li>
<span class="code">Count Records</span> - Variables of <span class="code">ResultSet</span> types will be iterated through showing the count of records as result. Variables will be stored as Strings. For <span class="code">BLOB</span>s the size of the object will be stored.</li>
            
</ul>
        
</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="links">
<div class="title">See also:</div>
<ul class="links">
<li>
<a href="build-db-test-plan.html">Building a Database Test Plan</a>
</li>
<li>
<a href="../usermanual/component_reference.html#JDBC_Connection_Configuration">JDBC Connection Configuration</a>
</li>
</ul>
</div>
<div class="clear"></div>
<div class="note">Current Versions of JMeter use UTF-8 as the character encoding. Previously the platform default was used.</div>
<div class="clear"></div>
<div class="clear"></div>
<div class="note">Ensure Variable Name is unique across Test Plan.</div>
<div class="clear"></div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Java_Request">Java Request<a class="sectionlink" href="#Java_Request" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>This sampler lets you control a java class that implements the
<span class="code">org.apache.jmeter.protocol.java.sampler.JavaSamplerClient</span> interface.
By writing your own implementation of this interface,
you can use JMeter to harness multiple threads, input parameter control, and
data collection.</p>

<p>The pull-down menu provides the list of all such implementations found by
JMeter in its classpath.  The parameters can then be specified in the
table below - as defined by your implementation.  Two simple examples (<span class="code">JavaTest</span> and <span class="code">SleepTest</span>) are provided.
</p>

<p>
The <span class="code">JavaTest</span> example sampler can be useful for checking test plans, because it allows one to set
values in almost all the fields. These can then be used by Assertions, etc.
The fields allow variables to be used, so the values of these can readily be seen.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/java_request.png"><img src="../images/screenshots/java_request.png" width="628" height="365" alt="Screenshot for Control-Panel of Java Request"></a>
<figcaption>Screenshot of Control-Panel of Java Request</figcaption>
</figure>
</div>
<div class="clear"></div>
<div class="note">If the method <span class="code">teardownTest</span> is not overridden by a subclass of <span class="code"><a href="../api/org/apache/jmeter/protocol/java/sampler/AbstractJavaSamplerClient.html">AbstractJavaSamplerClient</a></span>, its <span class="code">teardownTest</span> method will not be called.
This reduces JMeter memory requirements.
This will not have any impact on existing Test plans.
</div>
<div class="clear"></div>
<div class="clear"></div>
<div class="note">The Add/Delete buttons don't serve any purpose at present.</div>
<div class="clear"></div>
<div class="properties">
<h3 id="Java_Request_parms1">
        Parameters
        <a class="sectionlink" href="#Java_Request_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler
         that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Classname</div>
<div class="description req-true">The specific implementation of
        the JavaSamplerClient interface to be sampled.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Send Parameters with Request</div>
<div class="description req-false">A list of
        arguments that will be passed to the sampled class.  All arguments
        are sent as Strings. See below for specific settings.</div>
<div class="required req-false">No</div>
</div>
    
</div>
<p>The following parameters apply to the <span class="code">SleepTest</span> and <span class="code">JavaTest</span> implementations:</p>
<div class="properties">
<h3 id="Java_Request_parms2">
        Parameters
        <a class="sectionlink" href="#Java_Request_parms2" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Sleep_time</div>
<div class="description req-true">How long to sleep for (ms)</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Sleep_mask</div>
<div class="description req-true">How much "randomness" to add:<br>
            The sleep time is calculated as follows:
            <pre class="source">totalSleepTime = SleepTime + (System.currentTimeMillis() % SleepMask)</pre>
        
</div>
<div class="required req-true">Yes</div>
</div>
    
</div>
<p>The following parameters apply additionally to the <span class="code">JavaTest</span> implementation:</p>
<div class="properties">
<h3 id="Java_Request_parms3">
        Parameters
        <a class="sectionlink" href="#Java_Request_parms3" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Label</div>
<div class="description req-false">The label to use. If provided, overrides <span class="code">Name</span>
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">ResponseCode</div>
<div class="description req-false">If provided, sets the SampleResult ResponseCode.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">ResponseMessage</div>
<div class="description req-false">If provided, sets the SampleResult ResponseMessage.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Status</div>
<div class="description req-false">If provided, sets the SampleResult Status. If this equals "<span class="code">OK</span>" (ignoring case) then the status is set to success, otherwise the sample is marked as failed.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">SamplerData</div>
<div class="description req-false">If provided, sets the SampleResult SamplerData.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">ResultData</div>
<div class="description req-false">If provided, sets the SampleResult ResultData.</div>
<div class="required req-false">No</div>
</div>
    
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>

<div class="component">
<h2 id="LDAP_Request">LDAP Request<a class="sectionlink" href="#LDAP_Request" title="Link to here">&para;</a>
</h2>
<div class="description">This Sampler lets you send a different LDAP request(<span class="code">Add</span>, <span class="code">Modify</span>, <span class="code">Delete</span> and <span class="code">Search</span>) to an LDAP server.
    <p>If you are going to send multiple requests to the same LDAP server, consider
      using an <a href="../usermanual/component_reference.html#LDAP_Request_Defaults">LDAP Request Defaults</a>
      Configuration Element so you do not have to enter the same information for each
      LDAP Request.</p> The same way the <a href="../usermanual/component_reference.html#Login_Config_Element">Login Config Element</a> also using for Login and password.
  </div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/ldap_request.png"><img src="../images/screenshots/ldap_request.png" width="621" height="462" alt="Screenshot for Control-Panel of LDAP Request"></a>
<figcaption>Screenshot of Control-Panel of LDAP Request</figcaption>
</figure>
</div>
<p>There are two ways to create test cases for testing an LDAP Server.</p>
<ol>
    
<li>Inbuilt Test cases.</li>
    
<li>User defined Test cases.</li>
  
</ol>
<p>There are four test scenarios of testing LDAP. The tests are given below:</p>
<ol>
    
<li>Add Test
      <ol>
        
<li>Inbuilt test:
          <p>This will add a pre-defined entry in the LDAP Server and calculate
          the execution time. After execution of the test, the created entry will be
          deleted from the LDAP
          Server.</p>
        
</li>
        
<li>User defined test:
          <p>This will add the entry in the LDAP Server. User has to enter all the
          attributes in the table.The entries are collected from the table to add. The
          execution time is calculated. The created entry will not be deleted after the
          test.</p>
        
</li>
      
</ol>
    
</li>
    
<li>Modify Test
      <ol>
        
<li>Inbuilt test:
          <p>This will create a pre-defined entry first, then will modify the
          created entry in the LDAP Server.And calculate the execution time. After
          execution
          of the test, the created entry will be deleted from the LDAP Server.</p>
        
</li>
        
<li>User defined test:
          <p>This will modify the entry in the LDAP Server. User has to enter all the
          attributes in the table. The entries are collected from the table to modify.
          The execution time is calculated. The entry will not be deleted from the LDAP
          Server.</p>
        
</li>
      
</ol>
    
</li>
    
<li>Search Test
      <ol>
        
<li>Inbuilt test:
          <p>This will create the entry first, then will search if the attributes
          are available. It calculates the execution time of the search query. At the
          end of  the execution,created entry will be deleted from the LDAP Server.</p>
        
</li>
        
<li>User defined test:
          <p>This will search the user defined entry(Search filter) in the Search
          base (again, defined by the user). The entries should be available in the LDAP
          Server. The execution time is  calculated.</p>
        
</li>
      
</ol>
    
</li>
    
<li>Delete Test
      <ol>
        
<li>Inbuilt test:
          <p>This will create a pre-defined entry first, then it will be deleted
          from the LDAP Server. The execution time is calculated.</p>
        
</li>
        
<li>User defined test:
          <p>This will delete the user-defined entry in the LDAP Server. The entries
          should be available in the LDAP Server. The execution time is calculated.</p>
        
</li>
      
</ol>
    
</li>
  
</ol>
<div class="properties">
<h3 id="LDAP_Request_parms1">
        Parameters
        <a class="sectionlink" href="#LDAP_Request_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Server Name or IP</div>
<div class="description req-true">Domain name or IP address of the LDAP server.
      JMeter assumes the LDAP server is listening on the default port (<span class="code">389</span>).</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Port</div>
<div class="description req-true">Port to connect to (default is <span class="code">389</span>).</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">root DN</div>
<div class="description req-true">Base DN to use for LDAP operations</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Username</div>
<div class="description req-false">LDAP server username.</div>
<div class="required req-false">Usually</div>
</div>
    
<div class="property">
<div class="name req-false">Password</div>
<div class="description req-false">LDAP server password. (N.B. this is stored unencrypted in the test plan)</div>
<div class="required req-false">Usually</div>
</div>
    
<div class="property">
<div class="name req-true">Entry DN</div>
<div class="description req-true">the name of the context to create or Modify; may not be empty.
     <div class="clear"></div>
<div class="note">You have to set the right attributes of the object yourself. So if you want to add <span class="code">cn=apache,ou=test</span>
      you have to add in the table <span class="code">name</span> and <span class="code">value</span> to <span class="code">cn</span> and <span class="code">apache</span>.
     </div>
<div class="clear"></div>
    
</div>
<div class="required req-true">Yes, if User Defined Test and Add Test or Modify Test is selected</div>
</div>
    
<div class="property">
<div class="name req-true">Delete</div>
<div class="description req-true">the name of the context to Delete; may not be empty</div>
<div class="required req-true">Yes, if User Defined Test and Delete Test is selected</div>
</div>
    
<div class="property">
<div class="name req-true">Search base</div>
<div class="description req-true">the name of the context or object to search</div>
<div class="required req-true">Yes, if User Defined Test and Search Test is selected</div>
</div>
    
<div class="property">
<div class="name req-true">Search filter</div>
<div class="description req-true"> the filter expression to use for the search; may not be null</div>
<div class="required req-true">Yes, if User Defined Test and Search Test is selected</div>
</div>
    
<div class="property">
<div class="name req-true">add test</div>
<div class="description req-true">Use these <span class="code">name</span>, <span class="code">value</span> pairs for creation of the new object in the given context</div>
<div class="required req-true">Yes, if User Defined Test and add Test is selected</div>
</div>
    
<div class="property">
<div class="name req-true">modify test</div>
<div class="description req-true">Use these <span class="code">name</span>, <span class="code">value</span> pairs for modification of the given context object</div>
<div class="required req-true">Yes, if User Defined Test and Modify Test is selected</div>
</div>
  
</div>
<div class="links">
<div class="title">See also:</div>
<ul class="links">
<li>
<a href="build-ldap-test-plan.html">Building an LDAP Test Plan</a>
</li>
<li>
<a href="../usermanual/component_reference.html#LDAP_Request_Defaults">LDAP Request Defaults</a>
</li>
</ul>
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="LDAP_Extended_Request">LDAP Extended Request<a class="sectionlink" href="#LDAP_Extended_Request" title="Link to here">&para;</a>
</h2>
<div class="description">This Sampler can send all 8 different LDAP requests to an LDAP server. It is an extended version of the LDAP sampler,
  therefore it is harder to configure, but can be made much closer resembling a real LDAP session.
    <p>If you are going to send multiple requests to the same LDAP server, consider
      using an <a href="../usermanual/component_reference.html#LDAP_Extended_Request_Defaults">LDAP Extended Request Defaults</a>
      Configuration Element so you do not have to enter the same information for each
      LDAP Request.</p> 
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/ldapext_request.png"><img src="../images/screenshots/ldapext_request.png" width="619" height="371" alt="Screenshot for Control-Panel of LDAP Extended Request"></a>
<figcaption>Screenshot of Control-Panel of LDAP Extended Request</figcaption>
</figure>
</div>
<p>There are nine test operations defined. These operations are given below:</p>
<dl>
      
<dt>
<b>Thread bind</b>
</dt>
      
<dd>
        
<p>Any LDAP request is part of an LDAP session, so the first thing that should be done is starting a session to the LDAP server.
        For starting this session a thread bind is used, which is equal to the LDAP "<span class="code">bind</span>" operation.
        The user is requested to give a <span class="code">username</span> (Distinguished name) and <span class="code">password</span>,
        which will be used to initiate a session.
        When no password, or the wrong password is specified, an anonymous session is started. Take care,
        omitting the password will not fail this test, a wrong password will.
        (N.B. this is stored unencrypted in the test plan)</p>
        
<div class="properties">
<h3>
        Parameters
        </h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
          
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
          
<div class="property">
<div class="name req-true">Servername</div>
<div class="description req-true">The name (or IP-address) of the LDAP server.</div>
<div class="required req-true">Yes</div>
</div>
          
<div class="property">
<div class="name req-false">Port</div>
<div class="description req-false">The port number that the LDAP server is listening to. If this is omitted
            JMeter assumes the LDAP server is listening on the default port(389).</div>
<div class="required req-false">No</div>
</div>
          
<div class="property">
<div class="name req-false">DN</div>
<div class="description req-false">The distinguished name of the base object that will be used for any subsequent operation.
            It can be used as a starting point for all operations. You cannot start any operation on a higher level than this DN!</div>
<div class="required req-false">No</div>
</div>
          
<div class="property">
<div class="name req-false">Username</div>
<div class="description req-false">Full distinguished name of the user as which you want to bind.</div>
<div class="required req-false">No</div>
</div>
          
<div class="property">
<div class="name req-false">Password</div>
<div class="description req-false">Password for the above user. If omitted it will result in an anonymous bind.
            If it is incorrect, the sampler will return an error and revert to an anonymous bind. (N.B. this is stored unencrypted in the test plan)</div>
<div class="required req-false">No</div>
</div>
          
<div class="property">
<div class="name req-false">Connection timeout (in milliseconds)</div>
<div class="description req-false">Timeout for connection, if exceeded connection will be aborted</div>
<div class="required req-false">No</div>
</div>
          
<div class="property">
<div class="name req-false">Use Secure LDAP Protocol</div>
<div class="description req-false">Use <span class="code">ldaps://</span> scheme instead of <span class="code">ldap://</span>
</div>
<div class="required req-false">No</div>
</div>
          
<div class="property">
<div class="name req-false">Trust All Certificates</div>
<div class="description req-false">Trust all certificates, only used if <span class="code">Use Secure LDAP Protocol</span> is checked</div>
<div class="required req-false">No</div>
</div>
        
</div>
      
</dd>
      
<dt>
<b>Thread unbind</b>
</dt>
      
<dd>
        
<p>This is simply the operation to end a session.
        It is equal to the LDAP "<span class="code">unbind</span>" operation.</p>
        
<div class="properties">
<h3>
        Parameters
        </h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
          
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
</div>
      
</dd>
      
<dt>
<b>Single bind/unbind</b>
</dt>
      
<dd>
        
<p> This is a combination of the LDAP "<span class="code">bind</span>" and "<span class="code">unbind</span>" operations.
        It can be used for an authentication request/password check for any user. It will open a new session, just to
        check the validity of the user/password combination, and end the session again.</p>
        
<div class="properties">
<h3>
        Parameters
        </h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
          
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
          
<div class="property">
<div class="name req-true">Username</div>
<div class="description req-true">Full distinguished name of the user as which you want to bind.</div>
<div class="required req-true">Yes</div>
</div>
          
<div class="property">
<div class="name req-false">Password</div>
<div class="description req-false">Password for the above user. If omitted it will result in an anonymous bind.
            If it is incorrect, the sampler will return an error. (N.B. this is stored unencrypted in the test plan)</div>
<div class="required req-false">No</div>
</div>
        
</div>
      
</dd>
      
<dt>
<b>Rename entry</b>
</dt>
      
<dd>
       
<p>This is the LDAP "<span class="code">moddn</span>" operation. It can be used to rename an entry, but
       also for moving an entry or a complete subtree to a different place in
       the LDAP tree.</p>
       
<div class="properties">
<h3>
        Parameters
        </h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
         
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
         
<div class="property">
<div class="name req-true">Old entry name</div>
<div class="description req-true">The current distinguished name of the object you want to rename or move,
           relative to the given DN in the thread bind operation.</div>
<div class="required req-true">Yes</div>
</div>
         
<div class="property">
<div class="name req-true">New distinguished name</div>
<div class="description req-true">The new distinguished name of the object you want to rename or move,
           relative to the given DN in the thread bind operation.</div>
<div class="required req-true">Yes</div>
</div>
       
</div>
     
</dd>
     
<dt>
<b>Add test</b>
</dt>
     
<dd>
       
<p>This is the LDAP "<span class="code">add</span>" operation. It can be used to add any kind of
       object to the LDAP server.</p>
       
<div class="properties">
<h3>
        Parameters
        </h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
         
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
         
<div class="property">
<div class="name req-true">Entry DN</div>
<div class="description req-true">Distinguished name of the object you want to add, relative to the given DN in the thread bind operation.</div>
<div class="required req-true">Yes</div>
</div>
         
<div class="property">
<div class="name req-true">Add test</div>
<div class="description req-true">A list of attributes and their values you want to use for the object.
           If you need to add a multiple value attribute, you need to add the same attribute with their respective
           values several times to the list.</div>
<div class="required req-true">Yes</div>
</div>
       
</div>
     
</dd>
     
<dt>
<b>Delete test</b>
</dt>
     
<dd>
       
<p> This is the LDAP "<span class="code">delete</span>" operation, it can be used to delete an
       object from the LDAP tree</p>
       
<div class="properties">
<h3>
        Parameters
        </h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
         
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
         
<div class="property">
<div class="name req-true">Delete</div>
<div class="description req-true">Distinguished name of the object you want to delete, relative to the given DN in the thread bind operation.</div>
<div class="required req-true">Yes</div>
</div>
       
</div>
     
</dd>
     
<dt>
<b>Search test</b>
</dt>
     
<dd>
       
<p>This is the LDAP "<span class="code">search</span>" operation, and will be used for defining searches.</p>
       
<div class="properties">
<h3>
        Parameters
        </h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
         
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
         
<div class="property">
<div class="name req-false">Search base</div>
<div class="description req-false">Distinguished name of the subtree you want your
           search to look in, relative to the given DN in the thread bind operation.</div>
<div class="required req-false">No</div>
</div>
         
<div class="property">
<div class="name req-true">Search Filter</div>
<div class="description req-true">searchfilter, must be specified in LDAP syntax.</div>
<div class="required req-true">Yes</div>
</div>
         
<div class="property">
<div class="name req-false">Scope</div>
<div class="description req-false">Use <span class="code">0</span> for baseobject-, <span class="code">1</span> for onelevel- and <span class="code">2</span> for a subtree search. (Default=<span class="code">0</span>)</div>
<div class="required req-false">No</div>
</div>
         
<div class="property">
<div class="name req-false">Size Limit</div>
<div class="description req-false">Specify the maximum number of results you want back from the server. (default=<span class="code">0</span>, which means no limit.) When the sampler hits the maximum number of results, it will fail with errorcode <span class="code">4</span>
</div>
<div class="required req-false">No</div>
</div>
         
<div class="property">
<div class="name req-false">Time Limit</div>
<div class="description req-false">Specify the maximum amount of (cpu)time (in milliseconds) that the server can spend on your search. Take care, this does not say anything about the response time. (default is <span class="code">0</span>, which means no limit)</div>
<div class="required req-false">No</div>
</div>
         
<div class="property">
<div class="name req-false">Attributes</div>
<div class="description req-false">Specify the attributes you want to have returned, separated by a semicolon. An empty field will return all attributes</div>
<div class="required req-false">No</div>
</div>
         
<div class="property">
<div class="name req-false">Return object</div>
<div class="description req-false">Whether the object will be returned (<span class="code">true</span>) or not (<span class="code">false</span>). Default=<span class="code">false</span>
</div>
<div class="required req-false">No</div>
</div>
         
<div class="property">
<div class="name req-false">Dereference aliases</div>
<div class="description req-false">If <span class="code">true</span>, it will dereference aliases, if <span class="code">false</span>, it will not follow them (default=<span class="code">false</span>)</div>
<div class="required req-false">No</div>
</div>
         
<div class="property">
<div class="name req-false">Parse the search results?</div>
<div class="description req-false">If <span class="code">true</span>, the search results will be added to the response data. If <span class="code">false</span>, a marker - whether results where found or not - will be added to the response data.</div>
<div class="required req-false">No</div>
</div>
       
</div>
     
</dd>
     
<dt>
<b>Modification test</b>
</dt>
     
<dd>
       
<p>This is the LDAP "<span class="code">modify</span>" operation. It can be used to modify an object. It
       can be used to add, delete or replace values of an attribute. </p>
       
<div class="properties">
<h3>
        Parameters
        </h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
         
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
         
<div class="property">
<div class="name req-true">Entry name</div>
<div class="description req-true">Distinguished name of the object you want to modify, relative 
           to the given DN in the thread bind operation</div>
<div class="required req-true">Yes</div>
</div>
         
<div class="property">
<div class="name req-true">Modification test</div>
<div class="description req-true">The attribute-value-opCode triples. <br>
            The <span class="code">opCode</span> can be any valid LDAP operationCode (<span class="code">add</span>, <span class="code">delete</span>, <span class="code">remove</span> or <span class="code">replace</span>).<br>
           If you don't specify a value with a <span class="code">delete</span> operation, all values of the given attribute will be deleted. <br>
           If you do specify a value in a <span class="code">delete</span> operation, only the given value will be deleted. <br>
           If this value is non-existent, the sampler will fail the test.</div>
<div class="required req-true">Yes</div>
</div>
       
</div>
     
</dd>
     
<dt>
<b>Compare</b>
</dt>
     
<dd>
       
<p>This is the LDAP "<span class="code">compare</span>" operation. It can be used to compare the value
       of a given attribute with some already known value. In reality this is mostly
       used to check whether a given person is a member of some group. In such a case
       you can compare the DN of the user as a given value, with the values in the
       attribute "<span class="code">member</span>" of an object of the type <span class="code">groupOfNames</span>.
       If the compare operation fails, this test fails with errorcode <span class="code">49</span>.</p>
       
<div class="properties">
<h3>
        Parameters
        </h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
         
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
         
<div class="property">
<div class="name req-true">Entry DN</div>
<div class="description req-true">The current distinguished name of the object of
           which you want  to compare an attribute, relative to the given DN in the thread bind operation.</div>
<div class="required req-true">Yes</div>
</div>
         
<div class="property">
<div class="name req-true">Compare filter</div>
<div class="description req-true">In the form "<span class="code">attribute=value</span>"</div>
<div class="required req-true">Yes</div>
</div>
       
</div>
     
</dd>
   
</dl>
<div class="links">
<div class="title">See also:</div>
<ul class="links">
<li>
<a href="build-ldapext-test-plan.html">Building an LDAP Test Plan</a>
</li>
<li>
<a href="../usermanual/component_reference.html#LDAP_Extended_Request_Defaults">LDAP Extended Request Defaults</a>
</li>
</ul>
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>





<div class="component">
<h2 id="Access_Log_Sampler">Access Log Sampler<a class="sectionlink" href="#Access_Log_Sampler" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>AccessLogSampler was designed to read access logs and generate http requests.
For those not familiar with the access log, it is the log the webserver maintains of every
request it accepted. This means every image, CSS file, JavaScript file, html file, &hellip;</p>

<p>Tomcat uses the common format for access logs. This means any webserver that uses the
common log format can use the AccessLogSampler. Server that use common log format include:
Tomcat, Resin, Weblogic, and SunOne. Common log format looks
like this:</p>

<pre class="source">127.0.0.1 - - [21/Oct/2003:05:37:21 -0500] "GET /index.jsp?%2Findex.jsp= HTTP/1.1" 200 8343</pre>

<div class="clear"></div>
<div class="note">The current implementation of the parser only looks at the text within the quotes that contains one of the HTTP protocol methods (<span class="code">GET</span>, <span class="code">PUT</span>, <span class="code">POST</span>, <span class="code">DELETE</span>, &hellip;).
Everything else is stripped out and ignored. For example, the response code is completely
ignored by the parser. </div>
<div class="clear"></div>

<p>For the future, it might be nice to filter out entries that
do not have a response code of <span class="code">200</span>. Extending the sampler should be fairly simple. There
are two interfaces you have to implement:</p>

<ul>

<li>
<span class="code">org.apache.jmeter.protocol.http.util.accesslog.LogParser</span>
</li>

<li>
<span class="code">org.apache.jmeter.protocol.http.util.accesslog.Generator</span>
</li>

</ul>

<p>The current implementation of AccessLogSampler uses the generator to create a new
HTTPSampler. The servername, port and get images are set by AccessLogSampler. Next,
the parser is called with integer <span class="code">1</span>, telling it to parse one entry. After that,
<span class="code">HTTPSampler.sample()</span> is called to make the request.</p>

<pre class="source">
samp = (HTTPSampler) GENERATOR.generateRequest();
samp.setDomain(this.getDomain());
samp.setPort(this.getPort());
samp.setImageParser(this.isImageParser());
PARSER.parse(1);
res = samp.sample();
res.setSampleLabel(samp.toString());
</pre>
The required methods in <span class="code">LogParser</span> are:
<ul>

<li>
<span class="code">setGenerator(Generator)</span>
</li>

<li>
<span class="code">parse(int)</span>
</li> 

</ul>

<p>
Classes implementing <span class="code">Generator</span> interface should provide concrete implementation
for all the methods. For an example of how to implement either interface, refer to
<span class="code">StandardGenerator</span> and <span class="code">TCLogParser</span>.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/accesslogsampler.png"><img src="../images/screenshots/accesslogsampler.png" width="702" height="305" alt="Screenshot for Control-Panel of Access Log Sampler"></a>
<figcaption>Screenshot of Control-Panel of Access Log Sampler</figcaption>
</figure>
</div>
<center>
<h2>(Beta Code)</h2>
</center>
<div class="properties">
<h3 id="Access_Log_Sampler_parms1">
        Parameters
        <a class="sectionlink" href="#Access_Log_Sampler_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Server</div>
<div class="description req-true">Domain name or IP address of the web server.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Protocol</div>
<div class="description req-false">Scheme</div>
<div class="required req-false">No (defaults to http</div>
</div>
        
<div class="property">
<div class="name req-false">Port</div>
<div class="description req-false">Port the web server is listening to.</div>
<div class="required req-false">No (defaults to 80)</div>
</div>
        
<div class="property">
<div class="name req-true">Log parser class</div>
<div class="description req-true">The log parser class is responsible for parsing the logs.</div>
<div class="required req-true">Yes (default provided)</div>
</div>
        
<div class="property">
<div class="name req-false">Filter</div>
<div class="description req-false">The filter class is used to filter out certain lines.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Location of log file</div>
<div class="description req-true">The location of the access log file.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<p>
The <span class="code">TCLogParser</span> processes the access log independently for each thread.
The <span class="code">SharedTCLogParser</span> and <span class="code">OrderPreservingLogParser</span> share access to the file, 
i.e. each thread gets the next entry in the log.
</p>
<p>
The <span class="code">SessionFilter</span> is intended to handle Cookies across threads. 
It does not filter out any entries, but modifies the cookie manager so that the cookies for a given IP are
processed by a single thread at a time. If two threads try to process samples from the same client IP address,
then one will be forced to wait until the other has completed.
</p>
<p>
The <span class="code">LogFilter</span> is intended to allow access log entries to be filtered by filename and regex,
as well as allowing for the replacement of file extensions. However, it is not currently possible
to configure this via the GUI, so it cannot really be used.
</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="BeanShell_Sampler">BeanShell Sampler<a class="sectionlink" href="#BeanShell_Sampler" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>This sampler allows you to write a sampler using the BeanShell scripting language.
</p>
<p>

<b>For full details on using BeanShell, please see the <a href="http://www.beanshell.org/">BeanShell website.</a></b>

<div class="clear"></div>
<div class="note">Migration to <a href="../usermanual/component_reference.html#JSR223_Sampler">JSR223 Sampler</a>+Groovy is highly recommended for performance, support of new Java features and limited maintenance of the BeanShell library.</div>
<div class="clear"></div>

</p>

<p>
The test element supports the <span class="code">ThreadListener</span> and <span class="code">TestListener</span> interface methods.
These must be defined in the initialisation file.
See the file <span class="code">BeanShellListeners.bshrc</span> for example definitions.
</p>

<p>
The BeanShell sampler also supports the <span class="code">Interruptible</span> interface.
The <span class="code">interrupt()</span> method can be defined in the script or the init file.
</p>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/beanshellsampler.png"><img src="../images/screenshots/beanshellsampler.png" width="848" height="566" alt="Screenshot for Control-Panel of BeanShell Sampler"></a>
<figcaption>Screenshot of Control-Panel of BeanShell Sampler</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="BeanShell_Sampler_parms1">
        Parameters
        <a class="sectionlink" href="#BeanShell_Sampler_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.
    The name is stored in the script variable Label</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Reset bsh.Interpreter before each call</div>
<div class="description req-true">
    If this option is selected, then the interpreter will be recreated for each sample.
    This may be necessary for some long running scripts. 
    For further information, see <a href="best-practices#bsh_scripting">Best Practices - BeanShell scripting</a>.
    </div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Parameters</div>
<div class="description req-false">Parameters to pass to the BeanShell script.
    This is intended for use with script files; for scripts defined in the GUI, you can use whatever
    variable and function references you need within the script itself.
    The parameters are stored in the following variables:
    <dl>
        
<dt>
<span class="code">Parameters</span>
</dt>
<dd>string containing the parameters as a single variable</dd>
        
<dt>
<span class="code">bsh.args</span>
</dt>
<dd>String array containing parameters, split on white-space</dd>
    
</dl>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Script file</div>
<div class="description req-false">A file containing the BeanShell script to run.
    The file name is stored in the script variable <span class="code">FileName</span>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Script</div>
<div class="description req-true">The BeanShell script to run. 
    The return value (if not <span class="code">null</span>) is stored as the sampler result.</div>
<div class="required req-true">Yes (unless script file is provided)</div>
</div>

</div>
<div class="clear"></div>
<div class="note">
N.B. Each Sampler instance has its own BeanShell interpreter,
and Samplers are only called from a single thread
</div>
<div class="clear"></div>
<p>
If the property "<span class="code">beanshell.sampler.init</span>" is defined, it is passed to the Interpreter
as the name of a sourced file.
This can be used to define common methods and variables. 
There is a sample init file in the bin directory: <span class="code">BeanShellSampler.bshrc</span>.
</p>
<p>
If a script file is supplied, that will be used, otherwise the script will be used.</p>
<div class="clear"></div>
<div class="note">
JMeter processes function and variable references before passing the script field to the interpreter,
so the references will only be resolved once.
Variable and function references in script files will be passed
verbatim to the interpreter, which is likely to cause a syntax error.
In order to use runtime variables, please use the appropriate props methods,
e.g.<span class="code">props.get("START.HMS"); props.put("PROP1","1234");</span>

<br>
BeanShell does not currently support Java 5 syntax such as generics and the enhanced for loop.
</div>
<div class="clear"></div>
<p>Before invoking the script, some variables are set up in the BeanShell interpreter:</p>
<p>The contents of the Parameters field is put into the variable "<span class="code">Parameters</span>".
            The string is also split into separate tokens using a single space as the separator, and the resulting list
            is stored in the String array <span class="code">bsh.args</span>.</p>
<p>The full list of BeanShell variables that is set up is as follows:</p>
<ul>
        
<li>
<span class="code">log</span> - the <a href="https://www.slf4j.org/api/org/slf4j/Logger.html">Logger</a>
</li>
        
<li>
<span class="code">Label</span> - the Sampler label</li>
        
<li>
<span class="code">FileName</span> - the file name, if any</li>
        
<li>
<span class="code">Parameters</span> - text from the Parameters field</li>
        
<li>
<span class="code">bsh.args</span> - the parameters, split as described above</li>
        
<li>
<span class="code">SampleResult</span> - pointer to the current <a href="../api/org/apache/jmeter/samplers/SampleResult.html"><span class="code">SampleResult</span></a>
</li>
            
<li>
<span class="code">ResponseCode</span> defaults to <span class="code">200</span>
</li>
            
<li>
<span class="code">ResponseMessage</span> defaults to "<span class="code">OK</span>"</li>
            
<li>
<span class="code">IsSuccess</span> defaults to <span class="code">true</span>
</li>
            
<li>
<span class="code">ctx</span> - <a href="../api/org/apache/jmeter/threads/JMeterContext.html">JMeterContext</a>
</li>
            
<li>
<span class="code">vars</span> - <a href="../api/org/apache/jmeter/threads/JMeterVariables.html">JMeterVariables</a>  - e.g. 
               <pre class="source">vars.get("VAR1");
vars.put("VAR2","value");
vars.remove("VAR3");
vars.putObject("OBJ1",new Object());</pre>
</li>
            
<li>
<span class="code">props</span> - JMeterProperties (class <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html"><span class="code">java.util.Properties</span></a>) - e.g.
                <pre class="source">props.get("START.HMS");
props.put("PROP1","1234");</pre>
</li>
        
</ul>
<p>When the script completes, control is returned to the Sampler, and it copies the contents
            of the following script variables into the corresponding variables in the <a href="../api/org/apache/jmeter/samplers/SampleResult.html"><span class="code">SampleResult</span></a>:</p>
<ul>
            
<li>
<span class="code">ResponseCode</span> - for example <span class="code">200</span>
</li>
            
<li>
<span class="code">ResponseMessage</span> - for example "<span class="code">OK</span>"</li>
            
<li>
<span class="code">IsSuccess</span> - <span class="code">true</span> or <span class="code">false</span>
</li>
            
</ul>
<p>The SampleResult ResponseData is set from the return value of the script.
            If the script returns null, it can set the response directly, by using the method 
            <span class="code">SampleResult.setResponseData(data)</span>, where data is either a String or a byte array.
            The data type defaults to "<span class="code">text</span>", but can be set to binary by using the method
            <span class="code">SampleResult.setDataType(SampleResult.BINARY)</span>.
            </p>
<p>The <span class="code">SampleResult</span> variable gives the script full access to all the fields and
                methods in the <span class="code">SampleResult</span>. For example, the script has access to the methods
                <span class="code">setStopThread(boolean)</span> and <span class="code">setStopTest(boolean)</span>.

                Here is a simple (not very useful!) example script:</p>
<pre class="source">
if (bsh.args[0].equalsIgnoreCase("StopThread")) {
    log.info("Stop Thread detected!");
    SampleResult.setStopThread(true);
}
return "Data from sample with Label "+Label;
//or
SampleResult.setResponseData("My data");
return null;
</pre>
<p>Another example:<br> ensure that the property <span class="code">beanshell.sampler.init=BeanShellSampler.bshrc</span> is defined in <span class="code">jmeter.properties</span>. 
The following script will show the values of all the variables in the <span class="code">ResponseData</span> field:
</p>
<pre class="source">
return getVariables();
</pre>
<p>
For details on the methods available for the various classes (<a href="../api/org/apache/jmeter/threads/JMeterVariables.html"><span class="code">JMeterVariables</span></a>, <a href="../api/org/apache/jmeter/samplers/SampleResult.html"><span class="code">SampleResult</span></a> etc.) please check the Javadoc or the source code.
Beware however that misuse of any methods can cause subtle faults that may be difficult to find.
</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="JSR223_Sampler">JSR223 Sampler<a class="sectionlink" href="#JSR223_Sampler" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The JSR223 Sampler allows JSR223 script code to be used to perform a sample or some computation required to create/update variables.
<div class="clear"></div>
<div class="note">
If you don't want to generate a <a href="../api/org/apache/jmeter/samplers/SampleResult.html">SampleResult</a> when this sampler is run, call the following method:
<pre class="source">SampleResult.setIgnore();</pre>

</div>
<div class="clear"></div>

</p>

<p>
The JSR223 test elements have a feature (compilation) that can significantly increase performance.
To benefit from this feature:
</p>

<ul>
    
<li>Use Script files instead of inlining them. This will make JMeter compile them if this feature is available on ScriptEngine and cache them.</li>
    
<li>Or Use Script Text and check <span class="code">Cache compiled script if available</span> property.
    <div class="clear"></div>
<div class="note">When using this feature, ensure your script code does not use JMeter variables directly in script code as caching would only cache first replacement. Instead use script parameters.</div>
<div class="clear"></div>
    
<div class="clear"></div>
<div class="note">To benefit from caching and compilation, the language engine used for scripting must implement JSR223 <span class="code"><a href="https://docs.oracle.com/javase/8/docs/api/javax/script/Compilable.html">Compilable</a></span> interface (Groovy is one of these, java, beanshell and javascript are not)</div>
<div class="clear"></div>
    
<div class="clear"></div>
<div class="note">When using Groovy as scripting language and not checking <span class="code">Cache compiled script if available</span> (while caching is recommended), you should set this JVM Property <span class="code">-Dgroovy.use.classvalue=true</span>
        due to a Groovy Memory leak as of version 2.4.6, see:
        <ul>
            
<li>
<a href="https://issues.apache.org/jira/browse/GROOVY-7683">GROOVY-7683</a>
</li>
            
<li>
<a href="https://issues.apache.org/jira/browse/GROOVY-7591">GROOVY-7591</a>
</li>
            
<li>
<a href="https://bugs.openjdk.java.net/browse/JDK-8136353">JDK-8136353</a>
</li>
        
</ul> 
    
</div>
<div class="clear"></div>
    
</li>

</ul>
Cache size is controlled by the following JMeter property (<span class="code">jmeter.properties</span>):
<pre class="source">jsr223.compiled_scripts_cache_size=100</pre>

<div class="clear"></div>
<div class="note">Unlike the <a href="../usermanual/component_reference.html#BeanShell_Sampler">BeanShell Sampler</a>, the interpreter is not saved between invocations.</div>
<div class="clear"></div>

<div class="clear"></div>
<div class="note">
JSR223 Test Elements using Script file or Script text + checked <span class="code">Cache compiled script if available</span> are now compiled if ScriptEngine supports this feature, this enables great performance enhancements.
</div>
<div class="clear"></div>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/jsr223-sampler.png"><img src="../images/screenshots/jsr223-sampler.png" width="861" height="502" alt="Screenshot for Control-Panel of JSR223 Sampler"></a>
<figcaption>Screenshot of Control-Panel of JSR223 Sampler</figcaption>
</figure>
</div>
<div class="clear"></div>
<div class="note">
JMeter processes function and variable references before passing the script field to the interpreter,
so the references will only be resolved once.
Variable and function references in script files will be passed
verbatim to the interpreter, which is likely to cause a syntax error.
In order to use runtime variables, please use the appropriate props methods,
e.g. <pre class="source">props.get("START.HMS");
props.put("PROP1","1234");</pre>

</div>
<div class="clear"></div>
<div class="properties">
<h3 id="JSR223_Sampler_parms1">
        Parameters
        <a class="sectionlink" href="#JSR223_Sampler_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Scripting Language</div>
<div class="description req-true">Name of the JSR223 scripting language to be used.
      <div class="clear"></div>
<div class="note">There are other languages supported than those that appear in the drop-down list.
        Others may be available if the appropriate jar is installed in the JMeter lib directory.<br>
        Notice that some languages such as Velocity may use a different syntax for JSR223 variables,
        e.g. <pre class="source">$log.debug("Hello " + $vars.get("a"));</pre> for Velocity.
      </div>
<div class="clear"></div>
    
</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Script File</div>
<div class="description req-false">Name of a file to be used as a JSR223 script, if a relative file path is used, then it will be relative to directory referenced by "<span class="code">user.dir</span>" System property</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Parameters</div>
<div class="description req-false">List of parameters to be passed to the script file or the script.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Cache compiled script if available</div>
<div class="description req-false">If checked (advised) and the language used supports <span class="code"><a href="https://docs.oracle.com/javase/8/docs/api/javax/script/Compilable.html">Compilable</a></span> interface (Groovy is one of these, java, beanshell and javascript are not), JMeter will compile the Script and cache it using it's MD5 hash as unique cache key</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Script</div>
<div class="description req-true">Script to be passed to JSR223 language</div>
<div class="required req-true">Yes (unless script file is provided)</div>
</div>

</div>
<p>
If a script file is supplied, that will be used, otherwise the script will be used.</p>
<p>
Before invoking the script, some variables are set up.
Note that these are JSR223 variables - i.e. they can be used directly in the script.
</p>
<ul>

<li>
<span class="code">log</span> - the <a href="https://www.slf4j.org/api/org/slf4j/Logger.html">Logger</a>
</li>

<li>
<span class="code">Label</span> - the Sampler label</li>

<li>
<span class="code">FileName</span> - the file name, if any</li>

<li>
<span class="code">Parameters</span> - text from the Parameters field</li>

<li>
<span class="code">args</span> - the parameters, split as described above</li>

<li>
<span class="code">SampleResult</span> - pointer to the current <a href="../api/org/apache/jmeter/samplers/SampleResult.html">SampleResult</a>
</li>

<li>
<span class="code">sampler</span> - (<a href="../api/org/apache/jmeter/samplers/Sampler.html">Sampler</a>) - pointer to current Sampler</li>

<li>
<span class="code">ctx</span> - <a href="../api/org/apache/jmeter/threads/JMeterContext.html">JMeterContext</a>
</li>

<li>
<span class="code">vars</span> - <a href="../api/org/apache/jmeter/threads/JMeterVariables.html">JMeterVariables</a>  - e.g. 
  <pre class="source">vars.get("VAR1");
vars.put("VAR2","value");
vars.remove("VAR3");
vars.putObject("OBJ1",new Object());</pre>
</li>

<li>
<span class="code">props</span> - JMeterProperties  (class <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html"><span class="code">java.util.Properties</span></a>) - e.g. 
  <pre class="source">props.get("START.HMS");
props.put("PROP1","1234");</pre>
</li>

<li>
<span class="code">OUT</span> - System.out - e.g. <span class="code">OUT.println("message")</span>
</li>

</ul>
<p>
The <a href="../api/org/apache/jmeter/samplers/SampleResult.html">SampleResult</a> ResponseData is set from the return value of the script.
If the script returns <span class="code">null</span>, it can set the response directly, by using the method 
<span class="code">SampleResult.setResponseData(data)</span>, where data is either a String or a byte array.
The data type defaults to "<span class="code">text</span>", but can be set to binary by using the method
<span class="code">SampleResult.setDataType(SampleResult.BINARY)</span>.
</p>
<p>
The SampleResult variable gives the script full access to all the fields and
methods in the SampleResult. For example, the script has access to the methods
<span class="code">setStopThread(boolean)</span> and <span class="code">setStopTest(boolean)</span>.
</p>
<p>
Unlike the BeanShell Sampler, the JSR223 Sampler does not set the <span class="code">ResponseCode</span>, <span class="code">ResponseMessage</span> and sample status via script variables.
Currently the only way to changes these is via the <a href="../api/org/apache/jmeter/samplers/SampleResult.html">SampleResult</a> methods:
</p>
<ul>

<li>
<span class="code">SampleResult.setSuccessful(true/false)</span>
</li>

<li>
<span class="code">SampleResult.setResponseCode("code")</span>
</li>

<li>
<span class="code">SampleResult.setResponseMessage("message")</span>
</li>

</ul>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="TCP_Sampler">TCP Sampler<a class="sectionlink" href="#TCP_Sampler" title="Link to here">&para;</a>
</h2>
<div class="description">
        
<p>
        The TCP Sampler opens a TCP/IP connection to the specified server.
        It then sends the text, and waits for a response.
        </p>
<p>
        If "<span class="code">Re-use connection</span>" is selected, connections are shared between Samplers in the same thread,
        provided that the exact same host name string and port are used. 
        Different hosts/port combinations will use different connections, as will different threads. 
        If both of "<span class="code">Re-use connection</span>" and "<span class="code">Close connection</span>" are selected, the socket will be closed after running the sampler. 
        On the next sampler, another socket will be created. You may want to close a socket at the end of each thread loop.
        </p>
<p>
        If an error is detected - or "<span class="code">Re-use connection</span>" is not selected - the socket is closed.
        Another socket will be reopened on the next sample.
        </p>
<p>
        The following properties can be used to control its operation:
        </p>
        
<dl>
            
<dt>
<span class="code">tcp.status.prefix</span>
</dt>
<dd>text that precedes a status number</dd>
            
<dt>
<span class="code">tcp.status.suffix</span>
</dt>
<dd>text that follows a status number</dd>
            
<dt>
<span class="code">tcp.status.properties</span>
</dt>
<dd>name of property file to convert status codes to messages</dd>
            
<dt>
<span class="code">tcp.handler</span>
</dt>
<dd>Name of TCP Handler class (default <span class="code">TCPClientImpl</span>) - only used if not specified on the GUI</dd>
        
</dl>
        The class that handles the connection is defined by the GUI, failing that the property <span class="code">tcp.handler</span>.
        If not found, the class is then searched for in the package <span class="code">org.apache.jmeter.protocol.tcp.sampler</span>.
        <p>
        Users can provide their own implementation.
        The class must extend <span class="code">org.apache.jmeter.protocol.tcp.sampler.TCPClient</span>.
        </p>
        
<p>
        The following implementations are currently provided.
        </p>
        
<ul>
        
<li>
<span class="code">TCPClientImpl</span>
</li>
        
<li>
<span class="code">BinaryTCPClientImpl</span>
</li>
        
<li>
<span class="code">LengthPrefixedBinaryTCPClientImpl</span>
</li>
        
</ul>
        The implementations behave as follows:
        <dl>
        
<dt>
<span class="code">TCPClientImpl</span>
</dt>
        
<dd>
        This implementation is fairly basic.
        When reading the response, it reads until the end of line byte, if this is defined
        by setting the property <span class="code">tcp.eolByte</span>, otherwise until the end of the input stream.
        You can control charset encoding by setting <span class="code">tcp.charset</span>, which will default to Platform default encoding.
        </dd>
        
<dt>
<span class="code">BinaryTCPClientImpl</span>
</dt>
        
<dd>
        This implementation converts the GUI input, which must be a hex-encoded string, into binary,
        and performs the reverse when reading the response.
        When reading the response, it reads until the end of message byte, if this is defined
        by setting the property <span class="code">tcp.BinaryTCPClient.eomByte</span>, otherwise until the end of the input stream.
        </dd>
        
<dt>
<span class="code">LengthPrefixedBinaryTCPClientImpl</span>
</dt>
        
<dd>
        This implementation extends BinaryTCPClientImpl by prefixing the binary message data with a binary length byte.
        The length prefix defaults to 2 bytes.
        This can be changed by setting the property <span class="code">tcp.binarylength.prefix.length</span>.
        </dd>
        
<dt>
<b>Timeout handling</b>
</dt>
        
<dd>
        If the timeout is set, the read will be terminated when this expires. 
        So if you are using an <span class="code">eolByte</span>/<span class="code">eomByte</span>, make sure the timeout is sufficiently long,
        otherwise the read will be terminated early.
        </dd>
        
<dt>
<b>Response handling</b>
</dt>
        
<dd>
        If <span class="code">tcp.status.prefix</span> is defined, then the response message is searched for the text following
        that up to the suffix. If any such text is found, it is used to set the response code.
        The response message is then fetched from the properties file (if provided).
        <div class="example">
<div class="title">Usage of pre- and suffix<a class="sectionlink" href="#tcp-prefix-example" title="Link to here">&para;</a>
</div>
        For example, if the prefix = "<span class="code">[</span>" and the suffix = "<span class="code">]</span>", then the following response:
        <pre class="source">[J28] XI123,23,GBP,CR</pre>
        would have the response code <span class="code">J28</span>.
        </div>
        Response codes in the range "<span class="code">400</span>"-"<span class="code">499</span>" and "<span class="code">500</span>"-"<span class="code">599</span>" are currently regarded as failures;
        all others are successful. [This needs to be made configurable!]
        </dd>
        
</dl>

<div class="clear"></div>
<div class="note">The login name/password are not used by the supplied TCP implementations.</div>
<div class="clear"></div>
        
<br>
        Sockets are disconnected at the end of a test run.
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/tcpsampler.png"><img src="../images/screenshots/tcpsampler.png" width="827" height="521" alt="Screenshot for Control-Panel of TCP Sampler"></a>
<figcaption>Screenshot of Control-Panel of TCP Sampler</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="TCP_Sampler_parms1">
        Parameters
        <a class="sectionlink" href="#TCP_Sampler_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
  
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-false">TCPClient classname</div>
<div class="description req-false">Name of the TCPClient class. Defaults to the property <span class="code">tcp.handler</span>, failing that <span class="code">TCPClientImpl</span>.</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">ServerName or IP</div>
<div class="description req-true">Name or IP of TCP server</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Port Number</div>
<div class="description req-true">Port to be used</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Re-use connection</div>
<div class="description req-true">If selected, the connection is kept open. Otherwise it is closed when the data has been read.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Close connection</div>
<div class="description req-true">If selected, the connection will be closed after running the sampler.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">SO_LINGER</div>
<div class="description req-false">Enable/disable <span class="code">SO_LINGER</span> with the specified linger time in seconds when a socket is created. If you set "<span class="code">SO_LINGER</span>" value as <span class="code">0</span>, you may prevent large numbers of sockets sitting around with a <span class="code">TIME_WAIT</span> status.</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">End of line(EOL) byte value</div>
<div class="description req-false">Byte value for end of line, set this to a value outside the range <span class="code">-128</span> to <span class="code">+127</span> to skip <span class="code">eol</span> checking. You may set this in <span class="code">jmeter.properties</span> file as well with <span class="code">eolByte</span> property. If you set this in TCP Sampler Config and in <span class="code">jmeter.properties</span> file at the same time, the setting value in the TCP Sampler Config will be used.</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Connect Timeout</div>
<div class="description req-false">Connect Timeout (milliseconds, <span class="code">0</span> disables).</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Response Timeout</div>
<div class="description req-false">Response Timeout (milliseconds, <span class="code">0</span> disables).</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Set NoDelay</div>
<div class="description req-true">See <span class="code">java.net.Socket.setTcpNoDelay()</span>.
  If selected, this will disable Nagle's algorithm, otherwise Nagle's algorithm will be used.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Text to Send</div>
<div class="description req-true">Text to be sent</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">Login User</div>
<div class="description req-false">User Name - not used by default implementation</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Password</div>
<div class="description req-false">Password - not used by default implementation (N.B. this is stored unencrypted in the test plan)</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="JMS_Publisher">JMS Publisher<a class="sectionlink" href="#JMS_Publisher" title="Link to here">&para;</a>
</h2>
<div class="description">
        
<p>
        JMS Publisher will publish messages to a given destination (topic/queue). For those not
        familiar with JMS, it is the J2EE specification for messaging. There are
        numerous JMS servers on the market and several open source options.
        </p>
        
<br>

<div class="clear"></div>
<div class="note">JMeter does not include any JMS implementation jar; this must be downloaded from the JMS provider and put in the lib directory</div>
<div class="clear"></div>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/jmspublisher.png"><img src="../images/screenshots/jmspublisher.png" width="854" height="796" alt="Screenshot for Control-Panel of JMS Publisher"></a>
<figcaption>Screenshot of Control-Panel of JMS Publisher</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="JMS_Publisher_parms1">
        Parameters
        <a class="sectionlink" href="#JMS_Publisher_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
  
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">use JNDI properties file</div>
<div class="description req-true">use <span class="code">jndi.properties</span>. 
  Note that the file must be on the classpath - e.g. by updating the <span class="code">user.classpath</span> JMeter property.
  If this option is not selected, JMeter uses the "<span class="code">JNDI Initial Context Factory</span>" and "<span class="code">Provider URL</span>" fields
  to create the connection.
  </div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">JNDI Initial Context Factory</div>
<div class="description req-false">Name of the context factory</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Provider URL</div>
<div class="description req-true">The URL for the JMS provider</div>
<div class="required req-true">Yes, unless using jndi.properties</div>
</div>
  
<div class="property">
<div class="name req-true">Destination</div>
<div class="description req-true">The message destination (topic or queue name)</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Setup</div>
<div class="description req-true">The destination setup type. With <span class="code">At startup</span>, the destination name is static (i.e. always same name during the test), with <span class="code">Each sample</span>, the destination name is dynamic and is evaluate at each sample (i.e. the destination name may be a variable)</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Authentication</div>
<div class="description req-true">Authentication requirement for the JMS provider</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">User</div>
<div class="description req-false">User Name</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Password</div>
<div class="description req-false">Password (N.B. this is stored unencrypted in the test plan)</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Expiration</div>
<div class="description req-false">
      The expiration time (in milliseconds) of the message before it becomes obsolete.
      If you do not specify an expiration time, the default value is <span class="code">0</span> (never expires). 
  </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Priority</div>
<div class="description req-false">
      The priority level of the message. There are ten priority levels from <span class="code">0</span> (lowest) to <span class="code">9</span> (highest). 
      If you do not specify a priority level, the default level is <span class="code">4</span>. 
  </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Reconnect on error codes (regex)</div>
<div class="description req-false">Regular expression for JMSException error codes which force reconnection. If empty no reconnection will be done</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Number of samples to aggregate</div>
<div class="description req-true">Number of samples to aggregate</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Message source</div>
<div class="description req-true">Where to obtain the message:
  <dl>
    
<dt>
<span class="code">From File</span>
</dt>
<dd>means the referenced file will be read and reused by all samples. If file name changes it is reloaded since JMeter 3.0</dd>
    
<dt>
<span class="code">Random File from folder specified below</span>
</dt>
<dd>means a random file will be selected from folder specified below, this folder must contain either files with extension <span class="code">.dat</span> for Bytes Messages, or files with extension <span class="code">.txt</span> or <span class="code">.obj</span> for Object or Text messages</dd>
    
<dt>
<span class="code">Text area</span>
</dt>
<dd>The Message to use either for Text or Object message</dd>
  
</dl>
  
</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Message type</div>
<div class="description req-true">Text, Map, Object message or Bytes Message</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Content encoding</div>
<div class="description req-true">Specify the encoding for reading the message source file:
  <dl> 
    
<dt>
<span class="code">RAW</span>:</dt>
<dd>No variable support from the file and load it with default system charset.</dd>
    
<dt>
<span class="code">DEFAULT</span>:</dt>
<dd>Load file with default system encoding, except for XML which relies on XML prolog. If the file contain variables, they will be processed.</dd>
    
<dt>
<span class="code">Standard charsets</span>:</dt>
<dd>The specified encoding (valid or not) is used for reading the file and processing variables</dd>
  
</dl>
  
</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">Use non-persistent delivery mode?</div>
<div class="description req-false">
      Whether to set <span class="code">DeliveryMode.NON_PERSISTENT</span> (defaults to <span class="code">false</span>)
  </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">JMS Properties</div>
<div class="description req-false">
      The JMS Properties are properties specific for the underlying messaging system.
      You can setup the name, the value and the class (type) of value. Default type is <span class="code">String</span>.
      For example: for WebSphere 5.1 web services you will need to set the JMS Property targetService to test
      webservices through JMS.
  </div>
<div class="required req-false">No</div>
</div>


</div>
<p>
For the MapMessage type, JMeter reads the source as lines of text.
Each line must have 3 fields, delimited by commas.
The fields are:</p>
<ul>

<li>Name of entry</li>

<li>Object class name, e.g. "<span class="code">String</span>" (assumes <span class="code">java.lang</span> package if not specified)</li>

<li>Object string value</li>

</ul>
<span class="code">valueOf(String)</span>
<pre class="source">
name,String,Example
size,Integer,1234
</pre>
<div class="clear"></div>
<div class="note"> 
The Object message is implemented and works as follow:
<ul>

<li>Put the JAR that contains your object and its dependencies in <span class="code">jmeter_home/lib/</span> folder</li>

<li>Serialize your object as XML using XStream</li>

<li>Either put result in a file suffixed with <span class="code">.txt</span> or <span class="code">.obj</span> or put XML content directly in Text Area</li>  

</ul>
Note that if message is in a file, replacement of properties will not occur while it will if you use Text Area.
</div>
<div class="clear"></div>
<p>
The following table shows some values which may be useful when configuring JMS:
</p>
<table>

<tr>


<th>Apache <a href="http://activemq.apache.org/">ActiveMQ</a></th>
<th>Value(s)</th>
<th>Comment</th>

</tr>

<tr>
<td>Context Factory</td><td><span class="code">org.apache.activemq.jndi.ActiveMQInitialContextFactory</span></td><td>.</td>
</tr>

<tr>
<td>Provider URL</td><td><span class="code">vm://localhost</span></td><td></td>
</tr>

<tr>
<td>Provider URL</td><td><span class="code">vm:(broker:(vm://localhost)?persistent=false)</span></td><td>Disable persistence</td>
</tr>

<tr>
<td>Queue Reference</td><td><span class="code">dynamicQueues/QUEUENAME</span></td>
<td><a href="http://activemq.apache.org/jndi-support.html#JNDISupport-Dynamicallycreatingdestinations">Dynamically define</a> the QUEUENAME to JNDI</td>
</tr>

<tr>
<td>Topic Reference</td><td><span class="code">dynamicTopics/TOPICNAME</span></td>
<td><a href="http://activemq.apache.org/jndi-support.html#JNDISupport-Dynamicallycreatingdestinations">Dynamically define</a> the TOPICNAME to JNDI</td>
</tr>

</table>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="JMS_Subscriber">JMS Subscriber<a class="sectionlink" href="#JMS_Subscriber" title="Link to here">&para;</a>
</h2>
<div class="description">
        
<p>
        JMS Subscriber will subscribe to messages in a given destination (topic or queue). For those not
        familiar with JMS, it is the J2EE specification for messaging. There are
        numerous JMS servers on the market and several open source options.
        </p>
        
<br>

<div class="clear"></div>
<div class="note">JMeter does not include any JMS implementation jar; this must be downloaded from the JMS provider and put in the lib directory</div>
<div class="clear"></div>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/jmssubscriber.png"><img src="../images/screenshots/jmssubscriber.png" width="739" height="607" alt="Screenshot for Control-Panel of JMS Subscriber"></a>
<figcaption>Screenshot of Control-Panel of JMS Subscriber</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="JMS_Subscriber_parms1">
        Parameters
        <a class="sectionlink" href="#JMS_Subscriber_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
  
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">use JNDI properties file</div>
<div class="description req-true">use <span class="code">jndi.properties</span>. 
  Note that the file must be on the classpath - e.g. by updating the <span class="code">user.classpath</span> JMeter property.
  If this option is not selected, JMeter uses the "<span class="code">JNDI Initial Context Factory</span>" and "<span class="code">Provider URL</span>" fields
  to create the connection.
  </div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">JNDI Initial Context Factory</div>
<div class="description req-false">Name of the context factory</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Provider URL</div>
<div class="description req-false">The URL for the JMS provider</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Destination</div>
<div class="description req-true">the message destination (topic or queue name)</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">Durable Subscription ID</div>
<div class="description req-false">The ID to use for a durable subscription. On first 
  use the respective queue will automatically be generated by the JMS provider if it does not exist yet.</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Client ID</div>
<div class="description req-false">The Client ID to use when you use a durable subscription. 
  Be sure to add a variable like <span class="code">${__threadNum}</span> when you have more than one Thread.</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">JMS Selector</div>
<div class="description req-false">Message Selector as defined by JMS specification to extract only 
  messages that respect the Selector condition. Syntax uses subpart of SQL 92.</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Setup</div>
<div class="description req-true">The destination setup type. With <span class="code">At startup</span>, the destination name is static (i.e. always same name during the test), with <span class="code">Each sample</span>, the destination name is dynamic and is evaluated at each sample (i.e. the destination name may be a variable)</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Authentication</div>
<div class="description req-true">Authentication requirement for the JMS provider</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">User</div>
<div class="description req-false">User Name</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Password</div>
<div class="description req-false">Password (N.B. this is stored unencrypted in the test plan)</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Number of samples to aggregate</div>
<div class="description req-true">number of samples to aggregate</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Save response</div>
<div class="description req-true">should the sampler store the response. If not, only the response length is returned.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Timeout</div>
<div class="description req-true">Specify the timeout to be applied, in milliseconds. <span class="code">0</span>=none. 
  This is the overall aggregate timeout, not per sample.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Client</div>
<div class="description req-true">Which client implementation to use.
  Both of them create connections which can read messages. However they use a different strategy, as described below:
  <dl>
  
<dt>
<span class="code">MessageConsumer.receive()</span>
</dt>
<dd>calls <span class="code">receive()</span> for every requested message. 
  Retains the connection between samples, but does not fetch messages unless the sampler is active.
  This is best suited to Queue subscriptions. 
  </dd>
  
<dt>
<span class="code">MessageListener.onMessage()</span>
</dt>
<dd>establishes a Listener that stores all incoming messages on a queue. 
  The listener remains active after the sampler completes.
  This is best suited to Topic subscriptions.</dd>
  
</dl>
  
</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Stop between samples?</div>
<div class="description req-true">
  If selected, then JMeter calls <span class="code">Connection.stop()</span> at the end of each sample (and calls <span class="code">start()</span> before each sample).
  This may be useful in some cases where multiple samples/threads have connections to the same queue.
  If not selected, JMeter calls <span class="code">Connection.start()</span> at the start of the thread, and does not call <span class="code">stop()</span> until the end of the thread.
  </div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">Separator</div>
<div class="description req-false">
  Separator used to separate messages when there is more than one (related to setting Number of samples to aggregate).
  Note that <span class="code">\n</span>, <span class="code">\r</span>, <span class="code">\t</span> are accepted.
  </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Reconnect on error codes (regex)</div>
<div class="description req-false">Regular expression for JMSException error codes which force reconnection. If empty no reconnection will be done</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Pause between errors (ms)</div>
<div class="description req-false">Pause in milliseconds that Subscriber will make when an error occurs</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="JMS_Point-to-Point">JMS Point-to-Point<a class="sectionlink" href="#JMS_Point-to-Point" title="Link to here">&para;</a>
</h2>
<div class="description">
        
<p>
        This sampler sends and optionally receives JMS Messages through point-to-point connections (queues).
        It is different from pub/sub messages and is generally used for handling transactions.
        </p>
        
<p>
        
<span class="code">request_only</span> will typically be used to put load on a JMS System.<br>
        
<span class="code">request_reply</span> will be used when you want to test response time of a JMS service that processes messages sent to the Request Queue as this mode will wait for the response on the Reply queue sent by this service.<br>
        
<span class="code">browse</span> returns the current queue depth, i.e. the number of messages on the queue.<br>
        
<span class="code">read</span> reads a message from the queue (if any).<br>
        
<span class="code">clear</span> clears the queue, i.e. remove all messages from the queue.<br>
        
</p>
        
<p>
        JMeter use the properties <span class="code">java.naming.security.[principal|credentials]</span> - if present -
        when creating the Queue Connection. If this behaviour is not desired, set the JMeter property
        <span class="code">JMSSampler.useSecurity.properties=false</span>
        
</p>
        
<br>

<div class="clear"></div>
<div class="note">JMeter does not include any JMS implementation jar; this must be downloaded from the JMS provider and put in the lib directory</div>
<div class="clear"></div>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/jms/JMS_Point-to-Point.png"><img src="../images/screenshots/jms/JMS_Point-to-Point.png" width="882" height="804" alt="Screenshot for Control-Panel of JMS Point-to-Point"></a>
<figcaption>Screenshot of Control-Panel of JMS Point-to-Point</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="JMS_Point-to-Point_parms1">
        Parameters
        <a class="sectionlink" href="#JMS_Point-to-Point_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
  
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">QueueConnection Factory</div>
<div class="description req-true">
    The JNDI name of the queue connection factory to use for connecting to the messaging system.
  </div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">JNDI Name Request queue</div>
<div class="description req-true">
    This is the JNDI name of the queue to which the messages are sent.
  </div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">JNDI Name Reply queue</div>
<div class="description req-false">
    The JNDI name of the receiving queue. If a value is provided here and the communication style is <span class="code">Request Response</span>
    this queue will be monitored for responses to the requests sent.
  </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Number of samples to aggregate</div>
<div class="description req-true">Number of samples to aggregate. Only applicable for Communication style Read.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">JMS Selector</div>
<div class="description req-false">
    Message Selector as defined by JMS specification to extract only 
    messages that respect the Selector condition. Syntax uses subpart of SQL 92.
  </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Communication style</div>
<div class="description req-true">
    The Communication style can be <span class="code">Request Only</span> (also known as Fire and Forget), <span class="code">Request Response</span>,
    <span class="code">Read</span>, <span class="code">Browse</span>, <span class="code">Clear</span>:
    <dl>
    
<dt>
<span class="code">Request Only</span>
</dt>
<dd> will only send messages and will not monitor replies. As such it can be used to put load on a system.</dd>
    
<dt>
<span class="code">Request Response</span>
</dt>
<dd> will send messages and monitor the replies it receives. Behaviour depends on the value of the JNDI Name Reply Queue.
    If JNDI Name Reply Queue has a value, this queue is used to monitor the results. Matching of request and reply is done with
    the message id of the request and the correlation id of the reply. If the JNDI Name Reply Queue is empty, then
    temporary queues will be used for the communication between the requestor and the server.
    This is very different from the fixed reply queue. With temporary queues the sending thread will block until the reply message has been received.
    With <span class="code">Request Response</span> mode, you need to have a Server that listens to messages sent to Request Queue and sends replies to 
    queue referenced by <span class="code">message.getJMSReplyTo()</span>.</dd>
    
<dt>
<span class="code">Read</span>
</dt>
<dd> will read a message from an outgoing queue which has no listeners attached. This can be convenient for testing purposes.
     This method can be used if you need to handle queues without a binding file (in case the jmeter-jms-skip-jndi library is used),
     which only works with the JMS Point-to-Point sampler. In case binding files are used, one can also use the JMS Subscriber Sampler for reading from a queue.</dd>
    
<dt>
<span class="code">Browse</span>
</dt>
<dd> will determine the current queue depth without removing messages from the queue, returning the number of messages on the queue.</dd>
    
<dt>
<span class="code">Clear</span>
</dt>
<dd> will clear the queue, i.e. remove all messages from the queue.</dd>
    
</dl>
  
</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Use alternate fields for message correlation</div>
<div class="description req-true">
    These check-boxes select the fields which will be used for matching the response message with the original request.
    <dl>
    
<dt>
<span class="code">Use Request Message Id</span>
</dt>
<dd>if selected, the request JMSMessageID will be used, 
    otherwise the request JMSCorrelationID will be used. 
    In the latter case the correlation id must be specified in the request.</dd>
    
<dt>
<span class="code">Use Response Message Id</span>
</dt>
<dd>if selected, the response JMSMessageID will be used, 
    otherwise the response JMSCorrelationID will be used.
    </dd>
    
</dl>
    There are two frequently used JMS Correlation patterns:
    <dl>
    
<dt>JMS Correlation ID Pattern</dt>
    
<dd> i.e. match request and response on their correlation Ids
    =&gt; deselect both checkboxes, and provide a correlation id.</dd>
    
<dt>JMS Message ID Pattern</dt>
    
<dd>i.e. match request message id with response correlation id
    =&gt; select "Use Request Message Id" only.
    </dd>
    
</dl>
    In both cases the JMS application is responsible for populating the correlation ID as necessary.
    <div class="clear"></div>
<div class="note">if the same queue is used to send and receive messages, 
    then the response message will be the same as the request message.
    In which case, either provide a correlation id and clear both checkboxes;
    or select both checkboxes to use the message Id for correlation.
    This can be useful for checking raw JMS throughput.</div>
<div class="clear"></div>
  
</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Timeout</div>
<div class="description req-true">
      The timeout in milliseconds for the reply-messages. If a reply has not been received within the specified
      time, the specific testcase fails and the specific reply message received after the timeout is discarded.
      Default value is <span class="code">2000</span> ms. <span class="code">0</span> means no timeout.
  </div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">Expiration</div>
<div class="description req-false">
      The expiration time (in milliseconds) of the message before it becomes obsolete.
      If you do not specify an expiration time, the default value is <span class="code">0</span> (never expires). 
  </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Priority</div>
<div class="description req-false">
      The priority level of the message. There are ten priority levels from <span class="code">0</span> (lowest) to <span class="code">9</span> (highest). 
      If you do not specify a priority level, the default level is <span class="code">4</span>. 
  </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Use non-persistent delivery mode?</div>
<div class="description req-true">
      Whether to set <span class="code">DeliveryMode.NON_PERSISTENT</span>.
  </div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">Content</div>
<div class="description req-false">
      The content of the message.
  </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">JMS Properties</div>
<div class="description req-false">
      The JMS Properties are properties specific for the underlying messaging system.
      You can setup the name, the value and the class (type) of value. Default type is <span class="code">String</span>.
      For example: for WebSphere 5.1 web services you will need to set the JMS Property targetService to test
      webservices through JMS.
  </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Initial Context Factory</div>
<div class="description req-false">
    The Initial Context Factory is the factory to be used to look up the JMS Resources.
  </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">JNDI properties</div>
<div class="description req-false">
     The JNDI Properties are the specific properties for the underlying JNDI implementation.
  </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Provider URL</div>
<div class="description req-false">
    The URL for the JMS provider.
  </div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>




<div class="component">
<h2 id="JUnit_Request">JUnit Request<a class="sectionlink" href="#JUnit_Request" title="Link to here">&para;</a>
</h2>
<div class="description">
The current implementation supports standard JUnit convention and extensions. It also
includes extensions like <span class="code">oneTimeSetUp</span> and <span class="code">oneTimeTearDown</span>. The sampler works like the
<a href="../usermanual/component_reference.html#Java_Request">Java Request</a> with some differences.
<ul>

<li>rather than use JMeter's test interface, it scans the jar files for classes extending JUnit's <span class="code">TestCase</span> class. That includes any class or subclass.</li>

<li>JUnit test jar files should be placed in <span class="code">jmeter/lib/junit</span> instead of <span class="code">/lib</span> directory.
You can also use the "<span class="code">user.classpath</span>" property to specify where to look for <span class="code">TestCase</span> classes.</li>

<li>JUnit sampler does not use name/value pairs for configuration like the <a href="../usermanual/component_reference.html#Java_Request">Java Request</a>. The sampler assumes <span class="code">setUp</span> and <span class="code">tearDown</span> will configure the test correctly.</li>

<li>The sampler measures the elapsed time only for the test method and does not include <span class="code">setUp</span> and <span class="code">tearDown</span>.</li>

<li>Each time the test method is called, JMeter will pass the result to the listeners.</li>

<li>Support for <span class="code">oneTimeSetUp</span> and <span class="code">oneTimeTearDown</span> is done as a method. Since JMeter is multi-threaded, we cannot call <span class="code">oneTimeSetUp</span>/<span class="code">oneTimeTearDown</span> the same way Maven does it.</li>

<li>The sampler reports unexpected exceptions as errors.
There are some important differences between standard JUnit test runners and JMeter's
implementation. Rather than make a new instance of the class for each test, JMeter
creates 1 instance per sampler and reuses it.
This can be changed with checkbox "<span class="code">Create a new instance per sample</span>".</li>

</ul>
The current implementation of the sampler will try to create an instance using the string constructor first. If the test class does not declare a string constructor, the sampler will look for an empty constructor. Example below:
<div class="example">
<div class="title">JUnit Constructors<a class="sectionlink" href="#junit_constructor_example" title="Link to here">&para;</a>
</div>
Empty Constructor:
<pre class="source">
public class myTestCase {
  public myTestCase() {}
}
</pre>
String Constructor:
<pre class="source">
public class myTestCase {
  public myTestCase(String text) {
    super(text);
  }
}
</pre>

</div>
By default, JMeter will provide some default values for the success/failure code and message. Users should define a set of unique success and failure codes and use them uniformly across all tests.
<div class="clear"></div>
<div class="note">

<h3>General Guidelines</h3>
If you use <span class="code">setUp</span> and <span class="code">tearDown</span>, make sure the methods are declared public. If you do not, the test may not run properly.
<br>
Here are some general guidelines for writing JUnit tests so they work well with JMeter. Since JMeter runs multi-threaded, it is important to keep certain things in mind.
<ul>

<li>Write the <span class="code">setUp</span> and <span class="code">tearDown</span> methods so they are thread safe. This generally means avoid using static members.</li>

<li>Make the test methods discrete units of work and not long sequences of actions. By keeping the test method to a discrete operation, it makes it easier to combine test methods to create new test plans.</li>

<li>Avoid making test methods depend on each other. Since JMeter allows arbitrary sequencing of test methods, the runtime behavior is different than the default JUnit behavior.</li>

<li>If a test method is configurable, be careful about where the properties are stored. Reading the properties from the Jar file is recommended.</li>

<li>Each sampler creates an instance of the test class, so write your test so the setup happens in <span class="code">oneTimeSetUp</span> and <span class="code">oneTimeTearDown</span>.</li>

</ul>

</div>
<div class="clear"></div>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/junit_sampler.png"><img src="../images/screenshots/junit_sampler.png" width="397" height="536" alt="Screenshot for Control-Panel of JUnit Request"></a>
<figcaption>Screenshot of Control-Panel of JUnit Request</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="JUnit_Request_parms1">
        Parameters
        <a class="sectionlink" href="#JUnit_Request_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
  
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">Search for JUnit4 annotations</div>
<div class="description req-true">Select this to search for JUnit4 tests (<span class="code">@Test</span> annotations)</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Package filter</div>
<div class="description req-true">Comma separated list of packages to show. Example, <span class="code">org.apache.jmeter</span>,<span class="code">junit.framework</span>.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">Class name</div>
<div class="description req-true">Fully qualified name of the JUnit test class.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Constructor string</div>
<div class="description req-true">String pass to the string constructor. If a string is set, the sampler will use the
   string constructor instead of the empty constructor.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">Test method</div>
<div class="description req-true">The method to test.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Success message</div>
<div class="description req-true">A descriptive message indicating what success means.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">Success code</div>
<div class="description req-true">An unique code indicating the test was successful.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">Failure message</div>
<div class="description req-true">A descriptive message indicating what failure means.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">Failure code</div>
<div class="description req-true">An unique code indicating the test failed.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">Error message</div>
<div class="description req-true">A description for errors.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">Error code</div>
<div class="description req-true">Some code for errors. Does not need to be unique.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">Do not call setUp and tearDown</div>
<div class="description req-true">Set the sampler not to call <span class="code">setUp</span> and <span class="code">tearDown</span>.
   By default, <span class="code">setUp</span> and <span class="code">tearDown</span> should be called. Not calling those methods could affect the test and make it inaccurate.
    This option should only be used with calling <span class="code">oneTimeSetUp</span> and <span class="code">oneTimeTearDown</span>. If the selected method is <span class="code">oneTimeSetUp</span> or <span class="code">oneTimeTearDown</span>,
     this option should be checked.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Append assertion errors</div>
<div class="description req-true">Whether or not to append assertion errors to the response message.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Append runtime exceptions</div>
<div class="description req-true">Whether or not to append runtime exceptions to the response message. Only applies if "<span class="code">Append assertion errors</span>" is not selected.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Create a new Instance per sample</div>
<div class="description req-true">Whether or not to create a new JUnit instance for each sample. Defaults to false, meaning JUnit <span class="code">TestCase</span> is created one and reused.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<p>
The following JUnit4 annotations are recognised:
</p>
<dl>

<dt>
<span class="code">@Test</span>
</dt>
<dd>used to find test methods and classes. The "<span class="code">expected</span>" and "<span class="code">timeout</span>" attributes are supported.</dd>

<dt>
<span class="code">@Before</span>
</dt>
<dd>treated the same as <span class="code">setUp()</span> in JUnit3</dd>

<dt>
<span class="code">@After</span>
</dt>
<dd>treated the same as <span class="code">tearDown()</span> in JUnit3</dd>

<dt>
<span class="code">@BeforeClass</span>, <span class="code">@AfterClass</span>
</dt>
<dd>treated as test methods so they can be run independently as required</dd>

</dl>
<div class="clear"></div>
<div class="note">
Note that JMeter currently runs the test methods directly, rather than leaving it to JUnit.
This is to allow the <span class="code">setUp</span>/<span class="code">tearDown</span> methods to be excluded from the sample time.
As a consequence, the sampler time excludes the time taken to call <span class="code">setUp</span>/<span class="code">tearDown</span> methods and their annotation based alternatives.
</div>
<div class="clear"></div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Mail_Reader_Sampler">Mail Reader Sampler<a class="sectionlink" href="#Mail_Reader_Sampler" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The Mail Reader Sampler can read (and optionally delete) mail messages using POP3(S) or IMAP(S) protocols.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/mailreader_sampler.png"><img src="../images/screenshots/mailreader_sampler.png" width="595" height="413" alt="Screenshot for Control-Panel of Mail Reader Sampler"></a>
<figcaption>Screenshot of Control-Panel of Mail Reader Sampler</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Mail_Reader_Sampler_parms1">
        Parameters
        <a class="sectionlink" href="#Mail_Reader_Sampler_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>

<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Server Type</div>
<div class="description req-true">The protocol used by the provider: e.g. <span class="code">pop3</span>, <span class="code">pop3s</span>, <span class="code">imap</span>, <span class="code">imaps</span>.
or another string representing the server protocol.
For example <span class="code">file</span> for use with the read-only mail file provider.
The actual provider names for POP3 and IMAP are <span class="code">pop3</span> and <span class="code">imap</span>

</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-true">Server</div>
<div class="description req-true">Hostname or IP address of the server. See below for use with <span class="code">file</span> protocol.</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-false">Port</div>
<div class="description req-false">Port to be used to connect to the server (optional)</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-true">Username</div>
<div class="description req-true">User login name</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Password</div>
<div class="description req-true">User login password (N.B. this is stored unencrypted in the test plan)</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Folder</div>
<div class="description req-true">The IMAP(S) folder to use. See below for use with <span class="code">file</span> protocol.</div>
<div class="required req-true">Yes, if using IMAP(S)</div>
</div>

<div class="property">
<div class="name req-true">Number of messages to retrieve</div>
<div class="description req-true">Set this to retrieve all or some messages</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-true">Fetch headers only</div>
<div class="description req-true">If selected, only the message headers will be retrieved.</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-true">Delete messages from the server</div>
<div class="description req-true">If set, messages will be deleted after retrieval</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-true">Store the message using MIME</div>
<div class="description req-true">Whether to store the message as MIME. 
If so, then the entire raw message is stored in the Response Data; the headers are not stored as they are available in the data. 
If not, the message headers are stored as Response Headers. 
A few headers are stored (<span class="code">Date</span>, <span class="code">To</span>, <span class="code">From</span>, <span class="code">Subject</span>) in the body.
</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-true">Use no security features</div>
<div class="description req-true">Indicates that the connection to the server does not use any security protocol.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Use SSL</div>
<div class="description req-true">Indicates that the connection to the server must use the SSL protocol.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Use StartTLS</div>
<div class="description req-true">Indicates that the connection to the server should attempt to start the TLS protocol.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Enforce StartTLS</div>
<div class="description req-true">If the server does not start the TLS protocol the connection will be terminated.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Trust All Certificates</div>
<div class="description req-true">When selected it will accept all certificates independent of the CA.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Use local truststore</div>
<div class="description req-true">When selected it will only accept certificates that are locally trusted.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Local truststore</div>
<div class="description req-true">Path to file containing the trusted certificates.
Relative paths are resolved against the current directory.
<br>Failing that, against the directory containing the test script (JMX file).
</div>
<div class="required req-true"></div>
</div>

</div>
<div class="clear"></div>
<div class="note">You can pass mail related environment properties by adding to user.properties any of the properties described <a href="https://javaee.github.io/javamail/docs/api/com/sun/mail/pop3/package-summary.html">here</a>.</div>
<div class="clear"></div>
<p>
Messages are stored as subsamples of the main sampler.
Multipart message parts are stored as subsamples of the message.
</p>
<p>

<b>Special handling for "<span class="code">file</span>" protocol:</b>
<br>
The <span class="code">file</span> JavaMail provider can be used to read raw messages from files.
The <span class="code">server</span> field is used to specify the path to the parent of the <span class="code">folder</span>.
Individual message files should be stored with the name <span class="code">n.msg</span>,
where <span class="code">n</span> is the message number.
Alternatively, the <span class="code">server</span> field can be the name of a file which contains a single message.
The current implementation is quite basic, and is mainly intended for debugging purposes. 
</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Flow_Control_Action">Flow Control Action<a name="Test_Action">
            (was:
            Test Action
            )
          </a><a class="sectionlink" href="#Flow_Control_Action" title="Link to here">&para;</a>
</h2>
<div class="description">
The Flow Control Action sampler is a sampler that is intended for use in a conditional controller.
Rather than generate a sample, the test element either pauses or stops the selected target.
<p>This sampler can also be useful in conjunction with the Transaction Controller, as it allows
pauses to be included without needing to generate a sample. 
For variable delays, set the pause time to zero, and add a Timer as a child.</p>

<p>
The "<span class="code">Stop</span>" action stops the thread or test after completing any samples that are in progress.
The "<span class="code">Stop Now</span>" action stops the test without waiting for samples to complete; it will interrupt any active samples.
If some threads fail to stop within the 5 second time-limit, a message will be displayed in GUI mode.
You can try using the <span class="code">Stop</span> command to see if this will stop the threads, but if not, you should exit JMeter.
In CLI mode, JMeter will exit if some threads fail to stop within the 5 second time limit.
<div class="clear"></div>
<div class="note">The time to wait can be changed using the JMeter property <span class="code">jmeterengine.threadstop.wait</span>. The time is given in milliseconds.</div>
<div class="clear"></div>

</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/test_action.png"><img src="../images/screenshots/test_action.png" width="467" height="184" alt="Screenshot for Control-Panel of Flow Control Action"></a>
<figcaption>Screenshot of Control-Panel of Flow Control Action</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Flow_Control_Action_parms1">
        Parameters
        <a class="sectionlink" href="#Flow_Control_Action_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
  
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">Target</div>
<div class="description req-true">
<span class="code">Current Thread</span> / <span class="code">All Threads</span> (ignored for <span class="code">Pause</span> and <span class="code">Go to next loop iteration</span>)</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Action</div>
<div class="description req-true">
<span class="code">Pause</span> / <span class="code">Stop</span> / <span class="code">Stop Now</span> / <span class="code">Go to next loop iteration</span>
</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Duration</div>
<div class="description req-true">How long to pause for (milliseconds)</div>
<div class="required req-true">Yes, if Pause is selected</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>



<div class="component">
<h2 id="SMTP_Sampler">SMTP Sampler<a class="sectionlink" href="#SMTP_Sampler" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The SMTP Sampler can send mail messages using SMTP/SMTPS protocol. 
It is possible to set security protocols for the connection (SSL and TLS), as well as user authentication. 
If a security protocol is used a verification on the server certificate will occur. <br>
Two alternatives to handle this verification are available:<br>

</p>

<dl>

<dt>
<span class="code">Trust all certificates</span>
</dt>
<dd>This will ignore certificate chain verification</dd>

<dt>
<span class="code">Use a local truststore</span>
</dt>
<dd>With this option the certificate chain will be validated against the local truststore file.</dd>

</dl>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/smtp_sampler.png"><img src="../images/screenshots/smtp_sampler.png" width="825" height="728" alt="Screenshot for Control-Panel of SMTP Sampler"></a>
<figcaption>Screenshot of Control-Panel of SMTP Sampler</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="SMTP_Sampler_parms1">
        Parameters
        <a class="sectionlink" href="#SMTP_Sampler_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>

<div class="property">
<div class="name req-true">Server</div>
<div class="description req-true">Hostname or IP address of the server. See below for use with <span class="code">file</span> protocol.</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-false">Port</div>
<div class="description req-false">Port to be used to connect to the server.
Defaults are: SMTP=25, SSL=465, StartTLS=587
</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-false">Connection timeout</div>
<div class="description req-false">Connection timeout value in milliseconds (socket level). Default is infinite timeout.</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-false">Read timeout</div>
<div class="description req-false">Read timeout value in milliseconds (socket level). Default is infinite timeout.</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-true">Address From</div>
<div class="description req-true">The from address that will appear in the e-mail</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-true">Address To</div>
<div class="description req-true">The destination e-mail address (multiple values separated by "<span class="code">;</span>")</div>
<div class="required req-true">Yes, unless CC or BCC is specified</div>
</div>

<div class="property">
<div class="name req-false">Address To CC</div>
<div class="description req-false">Carbon copy destinations e-mail address (multiple values separated by "<span class="code">;</span>")</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-false">Address To BCC</div>
<div class="description req-false">Blind carbon copy destinations e-mail address (multiple values separated by "<span class="code">;</span>")</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-false">Address Reply-To</div>
<div class="description req-false">Alternate Reply-To address (multiple values separated by "<span class="code">;</span>")</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-true">Use Auth</div>
<div class="description req-true">Indicates if the SMTP server requires user authentication</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Username</div>
<div class="description req-true">User login name</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Password</div>
<div class="description req-true">User login password (N.B. this is stored unencrypted in the test plan)</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Use no security features</div>
<div class="description req-true">Indicates that the connection to the SMTP server does not use any security protocol.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Use SSL</div>
<div class="description req-true">Indicates that the connection to the SMTP server must use the SSL protocol.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Use StartTLS</div>
<div class="description req-true">Indicates that the connection to the SMTP server should attempt to start the TLS protocol.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Enforce StartTLS</div>
<div class="description req-true">If the server does not start the TLS protocol the connection will be terminated.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Trust All Certificates</div>
<div class="description req-true">When selected it will accept all certificates independent of the CA.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Use local truststore</div>
<div class="description req-true">When selected it will only accept certificates that are locally trusted.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Local truststore</div>
<div class="description req-true">Path to file containing the trusted certificates.
Relative paths are resolved against the current directory.
<br>Failing that, against the directory containing the test script (JMX file).
</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-false">Override System SSL/TLS Protocols</div>
<div class="description req-false">Specify a custom SSL/TLS protocol as space separated list to use on handshake example <span class="code">TLSv1 TLSv1.1 TLSv1.2</span>. Defaults to all supported protocols.</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-true">Subject</div>
<div class="description req-true">The e-mail message subject.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Suppress Subject Header</div>
<div class="description req-true">If selected, the "<span class="code">Subject:</span>" header is omitted from the mail that is sent. 
This is different from sending an empty "<span class="code">Subject:</span>" header, though some e-mail clients may display it identically.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Include timestamp in subject</div>
<div class="description req-true">Includes the <span class="code">System.currentTimemillis()</span> in the subject line.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-false">Add Header</div>
<div class="description req-false">Additional headers can be defined using this button.</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-true">Message</div>
<div class="description req-true">The message body.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Send plain body (i.e. not multipart/mixed)</div>
<div class="description req-true">
If selected, then send the body as a plain message, i.e. not <span class="code">multipart/mixed</span>, if possible.
If the message body is empty and there is a single file, then send the file contents as the message body.
<div class="clear"></div>
<div class="note">
Note: If the message body is not empty, and there is at least one attached file, then the body is sent as <span class="code">multipart/mixed</span>.
</div>
<div class="clear"></div>

</div>
<div class="required req-true">
            No
          </div>
</div>

<div class="property">
<div class="name req-true">Attach files</div>
<div class="description req-true">Files to be attached to the message.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Send .eml</div>
<div class="description req-true">If set, the <span class="code">.eml</span> file will be sent instead of the entries in the <span class="code">Subject</span>, <span class="code">Message</span>, and <span class="code">Attach file(s)</span> fields</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Calculate message size</div>
<div class="description req-true">Calculates the message size and stores it in the sample result.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">Enable debug logging?</div>
<div class="description req-true">If set, then the "<span class="code">mail.debug</span>" property is set to "<span class="code">true</span>"</div>
<div class="required req-true"></div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="OS_Process_Sampler">OS Process Sampler<a class="sectionlink" href="#OS_Process_Sampler" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The OS Process Sampler is a sampler that can be used to execute commands on the local machine.<br>
It should allow execution of any command that can be run from the command line.<br>
Validation of the return code can be enabled, and the expected return code can be specified.<br>

</p>

<p>
Note that OS shells generally provide command-line parsing. 
This varies between OSes, but generally the shell will split parameters on white-space.
Some shells expand wild-card file names; some don't.
The quoting mechanism also varies between OSes.
The sampler deliberately does not do any parsing or quote handling.
The command and its parameters must be provided in the form expected by the executable.
This means that the sampler settings will not be portable between OSes.
</p>

<p>
Many OSes have some built-in commands which are not provided as separate executables. 
For example the Windows <span class="code">DIR</span> command is part of the command interpreter (<span class="code">CMD.EXE</span>).
These built-ins cannot be run as independent programs, but have to be provided as arguments to the appropriate command interpreter.
</p>

<p>
For example, the Windows command-line: <span class="code">DIR C:\TEMP</span> needs to be specified as follows:
</p>

<dl>

<dt>Command:</dt>
<dd>
<span class="code">CMD</span>
</dd>

<dt>Param 1:</dt>
<dd>
<span class="code">/C</span>
</dd>

<dt>Param 2:</dt>
<dd>
<span class="code">DIR</span>
</dd>

<dt>Param 3:</dt>
<dd>
<span class="code">C:\TEMP</span>
</dd>

</dl>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/os_process_sampler.png"><img src="../images/screenshots/os_process_sampler.png" width="683" height="582" alt="Screenshot for Control-Panel of OS Process Sampler"></a>
<figcaption>Screenshot of Control-Panel of OS Process Sampler</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="OS_Process_Sampler_parms1">
        Parameters
        <a class="sectionlink" href="#OS_Process_Sampler_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>

<div class="property">
<div class="name req-true">Command</div>
<div class="description req-true">The program name to execute.</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-false">Working directory</div>
<div class="description req-false">Directory from which command will be executed, defaults to folder referenced by "<span class="code">user.dir</span>" System property</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-false">Command Parameters</div>
<div class="description req-false">Parameters passed to the program name.</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-false">Environment Parameters</div>
<div class="description req-false">Key/Value pairs added to environment when running command.</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-false">Standard input (stdin)</div>
<div class="description req-false">Name of file from which input is to be taken (<span class="code">STDIN</span>).</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-false">Standard output (stdout</div>
<div class="description req-false">Name of output file for standard output (<span class="code">STDOUT</span>). 
If omitted, output is captured and returned as the response data.</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-false">Standard error (stderr)</div>
<div class="description req-false">Name of output file for standard error (<span class="code">STDERR</span>). 
If omitted, output is captured and returned as the response data.</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-false">Check Return Code</div>
<div class="description req-false">If checked, sampler will compare return code with <span class="code">Expected Return Code</span>.</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-false">Expected Return Code</div>
<div class="description req-false">Expected return code for System Call, required if "<span class="code">Check Return Code</span>" is checked. Note 500 is used as an error indicator in JMeter so you should not use it.</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-false">Timeout</div>
<div class="description req-false">Timeout for command in milliseconds, defaults to <span class="code">0</span>, which means <em>no</em> timeout.
If the timeout expires before the command finishes, JMeter will attempt to kill the OS process.
</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="MongoDB_Script_(DEPRECATED)">MongoDB Script (DEPRECATED)<a class="sectionlink" href="#MongoDB_Script_(DEPRECATED)" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>This sampler lets you send a Request to a MongoDB.</p>

<p>Before using this you need to set up a
<a href="../usermanual/component_reference.html#MongoDB_Source_Config">MongoDB Source Config</a> Configuration element
</p>

<div class="clear"></div>
<div class="note">This Element currently uses <span class="code">com.mongodb.DB#eval</span> which takes a global write lock causing a performance impact on the database, see <a href="http://docs.mongodb.org/manual/reference/method/db.eval/"><span class="code">db.eval()</span></a>.
So it is better to avoid using this element for load testing and use JSR223+Groovy scripting using <a href="../api/org/apache/jmeter/protocol/mongodb/config/MongoDBHolder.html">MongoDBHolder</a> instead.
MongoDB Script is more suitable for functional testing or test setup (setup/teardown threads)</div>
<div class="clear"></div>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/mongodb-script.png"><img src="../images/screenshots/mongodb-script.png" width="847" height="635" alt="Screenshot for Control-Panel of MongoDB Script (DEPRECATED)"></a>
<figcaption>Screenshot of Control-Panel of MongoDB Script (DEPRECATED)</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="MongoDB_Script_(DEPRECATED)_parms1">
        Parameters
        <a class="sectionlink" href="#MongoDB_Script_(DEPRECATED)_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">MongoDB Source</div>
<div class="description req-true">
        Name of the JMeter variable that the MongoDB connection is bound to.
        This must agree with the '<span class="code">MongoDB Source</span>' field of a MongoDB Source Config.
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Database Name</div>
<div class="description req-true">Database Name, will be used in your script
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Username</div>
<div class="description req-false">
        
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Password</div>
<div class="description req-false">
        
</div>
<div class="required req-false">No</div>
</div>        
        
<div class="property">
<div class="name req-true">Script</div>
<div class="description req-true">
        Mongo script as it would be used in MongoDB shell
        </div>
<div class="required req-true">Yes</div>
</div>        

</div>
<div class="links">
<div class="title">See also:</div>
<ul class="links">
<li>
<a href="../usermanual/component_reference.html#MongoDB_Source_Config">MongoDB Source Config</a>
</li>
</ul>
</div>
<div class="clear"></div>
<div class="note">Ensure Variable Name is unique across Test Plan.</div>
<div class="clear"></div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<a href="#">^</a>



<div class="component">
<h2 id="Bolt_Request">Bolt Request<a class="sectionlink" href="#Bolt_Request" title="Link to here">&para;</a>
</h2>
<div class="description">
        
<p>This sampler allows you to run Cypher queries through the Bolt protocol.</p>
        
<p>Before using this you need to set up a <a href="../usermanual/component_reference.html#Bolt_Connection_Configuration">Bolt Connection Configuration</a>
</p>
        
<p>Every request uses a connection acquired from the pool and returns it to the pool when the sampler completes.
        The connection pool size use the driver defaults (~100) and is not configurable at the moment.</p>
        
<p>The measured response time corresponds to the "full" query execution, including both
        the time to execute the cypher query AND the time to consume the results sent back by the database.</p>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/bolt-request.png"><img src="../images/screenshots/bolt-request.png" width="711" height="488" alt="Screenshot for Control-Panel of Bolt Request"></a>
<figcaption>Screenshot of Control-Panel of Bolt Request</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Bolt_Request_parms1">
        Parameters
        <a class="sectionlink" href="#Bolt_Request_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Comments</div>
<div class="description req-false">Free text for additional details.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Cypher statement</div>
<div class="description req-true">
            The query to execute.
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Params</div>
<div class="description req-false">The parameter values, JSON formatted.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Record Query Results</div>
<div class="description req-false">
            Whether to add or not query result data to the sampler response (default false).
            Note that activating this has a memory overhead, use it wisely.
        </div>
<div class="required req-false">No</div>
</div>
    
</div>
<div class="clear"></div>
<div class="note">It is strongly advised to use query parameters, allowing the database to cache and reuse execution plans.</div>
<div class="clear"></div>
<div class="links">
<div class="title">See also:</div>
<ul class="links">
<li>
<a href="../usermanual/component_reference.html#Bolt_Connection_Configuration">Bolt Connection Configuration</a>
</li>
</ul>
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<a href="#">^</a>


</div>
<div class="section">
<h1 id="logic_controllers">18.2 Logic Controllers<a class="sectionlink" href="#logic_controllers" title="Link to here">&para;</a>
</h1>

<div class="description">
    
<br>Logic Controllers determine the order in which Samplers are processed.</br>

</div>


<div class="component">
<h2 id="Simple_Controller">Simple Controller<a class="sectionlink" href="#Simple_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>The Simple Logic Controller lets  you organize your Samplers and other
Logic Controllers.  Unlike other Logic Controllers, this controller provides no functionality beyond that of a
storage device.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/logic-controller/simple-controller.png"><img src="../images/screenshots/logic-controller/simple-controller.png" width="330" height="77" alt="Screenshot for Control-Panel of Simple Controller"></a>
<figcaption>Screenshot of Control-Panel of Simple Controller</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Simple_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#Simple_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this controller that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="example">
<div class="title">Using the Simple Controller<a class="sectionlink" href="#simple_controller_example" title="Link to here">&para;</a>
</div>

<p>
<a href="../demos/SimpleTestPlan.jmx">Download</a> this example (see Figure 6).
In this example, we created a Test Plan that sends two Ant HTTP requests and two
Log4J HTTP requests.  We grouped the Ant and Log4J requests by placing them inside
Simple Logic Controllers.  Remember, the Simple Logic Controller has no effect on how JMeter
processes the controller(s) you add to it.  So, in this example, JMeter sends the requests in the
following order: Ant Home Page, Ant News Page, Log4J Home Page, Log4J History Page.</p>

<p>
Note, the File Reporter
is configured to store the results in a file named "<span class="code">simple-test.dat</span>" in the current directory.</p>

<figure>
<a href="../images/screenshots/logic-controller/simple-example.png"><img src="../images/screenshots/logic-controller/simple-example.png" width="585" height="213" alt="Figure 6 Simple Controller Example"></a>
<figcaption>Figure 6 Simple Controller Example</figcaption>
</figure>


</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Loop_Controller">Loop Controller<a class="sectionlink" href="#Loop_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>If you add Generative or Logic Controllers to a Loop Controller, JMeter will
loop through them a certain number of times, in addition to the loop value you
specified for the Thread Group.  For example, if you add one HTTP Request to a
Loop Controller with a loop count of two, and configure the Thread Group loop
count to three, JMeter will send a total of <span class="code">2 * 3 = 6</span> HTTP Requests.
<div class="clear"></div>
<div class="note">JMeter will expose the looping index as a variable named <span class="code">__jm__&lt;Name of your element&gt;__idx</span>. So for
example, if your Loop Controller is named LC, then you can access the looping index through <span class="code">${__jm__LC__idx}</span>.
Index starts at 0</div>
<div class="clear"></div>

</p>
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/logic-controller/loop-controller.png"><img src="../images/screenshots/logic-controller/loop-controller.png" width="326" height="114" alt="Screenshot for Control-Panel of Loop Controller"></a>
<figcaption>Screenshot of Control-Panel of Loop Controller</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Loop_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#Loop_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this controller that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Loop Count</div>
<div class="description req-true">
                The number of times the subelements of this controller will be iterated each time
                through a test run.
                <p>The value <span class="code">-1</span> is equivalent to checking the <span class="code">Forever</span> toggle.</p>
                
<p>
<b>Special Case:</b> The Loop Controller embedded in the <a href="test_plan.html#thread_group">Thread Group</a>
                element behaves slightly different.  Unless set to forever, it stops the test after
                the given number of iterations have been done.</p>
                
<div class="clear"></div>
<div class="note">When using a function in this field, be aware it may be evaluated multiple times.
                Example using <span class="code"><a href="../usermanual/functions.html#__Random">__Random</a></span> will evaluate it to a different value for each child samplers of Loop Controller and result into unwanted behaviour.</div>
<div class="clear"></div>
</div>
<div class="required req-true">Yes, unless "Forever" is checked</div>
</div>

</div>
<div class="example">
<div class="title">Looping Example<a class="sectionlink" href="#loop_example" title="Link to here">&para;</a>
</div>


<p>
<a href="../demos/LoopTestPlan.jmx">Download</a> this example (see Figure 4).
In this example, we created a Test Plan that sends a particular HTTP Request
only once and sends another HTTP Request five times.</p>


<figure>
<a href="../images/screenshots/logic-controller/loop-example.png"><img src="../images/screenshots/logic-controller/loop-example.png" width="506" height="158" alt="Figure 4 - Loop Controller Example"></a>
<figcaption>Figure 4 - Loop Controller Example</figcaption>
</figure>


<p>We configured the Thread Group for a single thread and a loop count value of
one. Instead of letting the Thread Group control the looping, we used a Loop
Controller.  You can see that we added one HTTP Request to the Thread Group and
another HTTP Request to a Loop Controller.  We configured the Loop Controller
with a loop count value of five.</p>

<p>JMeter will send the requests in the following order: Home Page, News Page,
News Page, News Page, News Page, and News Page.</p>

<div class="clear"></div>
<div class="note">Note, the File Reporter
is configured to store the results in a file named "<span class="code">loop-test.dat</span>" in the current directory.</div>
<div class="clear"></div>


</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Once_Only_Controller">Once Only Controller<a class="sectionlink" href="#Once_Only_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>The Once Only Logic Controller tells JMeter to process the controller(s) inside it only once per Thread, and pass over any requests under it
during further iterations through the test plan.</p>


<p>The Once Only Controller will now execute always during the first iteration of any looping parent controller.  
Thus, if the Once Only Controller is placed under a Loop Controller specified to loop 5 times, then the Once Only Controller will execute only on the first iteration through the Loop Controller 
(i.e. every 5 times).</p>

<p>
Note this means the Once Only Controller will still behave as previously expected if put under a Thread Group (runs only once per test per Thread), 
but now the user has more flexibility in the use of the Once Only Controller.</p>


<p>For testing that requires a login, consider placing the login request in this controller since each thread only needs
to login once to establish a session.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/logic-controller/once-only-controller.png"><img src="../images/screenshots/logic-controller/once-only-controller.png" width="330" height="78" alt="Screenshot for Control-Panel of Once Only Controller"></a>
<figcaption>Screenshot of Control-Panel of Once Only Controller</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Once_Only_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#Once_Only_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this controller that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="example">
<div class="title">Once Only Example<a class="sectionlink" href="#once_only_example" title="Link to here">&para;</a>
</div>

<p>
<a href="../demos/OnceOnlyTestPlan.jmx">Download</a> this example (see Figure 5).
In this example, we created a Test Plan that has two threads that send HTTP request.
Each thread sends one request to the Home Page, followed by three requests to the Bug Page.
Although we configured the Thread Group to iterate three times, each JMeter thread only
sends one request to the Home Page because this request lives inside a Once Only Controller.</p>

<figure>
<a href="../images/screenshots/logic-controller/once-only-example.png"><img src="../images/screenshots/logic-controller/once-only-example.png" width="233" height="138" alt="Figure 5. Once Only Controller Example"></a>
<figcaption>Figure 5. Once Only Controller Example</figcaption>
</figure>

<p>Each JMeter thread will send the requests in the following order: Home Page, Bug Page,
Bug Page, Bug Page.</p>

<p>Note, the File Reporter is configured to store the results in a file named "<span class="code">loop-test.dat</span>" in the current directory.</p>


</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Interleave_Controller">Interleave Controller<a class="sectionlink" href="#Interleave_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>If you add Generative or Logic Controllers to an Interleave Controller, JMeter will alternate among each of the
other controllers for each loop iteration. </p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/logic-controller/interleave-controller.png"><img src="../images/screenshots/logic-controller/interleave-controller.png" width="626" height="127" alt="Screenshot for Control-Panel of Interleave Controller"></a>
<figcaption>Screenshot of Control-Panel of Interleave Controller</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Interleave_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#Interleave_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">name</div>
<div class="description req-false">Descriptive name for this controller that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">ignore sub-controller blocks</div>
<div class="description req-false">If checked, the interleave controller will treat sub-controllers like single request elements and only allow one request per controller at a time.  </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Interleave across threads</div>
<div class="description req-false">If checked, the interleave controller will alternate among each of its children controllers for each loop iteration but across all threads, for example in a 
        configuration with 4 threads and 3 child controllers, on first iteration
        thread 1 will run first child, thread 2 second child, thread 3 third child, thread 4 first child, on next iteration each thread will run the following child controller</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="example">
<div class="title">Simple Interleave Example<a class="sectionlink" href="#simple_interleave_example" title="Link to here">&para;</a>
</div>


<p>
<a href="../demos/InterleaveTestPlan.jmx">Download</a> this example (see Figure 1).  In this example,
we configured the Thread Group to have two threads and a loop count of five, for a total of ten
requests per thread. See the table below for the sequence JMeter sends the HTTP Requests.</p>


<figure>
<a href="../images/screenshots/logic-controller/interleave.png"><img src="../images/screenshots/logic-controller/interleave.png" width="231" height="153" alt="Figure 1 - Interleave Controller Example 1"></a>
<figcaption>Figure 1 - Interleave Controller Example 1</figcaption>
</figure>


<table>

<tr valign="top">
<th>Loop Iteration</th><th>Each JMeter Thread Sends These HTTP Requests</th>
</tr>

<tr valign="top">
<td>1</td><td>News Page</td>
</tr>

<tr valign="top">
<td>1</td><td>Log Page</td>
</tr>

<tr valign="top">
<td>2</td><td>FAQ Page</td>
</tr>

<tr valign="top">
<td>2</td><td>Log Page</td>
</tr>

<tr valign="top">
<td>3</td><td>Gump Page</td>
</tr>

<tr valign="top">
<td>3</td><td>Log Page</td>
</tr>

<tr valign="top">
<td>4</td><td>Because there are no more requests in the controller,<br> 
</br> JMeter starts over and sends the first HTTP Request, which is the News Page.</td>
</tr>

<tr valign="top">
<td>4</td><td>Log Page</td>
</tr>

<tr valign="top">
<td>5</td><td>FAQ Page</td>
</tr>

<tr valign="top">
<td>5</td><td>Log Page</td>
</tr>

</table>



</div>
<div class="example">
<div class="title">Useful Interleave Example<a class="sectionlink" href="#useful_interleave_example" title="Link to here">&para;</a>
</div>


<p>
<a href="../demos/InterleaveTestPlan2.jmx">Download</a> another example (see Figure 2).  In this
example, we configured the Thread Group
to have a single thread and a loop count of eight.  Notice that the Test Plan has an outer Interleave Controller with
two Interleave Controllers inside of it.</p>


<figure>
<a href="../images/screenshots/logic-controller/interleave2.png"><img src="../images/screenshots/logic-controller/interleave2.png" width="251" height="250" alt="
        Figure 2 - Interleave Controller Example 2
"></a>
<figcaption>
        Figure 2 - Interleave Controller Example 2
</figcaption>
</figure>


<p>The outer Interleave Controller alternates between the
two inner ones.  Then, each inner Interleave Controller alternates between each of the HTTP Requests.  Each JMeter
thread will send the requests in the following order: Home Page, Interleaved, Bug Page, Interleaved, CVS Page, Interleaved, and FAQ Page, Interleaved.</p>

<p>Note, the File Reporter is configured to store the results in a file named "<span class="code">interleave-test2.dat</span>" in the current directory.</p>


<figure>
<a href="../images/screenshots/logic-controller/interleave3.png"><img src="../images/screenshots/logic-controller/interleave3.png" width="257" height="253" alt="
        Figure 3 - Interleave Controller Example 3
"></a>
<figcaption>
        Figure 3 - Interleave Controller Example 3
</figcaption>
</figure>

<p>If the two interleave controllers under the main interleave controller were instead simple controllers, then the order would be: Home Page, CVS Page, Interleaved, Bug Page, FAQ Page, Interleaved.</p>

<p>However, if "<span class="code">ignore sub-controller blocks</span>" was checked on the main interleave controller, then the order would be: Home Page, Interleaved, Bug Page, Interleaved, CVS Page, Interleaved, and FAQ Page, Interleaved.</p>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Random_Controller">Random Controller<a class="sectionlink" href="#Random_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>The Random Logic Controller acts similarly to the Interleave Controller, except that
instead of going in order through its sub-controllers and samplers, it picks one
at random at each pass.</p>

<div class="clear"></div>
<div class="note">Interactions between multiple controllers can yield complex behavior.
This is particularly true of the Random Controller.  Experiment before you assume
what results any given interaction will give</div>
<div class="clear"></div>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/logic-controller/random-controller.png"><img src="../images/screenshots/logic-controller/random-controller.png" width="328" height="100" alt="Screenshot for Control-Panel of Random Controller"></a>
<figcaption>Screenshot of Control-Panel of Random Controller</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Random_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#Random_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this controller that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">ignore sub-controller blocks</div>
<div class="description req-false">If checked, the interleave controller will treat sub-controllers like single request elements and only allow one request per controller at a time.  </div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>




<div class="component">
<h2 id="Random_Order_Controller">Random Order Controller<a class="sectionlink" href="#Random_Order_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">
        
<p>The Random Order Controller is much like a Simple Controller in that it will execute each child
         element at most once, but the order of execution of the nodes will be random.</p>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/randomordercontroller.png"><img src="../images/screenshots/randomordercontroller.png" width="328" height="76" alt="Screenshot for Control-Panel of Random Order Controller"></a>
<figcaption>Screenshot of Control-Panel of Random Order Controller</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Random_Order_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#Random_Order_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this controller that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Throughput_Controller">Throughput Controller<a class="sectionlink" href="#Throughput_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>The Throughput Controller allows the user to control how often it is executed.  
There are two modes:
<ul>

<li>percent execution</li>

<li>total executions</li>

</ul>

<dl>
  
<dt>
<span class="code">Percent executions</span>
</dt>
<dd>causes the controller to execute a certain percentage of the iterations through the test plan.</dd>
  
<dt>
<span class="code">Total executions</span>
</dt>
<dd>causes the controller to stop executing after a certain number of executions have occurred.</dd>

</dl>
Like the Once Only Controller, this setting is reset when a parent Loop Controller restarts.
</p>

<div class="clear"></div>
<div class="note">This controller is badly named, as it does not control throughput.
Please refer to the <a href="../usermanual/component_reference.html#Constant_Throughput_Timer">Constant Throughput Timer</a> for an element that can be used to adjust the throughput.
</div>
<div class="clear"></div>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/throughput_controller.png"><img src="../images/screenshots/throughput_controller.png" width="329" height="167" alt="Screenshot for Control-Panel of Throughput Controller"></a>
<figcaption>Screenshot of Control-Panel of Throughput Controller</figcaption>
</figure>
</div>
<div class="clear"></div>
<div class="note">The Throughput Controller can yield very complex behavior when combined with other controllers - in particular with interleave or random controllers as parents (also very useful).</div>
<div class="clear"></div>
<div class="properties">
<h3 id="Throughput_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#Throughput_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this controller that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Execution Style</div>
<div class="description req-true">Whether the controller will run in percent executions or total executions mode.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Throughput</div>
<div class="description req-true">A number.  For percent execution mode, a number from <span class="code">0</span>-<span class="code">100</span> that indicates the percentage of times the controller will execute.  "<span class="code">50</span>" means the controller will execute during half the iterations through the test plan.  For total execution mode, the number indicates the total number of times the controller will execute.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Per User</div>
<div class="description req-false">If checked, per user will cause the controller to calculate whether it should execute on a per user (per thread) basis.  If unchecked, then the calculation will be global for all users.  For example, if using total execution mode, and uncheck "<span class="code">per user</span>", then the number given for throughput will be the total number of executions made.  If "<span class="code">per user</span>" is checked, then the total number of executions would be the number of users times the number given for throughput.</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Runtime_Controller">Runtime Controller<a class="sectionlink" href="#Runtime_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">
        
<p>The Runtime Controller controls how long its children how long its children will run. 
        Controller will run its children until configured <span class="code">Runtime(s)</span> is exceeded. 
        </p>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/runtimecontroller.png"><img src="../images/screenshots/runtimecontroller.png" width="328" height="100" alt="Screenshot for Control-Panel of Runtime Controller"></a>
<figcaption>Screenshot of Control-Panel of Runtime Controller</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Runtime_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#Runtime_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this controller that is shown in the tree, and used to name the transaction.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Runtime (seconds)</div>
<div class="description req-true">Desired runtime in seconds. 0 means no run.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="If_Controller">If Controller<a class="sectionlink" href="#If_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">
        
<p>The If Controller allows the user to control whether the test elements below it (its children) are run or not.</p>
        
<p>
        By default, the condition is evaluated only once on initial entry, but you have the option to have it evaluated for every runnable element contained in the controller.
        </p>
        
<p>
        The best option (default one) is to check <span class="code">Interpret Condition as Variable Expression?</span>, then in the condition field you have 2 options:
        <ul>
            
<li>Option 1 : Use a variable that contains <span class="code">true</span> or <span class="code">false</span>
            
<div class="clear"></div>
<div class="note">If you want to test if last sample was successful, you can use <span class="code">${JMeterThread.last_sample_ok}</span>
            
<figure>
<a href="../images/screenshots/if_controller_variable.png"><img src="../images/screenshots/if_controller_variable.png" width="815" height="260" alt="If Controller using Variable"></a>
<figcaption>If Controller using Variable</figcaption>
</figure>
            
</div>
<div class="clear"></div>
            
</li>
            
<li>Option 2 : Use a function (<span class="code">${__jexl3()}</span> is advised) to evaluate an expression that must return <span class="code">true</span> or <span class="code">false</span>
            
<figure>
<a href="../images/screenshots/if_controller_expression.png"><img src="../images/screenshots/if_controller_expression.png" width="815" height="260" alt="If Controller using expression"></a>
<figcaption>If Controller using expression</figcaption>
</figure>
            
</li>
        
</ul>
        For example, previously one could use the condition:
        <span class="code">${__jexl3(${VAR} == 23)}</span> and this would be evaluated as <span class="code">true</span>/<span class="code">false</span>, the result would then be passed to JavaScript
        which would then return <span class="code">true</span>/<span class="code">false</span>. If the Variable Expression option is selected, then the expression is evaluated
        and compared with "<span class="code">true</span>", without needing to use JavaScript.
        </p>
        
<div class="clear"></div>
<div class="note">
        To test if a variable is undefined (or null) do the following, suppose var is named <span class="code">myVar</span>, expression will be:
        <pre class="source">"${myVar}" == "\${myVar}"</pre>
        Or use:
        <pre class="source">"${myVar}" != "\${myVar}"</pre>
        to test if a variable is defined and is not null.
        </div>
<div class="clear"></div>
        If you uncheck <span class="code">Interpret Condition as Variable Expression?</span>, <span class="code">If Controller</span> will internally use javascript to evaluate the condition 
        which has a performance penalty that can be very big and make your test less scalable.
        <figure>
<a href="../images/screenshots/if_controller_javascript.png"><img src="../images/screenshots/if_controller_javascript.png" width="819" height="265" alt="If Controller using javascript"></a>
<figcaption>If Controller using javascript</figcaption>
</figure>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/if_controller_expression.png"><img src="../images/screenshots/if_controller_expression.png" width="814" height="262" alt="Screenshot for Control-Panel of If Controller"></a>
<figcaption>Screenshot of Control-Panel of If Controller</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="If_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#If_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this controller that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Condition (default JavaScript)</div>
<div class="description req-true">By default the condition is interpreted as <b>JavaScript</b> code that returns "<span class="code">true</span>" or "<span class="code">false</span>",
    but this can be overridden (see below)</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Interpret Condition as Variable Expression?</div>
<div class="description req-true">If this is selected, then the condition must be an expression that evaluates to "<span class="code">true</span>" (case is ignored).
    For example, <span class="code">${FOUND}</span> or <span class="code">${__jexl3(${VAR} &gt; 100)}</span>.
    Unlike the JavaScript case, the condition is only checked to see if it matches "<span class="code">true</span>" (case is ignored).
    <div class="clear"></div>
<div class="note">Checking this and using <span class="code"><a href="../usermanual/functions.html#__jexl3">__jexl3</a></span> or <span class="code"><a href="../usermanual/functions.html#__groovy">__groovy</a></span> function in Condition is advised for performances</div>
<div class="clear"></div>
    
</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Evaluate for all children</div>
<div class="description req-true">
    Should condition be evaluated for all children?
    If not checked, then the condition is only evaluated on entry.
    </div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="example">
<div class="title">Examples (JavaScript)<a class="sectionlink" href="#example_if_javascript" title="Link to here">&para;</a>
</div>
        
<ul>
            
<li>
<span class="code">${COUNT} &lt; 10</span>
</li>
            
<li>
<span class="code">"${VAR}" == "abcd"</span>
</li>
        
</ul>
        If there is an error interpreting the code, the condition is assumed to be <span class="code">false</span>, and a message is logged in <span class="code">jmeter.log</span>.
        <div class="clear"></div>
<div class="note">Note it is advised to avoid using JavaScript mode for performance.<br>
<br>When using <span class="code"><a href="../usermanual/functions.html#__groovy">__groovy</a></span> take care to not use variable replacement in the string, otherwise if using a variable that changes the script cannot be cached.  Instead get the variable using: <span class="code">vars.get("myVar").</span>  See the Groovy examples below.</div>
<div class="clear"></div>
    
</div>
<div class="example">
<div class="title">Examples (Variable Expression)<a class="sectionlink" href="#example_if_variable" title="Link to here">&para;</a>
</div>
        
<ul>
            
<li>
<span class="code">${__groovy(vars.get("myVar") != "Invalid" )}</span> (Groovy check myVar is not equal to Invalid)</li>
            
<li>
<span class="code">${__groovy(vars.get("myInt").toInteger() &lt;=4 )}</span> (Groovy check myInt is less then or equal to 4)</li>
            
<li>
<span class="code">${__groovy(vars.get("myMissing") != null )}</span> (Groovy check if the myMissing variable is not set)</li>
            
<li>
<span class="code">${__jexl3(${COUNT} &lt; 10)}</span>
</li>
            
<li>
<span class="code">${RESULT}</span>
</li>
            
<li>
<span class="code">${JMeterThread.last_sample_ok}</span> (check if the last sample succeeded)</li>
        
</ul>
    
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>









<div class="component">
<h2 id="While_Controller">While Controller<a class="sectionlink" href="#While_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The While Controller runs its children until the condition is "<span class="code">false</span>".
<div class="clear"></div>
<div class="note">JMeter will expose the looping index as a variable named <span class="code">__jm__&lt;Name of your element&gt;__idx</span>. So for
example, if your While Controller is named WC, then you can access the looping index through <span class="code">${__jm__WC__idx}</span>.
Index starts at 0</div>
<div class="clear"></div>

</p>


<p>Possible condition values:</p>

<ul>

<li>blank - exit loop when last sample in loop fails</li>

<li>
<span class="code">LAST</span> - exit loop when last sample in loop fails.
If the last sample just before the loop failed, don't enter loop.</li>

<li>Otherwise - exit (or don't enter) the loop when the condition is equal to the string "<span class="code">false</span>"</li>

</ul>

<div class="clear"></div>
<div class="note">
The condition can be any variable or function that eventually evaluates to the string "<span class="code">false</span>".
This allows the use of <span class="code"><a href="../usermanual/functions.html#__jexl3">__jexl3</a></span>, <span class="code"><a href="../usermanual/functions.html#__groovy">__groovy</a></span> function, properties or variables as needed.
</div>
<div class="clear"></div>

<br>

<div class="clear"></div>
<div class="note">
Note that the condition is evaluated twice, once before starting sampling children and once at end of children sampling, so putting
non idempotent functions in Condition (like <span class="code"><a href="../usermanual/functions.html#__counter">__counter</a></span>) can introduce issues.
</div>
<div class="clear"></div>

<br>
For example:
<ul>
    
<li>
<span class="code">${VAR}</span> - where <span class="code">VAR</span> is set to false by some other test element</li>
    
<li>
<span class="code">${__jexl3(${C}==10)}</span>
</li>
    
<li>
<span class="code">${__jexl3("${VAR2}"=="abcd")}</span>
</li>
    
<li>
<span class="code">${_P(property)}</span> - where property is set to "<span class="code">false</span>" somewhere else</li>

</ul>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/whilecontroller.png"><img src="../images/screenshots/whilecontroller.png" width="362" height="102" alt="Screenshot for Control-Panel of While Controller"></a>
<figcaption>Screenshot of Control-Panel of While Controller</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="While_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#While_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this controller that is shown in the tree, and used to name the transaction.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Condition</div>
<div class="description req-false">blank, <span class="code">LAST</span>, or variable/function</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Switch_Controller">Switch Controller<a class="sectionlink" href="#Switch_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The Switch Controller acts like the <a href="../usermanual/component_reference.html#Interleave_Controller">Interleave Controller</a> 
in that it runs one of the subordinate elements on each iteration, but rather than
run them in sequence, the controller runs the element defined by the switch value.
</p>

<div class="clear"></div>
<div class="note">
The switch value can also be a name.
</div>
<div class="clear"></div>

<p>If the switch value is out of range, it will run the zeroth element, 
which therefore acts as the default for the numeric case.
It also runs the zeroth element if the value is the empty string.</p>

<p>
If the value is non-numeric (and non-empty), then the Switch Controller looks for the
element with the same name (case is significant).
If none of the names match, then the element named "<span class="code">default</span>" (case not significant) is selected.
If there is no default, then no element is selected, and the controller will not run anything.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/switchcontroller.png"><img src="../images/screenshots/switchcontroller.png" width="361" height="106" alt="Screenshot for Control-Panel of Switch Controller"></a>
<figcaption>Screenshot of Control-Panel of Switch Controller</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Switch_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#Switch_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this controller that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Switch Value</div>
<div class="description req-false">The number (or name) of the subordinate element to be invoked. Elements are numbered from 0. Defaults to 0</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="ForEach_Controller">ForEach Controller<a class="sectionlink" href="#ForEach_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>A ForEach controller loops through the values of a set of related variables. 
When you add samplers (or controllers) to a ForEach controller, every sample (or controller)
is executed one or more times, where during every loop the variable has a new value.
The input should consist of several variables, each extended with an underscore and a number.
Each such variable must have a value.
So for example when the input variable has the name <span class="code">inputVar</span>, the following variables should have been defined:</p>
        
<ul>
        
<li>
<span class="code">inputVar_1 = wendy</span>
</li>
        
<li>
<span class="code">inputVar_2 = charles</span>
</li>
        
<li>
<span class="code">inputVar_3 = peter</span>
</li>
        
<li>
<span class="code">inputVar_4 = john</span>
</li>
        
</ul>
        
<p>Note: the "<span class="code">_</span>" separator is now optional.</p>

<p>
When the return variable is given as "<span class="code">returnVar</span>", the collection of samplers and controllers under the ForEach controller will be executed <span class="code">4</span> consecutive times,
with the return variable having the respective above values, which can then be used in the samplers.
</p>

<p>
<div class="clear"></div>
<div class="note">JMeter will expose the looping index as a variable named <span class="code">__jm__&lt;Name of your element&gt;__idx</span>. So for
example, if your Loop Controller is named FEC, then you can access the looping index through <span class="code">${__jm__FEC__idx}</span>.
Index starts at 0</div>
<div class="clear"></div>
</p>

<p>
It is especially suited for running with the regular expression post-processor. 
This can "create" the necessary input variables out of the result data of a previous request.
By omitting the "<span class="code">_</span>" separator, the ForEach Controller can be used to loop through the groups by using
the input variable <span class="code">refName_g</span>, and can also loop through all the groups in all the matches
by using an input variable of the form <span class="code">refName_${C}_g</span>, where <span class="code">C</span> is a counter variable.
</p>

<div class="clear"></div>
<div class="note">The ForEach Controller does not run any samples if <span class="code">inputVar_1</span> is <span class="code">null</span>.
This would be the case if the Regular Expression returned no matches.</div>
<div class="clear"></div>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/logic-controller/foreach-controller.png"><img src="../images/screenshots/logic-controller/foreach-controller.png" width="342" height="193" alt="Screenshot for Control-Panel of ForEach Controller"></a>
<figcaption>Screenshot of Control-Panel of ForEach Controller</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="ForEach_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#ForEach_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this controller that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Input variable prefix</div>
<div class="description req-false">Prefix for the variable names to be used as input. Defaults to an empty string as prefix.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Start index for loop</div>
<div class="description req-false">Start index (exclusive) for loop over variables (first element is at start index + 1)</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">End index for loop</div>
<div class="description req-false">End index (inclusive) for loop over variables</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Output variable</div>
<div class="description req-false">
                The name of the variable which can be used in the loop for replacement in the samplers. Defaults to an empty variable name, which is most probably not wanted.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Use Separator</div>
<div class="description req-true">If not checked, the "<span class="code">_</span>" separator is omitted.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="example">
<div class="title">ForEach Example<a class="sectionlink" href="#foreach_example" title="Link to here">&para;</a>
</div>


<p>
<a href="../demos/forEachTestPlan.jmx">Download</a> this example (see Figure 7).
In this example, we created a Test Plan that sends a particular HTTP Request
only once and sends another HTTP Request to every link that can be found on the page.</p>


<figure>
<a href="../images/screenshots/logic-controller/foreach-example.png"><img src="../images/screenshots/logic-controller/foreach-example.png" width="300" height="158" alt="Figure 7 - ForEach Controller Example"></a>
<figcaption>Figure 7 - ForEach Controller Example</figcaption>
</figure>


<p>We configured the Thread Group for a single thread and a loop count value of
one. You can see that we added one HTTP Request to the Thread Group and
another HTTP Request to the ForEach Controller.</p>

<p>After the first HTTP request, a regular expression extractor is added, which extracts all the html links
out of the return page and puts them in the <span class="code">inputVar</span> variable</p>

<p>In the ForEach loop, a HTTP sampler is added which requests all the links that were extracted from the first returned HTML page.
</p>
</div>
<div class="example">
<div class="title">ForEach Example<a class="sectionlink" href="#foreach_example2" title="Link to here">&para;</a>
</div>

<p>Here is <a href="../demos/ForEachTest2.jmx">another example</a> you can download. 
This has two Regular Expressions and ForEach Controllers.
The first RE matches, but the second does not match, 
so no samples are run by the second ForEach Controller</p>

<figure>
<a href="../images/screenshots/logic-controller/foreach-example2.png"><img src="../images/screenshots/logic-controller/foreach-example2.png" width="237" height="249" alt="Figure 8 - ForEach Controller Example 2"></a>
<figcaption>Figure 8 - ForEach Controller Example 2</figcaption>
</figure>

<p>The Thread Group has a single thread and a loop count of two.
</p>
<p>
Sample 1 uses the JavaTest Sampler to return the string "<span class="code">a b c d</span>".
</p>
<p>The Regex Extractor uses the expression <span class="code">(\w)\s</span> which matches a letter followed by a space,
and returns the letter (not the space). Any matches are prefixed with the string "<span class="code">inputVar</span>".
</p>
<p>The ForEach Controller extracts all variables with the prefix "<span class="code">inputVar_</span>", and executes its
sample, passing the value in the variable "<span class="code">returnVar</span>". In this case it will set the variable to the values "<span class="code">a</span>" "<span class="code">b</span>" and "<span class="code">c</span>" in turn.
</p>
<p>The <span class="code">For 1</span> Sampler is another Java Sampler which uses the return variable "<span class="code">returnVar</span>" as part of the sample Label
and as the sampler Data.
</p>
<p>
<span class="code">Sample 2</span>, <span class="code">Regex 2</span> and <span class="code">For 2</span> are almost identical, except that the Regex has been changed to "<span class="code">(\w)\sx</span>",
which clearly won't match. Thus the <span class="code">For 2</span> Sampler will not be run.
</p>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Module_Controller">Module Controller<a class="sectionlink" href="#Module_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The Module Controller provides a mechanism for substituting test plan fragments into the current test plan at run-time.
</p>

<p>
A test plan fragment consists of a Controller and all the test elements (samplers etc.) contained in it. 
The fragment can be located in any Thread Group.
If the fragment is located in a Thread Group, then its Controller can be disabled to prevent the fragment being run
except by the Module Controller. 
Or you can store the fragments in a dummy Thread Group, and disable the entire Thread Group. 
</p>

<p>
There can be multiple fragments, each with a different series of
samplers under them.  The module controller can then be used to easily switch between these multiple test cases simply by choosing
the appropriate controller in its drop down box.  This provides convenience for running many alternate test plans quickly and easily.
</p>

<p>
A fragment name is made up of the Controller name and all its parent names.
For example:
</p>

<pre>
Test Plan / Protocol: JDBC / Control / Interleave Controller (Module1)
</pre>

<p>
Any <b>fragments used by the Module Controller must have a unique name</b>,
as the name is used to find the target controller when a test plan is reloaded.
For this reason it is best to ensure that the Controller name is changed from the default
- as shown in the example above -
otherwise a duplicate may be accidentally created when new elements are added to the test plan. 
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/module_controller.png"><img src="../images/screenshots/module_controller.png" width="526" height="318" alt="Screenshot for Control-Panel of Module Controller"></a>
<figcaption>Screenshot of Control-Panel of Module Controller</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Module_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#Module_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this controller that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Module to Run</div>
<div class="description req-true">The module controller provides a list of all controllers loaded into the gui.  Select
        the one you want to substitute in at runtime.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Include_Controller">Include Controller<a class="sectionlink" href="#Include_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The include controller is designed to use an external JMX file. To use it, create a Test Fragment 
underneath the Test Plan and add any desired samplers, controllers etc. below it.
Then save the Test Plan.  The file is now ready to be included as part of other Test Plans.
</p>

<p>
For convenience, a <a href="../usermanual/component_reference.html#Thread_Group">Thread Group</a> can also be added in the external JMX file for debugging purposes.
A <a href="../usermanual/component_reference.html#Module_Controller">Module Controller</a> can be used to reference the Test Fragment.  The <a href="../usermanual/component_reference.html#Thread_Group">Thread Group</a> will be ignored during the 
include process.
</p>

<p>
If the test uses a Cookie Manager or User Defined Variables, these should be placed in the top-level
test plan, not the included file, otherwise they are not guaranteed to work.
</p>

<div class="clear"></div>
<div class="note">
This element does not support variables/functions in the filename field.<br>
However, if the property <span class="code">includecontroller.prefix</span> is defined, 
the contents are used to prefix the pathname.
</div>
<div class="clear"></div>

<div class="clear"></div>
<div class="note">
When using Include Controller and including the same JMX file, ensure you name the Include Controller differently to avoid facing known issue <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=50898">
      Bug
      50898</a>.
</div>
<div class="clear"></div>

<p>
If the file cannot be found at the location given by <span class="code">prefix</span>+<span class="code">Filename</span>, then the controller
attempts to open the <span class="code">Filename</span> relative to the JMX launch directory.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/includecontroller.png"><img src="../images/screenshots/includecontroller.png" width="417" height="130" alt="Screenshot for Control-Panel of Include Controller"></a>
<figcaption>Screenshot of Control-Panel of Include Controller</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Include_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#Include_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-true">Filename</div>
<div class="description req-true">The file to include.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Transaction_Controller">Transaction Controller<a class="sectionlink" href="#Transaction_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">
        
<p>
        The Transaction Controller generates an additional
        sample which measures the overall time taken to perform the nested test elements.
        </p>
        
<div class="clear"></div>
<div class="note">
        Note: when the check box "<span class="code">Include duration of timer and pre-post processors in generated sample</span>" is checked,
        the time includes all processing within the controller scope, not just the samples.
        </div>
<div class="clear"></div>
        
<p>
        There are two modes of operation:
        </p>
        
<ul>
        
<li>additional sample is added after the nested samples</li>
        
<li>additional sample is added as a parent of the nested samples</li>
        
</ul>
        
<p>
        The generated sample time includes all the times for the nested samplers excluding by default (since 2.11) timers and processing time of pre/post processors 
        unless checkbox "<span class="code">Include duration of timer and pre-post processors in generated sample</span>" is checked.
        Depending on the clock resolution, it may be slightly longer than the sum of the individual samplers plus timers.
        The clock might tick after the controller recorded the start time but before the first sample starts.
        Similarly at the end.
        </p>
        
<p>The generated sample is only regarded as successful if all its sub-samples are successful.</p>
        
<p>
        In parent mode, the individual samples can still be seen in the Tree View Listener,
        but no longer appear as separate entries in other Listeners.
        Also, the sub-samples do not appear in CSV log files, but they can be saved to XML files.
        </p>
        
<div class="clear"></div>
<div class="note">
        In parent mode, Assertions (etc.) can be added to the Transaction Controller.
        However by default they will be applied to both the individual samples and the overall transaction sample.
        To limit the scope of the Assertions, use a Simple Controller to contain the samples, and add the Assertions
        to the Simple Controller.
        Parent mode controllers do not currently properly support nested transaction controllers of either type.
        </div>
<div class="clear"></div>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/transactioncontroller.png"><img src="../images/screenshots/transactioncontroller.png" width="622" height="140" alt="Screenshot for Control-Panel of Transaction Controller"></a>
<figcaption>Screenshot of Control-Panel of Transaction Controller</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Transaction_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#Transaction_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this controller that is shown in the tree, and used to name the transaction.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Generate Parent Sample</div>
<div class="description req-true">
    If checked, then the sample is generated as a parent of the other samples,
    otherwise the sample is generated as an independent sample.
    </div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Include duration of timer and pre-post processors in generated sample</div>
<div class="description req-true">
    Whether to include timer, pre- and post-processing delays in the generated sample.
    Default is <span class="code">false</span>
    
</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Recording_Controller">Recording Controller<a class="sectionlink" href="#Recording_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>The Recording Controller is a place holder indicating where the proxy server should
record samples to.  During test run, it has no effect, similar to the Simple Controller.  But during
recording using the <a href="../usermanual/component_reference.html#HTTP(S)_Test_Script_Recorder">HTTP(S) Test Script Recorder</a>, all recorded samples will by default
be saved under the Recording Controller.</p>


</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/logic-controller/recording-controller.png"><img src="../images/screenshots/logic-controller/recording-controller.png" width="420" height="79" alt="Screenshot for Control-Panel of Recording Controller"></a>
<figcaption>Screenshot of Control-Panel of Recording Controller</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Recording_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#Recording_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this controller that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Critical_Section_Controller">Critical Section Controller<a class="sectionlink" href="#Critical_Section_Controller" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>The Critical Section Controller ensures that its children elements (samplers/controllers, etc.) will be executed
by only one thread as a named lock will be taken before executing children of controller.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/logic-controller/critical-section-controller.png"><img src="../images/screenshots/logic-controller/critical-section-controller.png" width="469" height="129" alt="Screenshot for Control-Panel of Critical Section Controller"></a>
<figcaption>Screenshot of Control-Panel of Critical Section Controller</figcaption>
</figure>
</div>
<p>
    The figure below shows an example of using Critical Section Controller, in the figure below 2 Critical Section Controllers ensure
    that:
</p>
<ul>
        
<li>
<span class="code">DS2-${__threadNum}</span> is executed only by one thread at a time</li>
        
<li>
<span class="code">DS4-${__threadNum}</span> is executed only by one thread at a time</li>
    
</ul>
<figure>
<a href="../images/screenshots/logic-controller/critical-section-controller-tp.png"><img src="../images/screenshots/logic-controller/critical-section-controller-tp.png" width="276" height="237" alt="Test Plan using Critical Section Controller"></a>
<figcaption>Test Plan using Critical Section Controller</figcaption>
</figure>
<div class="properties">
<h3 id="Critical_Section_Controller_parms1">
        Parameters
        <a class="sectionlink" href="#Critical_Section_Controller_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Lock Name</div>
<div class="description req-true">Lock that will be taken by controller, ensure you use different lock names for unrelated sections</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="clear"></div>
<div class="note">
Critical Section Controller takes locks only within one JVM, so if using Distributed testing ensure your use case does not rely on all threads of all JVMs blocking.
</div>
<div class="clear"></div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<a href="#">^</a>


</div>
<div class="section">
<h1 id="listeners">18.3 Listeners<a class="sectionlink" href="#listeners" title="Link to here">&para;</a>
</h1>

<div class="description">
    
<br>
Most of the listeners perform several roles in addition to "listening"
to the test results.  
They also provide means to view, save, and read saved test results.
<p>Note that Listeners are processed at the end of the scope in which they are found.</p>

<p>
The saving and reading of test results is generic.  The various
listeners have a panel whereby one can specify the file to
which the results will be written (or read from).
By default, the results are stored as XML
files, typically with a "<span class="code">.jtl</span>" extension.
Storing as CSV is the most efficient option, but is less detailed than XML (the other available option).
</p>

<p>

<b>Listeners do <i>not</i> process sample data in CLI mode, but the raw data will be saved if an output
file has been configured.</b>
In order to analyse the data generated by a CLI run, you need to load the file into the appropriate
Listener.
</p>

<div class="clear"></div>
<div class="note">
To read existing results and display them, use the file panel Browse button to open the file.
</div>
<div class="clear"></div>

<p>
If you want to clear any current data before loading a new file, use the menu item
<span class="menuchoice"><span class="guimenuitem">Run</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">Clear</span>
    (<span class="keycombo"><span class="keysym">Ctrl</span>&nbsp;+&nbsp;<span class="keysym">Shift</span>&nbsp;+&nbsp;<span class="keysym">E</span></span>)
  </span>
or
<span class="menuchoice"><span class="guimenuitem">Run</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">Clear All</span>
    (<span class="keycombo"><span class="keysym">Ctrl</span>&nbsp;+&nbsp;<span class="keysym">E</span></span>)
  </span>
before loading the file.
</p>

<p>Results can be read from XML or CSV format files.
When reading from CSV results files, the header (if present) is used to determine which fields are present.
<b>In order to interpret a header-less CSV file correctly, the appropriate properties must be set in <span class="code">jmeter.properties</span>.</b>

<div class="clear"></div>
<div class="note">
XML files written by JMeter have version 1.0 declared in header while actual file is serialized with 1.1 rules. 
(This is done for historical compatibility reasons; see <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=59973">
      Bug
      59973</a> and <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=58679">
      Bug
      58679</a>) 
This causes strict XML parsers to fail. Consider using non-strict XML parsers to read JTL files.
</div>
<div class="clear"></div>

</p>

<div class="clear"></div>
<div class="note">
The file name can contain function and/or variable references.
However variable references do not work in client-server mode (functions work OK).
This is because the file is created on the client, and the client does not run the test locally so does not set up variables.
</div>
<div class="clear"></div>

<p>
<b>Listeners can use a lot of memory if there are a lot of samples.</b>
Most of the listeners currently keep a copy of every sample in their scope, apart from:
</p>

<ul>

<li>Simple Data Writer</li>

<li>BeanShell/JSR223 Listener</li>

<li>Mailer Visualizer</li>

<li>Summary Report</li>

</ul>

<p>
The following Listeners no longer need to keep copies of every single sample.
Instead, samples with the same elapsed time are aggregated.
Less memory is now needed, especially if most samples only take a second or two at most.
</p>

<ul>

<li>Aggregate Report</li>

<li>Aggregate Graph</li>

</ul>

<p>To minimise the amount of memory needed, use the Simple Data Writer, and use the CSV format.</p>

<div class="clear"></div>
<div class="note">
JMeter variables can be saved to the output files.
This can only be specified using a property.
See the <a href="listeners.html#sample_variables">Listener Sample Variables</a> for details
</div>
<div class="clear"></div>

<p>
For full details on setting up the default items to be saved
see the <a href="listeners.html#defaults">Listener Default Configuration</a> documentation.
For details of the contents of the output files,
see the <a href="listeners.html#csvlogformat">CSV log</a> format or
the <a href="listeners.html#xmlformat2.1">XML log</a> format.
</p>

<div class="clear"></div>
<div class="note">The entries in <span class="code">jmeter.properties</span> are used to define the defaults; 
these can be overridden for individual listeners by using the Configure button,
as shown below. 
The settings in <span class="code">jmeter.properties</span> also apply to the listener that is added
by using the <span class="code">-l</span> command-line flag.
</div>
<div class="clear"></div>

<p>
    The figure below shows an example of the result file configuration panel
</p>

<figure>
<a href="../images/screenshots/simpledatawriter.png"><img src="../images/screenshots/simpledatawriter.png" width="741" height="141" alt="Result file configuration panel"></a>
<figcaption>Result file configuration panel</figcaption>
</figure>

<div class="properties">
<h3>
        Parameters
        </h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Filename</div>
<div class="description req-false">Name of the file containing sample results.
        The file name can be specified using either a relative or an absolute path name.
        Relative paths are resolved relative to the current working directory (which defaults to the <span class="code">bin/</span> directory).
        JMeter also support paths relative to the directory containing the current test plan (JMX file).
        If the path name begins with "<span class="code">~/</span>" (or whatever is in the <span class="code">jmeter.save.saveservice.base_prefix</span> JMeter property),
        then the path is assumed to be relative to the JMX file location. 
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Browse &hellip;</div>
<div class="description req-false">File Browse Button</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Errors</div>
<div class="description req-false">Select this to write/read only results with errors</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Successes</div>
<div class="description req-false">Select this to write/read only results without errors.
        If neither <span class="code">Errors</span> nor <span class="code">Successes</span> is selected, then all results are processed.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Configure</div>
<div class="description req-false">Configure Button, see below</div>
<div class="required req-false">No</div>
</div>

</div>

</div>


<div class="component">
<h2 id="Sample_Result_Save_Configuration">Sample Result Save Configuration<a class="sectionlink" href="#Sample_Result_Save_Configuration" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
Listeners can be configured to save different items to the result log files (JTL) by using the Config popup as shown below.
The defaults are defined as described in  the <a href="listeners.html#defaults">Listener Default Configuration</a> documentation.
Items with (<span class="code">CSV</span>) after the name only apply to the CSV format; items with (<span class="code">XML</span>) only apply to XML format.
CSV format cannot currently be used to save any items that include line-breaks.
</p>

<p>
Note that cookies, method and the query string are saved as part of the "<span class="code">Sampler Data</span>" option.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/sample_result_config.png"><img src="../images/screenshots/sample_result_config.png" width="760" height="304" alt="Screenshot for Control-Panel of Sample Result Save Configuration"></a>
<figcaption>Screenshot of Control-Panel of Sample Result Save Configuration</figcaption>
</figure>
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Graph_Results">Graph Results<a class="sectionlink" href="#Graph_Results" title="Link to here">&para;</a>
</h2>
<div class="description">

<div class="clear"></div>
<div class="note">
Graph Results MUST NOT BE USED during load test as it consumes a lot of resources (memory and CPU). Use it only for either functional testing or 
during Test Plan debugging and Validation.
</div>
<div class="clear"></div>

<p>The Graph Results listener generates a simple graph that plots all sample times.  Along
the bottom of the graph, the current sample (black), the current average of all samples (blue), the
current standard deviation (red), and the current throughput rate (green) are displayed in milliseconds.</p>

<p>The throughput number represents the actual number of requests/minute the server handled.  This calculation
includes any delays you added to your test and JMeter's own internal processing time.  The advantage
of doing the calculation like this is that this number represents something
real - your server in fact handled that many requests per minute, and you can increase the number of threads
and/or decrease the delays to discover your server's maximum throughput.  Whereas if you made calculations
that factored out delays and JMeter's processing, it would be unclear what you could conclude from that
number.</p>
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/graph_results.png"><img src="../images/screenshots/graph_results.png" width="915" height="686" alt="Screenshot for Control-Panel of Graph Results"></a>
<figcaption>Screenshot of Control-Panel of Graph Results</figcaption>
</figure>
</div>
<p>The following table briefly describes the items on the graph. 
Further details on the precise meaning of the statistical terms can be found on the web
 - e.g. Wikipedia - or by consulting a book on statistics.
 </p>
<ul>
 
<li>
<span class="code">Data</span> - plot the actual data values</li>
 
<li>
<span class="code">Average</span> - plot the Average</li>
 
<li>
<span class="code">Median</span> - plot the <a href="glossary.html#Median">Median</a> (midway value)</li>
 
<li>
<span class="code">Deviation</span> - plot the <a href="glossary.html#StandardDeviation">Standard Deviation</a> (a measure of the variation)</li>
 
<li>
<span class="code">Throughput</span> - plot the number of samples per unit of time</li>
 
</ul>
<p>The individual figures at the bottom of the display are the current values. 
 "<span class="code">Latest Sample</span>" is the current elapsed sample time, shown on the graph as "<span class="code">Data</span>".</p>
<p>The value displayed on the top left of graph is the max of 90<sup>th</sup> percentile of response time.</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Assertion_Results">Assertion Results<a class="sectionlink" href="#Assertion_Results" title="Link to here">&para;</a>
</h2>
<div class="description">

<div class="clear"></div>
<div class="note">
Assertion Results MUST NOT BE USED during load test as it consumes a lot of resources (memory and CPU). Use it only for either functional testing or 
during Test Plan debugging and Validation.
</div>
<div class="clear"></div>

<p>The Assertion Results visualizer shows the Label of each sample taken.
It also reports failures of any <a href="test_plan.html#assertions">Assertions</a> that
are part of the test plan.</p>
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/assertion_results.png"><img src="../images/screenshots/assertion_results.png" width="954" height="365" alt="Screenshot for Control-Panel of Assertion Results"></a>
<figcaption>Screenshot of Control-Panel of Assertion Results</figcaption>
</figure>
</div>
<div class="links">
<div class="title">See also:</div>
<ul class="links">
<li>
<a href="../usermanual/component_reference.html#Response_Assertion">Response Assertion</a>
</li>
</ul>
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="View_Results_Tree">View Results Tree<a class="sectionlink" href="#View_Results_Tree" title="Link to here">&para;</a>
</h2>
<div class="description">

<div class="clear"></div>
<div class="note">
View Results Tree MUST NOT BE USED during load test as it consumes a lot of resources (memory and CPU).
Use it only for either functional testing or during Test Plan debugging and Validation.
</div>
<div class="clear"></div>
The View Results Tree shows a tree of all sample responses, allowing you to view the
response for any sample.  In addition to showing the response, you can see the time it took to get
this response, and some response codes.
Note that the Request panel only shows the headers added by JMeter.
It does not show any headers (such as <span class="code">Host</span>) that may be added by the HTTP protocol implementation.
<p>
There are several ways to view the response, selectable by a drop-down box at the bottom of the left hand panel.</p>


<table>

<tr>
<th><b>Renderer</b></th><th><b>Description</b></th>
</tr>

<tr>
<td><span class="code">CSS/JQuery Tester</span></td>
<td>The <i>CSS/JQuery Tester</i> only works for text responses. It shows the plain text in the upper panel.
The "<span class="code">Test</span>" button allows the user to apply the CSS/JQuery to the upper panel and the results
will be displayed in the lower panel.<br>
The CSS/JQuery expression engine can be JSoup or Jodd, syntax of these 2 implementation differs slightly.<br>
For example, the Selector <span class="code">a[class=sectionlink]</span> with attribute <span class="code">href</span> applied to the current JMeter functions page gives the following output:
<br>

<pre class="source">
Match count: 74
Match[1]=#functions
Match[2]=#what_can_do
Match[3]=#where
Match[4]=#how
Match[5]=#function_helper
Match[6]=#functions
Match[7]=#__regexFunction
Match[8]=#__regexFunction_parms
Match[9]=#__counter
&hellip; and so on &hellip;
</pre>

<br>
</td>
</tr>

<tr>
<td><span class="code">Document</span></td>
<td>The <i>Document view</i> will show the extract text from various type of documents like Microsoft Office
(Word, Excel, PowerPoint 97-2003, 2007-2010 (openxml), Apache OpenOffice (writer, calc, impress), HTML,
gzip, jar/zip files (list of content), and some meta-data on "multimedia" files like mp3, mp4, flv, etc. The complete list of 
support format is available on <a href="http://tika.apache.org/1.2/formats.html">Apache Tika format page.</a>

<div class="clear"></div>
<div class="note">A requirement to the <span class="code">Document view</span> is to download the <a href="http://tika.apache.org/download.html">
Apache Tika binary package</a> (<span class="code">tika-app-x.x.jar</span>) and put this in <span class="code">JMETER_HOME/lib</span> directory.
</div>
<div class="clear"></div>
If the document is larger than 10 MB, then it won't be displayed.
To change this limit, set the JMeter property <span class="code">document.max_size</span> (unit is byte) or set to <span class="code">0</span> to remove the limit.
<br>
</td>
</tr>

<tr>
<td><span class="code">HTML</span></td>
<td>The <i>HTML view</i> attempts to render the response as
HTML.  The rendered HTML is likely to compare poorly to the view one
would get in any web browser; however, it does provide a quick
approximation that is helpful for initial result evaluation.<br>
Images, style-sheets, etc. aren't downloaded. 
<br>
</td>
</tr>

<tr>
<td><span class="code">HTML (download resources)</span></td>
<td>If the <i>HTML (download resources) view</i> option is selected, the renderer
may download images, style-sheets, etc. referenced by the HTML code. 
<br>
</td>
</tr>

<tr>
<td><span class="code">HTML Source formatted</span></td>
<td>If the <em>HTML Source formatted view</em> option is selected, the renderer will display the HTML source code formatted and cleaned by <a href="https://jsoup.org/">Jsoup</a>. 
<br>
</td>
</tr>

<tr>
<td><span class="code">JSON</span></td>
<td>The <i>JSON view</i> will show the response in tree style (also handles JSON embedded in JavaScript).
<br>
</td>
</tr>

<tr>
<td><span class="code">JSON Path Tester</span></td>
<td>The <i>JSON Path Tester view</i> will let you test your JSON-PATH expressions and see the extracted data from a particular response.
<br>
</td>
</tr>

<tr>
<td><span class="code">JSON JMESPath Tester</span></td>
<td>The <i>JSON JMESPath Tester view</i> will let you test your <a href="http://jmespath.org/">JMESPath</a> expressions and see the extracted data from a particular response.
<br>
</td>
</tr>

<tr>
<td><span class="code">Regexp Tester</span></td>
<td>The <i>Regexp Tester view</i> only works for text responses. It shows the plain text in the upper panel.
The "<span class="code">Test</span>" button allows the user to apply the Regular Expression to the upper panel and the results
will be displayed in the lower panel.<br>
The regular expression engine is the same as that used in the Regular Expression Extractor.<br>
For example, the RE <span class="code">(JMeter\w*).*</span> applied to the current JMeter home page gives the following output:
<br>

<pre class="source">
Match count: 26
Match[1][0]=JMeter - Apache JMeter&lt;/title&gt;
Match[1][1]=JMeter
Match[2][0]=JMeter" title="JMeter" border="0"/&gt;&lt;/a&gt;
Match[2][1]=JMeter
Match[3][0]=JMeterCommitters"&gt;Contributors&lt;/a&gt;
Match[3][1]=JMeterCommitters
&hellip; and so on &hellip;
</pre>

<br>
The first number in <span class="code">[]</span> is the match number; the second number is the group. 
Group <span class="code">[0]</span> is whatever matched the whole RE.
Group <span class="code">[1]</span> is whatever matched the 1<sup>st</sup> group, i.e. <span class="code">(JMeter\w*)</span> in this case.
See Figure 9b (below).
<br>
</td>
</tr>

<tr>
<td><span class="code">Text</span></td>
<td>
The default <i>Text view</i> shows all of the text contained in the response. 
Note that this will only work if the response <span class="code">content-type</span> is considered to be text.
If the <span class="code">content-type</span> begins with any of the following, it is considered as binary,
otherwise it is considered to be text.
<pre class="source">
image/
audio/
video/
</pre>

<br>
</td>
</tr>

<tr>
<td><span class="code">XML</span></td>
<td>The <i>XML view</i> will show response in tree style.
Any DTD nodes or Prolog nodes will not show up in tree; however, response may contain those nodes.
You can right-click on any node and expand or collapse all nodes below it.
<br>
</td>
</tr>

<tr>
<td><span class="code">XPath Tester</span></td>
<td>The <i>XPath Tester</i> only works for text responses. It shows the plain text in the upper panel.
The "<span class="code">Test</span>" button allows the user to apply the XPath query to the upper panel and the results
will be displayed in the lower panel.<br>

</td>
</tr>

<tr>
<td><span class="code">Boundary Extractor Tester </span></td>
<td>The <i>Boundary Extractor Tester</i> only works for text responses. It shows the plain text in the upper panel.
The "<span class="code">Test</span>" button allows the user to apply the Boundary Extractor query to the upper panel and the results
will be displayed in the lower panel.<br>

</td>
</tr>

</table>

<p>
<span class="code">Scroll automatically?</span> option permit to have last node display in tree selection</p>

<div class="clear"></div>
<div class="note">Starting with version 3.2 the number of entries in the View is restricted to the value of the
property <span class="code">view.results.tree.max_results</span> which defaults to <span class="code">500</span> entries. The old
behaviour can be restored by setting the property to <span class="code">0</span>. Beware, that this might consume
a lot of memory.</div>
<div class="clear"></div>

<p>
With <span class="code">Search</span> option, most of the views also allow the displayed data to be searched; the result of the search will be high-lighted
in the display above. For example the Control panel screenshot below shows one result of searching for "<span class="code">Java</span>".
Note that the search operates on the visible text, so you may get different results when searching
the Text and HTML views.
<br>Note: The regular expression uses the Java engine (not ORO engine like the Regular Expression Extractor or Regexp Tester view).
</p>

<p>
If there is no <span class="code">content-type</span> provided, then the content
will not be displayed in the any of the Response Data panels.
You can use <a href="../usermanual/component_reference.html#Save_Responses_to_a_file">Save Responses to a file</a> to save the data in this case.
Note that the response data will still be available in the sample result,
so can still be accessed using Post-Processors.
</p>

<p>If the response data is larger than 200K, then it won't be displayed.
To change this limit, set the JMeter property <span class="code">view.results.tree.max_size</span>.
You can also use save the entire response to a file using
<a href="../usermanual/component_reference.html#Save_Responses_to_a_file">Save Responses to a file</a>.
</p>

<p>
Additional renderers can be created.
The class must implement the interface <span class="code">org.apache.jmeter.visualizers.ResultRenderer</span>
and/or extend the abstract class <span class="code">org.apache.jmeter.visualizers.SamplerResultTab</span>, and the
compiled code must be available to JMeter (e.g. by adding it to the <span class="code">lib/ext</span> directory).
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/view_results_tree.png"><img src="../images/screenshots/view_results_tree.png" width="910" height="659" alt="Screenshot for Control-Panel of View Results Tree"></a>
<figcaption>Screenshot of Control-Panel of View Results Tree</figcaption>
</figure>
</div>
<p>
    The Control Panel (above) shows an example of an HTML display.<br>
    Figure 9 (below) shows an example of an XML display.<br>
    Figure 9a (below) shows an example of a Regexp tester display.<br>
    Figure 9b (below) shows an example of a Document display.<br>

</p>
<div align="center">

<figure>
<a href="../images/screenshots/view_results_tree_xml.png"><img src="../images/screenshots/view_results_tree_xml.png" width="903" height="657" alt="Figure 9 Sample XML display"></a>
<figcaption>Figure 9 Sample XML display</figcaption>
</figure>

<figure>
<a href="../images/screenshots/view_results_tree_regex.png"><img src="../images/screenshots/view_results_tree_regex.png" width="904" height="653" alt="Figure 9a Sample Regexp Test display"></a>
<figcaption>Figure 9a Sample Regexp Test display</figcaption>
</figure>

<figure>
<a href="../images/screenshots/view_results_tree_document.png"><img src="../images/screenshots/view_results_tree_document.png" width="849" height="655" alt="Figure 9b Sample Document (here PDF) display"></a>
<figcaption>Figure 9b Sample Document (here PDF) display</figcaption>
</figure>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Aggregate_Report">Aggregate Report<a class="sectionlink" href="#Aggregate_Report" title="Link to here">&para;</a>
</h2>
<div class="description">The aggregate report creates a table row for each differently named request in your
test.  For each request, it totals the response information and provides request count, min, max,
average, error rate, approximate throughput (request/second) and Kilobytes per second throughput.
Once the test is done, the throughput is the actual through for the duration of the entire test.
<p>
The throughput is calculated from the point of view of the sampler target 
(e.g. the remote server in the case of HTTP samples).
JMeter takes into account the total time over which the requests have been generated.
If other samplers and timers are in the same thread, these will increase the total time,
and therefore reduce the throughput value. 
So two identical samplers with different names will have half the throughput of two samplers with the same name.
It is important to choose the sampler names correctly to get the best results from
the Aggregate Report.
</p>

<p>
Calculation of the <a href="glossary.html#Median">Median</a> and 90% Line (90<sup>th</sup> <a href="glossary.html#Percentile">percentile</a>) values requires additional memory.
JMeter now combines samples with the same elapsed time, so far less memory is used.
However, for samples that take more than a few seconds, the probability is that fewer samples will have identical times,
in which case more memory will be needed.
Note you can use this listener afterwards to reload a CSV or XML results file which is the recommended way to avoid performance impacts.
See the <a href="../usermanual/component_reference.html#Summary_Report">Summary Report</a> for a similar Listener that does not store individual samples and so needs constant memory.
</p>

<div class="clear"></div>
<div class="note">
Starting with JMeter 2.12, you can configure the 3 percentile values you want to compute, this can be done by setting properties:
<ul>
    
<li>
<span class="code">aggregate_rpt_pct1</span>: defaults to 90<sup>th</sup> <a href="glossary.html#Percentile">percentile</a>
</li>
    
<li>
<span class="code">aggregate_rpt_pct2</span>: defaults to 95<sup>th</sup> <a href="glossary.html#Percentile">percentile</a>
</li>
    
<li>
<span class="code">aggregate_rpt_pct3</span>: defaults to 99<sup>th</sup> <a href="glossary.html#Percentile">percentile</a>
</li>

</ul>

</div>
<div class="clear"></div>

<ul>

<li>
<span class="code">Label</span> - The label of the sample.
If "<span class="code">Include group name in label?</span>" is selected, then the name of the thread group is added as a prefix.
This allows identical labels from different thread groups to be collated separately if required.
</li>

<li>
<span class="code"># Samples</span> - The number of samples with the same label</li>

<li>
<span class="code">Average</span> - The average time of a set of results</li>

<li>
<span class="code">Median</span> - The <a href="glossary.html#Median">median</a> is the time in the middle of a set of results.
50% of the samples took no more than this time; the remainder took at least as long.</li>

<li>
<span class="code">90% Line</span> - 90% of the samples took no more than this time.
The remaining samples took at least as long as this. (90<sup>th</sup> <a href="glossary.html#Percentile">percentile</a>)</li>

<li>
<span class="code">95% Line</span> - 95% of the samples took no more than this time.
The remaining samples took at least as long as this. (95<sup>th</sup> <a href="glossary.html#Percentile">percentile</a>)</li>

<li>
<span class="code">99% Line</span> - 99% of the samples took no more than this time.
The remaining samples took at least as long as this. (99<sup>th</sup> <a href="glossary.html#Percentile">percentile</a>)</li>

<li>
<span class="code">Min</span> - The shortest time for the samples with the same label</li>

<li>Max - The longest time for the samples with the same label</li>

<li>
<span class="code">Error %</span> - Percent of requests with errors</li>

<li>
<span class="code">Throughput</span> - the <a href="glossary.html#Throughput">Throughput</a> is measured in requests per second/minute/hour.
The time unit is chosen so that the displayed rate is at least 1.0.
When the throughput is saved to a CSV file, it is expressed in requests/second,
i.e. 30.0 requests/minute is saved as 0.5.
</li>

<li>
<span class="code">Received KB/sec</span> - The throughput measured in received Kilobytes per second</li>

<li>
<span class="code">Sent KB/sec</span> - The throughput measured in sent Kilobytes per second</li>

</ul>

<p>Times are in milliseconds.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/aggregate_report.png"><img src="../images/screenshots/aggregate_report.png" width="1206" height="306" alt="Screenshot for Control-Panel of Aggregate Report"></a>
<figcaption>Screenshot of Control-Panel of Aggregate Report</figcaption>
</figure>
</div>
<div align="center">

<p>
    The figure below shows an example of selecting the "<span class="code">Include group name</span>" checkbox.
</p>

<figure>
<a href="../images/screenshots/aggregate_report_grouped.png"><img src="../images/screenshots/aggregate_report_grouped.png" width="1207" height="298" alt="Sample &quot;"></a>
<figcaption>Sample "<span class="code">Include group name</span>" display</figcaption>
</figure>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="View_Results_in_Table">View Results in Table<a class="sectionlink" href="#View_Results_in_Table" title="Link to here">&para;</a>
</h2>
<div class="description">This visualizer creates a row for every sample result.  
Like the <a href="../usermanual/component_reference.html#View_Results_Tree">View Results Tree</a>, this visualizer uses a lot of memory.
<p>
By default, it only displays the main (parent) samples; it does not display the sub-samples (child samples).
JMeter has a "<span class="code">Child Samples?</span>" check-box.
If this is selected, then the sub-samples are displayed instead of the main samples.  
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/table_results.png"><img src="../images/screenshots/table_results.png" width="966" height="683" alt="Screenshot for Control-Panel of View Results in Table"></a>
<figcaption>Screenshot of Control-Panel of View Results in Table</figcaption>
</figure>
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Simple_Data_Writer">Simple Data Writer<a class="sectionlink" href="#Simple_Data_Writer" title="Link to here">&para;</a>
</h2>
<div class="description">This listener can record results to a file
but not to the UI.  It is meant to provide an efficient means of
recording data by eliminating GUI overhead.
When running in CLI mode, the <span class="code">-l</span> flag can be used to create a data file.
The fields to save are defined by JMeter properties.
See the <span class="code">jmeter.properties</span> file for details.
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/simpledatawriter.png"><img src="../images/screenshots/simpledatawriter.png" width="741" height="141" alt="Screenshot for Control-Panel of Simple Data Writer"></a>
<figcaption>Screenshot of Control-Panel of Simple Data Writer</figcaption>
</figure>
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Aggregate_Graph">Aggregate Graph<a class="sectionlink" href="#Aggregate_Graph" title="Link to here">&para;</a>
</h2>
<div class="description">The aggregate graph is similar to the aggregate report. The primary
difference is the aggregate graph provides an easy way to generate bar graphs and save
the graph as a PNG file.</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/aggregate_graph.png"><img src="../images/screenshots/aggregate_graph.png" width="1132" height="872" alt="Screenshot for Control-Panel of Aggregate Graph"></a>
<figcaption>Screenshot of Control-Panel of Aggregate Graph</figcaption>
</figure>
</div>
<div align="center">

<p>
    The figure below shows an example of settings to draw this graph.
</p>

<figure>
<a href="../images/screenshots/aggregate_graph_settings.png"><img src="../images/screenshots/aggregate_graph_settings.png" width="1147" height="420" alt="Aggregate graph settings"></a>
<figcaption>Aggregate graph settings</figcaption>
</figure>

</div>
<div class="clear"></div>
<div class="note">Please note: All this parameters <em>aren't</em> saved in JMeter JMX script.</div>
<div class="clear"></div>
<div class="properties">
<h3 id="Aggregate_Graph_parms1">
        Parameters
        <a class="sectionlink" href="#Aggregate_Graph_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Column settings</div>
<div class="description req-true">
        
<ul>
        
<li>
<span class="code">Columns to display:</span> Choose the column(s) to display in graph.</li>
        
<li>
<span class="code">Rectangles color:</span> Click on right color rectangle open a popup dialog to choose a custom color for column.</li>
        
<li>
<span class="code">Foreground color</span> Allow to change the value text color.</li>
        
<li>
<span class="code">Value font:</span> Allow to define font settings for the text.</li>
        
<li>
<span class="code">Draw outlines bar?</span> To draw or not the border line on bar chart</li>
        
<li>
<span class="code">Show number grouping?</span> Show or not the number grouping in Y Axis labels.</li>
        
<li>
<span class="code">Value labels vertical?</span> Change orientation for value label. (Default is horizontal)</li>
        
<li>
<span class="code">Column label selection:</span> Filter by result label. A regular expression can be used, example: <span class="code">.*Transaction.*</span>
        
<br>Before display the graph, click on <span class="code">Apply filter</span> button to refresh internal data.</li>
        
</ul>
        
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Title</div>
<div class="description req-false">Define the graph's title on the head of chart. Empty value is the default value : "<span class="code">Aggregate Graph</span>". 
        The button <span class="code">Synchronize with name</span> define the title with the label of the listener. And define font settings for graph title</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Graph size</div>
<div class="description req-false">Compute the graph size by  the width and height depending of the current JMeter's window size.
        Use <span class="code">Width</span> and <span class="code">Height</span> fields to define a custom size. The unit is pixel. </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">X Axis settings</div>
<div class="description req-false">Define the max length of X Axis label (in pixel).</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Y Axis settings</div>
<div class="description req-false">Define a custom maximum value for Y Axis.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Legend</div>
<div class="description req-true">Define the placement and font settings for chart legend</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Response_Time_Graph">Response Time Graph<a class="sectionlink" href="#Response_Time_Graph" title="Link to here">&para;</a>
</h2>
<div class="description">
The Response Time Graph draws a line chart showing the evolution of response time during the test, for each labelled request. 
If many samples exist for the same timestamp, the mean value is displayed.
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/response_time_graph.png"><img src="../images/screenshots/response_time_graph.png" width="921" height="616" alt="Screenshot for Control-Panel of Response Time Graph"></a>
<figcaption>Screenshot of Control-Panel of Response Time Graph</figcaption>
</figure>
</div>
<div align="center">

<p>
    The figure below shows an example of settings to draw this graph.
</p>

<figure>
<a href="../images/screenshots/response_time_graph_settings.png"><img src="../images/screenshots/response_time_graph_settings.png" width="919" height="481" alt="Response time graph settings"></a>
<figcaption>Response time graph settings</figcaption>
</figure>

</div>
<div class="clear"></div>
<div class="note">Please note: All this parameters are saved in JMeter <span class="code">.jmx</span> file.</div>
<div class="clear"></div>
<div class="properties">
<h3 id="Response_Time_Graph_parms1">
        Parameters
        <a class="sectionlink" href="#Response_Time_Graph_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Interval (ms)</div>
<div class="description req-true">The time in milliseconds for X axis interval. Samples are grouped according to this value.
        Before display the graph, click on <span class="code">Apply interval</span> button to refresh internal data.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Sampler label selection</div>
<div class="description req-false">Filter by result label. A regular expression can be used, ex. <span class="code">.*Transaction.*</span>. 
        Before display the graph, click on <span class="code">Apply filter</span> button to refresh internal data.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Title</div>
<div class="description req-false">Define the graph's title on the head of chart. Empty value is the default value : "<span class="code">Response Time Graph</span>". 
        The button <span class="code">Synchronize with name</span> define the title with the label of the listener. And define font settings for graph title</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Line settings</div>
<div class="description req-true">Define the width of the line. Define the type of each value point. Choose <span class="code">none</span> to have a line without mark</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Graph size</div>
<div class="description req-false">Compute the graph size by  the width and height depending of the current JMeter's window size.
        Use <span class="code">Width</span> and <span class="code">Height</span> fields to define a custom size. The unit is pixel. </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">X Axis settings</div>
<div class="description req-false">Customize the date format of  X axis label.
        The syntax is the Java <a href="http://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat API</a>.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Y Axis settings</div>
<div class="description req-false">Define a custom maximum value for Y Axis in milli-seconds. Define the increment for the scale (in ms) Show or not the number grouping in Y Axis labels.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Legend</div>
<div class="description req-true">Define the placement and font settings for chart legend</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Mailer_Visualizer">Mailer Visualizer<a class="sectionlink" href="#Mailer_Visualizer" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The mailer visualizer can be set up to send email if a test run receives too many
failed responses from the server.</p>
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/mailervisualizer.png"><img src="../images/screenshots/mailervisualizer.png" width="860" height="403" alt="Screenshot for Control-Panel of Mailer Visualizer"></a>
<figcaption>Screenshot of Control-Panel of Mailer Visualizer</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Mailer_Visualizer_parms1">
        Parameters
        <a class="sectionlink" href="#Mailer_Visualizer_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">From</div>
<div class="description req-true">Email address to send messages from.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Addressee(s)</div>
<div class="description req-true">Email address to send messages to, comma-separated.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Success Subject</div>
<div class="description req-false">Email subject line for success messages.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Success Limit</div>
<div class="description req-true">Once this number of successful responses is exceeded
        <strong>after previously reaching the failure limit</strong>, a success email
        is sent.  The mailer will thus only send out messages in a sequence of failed-succeeded-failed-succeeded, etc.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Failure Subject</div>
<div class="description req-false">Email subject line for fail messages.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Failure Limit</div>
<div class="description req-true">Once this number of failed responses is exceeded, a failure
        email is sent - i.e. set the count to <span class="code">0</span> to send an e-mail on the first failure.</div>
<div class="required req-true">Yes</div>
</div>

        
<div class="property">
<div class="name req-false">Host</div>
<div class="description req-false">IP address or host name of SMTP server (email redirector)
        server.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Port</div>
<div class="description req-false">Port of SMTP server (defaults to <span class="code">25</span>).</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Login</div>
<div class="description req-false">Login used to authenticate.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Password</div>
<div class="description req-false">Password used to authenticate.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Connection security</div>
<div class="description req-false">Type of encryption for SMTP authentication (SSL, TLS or none).</div>
<div class="required req-false">No</div>
</div>

        
<div class="property">
<div class="name req-false">Test Mail</div>
<div class="description req-false">Press this button to send a test mail</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Failures</div>
<div class="description req-false">A field that keeps a running total of number
        of failures so far received.</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="BeanShell_Listener">BeanShell Listener<a class="sectionlink" href="#BeanShell_Listener" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The BeanShell Listener allows the use of BeanShell for processing samples for saving etc.
</p>

<p>

<b>For full details on using BeanShell, please see the <a href="http://www.beanshell.org/">BeanShell website.</a></b>

<div class="clear"></div>
<div class="note">Migration to <a href="../usermanual/component_reference.html#JSR223_Listener">JSR223 Listener</a>+Groovy is highly recommended for performance, support of new Java features and limited maintenance of the BeanShell library.</div>
<div class="clear"></div>

</p>

<p>
The test element supports the <span class="code">ThreadListener</span> and <span class="code">TestListener</span> methods.
These should be defined in the initialisation file.
See the file <span class="code">BeanShellListeners.bshrc</span> for example definitions.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/beanshell_listener.png"><img src="../images/screenshots/beanshell_listener.png" width="844" height="633" alt="Screenshot for Control-Panel of BeanShell Listener"></a>
<figcaption>Screenshot of Control-Panel of BeanShell Listener</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="BeanShell_Listener_parms1">
        Parameters
        <a class="sectionlink" href="#BeanShell_Listener_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.
    The name is stored in the script variable Label</div>
<div class="required req-true"></div>
</div>
    
<div class="property">
<div class="name req-true">Reset bsh.Interpreter before each call</div>
<div class="description req-true">
    If this option is selected, then the interpreter will be recreated for each sample.
    This may be necessary for some long running scripts. 
    For further information, see <a href="best-practices#bsh_scripting">Best Practices - BeanShell scripting</a>.
    </div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Parameters</div>
<div class="description req-false">Parameters to pass to the BeanShell script.
    The parameters are stored in the following variables:
    <dl>
        
<dt>
<span class="code">Parameters</span>
</dt>
<dd>string containing the parameters as a single variable</dd>
        
<dt>
<span class="code">bsh.args</span>
</dt>
<dd>String array containing parameters, split on white-space</dd>
    
</dl>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Script file</div>
<div class="description req-false">A file containing the BeanShell script to run.
    The file name is stored in the script variable <span class="code">FileName</span>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Script</div>
<div class="description req-true">The BeanShell script to run. The return value is ignored.</div>
<div class="required req-true">Yes (unless script file is provided)</div>
</div>

</div>
<p>Before invoking the script, some variables are set up in the BeanShell interpreter:</p>
<ul>

<li>
<span class="code">log</span> - (<a href="https://www.slf4j.org/api/org/slf4j/Logger.html">Logger</a>) - can be used to write to the log file</li>

<li>
<span class="code">ctx</span> - (<a href="../api/org/apache/jmeter/threads/JMeterContext.html">JMeterContext</a>) - gives access to the context</li>

<li>
<span class="code">vars</span> - (<a href="../api/org/apache/jmeter/threads/JMeterVariables.html">JMeterVariables</a>) - gives read/write access to variables: <pre class="source">vars.get(key);
vars.put(key,val);
vars.putObject("OBJ1",new Object());
</pre>
</li>

<li>
<span class="code">props</span> - (JMeterProperties - class <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html"><span class="code">java.util.Properties</span></a>) - e.g. <span class="code">props.get("START.HMS");</span> <span class="code">props.put("PROP1","1234");</span>
</li>

<li>
<span class="code">sampleResult</span>, <span class="code">prev</span> - (<a href="../api/org/apache/jmeter/samplers/SampleResult.html">SampleResult</a>) - gives access to the previous <a href="../api/org/apache/jmeter/samplers/SampleResult.html">SampleResult</a>
</li>

<li>
<span class="code">sampleEvent</span> (<a href="../api/org/apache/jmeter/samplers/SampleEvent.html">SampleEvent</a>) gives access to the current sample event</li>

</ul>
<p>For details of all the methods available on each of the above variables, please check the Javadoc</p>
<p>If the property <span class="code">beanshell.listener.init</span> is defined, this is used to load an initialisation file, which can be used to define methods etc. for use in the BeanShell script.</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Summary_Report">Summary Report<a class="sectionlink" href="#Summary_Report" title="Link to here">&para;</a>
</h2>
<div class="description">The summary report creates a table row for each differently named request in your
test. This is similar to the <a href="../usermanual/component_reference.html#Aggregate_Report">Aggregate Report</a> , except that it uses less memory.
<p>
The throughput is calculated from the point of view of the sampler target 
(e.g. the remote server in the case of HTTP samples).
JMeter takes into account the total time over which the requests have been generated.
If other samplers and timers are in the same thread, these will increase the total time,
and therefore reduce the throughput value. 
So two identical samplers with different names will have half the throughput of two samplers with the same name.
It is important to choose the sampler labels correctly to get the best results from
the Report.
</p>

<ul>

<li>
<span class="code">Label</span> - The label of the sample.
If "<span class="code">Include group name in label?</span>" is selected, then the name of the thread group is added as a prefix.
This allows identical labels from different thread groups to be collated separately if required.
</li>

<li>
<span class="code"># Samples</span> - The number of samples with the same label</li>

<li>
<span class="code">Average</span> - The average elapsed time of a set of results</li>

<li>
<span class="code">Min</span> - The lowest elapsed time for the samples with the same label</li>

<li>
<span class="code">Max</span> - The longest elapsed time for the samples with the same label</li>

<li>
<span class="code">Std. Dev.</span> - the <a href="glossary.html#StandardDeviation">Standard Deviation</a> of the sample elapsed time</li>

<li>
<span class="code">Error %</span> - Percent of requests with errors</li>

<li>
<span class="code">Throughput</span> - the <a href="glossary.html#Throughput">Throughput</a> is measured in requests per second/minute/hour.
The time unit is chosen so that the displayed rate is at least <span class="code">1.0</span>.
When the throughput is saved to a CSV file, it is expressed in requests/second,
i.e. 30.0 requests/minute is saved as <span class="code">0.5</span>.
</li>

<li>
<span class="code">Received KB/sec</span> - The throughput measured in Kilobytes per second</li>

<li>
<span class="code">Sent KB/sec</span> - The throughput measured in Kilobytes per second</li>

<li>
<span class="code">Avg. Bytes</span> - average size of the sample response in bytes.</li>

</ul>

<p>Times are in milliseconds.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/summary_report.png"><img src="../images/screenshots/summary_report.png" width="1204" height="300" alt="Screenshot for Control-Panel of Summary Report"></a>
<figcaption>Screenshot of Control-Panel of Summary Report</figcaption>
</figure>
</div>
<div align="center">

<p>
    The figure below shows an example of selecting the "<span class="code">Include group name</span>" checkbox.
</p>

<figure>
<a href="../images/screenshots/summary_report_grouped.png"><img src="../images/screenshots/summary_report_grouped.png" width="1208" height="302" alt="Sample &quot;"></a>
<figcaption>Sample "<span class="code">Include group name</span>" display</figcaption>
</figure>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Save_Responses_to_a_file">Save Responses to a file<a class="sectionlink" href="#Save_Responses_to_a_file" title="Link to here">&para;</a>
</h2>
<div class="description">
        
<p>
        This test element can be placed anywhere in the test plan.
        For each sample in its scope, it will create a file of the response Data.
        The primary use for this is in creating functional tests, but it can also
        be useful where the response is too large to be displayed in the 
        <a href="../usermanual/component_reference.html#View_Results_Tree">View Results Tree</a> Listener.
        The file name is created from the specified prefix, plus a number (unless this is disabled, see below).
        The file extension is created from the document type, if known.
        If not known, the file extension is set to '<span class="code">unknown</span>'.
        If numbering is disabled, and adding a suffix is disabled, then the file prefix is
        taken as the entire file name. This allows a fixed file name to be generated if required.
        The generated file name is stored in the sample response, and can be saved
        in the test log output file if required.
        </p>
        
<p>
        The current sample is saved first, followed by any sub-samples (child samples).
        If a variable name is provided, then the names of the files are saved in the order
        that the sub-samples appear. See below. 
        </p>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/savetofile.png"><img src="../images/screenshots/savetofile.png" width="488" height="251" alt="Screenshot for Control-Panel of Save Responses to a file"></a>
<figcaption>Screenshot of Control-Panel of Save Responses to a file</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Save_Responses_to_a_file_parms1">
        Parameters
        <a class="sectionlink" href="#Save_Responses_to_a_file_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
 
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
 
<div class="property">
<div class="name req-true">Filename Prefix (can include folders)</div>
<div class="description req-true">Prefix for the generated file names; this can include a directory name.
        Relative paths are resolved relative to the current working directory (which defaults to the <span class="code">bin/</span> directory).
        JMeter also supports paths relative to the directory containing the current test plan (JMX file).
        If the path name begins with "<span class="code">~/</span>" (or whatever is in the <span class="code">jmeter.save.saveservice.base_prefix</span> JMeter property),
        then the path is assumed to be relative to the JMX file location. <br>
        If parent folders in prefix do not exists, JMeter will create them and stop test if it fails.
        <div class="clear"></div>
<div class="note">Please note that Filename Prefix must not contain Thread related data, so don't use any Variable (<span class="code">${varName}</span>) or functions like <span class="code">${__threadNum}</span> in this field</div>
<div class="clear"></div>
 
</div>
<div class="required req-true">Yes</div>
</div>
 
<div class="property">
<div class="name req-false">Variable Name containing saved file name</div>
<div class="description req-false">
 Name of a variable in which to save the generated file name (so it can be used later in the test plan).
 If there are sub-samples then a numeric suffix is added to the variable name.
 E.g. if the variable name is <span class="code">FILENAME</span>, then the parent sample file name is saved in the variable <span class="code">FILENAME</span>, 
 and the filenames for the child samplers are saved in <span class="code">FILENAME1</span>, <span class="code">FILENAME2</span> etc.
 </div>
<div class="required req-false">No</div>
</div>
 
<div class="property">
<div class="name req-false">Minimum Length of sequence number</div>
<div class="description req-false">If "<span class="code">Don't add number to prefix</span>" is not checked, then numbers added to prefix will be padded by <span class="code">0</span> so that prefix is has size of this value. Defaults to <span class="code">0</span>.</div>
<div class="required req-false">No</div>
</div>
 
<div class="property">
<div class="name req-true">Save Failed Responses only</div>
<div class="description req-true">If selected, then only failed responses are saved</div>
<div class="required req-true">Yes</div>
</div>
 
<div class="property">
<div class="name req-true">Save Successful Responses only</div>
<div class="description req-true">If selected, then only successful responses are saved</div>
<div class="required req-true">Yes</div>
</div>
 
<div class="property">
<div class="name req-true">Don't add number to prefix</div>
<div class="description req-true">If selected, then no number is added to the prefix. If you select this option, make sure that the prefix is unique or the file may be overwritten.</div>
<div class="required req-true">Yes</div>
</div>
 
<div class="property">
<div class="name req-true">Don't add content type suffix</div>
<div class="description req-true">If selected, then no suffix is added. If you select this option, make sure that the prefix is unique or the file may be overwritten.</div>
<div class="required req-true">Yes</div>
</div>
 
<div class="property">
<div class="name req-true">Add timestamp</div>
<div class="description req-true">If selected, then date will be included in file suffix following format <span class="code">yyyyMMdd-HHmm_</span>
</div>
<div class="required req-true">Yes</div>
</div>
 
<div class="property">
<div class="name req-true">Don't Save Transaction Controller SampleResult</div>
<div class="description req-true">If selected, then SamplerResult generated by Transaction Controller will be ignored</div>
<div class="required req-true">Yes</div>
</div>
 
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="JSR223_Listener">JSR223 Listener<a class="sectionlink" href="#JSR223_Listener" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The JSR223 Listener allows JSR223 script code to be applied to sample results.
</p>

</div>
<div class="properties">
<h3 id="JSR223_Listener_parms1">
        Parameters
        <a class="sectionlink" href="#JSR223_Listener_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Language</div>
<div class="description req-true">The JSR223 language to be used</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Parameters</div>
<div class="description req-false">Parameters to pass to the script.
    The parameters are stored in the following variables:
    <dl>
        
<dt>
<span class="code">Parameters</span>
</dt>
<dd>string containing the parameters as a single variable</dd>
        
<dt>
<span class="code">args</span>
</dt>
<dd>String array containing parameters, split on white-space</dd>
    
</dl>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Script file</div>
<div class="description req-false">A file containing the script to run, if a relative file path is used, then it will be relative to directory referenced by "<span class="code">user.dir</span>" System property</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Script compilation caching</div>
<div class="description req-false">Unique String across Test Plan that JMeter will use to cache result of Script compilation if language used supports <span class="code"><a href="https://docs.oracle.com/javase/8/docs/api/javax/script/Compilable.html">Compilable</a></span> interface (Groovy is one of these, java, beanshell and javascript are not).
    <div class="clear"></div>
<div class="note">See note in JSR223 Sampler Java System property if you're using Groovy without checking this option</div>
<div class="clear"></div>
    
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Script</div>
<div class="description req-true">The script to run.</div>
<div class="required req-true">Yes (unless script file is provided)</div>
</div>

</div>
<p>
Before invoking the script, some variables are set up.
Note that these are JSR223 variables - i.e. they can be used directly in the script.
</p>
<dl>

<dt>
<span class="code">log</span>
</dt>
<dd>(<a href="https://www.slf4j.org/api/org/slf4j/Logger.html">Logger</a>) - can be used to write to the log file</dd>

<dt>
<span class="code">Label</span>
</dt>
<dd>the String Label</dd>

<dt>
<span class="code">FileName</span>
</dt>
<dd>the script file name (if any)</dd>

<dt>
<span class="code">Parameters</span>
</dt>
<dd>the parameters (as a String)</dd>

<dt>
<span class="code">args</span>
</dt>
<dd>the parameters as a String array (split on whitespace)</dd>

<dt>
<span class="code">ctx</span>
</dt>
<dd>(<a href="../api/org/apache/jmeter/threads/JMeterContext.html">JMeterContext</a>) - gives access to the context</dd>

<dt>
<span class="code">vars</span>
</dt>
<dd>(<a href="../api/org/apache/jmeter/threads/JMeterVariables.html">JMeterVariables</a>) - gives read/write access to variables: <pre class="source">vars.get(key);
vars.put(key,val);
vars.putObject("OBJ1",new Object());
vars.getObject("OBJ2");</pre>
</dd>

<dt>
<span class="code">props</span>
</dt>
<dd>(JMeterProperties - class <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html"><span class="code">java.util.Properties</span></a>) - e.g. <span class="code">props.get("START.HMS");</span> <span class="code">props.put("PROP1","1234");</span>
</dd>

<dt>
<span class="code">sampleResult</span>, <span class="code">prev</span>
</dt>
<dd>(<a href="../api/org/apache/jmeter/samplers/SampleResult.html">SampleResult</a>) - gives access to the SampleResult</dd>

<dt>
<span class="code">sampleEvent</span>
</dt>
<dd>(<a href="../api/org/apache/jmeter/samplers/SampleEvent.html">SampleEvent</a>) - gives access to the SampleEvent</dd>

<dt>
<span class="code">sampler</span>
</dt>
<dd>(<a href="../api/org/apache/jmeter/samplers/Sampler.html">Sampler</a>)- gives access to the last sampler</dd>

<dt>
<span class="code">OUT</span>
</dt>
<dd>
<span class="code">System.out</span> - e.g. <span class="code">OUT.println("message")</span>
</dd>

</dl>
<p>For details of all the methods available on each of the above variables, please check the Javadoc</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Generate_Summary_Results">Generate Summary Results<a class="sectionlink" href="#Generate_Summary_Results" title="Link to here">&para;</a>
</h2>
<div class="description">This test element can be placed anywhere in the test plan.
Generates a summary of the test run so far to the log file and/or 
standard output. Both running and differential totals are shown.
Output is generated every <span class="code">n</span> seconds (default 30 seconds) on the appropriate
time boundary, so that multiple test runs on the same time will be synchronised.
See <span class="code">jmeter.properties</span> file for the summariser configuration items:
<pre class="source">
# Define the following property to automatically start a summariser with that name
# (applies to CLI mode only)
#summariser.name=summary
#
# interval between summaries (in seconds) default 3 minutes
#summariser.interval=30
#
# Write messages to log file
#summariser.log=true
#
# Write messages to System.out
#summariser.out=true
</pre>
This element is mainly intended for batch (CLI) runs.
The output looks like the following:
<pre class="source">
label +     16 in 0:00:12 =    1.3/s Avg:  1608 Min:  1163 Max:  2009 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
label +     82 in 0:00:30 =    2.7/s Avg:  1518 Min:  1003 Max:  2020 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
label =     98 in 0:00:42 =    2.3/s Avg:  1533 Min:  1003 Max:  2020 Err:     0 (0.00%)
label +     85 in 0:00:30 =    2.8/s Avg:  1505 Min:  1008 Max:  2005 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
label =    183 in 0:01:13 =    2.5/s Avg:  1520 Min:  1003 Max:  2020 Err:     0 (0.00%)
label +     79 in 0:00:30 =    2.7/s Avg:  1578 Min:  1089 Max:  2012 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
label =    262 in 0:01:43 =    2.6/s Avg:  1538 Min:  1003 Max:  2020 Err:     0 (0.00%)
label +     80 in 0:00:30 =    2.7/s Avg:  1531 Min:  1013 Max:  2014 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
label =    342 in 0:02:12 =    2.6/s Avg:  1536 Min:  1003 Max:  2020 Err:     0 (0.00%)
label +     83 in 0:00:31 =    2.7/s Avg:  1512 Min:  1003 Max:  1982 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
label =    425 in 0:02:43 =    2.6/s Avg:  1531 Min:  1003 Max:  2020 Err:     0 (0.00%)
label +     83 in 0:00:29 =    2.8/s Avg:  1487 Min:  1023 Max:  2013 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
label =    508 in 0:03:12 =    2.6/s Avg:  1524 Min:  1003 Max:  2020 Err:     0 (0.00%)
label +     78 in 0:00:30 =    2.6/s Avg:  1594 Min:  1013 Max:  2016 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
label =    586 in 0:03:43 =    2.6/s Avg:  1533 Min:  1003 Max:  2020 Err:     0 (0.00%)
label +     80 in 0:00:30 =    2.7/s Avg:  1516 Min:  1013 Max:  2005 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
label =    666 in 0:04:12 =    2.6/s Avg:  1531 Min:  1003 Max:  2020 Err:     0 (0.00%)
label +     86 in 0:00:30 =    2.9/s Avg:  1449 Min:  1004 Max:  2017 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
label =    752 in 0:04:43 =    2.7/s Avg:  1522 Min:  1003 Max:  2020 Err:     0 (0.00%)
label +     65 in 0:00:24 =    2.7/s Avg:  1579 Min:  1007 Max:  2003 Err:     0 (0.00%) Active: 0 Started: 5 Finished: 5
label =    817 in 0:05:07 =    2.7/s Avg:  1526 Min:  1003 Max:  2020 Err:     0 (0.00%)
</pre>
The "<span class="code">label</span>" is the name of the element.
The <span class="code">"+"</span> means that the line is a delta line, i.e. shows the changes since the last output.<br>
The <span class="code">"="</span> means that the line is a total line, i.e. it shows the running total.<br>
Entries in the JMeter log file also include time-stamps.
The example "<span class="code">817 in 0:05:07 =    2.7/s</span>" means that there were 817 samples recorded in 5 minutes and 7 seconds,
and that works out at 2.7 samples per second.<br>
The <span class="code">Avg</span> (Average), <span class="code">Min</span> (Minimum) and <span class="code">Max</span> (Maximum) times are in milliseconds.<br>
"<span class="code">Err</span>" means number of errors (also shown as percentage).<br>
The last two lines will appear at the end of a test.
They will not be synchronised to the appropriate time boundary.
Note that the initial and final deltas may be for less than the interval (in the example above this is 30 seconds).
The first delta will generally be lower, as JMeter synchronizes to the interval boundary.
The last delta will be lower, as the test will generally not finish on an exact interval boundary.
<p>
The label is used to group sample results together. 
So if you have multiple Thread Groups and want to summarize across them all, then use the same label
 - or add the summariser to the Test Plan (so all thread groups are in scope).
Different summary groupings can be implemented
by using suitable labels and adding the summarisers to appropriate parts of the test plan.
</p>

<div class="clear"></div>
<div class="note">
In CLI mode by default a Generate Summary Results listener named "<span class="code">summariser</span>" is configured, if you have already added one to your Test Plan, ensure you name it differently 
otherwise results will be accumulated under this label (summary) leading to wrong results (sum of total samples + samples located under the Parent of Generate Summary Results listener).<br>
This is not a bug but a design choice allowing to summarize across thread groups.
</div>
<div class="clear"></div>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/summary.png"><img src="../images/screenshots/summary.png" width="364" height="76" alt="Screenshot for Control-Panel of Generate Summary Results"></a>
<figcaption>Screenshot of Control-Panel of Generate Summary Results</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Generate_Summary_Results_parms1">
        Parameters
        <a class="sectionlink" href="#Generate_Summary_Results_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
 
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.
 It appears as the "<span class="code">label</span>" in the output. Details for all elements with the same label will be added together.
 </div>
<div class="required req-true">Yes</div>
</div>
 
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Comparison_Assertion_Visualizer">Comparison Assertion Visualizer<a class="sectionlink" href="#Comparison_Assertion_Visualizer" title="Link to here">&para;</a>
</h2>
<div class="description">
The Comparison Assertion Visualizer shows the results of any <a href="../usermanual/component_reference.html#Compare_Assertion">Compare Assertion</a> elements.
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/comparison_assertion_visualizer.png"><img src="../images/screenshots/comparison_assertion_visualizer.png" width="718" height="454" alt="Screenshot for Control-Panel of Comparison Assertion Visualizer"></a>
<figcaption>Screenshot of Control-Panel of Comparison Assertion Visualizer</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Comparison_Assertion_Visualizer_parms1">
        Parameters
        <a class="sectionlink" href="#Comparison_Assertion_Visualizer_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
 
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.
 </div>
<div class="required req-true">Yes</div>
</div>
 
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Backend_Listener">Backend Listener<a class="sectionlink" href="#Backend_Listener" title="Link to here">&para;</a>
</h2>
<div class="description">
The backend listener is an Asynchronous listener that enables you to plug custom implementations of <a href="../api/org/apache/jmeter/visualizers/backend/BackendListenerClient.html">BackendListenerClient</a>.
By default, a Graphite implementation is provided.
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/backend_listener.png"><img src="../images/screenshots/backend_listener.png" width="705" height="350" alt="Screenshot for Control-Panel of Backend Listener"></a>
<figcaption>Screenshot of Control-Panel of Backend Listener</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Backend_Listener_parms1">
        Parameters
        <a class="sectionlink" href="#Backend_Listener_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
 
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true">Yes</div>
</div>
 
<div class="property">
<div class="name req-true">Backend Listener implementation</div>
<div class="description req-true">Class of the <span class="code">BackendListenerClient</span> implementation.</div>
<div class="required req-true">Yes</div>
</div>
 
<div class="property">
<div class="name req-true">Async Queue size</div>
<div class="description req-true">Size of the queue that holds the SampleResults while they are processed asynchronously.</div>
<div class="required req-true">Yes</div>
</div>
 
<div class="property">
<div class="name req-true">Parameters</div>
<div class="description req-true">Parameters of the <span class="code">BackendListenerClient</span> implementation.</div>
<div class="required req-true">Yes</div>
</div>
 
</div>
<p>The following parameters apply to the <a href="../api/org/apache/jmeter/visualizers/backend/graphite/GraphiteBackendListenerClient.html">GraphiteBackendListenerClient</a> implementation:</p>
<div class="properties">
<h3 id="Backend_Listener_parms2">
        Parameters
        <a class="sectionlink" href="#Backend_Listener_parms2" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">graphiteMetricsSender</div>
<div class="description req-true">
<span class="code">org.apache.jmeter.visualizers.backend.graphite.TextGraphiteMetricsSender</span> or <span class="code">org.apache.jmeter.visualizers.backend.graphite.PickleGraphiteMetricsSender</span>
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">graphiteHost</div>
<div class="description req-true">Graphite or InfluxDB (with Graphite plugin enabled) server host</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">graphitePort</div>
<div class="description req-true">Graphite or InfluxDB (with Graphite plugin enabled) server port, defaults to <span class="code">2003</span>. Note <span class="code">PickleGraphiteMetricsSender</span> (port <span class="code">2004</span>) can only talk to Graphite server.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">rootMetricsPrefix</div>
<div class="description req-true">Prefix of metrics sent to backend. Defaults to "<span class="code">jmeter</span>."
        Note that JMeter does not add a separator between the root prefix and the samplerName which is why the trailing dot is currently needed.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">summaryOnly</div>
<div class="description req-true">Only send a summary with no detail. Defaults to <span class="code">true</span>.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">samplersList</div>
<div class="description req-true">Defines the names (labels) of sample results to be sent to the back end. 
        If <span class="code">useRegexpForSamplersList=false</span> this is a list of semi-colon separated names.
        If <span class="code">useRegexpForSamplersList=true</span> this is a regular expression which will be matched against the names.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">useRegexpForSamplersList</div>
<div class="description req-true">Consider samplersList as a regular expression to select the samplers for which you want to report metrics to backend. Defaults to <span class="code">false</span>.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">percentiles</div>
<div class="description req-true">The percentiles you want to send to the backend.
        A percentile may contain a fractional part, for example <span class="code">12.5</span>.
        (The separator is always ".")
        List must be semicolon separated. Generally 3 or 4 values should be sufficient.</div>
<div class="required req-true">Yes</div>
</div>
    
</div>
<p>See also <a href="realtime-results.html">Real-time results</a> for more details.</p>
<figure>
<a href="../images/screenshots/grafana_dashboard.png"><img src="../images/screenshots/grafana_dashboard.png" width="1265" height="581" alt="Grafana dashboard"></a>
<figcaption>Grafana dashboard</figcaption>
</figure>
<p>Since JMeter 3.2, a new implementation has been added that allows writing directly in InfluxDB with a custom schema, it is called <span class="code">InfluxdbBackendListenerClient</span> 
      The following parameters apply to the <a href="../api/org/apache/jmeter/visualizers/backend/influxdb/InfluxdbBackendListenerClient.html">InfluxdbBackendListenerClient</a> implementation:</p>
<div class="properties">
<h3 id="Backend_Listener_parms3">
        Parameters
        <a class="sectionlink" href="#Backend_Listener_parms3" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">influxdbMetricsSender</div>
<div class="description req-true">
<span class="code">org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender</span>
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">influxdbUrl</div>
<div class="description req-true">Influx URL (example : http://influxHost:8086/write?db=jmeter)</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">influxdbToken</div>
<div class="description req-false">InfluxDB 2 <a href="https://v2.docs.influxdata.com/v2.0/security/">authentication token</a> (example : HE9yIdAPzWJDspH_tCc2UvdKZpX==); since 5.2.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">application</div>
<div class="description req-true">Name of tested application. This value is stored in the 'events' measurement too as a tag named 'application' </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">measurement</div>
<div class="description req-true">Measurement as per <a href="https://docs.influxdata.com/influxdb/v1.1/write_protocols/line_protocol_reference/">Influx Line Protocol Reference</a>. Defaults to "<span class="code">jmeter</span>."</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">summaryOnly</div>
<div class="description req-true">Only send a summary with no detail. Defaults to <span class="code">true</span>.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">samplersRegex</div>
<div class="description req-true">Regular expression which will be matched against the names of samples and sent to the back end.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">testTitle</div>
<div class="description req-true">Test name. Defaults to <span class="code">Test name</span>. This value is stored in the 'events' measurement as a field named 'text'. JMeter generate automatically at the start and the end of the test an annotation with this value ending with ' started' and ' ended'</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">eventTags</div>
<div class="description req-false">Grafana allow to display tag for each annotation. You can fill them here. This value is stored in the 'events' measurement as a tag named 'tags'.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">percentiles</div>
<div class="description req-true">The percentiles you want to send to the backend.
        A percentile may contain a fractional part, for example <span class="code">12.5</span>.
        (The separator is always ".")
        List must be semicolon separated. Generally 3 or 4 values should be sufficient.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">TAG_WhatEverYouWant</div>
<div class="description req-false">You can add as many custom tags as you want. For each of them, just create a new line and prefix its name by "<span class="code">TAG_</span>"</div>
<div class="required req-false">No</div>
</div>
    
</div>
<p>See also <a href="realtime-results.html">Real-time results</a> and <a href="http://docs.grafana.org/reference/annotations/#influxdb-annotations">Influxdb annotations in Grafana</a> for more details.</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<a href="#">^</a>


</div>
<div class="section">
<h1 id="config_elements">18.4 Configuration Elements<a class="sectionlink" href="#config_elements" title="Link to here">&para;</a>
</h1>

<div class="description">
    
<br>
    Configuration elements can be used to set up defaults and variables for later use by samplers.
    Note that these elements are processed at the start of the scope in which they are found, 
    i.e. before any samplers in the same scope.
    <br>

</div>


<div class="component">
<h2 id="CSV_Data_Set_Config">CSV Data Set Config<a class="sectionlink" href="#CSV_Data_Set_Config" title="Link to here">&para;</a>
</h2>
<div class="description">
    
<p>
    CSV Data Set Config is used to read lines from a file, and split them into variables.
    It is easier to use than the <span class="code"><a href="../usermanual/functions.html#__CSVRead">__CSVRead()</a></span> and <span class="code"><a href="../usermanual/functions.html#__StringFromFile">__StringFromFile()</a></span> functions.
    It is well suited to handling large numbers of variables, and is also useful for testing with
    "random" and unique values.</p>
    
<p>Generating unique random values at run-time is expensive in terms of CPU and memory, so just create the data
    in advance of the test. If necessary, the "random" data from the file can be used in conjunction with
    a run-time parameter to create different sets of values from each run - e.g. using concatenation - which is
    much cheaper than generating everything at run-time.
    </p>
    
<p>
    JMeter allows values to be quoted; this allows the value to contain a delimiter.
    If "<span class="code">allow quoted data</span>" is enabled, a value may be enclosed in double-quotes.
    These are removed. To include double-quotes within a quoted field, use two double-quotes.
    For example:
    </p>

<pre class="source">
1,"2,3","4""5" =&gt;
1
2,3
4"5
</pre>
    
<p>
    JMeter supports CSV files which have a header line defining the column names.
    To enable this, leave the "<span class="code">Variable Names</span>" field empty. The correct delimiter must be provided.
    </p>
    
<p>
    JMeter supports CSV files with quoted data that includes new-lines.
    </p>
    
<p>
    By default, the file is only opened once, and each thread will use a different line from the file.
    However the order in which lines are passed to threads depends on the order in which they execute,
    which may vary between iterations.
    Lines are read at the start of each test iteration.
    The file name and mode are resolved in the first iteration.
    </p>
    
<p>
    See the description of the Share mode below for additional options.
    If you want each thread to have its own set of values, then you will need to create a set of files,
    one for each thread. For example <span class="code">test1.csv</span>, <span class="code">test2.csv</span>, &hellip;, <span class="code">test<em>n</em>.csv</span>. Use the filename 
    <span class="code">test${__threadNum}.csv</span> and set the "<span class="code">Sharing mode</span>" to "<span class="code">Current thread</span>".
    </p>
    
<div class="clear"></div>
<div class="note">CSV Dataset variables are defined at the start of each test iteration.
    As this is after configuration processing is completed,
    they cannot be used for some configuration items - such as JDBC Config - 
    that process their contents at configuration time (see <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=40394">
      Bug
      40394</a>)
    However the variables do work in the HTTP Auth Manager, as the <span class="code">username</span> etc. are processed at run-time.
    </div>
<div class="clear"></div>
    
<p>
    As a special case, the string "<span class="code">\t</span>" (without quotes) in the delimiter field is treated as a Tab.
    </p>
    
<p>
    When the end of file (<span class="code"><abbr title="end of file">EOF</abbr></span>) is reached, and the recycle option is <span class="code">true</span>, reading starts again with the first line of the file.
    </p>
    
<p>
    If the recycle option is <span class="code">false</span>, and stopThread is <span class="code">false</span>, then all the variables are set to <span class="code">&lt;EOF&gt;</span> when the end of file is reached.
    This value can be changed by setting the JMeter property <span class="code">csvdataset.eofstring</span>.
    </p>
    
<p>
    If the Recycle option is <span class="code">false</span>, and Stop Thread is <span class="code">true</span>, then reaching <span class="code"><abbr title="end of file">EOF</abbr></span> will cause the thread to be stopped.
    </p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/csvdatasetconfig.png"><img src="../images/screenshots/csvdatasetconfig.png" width="433" height="281" alt="Screenshot for Control-Panel of CSV Data Set Config"></a>
<figcaption>Screenshot of Control-Panel of CSV Data Set Config</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="CSV_Data_Set_Config_parms1">
        Parameters
        <a class="sectionlink" href="#CSV_Data_Set_Config_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
  
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">Filename</div>
<div class="description req-true">Name of the file to be read. 
  <b>Relative file names are resolved with respect to the path of the active test plan.</b>
  <b>For distributed testing, the CSV file must be stored on the server host system in the correct relative directory to where the JMeter server is started.</b>
  Absolute file names are also supported, but note that they are unlikely to work in remote mode, 
  unless the remote server has the same directory structure.
  If the same physical file is referenced in two different ways - e.g. <span class="code">csvdata.txt</span> and <span class="code">./csvdata.txt</span> -
  then these are treated as different files.
  If the OS does not distinguish between upper and lower case, <span class="code">csvData.TXT</span> would also be opened separately. 
  </div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">File Encoding</div>
<div class="description req-false">The encoding to be used to read the file, if not the platform default.</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Variable Names</div>
<div class="description req-false">List of variable names. The names must be separated by the delimiter character. They can be quoted using double-quotes.
  JMeter supports CSV header lines:
  if the variable name field empty, then the first line of the file is read and interpreted as the list of column names.
  </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Use first line as Variable Names</div>
<div class="description req-false">
  Ignore first line of CSV file, it will only be used if Variable Names is not empty,
  if Variable Names is empty the first line must contain the headers.
  </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Delimiter</div>
<div class="description req-true">Delimiter to be used to split the records in the file.
  If there are fewer values on the line than there are variables the remaining variables are not updated -
  so they will retain their previous value (if any).</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Allow quoted data?</div>
<div class="description req-true">Should the CSV file allow values to be quoted?
  If enabled, then values can be enclosed in <span class="code">"</span> - double-quote - allowing values to contain a delimiter.
  </div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Recycle on EOF?</div>
<div class="description req-true">Should the file be re-read from the beginning on reaching <span class="code"><abbr title="end of file">EOF</abbr></span>? (default is <span class="code">true</span>)</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Stop thread on EOF?</div>
<div class="description req-true">Should the thread be stopped on <span class="code"><abbr title="end of file">EOF</abbr></span>, if Recycle is false? (default is <span class="code">false</span>)</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Sharing mode</div>
<div class="description req-true">
  
<ul>
  
<li>
<span class="code">All threads</span> - (the default) the file is shared between all the threads.</li>
  
<li>
<span class="code">Current thread group</span> - each file is opened once for each thread group in which the element appears</li>
  
<li>
<span class="code">Current thread</span> - each file is opened separately for each thread</li>
  
<li>
<span class="code">Identifier</span> - all threads sharing the same identifier share the same file.
  So for example if you have 4 thread groups, you could use a common id for two or more of the groups
  to share the file between them.
  Or you could use the thread number to share the file between the same thread numbers in different thread groups.
  </li>
  
</ul>
  
</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="FTP_Request_Defaults">FTP Request Defaults<a class="sectionlink" href="#FTP_Request_Defaults" title="Link to here">&para;</a>
</h2>
<div class="description"></div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/ftp-config/ftp-request-defaults.png"><img src="../images/screenshots/ftp-config/ftp-request-defaults.png" width="520" height="202" alt="Screenshot for Control-Panel of FTP Request Defaults"></a>
<figcaption>Screenshot of Control-Panel of FTP Request Defaults</figcaption>
</figure>
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="DNS_Cache_Manager">DNS Cache Manager<a class="sectionlink" href="#DNS_Cache_Manager" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The DNS Cache Manager element allows to test applications, which have several servers behind load balancers (CDN, etc.), 
    when user receives content from different IP's. By default JMeter uses JVM DNS cache. That's why
    only one server from the cluster receives load. DNS Cache Manager resolves names for each thread separately each iteration and
    saves results of resolving to its internal DNS Cache, which is independent from both JVM and OS DNS caches.
    </p>
    
<p>
    A mapping for static hosts can be used to simulate something like <span class="code">/etc/hosts</span> file.
    These entries will be preferred over the custom resolver. <span class="code">Use custom DNS resolver</span> has to be enabled,
    if you want to use this mapping.
    </p>
    
<div class="example">
<div class="title">Usage of static host table<a class="sectionlink" href="#static_host_table" title="Link to here">&para;</a>
</div>
    
<p>Say, you have a test server, that you want to reach with a name, that is not (yet) set up in your DNS servers.
    For our example, this would be <span class="code">www.example.com</span> for the server name, which you want to reach at the
    IP of the server <span class="code">a123.another.example.org</span>.
    </p>
    
<p>You could change your workstation and add an entry to your <span class="code">/etc/hosts</span> file - or the equivalent for
    your OS, or add an entry to the Static Host Table of the DNS Cache Manager.
    </p>
    
<p>You would type <span class="code">www.example.com</span> into the first column (<span class="code">Host</span>) and
    <span class="code">a123.another.example.org</span> into the second column (<span class="code">Hostname or IP address</span>).
    As the name of the second column implies, you could even use the IP address of your test server there.
    </p>
    
<p>The IP address for the test server will be looked up by using the custom DNS resolver. When none is given, the
    system DNS resolver will be used.
    </p>
    
<p>Now you can use <span class="code">www.example.com</span> in your HTTPClient4 samplers and the requests will be made against
    <span class="code">a123.another.example.org</span> with all headers set to <span class="code">www.example.com</span>.
    </p>
    
</div>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/dns-cache-manager.png"><img src="../images/screenshots/dns-cache-manager.png" width="712" height="387" alt="Screenshot for Control-Panel of DNS Cache Manager"></a>
<figcaption>Screenshot of Control-Panel of DNS Cache Manager</figcaption>
</figure>
</div>
<div class="clear"></div>
<div class="note">DNS Cache Manager is designed for using in the root of Thread Group or Test Plan. Do not place it as child element of particular HTTP Sampler
    </div>
<div class="clear"></div>
<div class="clear"></div>
<div class="note">DNS Cache Manager works only with HTTP requests using HTTPClient4 implementation.</div>
<div class="clear"></div>
<div class="properties">
<h3 id="DNS_Cache_Manager_parms1">
        Parameters
        <a class="sectionlink" href="#DNS_Cache_Manager_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree. </div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Clear cache each Iteration</div>
<div class="description req-false">If selected, DNS cache of every  Thread is cleared each time new iteration is started.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Use system DNS resolver</div>
<div class="description req-false">System DNS resolver will be used. For correct work edit
       <span class="code">$JAVA_HOME/jre/lib/security/java.security</span> and add <span class="code">networkaddress.cache.ttl=0</span> 
    
</div>
<div class="required req-false">N/A</div>
</div>
    
<div class="property">
<div class="name req-false">Use custom DNS resolver</div>
<div class="description req-false">Custom DNS resolver (from dnsjava library) will be used.</div>
<div class="required req-false">N/A</div>
</div>
    
<div class="property">
<div class="name req-false">Hostname or IP address</div>
<div class="description req-false">List of DNS servers to use. If empty, network configuration DNS will used.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Add Button</div>
<div class="description req-false">Add an entry to the DNS servers table.</div>
<div class="required req-false">N/A</div>
</div>
    
<div class="property">
<div class="name req-false">Delete Button</div>
<div class="description req-false">Delete the currently selected table entry.</div>
<div class="required req-false">N/A</div>
</div>
    
<div class="property">
<div class="name req-false">Host and Hostname or IP address</div>
<div class="description req-false">Mapping of hostnames to a static host entry which will be resolved using the custom DNS resolver.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Add static host Button</div>
<div class="description req-false">Add an entry to the static hosts table.</div>
<div class="required req-false">N/A</div>
</div>
    
<div class="property">
<div class="name req-false">Delete static host Button</div>
<div class="description req-false">Delete the currently selected static host in the table.</div>
<div class="required req-false">N/A</div>
</div>
    
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="HTTP_Authorization_Manager">HTTP Authorization Manager<a class="sectionlink" href="#HTTP_Authorization_Manager" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>The Authorization Manager lets you specify one or more user logins for web pages that are
restricted using server authentication.  You see this type of authentication when you use
your browser to access a restricted page, and your browser displays a login dialog box.  JMeter
transmits the login information when it encounters this type of page.</p>

<p>
The Authorization headers may not be shown in the Tree View Listener "<span class="code">Request</span>" tab.
The Java implementation does pre-emptive authentication, but it does not
return the Authorization header when JMeter fetches the headers.
The HttpComponents (HC 4.5.X) implementation defaults to pre-emptive since 3.2 and the header will be shown.
To disable this, set the values as below, in which case authentication will only be performed in response to a challenge.
</p>

<p>
In the file <span class="code">jmeter.properties</span> set <span class="code">httpclient4.auth.preemptive=false</span>

</p>

<div class="clear"></div>
<div class="note">
Note: the above settings only apply to the HttpClient sampler.
</div>
<div class="clear"></div>

<div class="clear"></div>
<div class="note">
When looking for a match against a URL, JMeter checks each entry in turn, and stops when it finds the first match.
Thus the most specific URLs should appear first in the list, followed by less specific ones.
Duplicate URLs will be ignored.
If you want to use different usernames/passwords for different threads, you can use variables.
These can be set up using a <a href="../usermanual/component_reference.html#CSV_Data_Set_Config">CSV Data Set Config</a> Element (for example).
</div>
<div class="clear"></div>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/http-config/http-auth-manager.png"><img src="../images/screenshots/http-config/http-auth-manager.png" width="538" height="340" alt="Screenshot for Control-Panel of HTTP Authorization Manager"></a>
<figcaption>Screenshot of Control-Panel of HTTP Authorization Manager</figcaption>
</figure>
</div>
<div class="clear"></div>
<div class="note">If there is more than one Authorization Manager in the scope of a Sampler,
there is currently no way to specify which one is to be used.</div>
<div class="clear"></div>
<div class="properties">
<h3 id="HTTP_Authorization_Manager_parms1">
        Parameters
        <a class="sectionlink" href="#HTTP_Authorization_Manager_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree. </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Clear auth on each iteration?</div>
<div class="description req-true">Used by Kerberos authentication. If checked, authentication will be done on each iteration of Main Thread Group loop even if it has already been done in a previous one.
        This is usually useful if each main thread group iteration represents behaviour of one Virtual User.
        </div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Base URL</div>
<div class="description req-true">A partial or complete URL that matches one or more HTTP Request URLs.  As an example,
say you specify a Base URL of "<span class="code">http://localhost/restricted/</span>" with a <span class="code">Username</span> of "<span class="code">jmeter</span>" and
a <span class="code">Password</span> of "<span class="code">jmeter</span>".  If you send an HTTP request to the URL
"<span class="code">http://localhost/restricted/ant/myPage.html</span>", the Authorization Manager sends the login
information for the user named, "<span class="code">jmeter</span>".</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Username</div>
<div class="description req-true">The username to authorize.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Password</div>
<div class="description req-true">The password for the user. (N.B. this is stored unencrypted in the test plan)</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">Domain</div>
<div class="description req-false">The domain to use for NTLM.</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Realm</div>
<div class="description req-false">The realm to use for NTLM.</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Mechanism</div>
<div class="description req-false">Type of authentication to perform. JMeter can perform different types of authentications based on used Http Samplers:
<dl>

<dt>Java</dt>
<dd>
<span class="code">BASIC</span>
</dd>

<dt>HttpClient 4</dt>
<dd>
<span class="code">BASIC</span>, <span class="code">DIGEST</span> and <span class="code">Kerberos</span>
</dd>

</dl>

</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="clear"></div>
<div class="note">
The Realm only applies to the HttpClient sampler.
</div>
<div class="clear"></div>
<br>
<b>Kerberos Configuration:</b>
<p>To configure Kerberos you need to setup at least two JVM system properties:</p>
<ul>
    
<li>
<span class="code">-Djava.security.krb5.conf=krb5.conf</span>
</li>
    
<li>
<span class="code">-Djava.security.auth.login.config=jaas.conf</span>
</li>

</ul>
<p>
You can also configure those two properties in the file <span class="code">bin/system.properties</span>.
Look at the two sample configuration files (<span class="code">krb5.conf</span> and <span class="code">jaas.conf</span>) located in the JMeter <span class="code">bin</span> folder
for references to more documentation, and tweak them to match your Kerberos configuration.
</p>
<p>
Delegation of credentials is disabled by default for SPNEGO. If you want to enable it, you can do so by setting the property <span class="code">kerberos.spnego.delegate_cred</span> to <span class="code">true</span>.
</p>
<p>
When generating a SPN for Kerberos SPNEGO authentication IE and Firefox will omit the port number
from the URL. Chrome has an option (<span class="code">--enable-auth-negotiate-port</span>) to include the port
number if it differs from the standard ones (<span class="code">80</span> and <span class="code">443</span>). That behavior
can be emulated by setting the following JMeter property as below.
</p>
<p>
In <span class="code">jmeter.properties</span> or <span class="code">user.properties</span>, set:
</p>
<ul>

<li>
<span class="code">kerberos.spnego.strip_port=false</span>
</li>

</ul>
<br>
<b>Controls:</b>
<ul>
  
<li>
<span class="code">Add</span> Button - Add an entry to the authorization table.</li>
  
<li>
<span class="code">Delete</span> Button - Delete the currently selected table entry.</li>
  
<li>
<span class="code">Load</span> Button - Load a previously saved authorization table and add the entries to the existing
authorization table entries.</li>
  
<li>
<span class="code">Save As</span> Button - Save the current authorization table to a file.</li>

</ul>
<div class="clear"></div>
<div class="note">When you save the Test Plan, JMeter automatically saves all of the authorization
table entries - including any passwords, which are not encrypted.</div>
<div class="clear"></div>
<div class="example">
<div class="title">Authorization Example<a class="sectionlink" href="#authorization_example" title="Link to here">&para;</a>
</div>


<p>
<a href="../demos/AuthManagerTestPlan.jmx">Download</a> this example.  In this example, we created a Test Plan on a local server that sends three HTTP requests, two requiring a login and the
other is open to everyone.  See figure 10 to see the makeup of our Test Plan.  On our server, we have a restricted
directory named, "<span class="code">secret</span>", which contains two files, "<span class="code">index.html</span>" and "<span class="code">index2.html</span>".  We created a login id named, "<span class="code">kevin</span>",
which has a password of "<span class="code">spot</span>".  So, in our Authorization Manager, we created an entry for the restricted directory and
a username and password (see figure 11).  The two HTTP requests named "<span class="code">SecretPage1</span>" and "<span class="code">SecretPage2</span>" make requests
to "<span class="code">/secret/index.html</span>" and "<span class="code">/secret/index2.html</span>".  The other HTTP request, named "<span class="code">NoSecretPage</span>" makes a request to
"<span class="code">/index.html</span>".</p>


<figure>
<a href="../images/screenshots/http-config/auth-manager-example1a.png"><img src="../images/screenshots/http-config/auth-manager-example1a.png" width="452" height="177" alt="Figure 10 - Test Plan"></a>
<figcaption>Figure 10 - Test Plan</figcaption>
</figure>

<figure>
<a href="../images/screenshots/http-config/auth-manager-example1b.png"><img src="../images/screenshots/http-config/auth-manager-example1b.png" width="641" height="329" alt="Figure 11 - Authorization Manager Control Panel"></a>
<figcaption>Figure 11 - Authorization Manager Control Panel</figcaption>
</figure>


<p>When we run the Test Plan, JMeter looks in the Authorization table for the URL it is requesting.  If the Base URL matches
the URL, then JMeter passes this information along with the request.</p>


<div class="clear"></div>
<div class="note">You can download the Test Plan, but since it is built as a test for our local server, you will not
be able to run it.  However, you can use it as a reference in constructing your own Test Plan.</div>
<div class="clear"></div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="HTTP_Cache_Manager">HTTP Cache Manager<a class="sectionlink" href="#HTTP_Cache_Manager" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The HTTP Cache Manager is used to add caching functionality to HTTP requests within its scope to simulate browser cache feature.
Each Virtual User thread has its own Cache. By default, Cache Manager will store up to 5000 items in cache per Virtual User thread, using LRU algorithm. 
Use property "<span class="code">maxSize</span>" to modify this value. Note that the more you increase this value the more HTTP Cache Manager will consume memory, so be sure to adapt the <span class="code">-Xmx</span> JVM option accordingly.
</p>

<p>
If a sample is successful (i.e. has response code <span class="code">2xx</span>) then the <span class="code">Last-Modified</span> and <span class="code">Etag</span> (and <span class="code">Expired</span> if relevant) values are saved for the URL.
Before executing the next sample, the sampler checks to see if there is an entry in the cache, 
and if so, the <span class="code">If-Last-Modified</span> and <span class="code">If-None-Match</span> conditional headers are set for the request.
</p>

<p>
Additionally, if the "<span class="code">Use Cache-Control/Expires header</span>" option is selected, then the <span class="code">Cache-Control</span>/<span class="code">Expires</span> value is checked against the current time.
If the request is a <span class="code">GET</span> request, and the timestamp is in the future, then the sampler returns immediately,
without requesting the URL from the remote server. This is intended to emulate browser behaviour.
Note that if <span class="code">Cache-Control</span> header is "<span class="code">no-cache</span>", the response will be stored in cache as pre-expired,
so will generate a conditional <span class="code">GET</span> request.
If <span class="code">Cache-Control</span> has any other value, 
the "<span class="code">max-age</span>" expiry option is processed to compute entry lifetime, if missing then expire header will be used, if also missing entry will be cached 
as specified in <a href="https://tools.ietf.org/html/2616#section-13.2.4">RFC 2616 section 13.2.4</a> using <span class="code">Last-Modified</span> time and response Date.
</p>

<div class="clear"></div>
<div class="note">
If the requested document has not changed since it was cached, then the response body will be empty.
Likewise if the <span class="code">Expires</span> date is in the future.
This may cause problems for Assertions.
</div>
<div class="clear"></div>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/http-config/http-cache-manager.png"><img src="../images/screenshots/http-config/http-cache-manager.png" width="511" height="196" alt="Screenshot for Control-Panel of HTTP Cache Manager"></a>
<figcaption>Screenshot of Control-Panel of HTTP Cache Manager</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="HTTP_Cache_Manager_parms1">
        Parameters
        <a class="sectionlink" href="#HTTP_Cache_Manager_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
  
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree. </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Clear cache each iteration</div>
<div class="description req-true">
  If selected, then the cache is cleared at the start of the thread.
  </div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Use Cache Control/Expires header when processing GET requests</div>
<div class="description req-true">See description above.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Max Number of elements in cache</div>
<div class="description req-true">See description above.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="HTTP_Cookie_Manager">HTTP Cookie Manager<a class="sectionlink" href="#HTTP_Cookie_Manager" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The Cookie Manager element has two functions:<br>
First, it stores and sends cookies just like a web browser. If you have an HTTP Request and
the response contains a cookie, the Cookie Manager automatically stores that cookie and will
use it for all future requests to that particular web site.  Each JMeter thread has its own
"cookie storage area".  So, if you are testing a web site that uses a cookie for storing
session information, each JMeter thread will have its own session.
Note that such cookies do not appear on the Cookie Manager display, but they can be seen using
the <a href="../usermanual/component_reference.html#View_Results_Tree">View Results Tree</a> Listener.
</p>

<p>
JMeter checks that received cookies are valid for the URL.
This means that cross-domain cookies are not stored.
If you have bugged behaviour or want Cross-Domain cookies to be used, define the JMeter property "<span class="code">CookieManager.check.cookies=false</span>".
</p>

<p>
Received Cookies can be stored as JMeter thread variables.
To save cookies as variables, define the property "<span class="code">CookieManager.save.cookies=true</span>".
Also, cookies names are prefixed with "<span class="code">COOKIE_</span>" before they are stored (this avoids accidental corruption of local variables)
To revert to the original behaviour, define the property "<span class="code">CookieManager.name.prefix= </span>" (one or more spaces).
If enabled, the value of a cookie with the name <span class="code">TEST</span> can be referred to as <span class="code">${COOKIE_TEST}</span>.
</p>

<p>Second, you can manually add a cookie to the Cookie Manager.  However, if you do this,
the cookie will be shared by all JMeter threads.</p>

<p>Note that such Cookies are created with an Expiration time far in the future</p>

<p>
Cookies with <span class="code">null</span> values are ignored by default.
This can be changed by setting the JMeter property: <span class="code">CookieManager.delete_null_cookies=false</span>.
Note that this also applies to manually defined cookies - any such cookies will be removed from the display when it is updated.
Note also that the cookie name must be unique - if a second cookie is defined with the same name, it will replace the first.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/http-config/http-cookie-manager.png"><img src="../images/screenshots/http-config/http-cookie-manager.png" width="653" height="373" alt="Screenshot for Control-Panel of HTTP Cookie Manager"></a>
<figcaption>Screenshot of Control-Panel of HTTP Cookie Manager</figcaption>
</figure>
</div>
<div class="clear"></div>
<div class="note">If there is more than one Cookie Manager in the scope of a Sampler,
there is currently no way to specify which one is to be used.
Also, a cookie stored in one cookie manager is not available to any other manager,
so use multiple Cookie Managers with care.</div>
<div class="clear"></div>
<div class="properties">
<h3 id="HTTP_Cookie_Manager_parms1">
        Parameters
        <a class="sectionlink" href="#HTTP_Cookie_Manager_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
  
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree. </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Clear Cookies each Iteration</div>
<div class="description req-true">If selected, all server-defined cookies are cleared each time the main Thread Group loop is executed.
  Any cookie defined in the GUI are not cleared.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Cookie Policy</div>
<div class="description req-true">The cookie policy that will be used to manage the cookies. 
  "<span class="code">standard</span>" is the default since 3.0, and should work in most cases. 
  See <a href="https://hc.apache.org/httpcomponents-client-ga/tutorial/html/statemgmt.html#d5e515">Cookie specifications</a> and 
  <a href="http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/cookie/CookieSpec.html">CookieSpec implementations</a>
  [Note: "<span class="code">ignoreCookies</span>" is equivalent to omitting the CookieManager.]
 </div>
<div class="required req-true">Yes</div>
</div>
 
<div class="property">
<div class="name req-true">Implementation</div>
<div class="description req-true">
<span class="code">HC4CookieHandler</span> (HttpClient 4.5.X API). 
  Default is <span class="code">HC4CookieHandler</span> since 3.0.
  <br>
  
<i>[Note: If you have a website to test with IPv6 address, choose <span class="code">HC4CookieHandler</span> (IPv6 compliant)]</i>
</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">User-Defined Cookies</div>
<div class="description req-false">This
  gives you the opportunity to use hardcoded cookies that will be used by all threads during the test execution.
  <br>
  The "<span class="code">domain</span>" is the hostname of the server (without <span class="code">http://</span>); the port is currently ignored.
  </div>
<div class="required req-false">No (discouraged, unless you know what you're doing)</div>
</div>
  
<div class="property">
<div class="name req-false">Add Button</div>
<div class="description req-false">Add an entry to the cookie table.</div>
<div class="required req-false">N/A</div>
</div>
  
<div class="property">
<div class="name req-false">Delete Button</div>
<div class="description req-false">Delete the currently selected table entry.</div>
<div class="required req-false">N/A</div>
</div>
  
<div class="property">
<div class="name req-false">Load Button</div>
<div class="description req-false">Load a previously saved cookie table and add the entries to the existing
cookie table entries.</div>
<div class="required req-false">N/A</div>
</div>
  
<div class="property">
<div class="name req-false">Save As Button</div>
<div class="description req-false">
  Save the current cookie table to a file (does not save any cookies extracted from HTTP Responses).
  </div>
<div class="required req-false">N/A</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="HTTP_Request_Defaults">HTTP Request Defaults<a class="sectionlink" href="#HTTP_Request_Defaults" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>This element lets you set default values that your HTTP Request controllers use.  For example, if you are
creating a Test Plan with 25 HTTP Request controllers and all of the requests are being sent to the same server,
you could add a single HTTP Request Defaults element with the "<span class="code">Server Name or IP</span>" field filled in.  Then, when
you add the 25 HTTP Request controllers, leave the "<span class="code">Server Name or IP</span>" field empty.  The controllers will inherit
this field value from the HTTP Request Defaults element.</p>

<div class="clear"></div>
<div class="note">
All port values are treated equally; a sampler that does not specify a port will use the HTTP Request Defaults port, if one is provided.
</div>
<div class="clear"></div>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/http-config/http-request-defaults.png"><img src="../images/screenshots/http-config/http-request-defaults.png" width="879" height="469" alt="Screenshot for Control-Panel of HTTP Request Defaults"></a>
<figcaption>Screenshot of Control-Panel of HTTP Request Defaults</figcaption>
</figure>
</div>
<figure>
<a href="../images/screenshots/http-config/http-request-defaults-advanced-tab.png"><img src="../images/screenshots/http-config/http-request-defaults-advanced-tab.png" width="881" height="256" alt="HTTP Request Advanced config fields"></a>
<figcaption>HTTP Request Advanced config fields</figcaption>
</figure>
<div class="properties">
<h3 id="HTTP_Request_Defaults_parms1">
        Parameters
        <a class="sectionlink" href="#HTTP_Request_Defaults_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Server</div>
<div class="description req-false">Domain name or IP address of the web server. E.g. <span class="code">www.example.com</span>. [Do not include the <span class="code">http://</span> prefix.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Port</div>
<div class="description req-false">Port the web server is listening to.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Connect Timeout</div>
<div class="description req-false">Connection Timeout. Number of milliseconds to wait for a connection to open.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Response Timeout</div>
<div class="description req-false">Response Timeout. Number of milliseconds to wait for a response.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Implementation</div>
<div class="description req-false">
<span class="code">Java</span>, <span class="code">HttpClient4</span>. 
        If not specified the default depends on the value of the JMeter property
        <span class="code">jmeter.httpsampler</span>, failing that, the <span class="code">Java</span> implementation is used.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Protocol</div>
<div class="description req-false">
<span class="code">HTTP</span> or <span class="code">HTTPS</span>.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Content encoding</div>
<div class="description req-false">The encoding to be used for the request.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Path</div>
<div class="description req-false">The path to resource (for example, <span class="code">/servlets/myServlet</span>). If the
        resource requires query string parameters, add them below in the "<span class="code">Send Parameters With the Request</span>" section.
        Note that the path is the default for the full path, not a prefix to be applied to paths
        specified on the HTTP Request screens.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Send Parameters With the Request</div>
<div class="description req-false">The query string will
        be generated from the list of parameters you provide.  Each parameter has a <i>name</i> and
        <i>value</i>.  The query string will be generated in the correct fashion, depending on
        the choice of "<span class="code">Method</span>" you made (i.e. if you chose <span class="code">GET</span>, the query string will be
        appended to the URL, if <span class="code">POST</span>, then it will be sent separately).  Also, if you are
        sending a file using a multipart form, the query string will be created using the
        multipart form specifications.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Server (proxy)</div>
<div class="description req-false">Hostname or IP address of a proxy server to perform request. [Do not include the <span class="code">http://</span> prefix.]</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Port</div>
<div class="description req-false">Port the proxy server is listening to.</div>
<div class="required req-false">No, unless proxy hostname is specified</div>
</div>
        
<div class="property">
<div class="name req-false">Username</div>
<div class="description req-false">(Optional) username for proxy server.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Password</div>
<div class="description req-false">(Optional) password for proxy server. (N.B. this is stored unencrypted in the test plan)</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Retrieve All Embedded Resources from HTML Files</div>
<div class="description req-false">Tell JMeter to parse the HTML file
and send HTTP/HTTPS requests for all images, Java applets, JavaScript files, CSSs, etc. referenced in the file.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Use concurrent pool</div>
<div class="description req-false">Use a pool of concurrent connections to get embedded resources.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Size</div>
<div class="description req-false">Pool size for concurrent connections used to get embedded resources.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Embedded URLs must match:</div>
<div class="description req-false">
        If present, this must be a regular expression that is used to match against any embedded URLs found.
        So if you only want to download embedded resources from <span class="code">http://example.com/</span>, use the expression:
        <span class="code">http://example\.com/.*</span>
        
</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="clear"></div>
<div class="note">
Note: radio buttons only have two states - on or off.
This makes it impossible to override settings consistently
- does off mean off, or does it mean use the current default?
JMeter uses the latter (otherwise defaults would not work at all).
So if the button is off, then a later element can set it on,
but if the button is on, a later element cannot set it off.
</div>
<div class="clear"></div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="HTTP_Header_Manager">HTTP Header Manager<a class="sectionlink" href="#HTTP_Header_Manager" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>The Header Manager lets you add or override HTTP request headers.</p>

<p>

<b>JMeter now supports multiple Header Managers</b>. The header entries are merged to form the list for the sampler.
If an entry to be merged matches an existing header name, it replaces the previous entry.
This allows one to set up a default set of headers, and apply adjustments to particular samplers.
Note that an empty value for a header does not remove an existing header, it justs replace its value.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/http-config/http-header-manager.png"><img src="../images/screenshots/http-config/http-header-manager.png" width="767" height="239" alt="Screenshot for Control-Panel of HTTP Header Manager"></a>
<figcaption>Screenshot of Control-Panel of HTTP Header Manager</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="HTTP_Header_Manager_parms1">
        Parameters
        <a class="sectionlink" href="#HTTP_Header_Manager_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree. </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Name (Header)</div>
<div class="description req-false">Name of the request header.
        Two common request headers you may want to experiment with
are "<span class="code">User-Agent</span>" and "<span class="code">Referer</span>".</div>
<div class="required req-false">No (You should have at least one, however)</div>
</div>
  
<div class="property">
<div class="name req-false">Value</div>
<div class="description req-false">Request header value.</div>
<div class="required req-false">No (You should have at least one, however)</div>
</div>
  
<div class="property">
<div class="name req-false">Add Button</div>
<div class="description req-false">Add an entry to the header table.</div>
<div class="required req-false">N/A</div>
</div>
  
<div class="property">
<div class="name req-false">Delete Button</div>
<div class="description req-false">Delete the currently selected table entry.</div>
<div class="required req-false">N/A</div>
</div>
  
<div class="property">
<div class="name req-false">Load Button</div>
<div class="description req-false">Load a previously saved header table and add the entries to the existing
header table entries.</div>
<div class="required req-false">N/A</div>
</div>
  
<div class="property">
<div class="name req-false">Save As Button</div>
<div class="description req-false">Save the current header table to a file.</div>
<div class="required req-false">N/A</div>
</div>

</div>
<div class="example">
<div class="title">Header Manager example<a class="sectionlink" href="#header_manager_example" title="Link to here">&para;</a>
</div>


<p>
<a href="../demos/HeaderManagerTestPlan.jmx">Download</a> this example.  In this example, we created a Test Plan
that tells JMeter to override the default "<span class="code">User-Agent</span>" request header and use a particular Internet Explorer agent string
instead. (see figures 12 and 13).</p>


<figure>
<a href="../images/screenshots/http-config/header-manager-example1a.png"><img src="../images/screenshots/http-config/header-manager-example1a.png" width="247" height="121" alt="Figure 12 - Test Plan"></a>
<figcaption>Figure 12 - Test Plan</figcaption>
</figure>

<figure>
<a href="../images/screenshots/http-config/header-manager-example1b.png"><img src="../images/screenshots/http-config/header-manager-example1b.png" width="" height="" alt="Figure 13 - Header Manager Control Panel"></a>
<figcaption>Figure 13 - Header Manager Control Panel</figcaption>
</figure>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Java_Request_Defaults">Java Request Defaults<a class="sectionlink" href="#Java_Request_Defaults" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The Java Request Defaults component lets you set default values for Java testing.  See the <a href="../usermanual/component_reference.html#Java_Request">Java Request</a>.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/java_defaults.png"><img src="../images/screenshots/java_defaults.png" width="685" height="373" alt="Screenshot for Control-Panel of Java Request Defaults"></a>
<figcaption>Screenshot of Control-Panel of Java Request Defaults</figcaption>
</figure>
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="JDBC_Connection_Configuration">JDBC Connection Configuration<a class="sectionlink" href="#JDBC_Connection_Configuration" title="Link to here">&para;</a>
</h2>
<div class="description">Creates a database connection (used by <a href="../usermanual/component_reference.html#JDBC_Request">JDBC Request</a>Sampler)
     from the supplied JDBC Connection settings. The connection may be optionally pooled between threads.
     Otherwise each thread gets its own connection.
     The connection configuration name is used by the JDBC Sampler to select the appropriate
     connection.
     The used pool is DBCP, see <a href="https://commons.apache.org/proper/commons-dbcp/configuration.html">BasicDataSource Configuration Parameters</a>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/jdbc-config/jdbc-conn-config.png"><img src="../images/screenshots/jdbc-config/jdbc-conn-config.png" width="687" height="669" alt="Screenshot for Control-Panel of JDBC Connection Configuration"></a>
<figcaption>Screenshot of Control-Panel of JDBC Connection Configuration</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="JDBC_Connection_Configuration_parms1">
        Parameters
        <a class="sectionlink" href="#JDBC_Connection_Configuration_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for the connection configuration that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Variable Name for created pool</div>
<div class="description req-true">The name of the variable the connection is tied to.  
        Multiple connections can be used, each tied to a different variable, allowing JDBC Samplers
        to select the appropriate connection.
        <div class="clear"></div>
<div class="note">Each name must be different. If there are two configuration elements using the same name,
        only one will be saved. JMeter logs a message if a duplicate name is detected.</div>
<div class="clear"></div>
        
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Max Number of Connections</div>
<div class="description req-true">
        Maximum number of connections allowed in the pool.
        In most cases, <b>set this to zero (0)</b>.
        This means that each thread will get its own pool with a single connection in it, i.e.
        the connections are not shared between threads.
        <br>
        If you really want to use shared pooling (why?), then set the max count to the same as the number of threads
        to ensure threads don't wait on each other.
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Max Wait (ms)</div>
<div class="description req-true">Pool throws an error if the timeout period is exceeded in the 
        process of trying to retrieve a connection, see <a href="https://commons.apache.org/proper/commons-dbcp/api-2.1.1/org/apache/commons/dbcp2/BasicDataSource.html#getMaxWaitMillis--">BasicDataSource.html#getMaxWaitMillis</a>
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Time Between Eviction Runs (ms)</div>
<div class="description req-true">The number of milliseconds to sleep between runs of the idle object evictor thread. When non-positive, no idle object evictor thread will be run. (Defaults to "<span class="code">60000</span>", 1 minute).
        See <a href="https://commons.apache.org/proper/commons-dbcp/api-2.1.1/org/apache/commons/dbcp2/BasicDataSource.html#getTimeBetweenEvictionRunsMillis--">BasicDataSource.html#getTimeBetweenEvictionRunsMillis</a>
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Auto Commit</div>
<div class="description req-true">Turn auto commit on or off for the connections.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Transaction isolation</div>
<div class="description req-true">Transaction isolation level</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Preinit Pool</div>
<div class="description req-false">The connection pool can be intialized instantly. If set to <span class="code">False</span> (default), the JDBC request samplers using this pool might measure higher response times for the first queries &ndash; as the connection establishment time for the whole pool is included.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Init SQL statements separated by new line</div>
<div class="description req-false">A Collection of SQL statements that will be used to initialize physical connections when they are first created. These statements are executed only once - when the configured connection factory creates the connection. </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Test While Idle</div>
<div class="description req-true">Test idle connections of the pool, see <a href="https://commons.apache.org/proper/commons-dbcp/api-2.1.1/org/apache/commons/dbcp2/BasicDataSource.html#getTestWhileIdle--">BasicDataSource.html#getTestWhileIdle</a>. 
        Validation Query will be used to test it.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Soft Min Evictable Idle Time(ms)</div>
<div class="description req-true">Minimum amount of time a connection may sit idle in the pool before it is eligible for eviction by the idle object evictor, with the extra condition that at least <span class="code">minIdle</span> connections remain in the pool.
        See <a href="https://commons.apache.org/proper/commons-dbcp/api-2.1.1/org/apache/commons/dbcp2/BasicDataSource.html#getSoftMinEvictableIdleTimeMillis--">BasicDataSource.html#getSoftMinEvictableIdleTimeMillis</a>.
        Defaults to 5000 (5 seconds)
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Validation Query</div>
<div class="description req-false">A simple query used to determine if the database is still responding.
        This defaults to the '<span class="code">isValid()</span>' method of the jdbc driver, which is suitable for many databases.
        However some may require a different query; for example Oracle something like '<span class="code">SELECT 1 FROM DUAL</span>' could be used.
        <p>The list of the validation queries can be configured with <span class="code">jdbc.config.check.query</span> property and are by default:</p>
            
<dl>
              
<dt>hsqldb</dt>
<dd>
<span class="code">select 1 from INFORMATION_SCHEMA.SYSTEM_USERS</span>
</dd>
              
<dt>Oracle</dt>
<dd>
<span class="code">select 1 from dual</span>
</dd>
              
<dt>DB2</dt>
<dd>
<span class="code">select 1 from sysibm.sysdummy1</span>
</dd>
              
<dt>MySQL or MariaDB</dt>
<dd>
<span class="code">select 1</span>
</dd>
              
<dt>Microsoft SQL Server (MS JDBC driver)</dt>
<dd>
<span class="code">select 1</span>
</dd>
              
<dt>PostgreSQL</dt>
<dd>
<span class="code">select 1</span>
</dd>
              
<dt>Ingres</dt>
<dd>
<span class="code">select 1</span>
</dd>
              
<dt>Derby</dt>
<dd>
<span class="code">values 1</span>
</dd>
              
<dt>H2</dt>
<dd>
<span class="code">select 1</span>
</dd>
              
<dt>Firebird</dt>
<dd>
<span class="code">select 1 from rdb$database</span>
</dd>
              
<dt>Exasol</dt>
<dd>
<span class="code">select 1</span>
</dd>
            
</dl>
        
<div class="clear"></div>
<div class="note">The list come from <a href="https://stackoverflow.com/questions/10684244/dbcp-validationquery-for-different-databases">stackoverflow entry on different database validation queries</a> and it can be incorrect</div>
<div class="clear"></div>
        
<div class="clear"></div>
<div class="note">Note this validation query is used on pool creation to validate it even if "<span class="code">Test While Idle</span>" suggests query would only be used on idle connections.
        This is DBCP behaviour.</div>
<div class="clear"></div>
        
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Database URL</div>
<div class="description req-true">JDBC Connection string for the database.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">JDBC Driver class</div>
<div class="description req-true">Fully qualified name of driver class. (Must be in
        JMeter's classpath - easiest to copy <span class="code">.jar</span> file into JMeter's <span class="code">/lib</span> directory).
        <p>The list of the preconfigured jdbc driver classes can be configured with <span class="code">jdbc.config.jdbc.driver.class</span> property and are by default:</p>
            
<dl>
              
<dt>hsqldb</dt>
<dd>org.hsqldb.jdbc.JDBCDriver</dd>
              
<dt>Oracle</dt>
<dd>oracle.jdbc.OracleDriver</dd>
              
<dt>DB2</dt>
<dd>com.ibm.db2.jcc.DB2Driver</dd>
              
<dt>MySQL</dt>
<dd>com.mysql.jdbc.Driver</dd>
              
<dt>Microsoft SQL Server (MS JDBC driver)</dt>
<dd>com.microsoft.sqlserver.jdbc.SQLServerDriver or com.microsoft.jdbc.sqlserver.SQLServerDriver</dd>
              
<dt>PostgreSQL</dt>
<dd>org.postgresql.Driver</dd>
              
<dt>Ingres</dt>
<dd>com.ingres.jdbc.IngresDriver</dd>
              
<dt>Derby</dt>
<dd>org.apache.derby.jdbc.ClientDriver</dd>
              
<dt>H2</dt>
<dd>org.h2.Driver</dd>
              
<dt>Firebird</dt>
<dd>org.firebirdsql.jdbc.FBDriver</dd>
              
<dt>Apache Derby</dt>
<dd>org.apache.derby.jdbc.ClientDriver</dd>
              
<dt>MariaDB</dt>
<dd>org.mariadb.jdbc.Driver</dd>
              
<dt>SQLite</dt>
<dd>org.sqlite.JDBC</dd>
              
<dt>Sybase AES</dt>
<dd>net.sourceforge.jtds.jdbc.Driver</dd>
              
<dt>Exasol</dt>
<dd>com.exasol.jdbc.EXADriver</dd>
            
</dl>
        
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Username</div>
<div class="description req-false">Name of user to connect as.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Password</div>
<div class="description req-false">Password to connect with. (N.B. this is stored unencrypted in the test plan)</div>
<div class="required req-false">No</div>
</div>
    
</div>
<p>Different databases and JDBC drivers require different JDBC settings. 
The Database URL and JDBC Driver class are defined by the provider of the JDBC implementation.</p>
<p>Some possible settings are shown below. Please check the exact details in the JDBC driver documentation.</p>
<p>
If JMeter reports <span class="code">No suitable driver</span>, then this could mean either:
</p>
<ul>

<li>The driver class was not found. In this case, there will be a log message such as <span class="code">DataSourceElement: Could not load driver: {classname} java.lang.ClassNotFoundException: {classname}</span>
</li>

<li>The driver class was found, but the class does not support the connection string. This could be because of a syntax error in the connection string, or because the wrong classname was used.</li>

</ul>
<p>
If the database server is not running or is not accessible, then JMeter will report a <span class="code">java.net.ConnectException</span>.
</p>
<p>Some examples for databases and their parameters are given below.</p>
<dl>
  
<dt>MySQL</dt>
  
<dd>
    
<dl>
      
<dt>Driver class</dt>
      
<dd>
<span class="code">com.mysql.jdbc.Driver</span>
</dd>
      
<dt>Database URL</dt>
      
<dd>
<span class="code">jdbc:mysql://host[:port]/dbname</span>
</dd>
    
</dl>
  
</dd>
  
<dt>PostgreSQL</dt>
  
<dd>
    
<dl>
      
<dt>Driver class</dt>
      
<dd>
<span class="code">org.postgresql.Driver</span>
</dd>
      
<dt>Database URL</dt>
      
<dd>
<span class="code">jdbc:postgresql:{dbname}</span>
</dd>
    
</dl>
  
</dd>
  
<dt>Oracle</dt>
  
<dd>
    
<dl>
      
<dt>Driver class</dt>
      
<dd>
<span class="code">oracle.jdbc.OracleDriver</span>
</dd>
      
<dt>Database URL</dt>
      
<dd>
<span class="code">jdbc:oracle:thin:@//host:port/service</span> OR <span class="code">jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no}))(connect_data=(sid={sid})))</span>
</dd>
    
</dl>
  
</dd>
  
<dt>Ingress (2006)</dt>
  
<dd>
    
<dl>
      
<dt>Driver class</dt>
      
<dd>
<span class="code">ingres.jdbc.IngresDriver</span>
</dd>
      
<dt>Database URL</dt>
      
<dd>
<span class="code">jdbc:ingres://host:port/db[;attr=value]</span>
</dd>
    
</dl>
  
</dd>
  
<dt>Microsoft SQL Server (MS JDBC driver)</dt>
  
<dd>
    
<dl>
      
<dt>Driver class</dt>
      
<dd>
<span class="code">com.microsoft.sqlserver.jdbc.SQLServerDriver</span>
</dd>
      
<dt>Database URL</dt>
      
<dd>
<span class="code">jdbc:sqlserver://host:port;DatabaseName=dbname</span>
</dd>
    
</dl>
  
</dd>
  
<dt>Apache Derby</dt>
  
<dd>
    
<dl>
      
<dt>Driver class</dt>
      
<dd>
<span class="code">org.apache.derby.jdbc.ClientDriver</span>
</dd>
      
<dt>Database URL</dt>
      
<dd>
<span class="code">jdbc:derby://server[:port]/databaseName[;URLAttributes=value[;&hellip;]]</span>
</dd>
    
</dl>
  
</dd>
  
<dt>MariaDB</dt>
  
<dd>
    
<dl>
      
<dt>Driver class</dt>
      
<dd>
<span class="code">org.mariadb.jdbc.Driver</span>
</dd>
      
<dt>Database URL</dt>
      
<dd>
<span class="code">jdbc:mariadb://host[:port]/dbname[;URLAttributes=value[;&hellip;]]</span>
</dd>
    
</dl>
  
</dd>
  
<dt>Exasol (see also <a href="https://docs.exasol.com/connect_exasol/drivers/jdbc.htm">JDBC driver documentation</a>)</dt>
  
<dd>
    
<dl>
      
<dt>Driver class</dt>
      
<dd>
<span class="code">com.exasol.jdbc.EXADriver</span>
</dd>
      
<dt>Database URL</dt>
      
<dd>
<span class="code">jdbc:exa:host[:port][;schema=SCHEMA_NAME][;prop_x=value_x]</span>
</dd>
    
</dl>
  
</dd>

</dl>
<div class="clear"></div>
<div class="note">The above may not be correct - please check the relevant JDBC driver documentation.</div>
<div class="clear"></div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>



<div class="component">
<h2 id="Keystore_Configuration">Keystore Configuration<a class="sectionlink" href="#Keystore_Configuration" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The Keystore Config Element lets you configure how Keystore will be loaded and which keys it will use.
This component is typically used in HTTPS scenarios where you don't want to take into account keystore initialization into account in response time.</p>

<p>To use this element, you need to setup first a Java Key Store with the client certificates you want to test, to do that:
</p>

<ol>

<li>Create your certificates either with Java <span class="code">keytool</span> utility or through your PKI</li>

<li>If created by PKI, import your keys in Java Key Store by converting them to a format acceptable by JKS</li>

<li>Then reference the keystore file through the two JVM properties (or add them in <span class="code">system.properties</span>):
    <ul>
        
<li>
<span class="code">-Djavax.net.ssl.keyStore=path_to_keystore</span>
</li>
        
<li>
<span class="code">-Djavax.net.ssl.keyStorePassword=password_of_keystore</span>
</li>
    
</ul>

</li>

</ol>

<p>To use PKCS11 as the source for the store, you need to set <span class="code">javax.net.ssl.keyStoreType</span> to <span class="code">PKCS11</span>
and <span class="code">javax.net.ssl.keyStore</span> to <span class="code">NONE</span>.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/keystore_config.png"><img src="../images/screenshots/keystore_config.png" width="441" height="189" alt="Screenshot for Control-Panel of Keystore Configuration"></a>
<figcaption>Screenshot of Control-Panel of Keystore Configuration</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Keystore_Configuration_parms1">
        Parameters
        <a class="sectionlink" href="#Keystore_Configuration_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
  
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree. </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Preload</div>
<div class="description req-true">Wether or not to preload Keystore. Setting it to <span class="code">true</span> is usually the best option.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">Variable name holding certificate alias</div>
<div class="description req-false">Variable name that will contain the alias to use for authentication by client certificate. Variable value will be filled from CSV Data Set for example. In the screenshot, "<span class="code">certificat_ssl</span>" will also be a variable in CSV Data Set. Defaults to <span class="code">clientCertAliasVarName</span>
</div>
<div class="required req-false">False</div>
</div>
  
<div class="property">
<div class="name req-true">Alias Start Index</div>
<div class="description req-true">The index of the first key to use in Keystore, 0-based.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Alias End Index</div>
<div class="description req-true">The index of the last key to use in Keystore, 0-based. When using "<span class="code">Variable name holding certificate alias</span>" ensure it is large enough so that all keys are loaded at startup. Default to -1 which means load all.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="clear"></div>
<div class="note">
To make JMeter use more than one certificate you need to ensure that:
<ul>

<li>
<span class="code">https.use.cached.ssl.context=false</span> is set in <span class="code">jmeter.properties</span> or <span class="code">user.properties</span>
</li>

<li>You use HTTPClient 4 implementation for HTTP Request</li>

</ul>

</div>
<div class="clear"></div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Login_Config_Element">Login Config Element<a class="sectionlink" href="#Login_Config_Element" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The Login Config Element lets you add or override username and password settings in samplers that use username and password as part of their setup.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/login-config.png"><img src="../images/screenshots/login-config.png" width="459" height="126" alt="Screenshot for Control-Panel of Login Config Element"></a>
<figcaption>Screenshot of Control-Panel of Login Config Element</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Login_Config_Element_parms1">
        Parameters
        <a class="sectionlink" href="#Login_Config_Element_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree. </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Username</div>
<div class="description req-false">The default username to use.</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Password</div>
<div class="description req-false">The default password to use. (N.B. this is stored unencrypted in the test plan)</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="LDAP_Request_Defaults">LDAP Request Defaults<a class="sectionlink" href="#LDAP_Request_Defaults" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The LDAP Request Defaults component lets you set default values for LDAP testing.  See the <a href="../usermanual/component_reference.html#LDAP_Request">LDAP Request</a>.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/ldap_defaults.png"><img src="../images/screenshots/ldap_defaults.png" width="689" height="232" alt="Screenshot for Control-Panel of LDAP Request Defaults"></a>
<figcaption>Screenshot of Control-Panel of LDAP Request Defaults</figcaption>
</figure>
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="LDAP_Extended_Request_Defaults">LDAP Extended Request Defaults<a class="sectionlink" href="#LDAP_Extended_Request_Defaults" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The LDAP Extended Request Defaults component lets you set default values for extended LDAP testing.  See the <a href="../usermanual/component_reference.html#LDAP_Extended_Request">LDAP Extended Request</a>.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/ldapext_defaults.png"><img src="../images/screenshots/ldapext_defaults.png" width="686" height="184" alt="Screenshot for Control-Panel of LDAP Extended Request Defaults"></a>
<figcaption>Screenshot of Control-Panel of LDAP Extended Request Defaults</figcaption>
</figure>
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="TCP_Sampler_Config">TCP Sampler Config<a class="sectionlink" href="#TCP_Sampler_Config" title="Link to here">&para;</a>
</h2>
<div class="description">
        
<p>
    The TCP Sampler Config provides default data for the TCP Sampler
    </p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/tcpsamplerconfig.png"><img src="../images/screenshots/tcpsamplerconfig.png" width="826" height="450" alt="Screenshot for Control-Panel of TCP Sampler Config"></a>
<figcaption>Screenshot of Control-Panel of TCP Sampler Config</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="TCP_Sampler_Config_parms1">
        Parameters
        <a class="sectionlink" href="#TCP_Sampler_Config_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
  
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-false">TCPClient classname</div>
<div class="description req-false">Name of the TCPClient class. Defaults to the property <span class="code">tcp.handler</span>, failing that <span class="code">TCPClientImpl</span>.</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">ServerName or IP</div>
<div class="description req-true">Name or IP of TCP server</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">Port Number</div>
<div class="description req-true">Port to be used</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">Re-use connection</div>
<div class="description req-true">If selected, the connection is kept open. Otherwise it is closed when the data has been read.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Close connection</div>
<div class="description req-true">If selected, the connection will be closed after running the sampler.</div>
<div class="required req-true">Yes</div>
</div>  
  
<div class="property">
<div class="name req-false">SO_LINGER</div>
<div class="description req-false">Enable/disable <span class="code">SO_LINGER</span> with the specified linger time in seconds when a socket is created. If you set "<span class="code">SO_LINGER</span>" value as <span class="code">0</span>, you may prevent large numbers of sockets sitting around with a <span class="code">TIME_WAIT</span> status.</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">End of line(EOL) byte value</div>
<div class="description req-false">Byte value for end of line, set this to a value outside the range <span class="code">-128</span> to <span class="code">+127</span> to skip EOL checking. You may set this in <span class="code">jmeter.properties</span> file as well with the <span class="code">tcp.eolByte</span> property. If you set this in TCP Sampler Config and in <span class="code">jmeter.properties</span> file at the same time, the setting value in the TCP Sampler Config will be used.</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Connect Timeout</div>
<div class="description req-false">Connect Timeout (milliseconds, 0 disables).</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-false">Response Timeout</div>
<div class="description req-false">Response Timeout (milliseconds, 0 disables).</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Set Nodelay</div>
<div class="description req-true">Should the nodelay property be set?</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">Text to Send</div>
<div class="description req-true">Text to be sent</div>
<div class="required req-true"></div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="User_Defined_Variables">User Defined Variables<a class="sectionlink" href="#User_Defined_Variables" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The User Defined Variables element lets you define an <b>initial set of variables</b>, just as in the <a href="../usermanual/component_reference.html#Test_Plan">Test Plan</a>.
<div class="clear"></div>
<div class="note">
Note that all the UDV elements in a test plan - no matter where they are - are processed at the start.
</div>
<div class="clear"></div>
So you cannot reference variables which are defined as part of a test run, e.g. in a Post-Processor.
</p>

<p>

<b>
UDVs should not be used with functions that generate different results each time they are called.
Only the result of the first function call will be saved in the variable. 
</b>
However, UDVs can be used with functions such as <span class="code"><a href="../usermanual/functions.html#__P">__P()</a></span>, for example:
</p>

<pre class="source">
HOST      ${__P(host,localhost)} 
</pre>

<p>
which would define the variable "<span class="code">HOST</span>" to have the value of the JMeter property "<span class="code">host</span>", defaulting to "<span class="code">localhost</span>" if not defined.
</p>

<p>
For defining variables during a test run, see <a href="../usermanual/component_reference.html#User_Parameters">User Parameters</a>.
UDVs are processed in the order they appear in the Plan, from top to bottom.
</p>

<p>
For simplicity, it is suggested that UDVs are placed only at the start of a Thread Group
(or perhaps under the Test Plan itself).
</p>

<p>
Once the Test Plan and all UDVs have been processed, the resulting set of variables is
copied to each thread to provide the initial set of variables.
</p>

<p>
If a runtime element such as a User Parameters Pre-Processor or Regular Expression Extractor defines a variable
with the same name as one of the UDV variables, then this will replace the initial value, and all other test
elements in the thread will see the updated value.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/user_defined_variables.png"><img src="../images/screenshots/user_defined_variables.png" width="741" height="266" alt="Screenshot for Control-Panel of User Defined Variables"></a>
<figcaption>Screenshot of Control-Panel of User Defined Variables</figcaption>
</figure>
</div>
<div class="clear"></div>
<div class="note">
If you have more than one Thread Group, make sure you use different names for different values, as UDVs are shared between Thread Groups.
Also, the variables are not available for use until after the element has been processed, 
so you cannot reference variables that are defined in the same element.
You can reference variables defined in earlier UDVs or on the Test Plan. 
</div>
<div class="clear"></div>
<div class="properties">
<h3 id="User_Defined_Variables_parms1">
        Parameters
        <a class="sectionlink" href="#User_Defined_Variables_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
  
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
  
<div class="property">
<div class="name req-true">User Defined Variables</div>
<div class="description req-true">Variable name/value pairs. The string under the "<span class="code">Name</span>"
      column is what you'll need to place inside the brackets in <span class="code">${&hellip;}</span> constructs to use the variables later on. The
      whole <span class="code">${&hellip;}</span> will then be replaced by the string in the "<span class="code">Value</span>" column.</div>
<div class="required req-true"></div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Random_Variable">Random Variable<a class="sectionlink" href="#Random_Variable" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The Random Variable Config Element is used to generate random numeric strings and store them in variable for use later.
It's simpler than using <a href="../usermanual/component_reference.html#User_Defined_Variables">User Defined Variables</a> together with the <span class="code"><a href="../usermanual/functions.html#__Random">__Random()</a></span> function.
</p>

<p>
The output variable is constructed by using the random number generator,
and then the resulting number is formatted using the format string.
The number is calculated using the formula <span class="code">minimum+Random.nextInt(maximum-minimum+1)</span>.
<span class="code">Random.nextInt()</span> requires a positive integer.
This means that <span class="code">maximum-minimum</span> - i.e. the range - must be less than <span class="code">2147483647</span>,
however the <span class="code">minimum</span> and <span class="code">maximum</span> values can be any <span class="code">long</span> values so long as the range is OK.
</p>

<div class="clear"></div>
<div class="note">As the random value is evaluated at the start of each iteration, it is probably not a good idea
to use a variable other than a property as a value for the minimum or maximum. It would be zero on the first iteration.</div>
<div class="clear"></div>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/random_variable.png"><img src="../images/screenshots/random_variable.png" width="495" height="286" alt="Screenshot for Control-Panel of Random Variable"></a>
<figcaption>Screenshot of Control-Panel of Random Variable</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Random_Variable_parms1">
        Parameters
        <a class="sectionlink" href="#Random_Variable_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
  
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Variable Name</div>
<div class="description req-true">The name of the variable in which to store the random string.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">Format String</div>
<div class="description req-false">The <span class="code">java.text.DecimalFormat</span> format string to be used. 
  For example "<span class="code">000</span>" which will generate numbers with at least 3 digits, 
  or "<span class="code">USER_000</span>" which will generate output of the form <span class="code">USER_nnn</span>. 
  If not specified, the default is to generate the number using <span class="code">Long.toString()</span>
</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Minimum Value</div>
<div class="description req-true">The minimum value (<span class="code">long</span>) of the generated random number.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Maximum Value</div>
<div class="description req-true">The maximum value (<span class="code">long</span>) of the generated random number.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">Random Seed</div>
<div class="description req-false">The seed for the random number generator. 
  If you use the same seed value with Per Thread set to <span class="code">true</span>, you will get the same value for each Thread as per 
  <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Random.html">Random</a> class.
  If no seed is set, Default constructor of Random will be used.
  </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Per Thread(User)?</div>
<div class="description req-true">If <span class="code">False</span>, the generator is shared between all threads in the thread group.
  If <span class="code">True</span>, then each thread has its own random generator.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Counter">Counter<a class="sectionlink" href="#Counter" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>Allows the user to create a counter that can be referenced anywhere
in the Thread Group.  The counter config lets the user configure a starting point, a maximum,
and the increment.  The counter will loop from the start to the max, and then start over
with the start, continuing on like that until the test is ended.  </p>

<p>The counter uses a long to store the value, so the range is from <span class="code">-2^63</span> to <span class="code">2^63-1</span>.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/counter.png"><img src="../images/screenshots/counter.png" width="404" height="262" alt="Screenshot for Control-Panel of Counter"></a>
<figcaption>Screenshot of Control-Panel of Counter</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Counter_parms1">
        Parameters
        <a class="sectionlink" href="#Counter_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
        
<div class="property">
<div class="name req-false">Starting value</div>
<div class="description req-false">The starting value for the counter.  The counter will equal this
        value during the first iteration (defaults to 0).</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Increment</div>
<div class="description req-true">How much to increment the counter by after each
        iteration (defaults to 0, meaning no increment).</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Maximum value</div>
<div class="description req-false">If the counter exceeds the maximum, then it is reset to the <span class="code">Starting value</span>.
        Default is <span class="code">Long.MAX_VALUE</span>
        
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Format</div>
<div class="description req-false">Optional format, e.g. <span class="code">000</span> will format as <span class="code">001</span>, <span class="code">002</span>, etc. 
        This is passed to <span class="code">DecimalFormat</span>, so any valid formats can be used.
        If there is a problem interpreting the format, then it is ignored.
    [The default format is generated using <span class="code">Long.toString()</span>]
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Exported Variable Name</div>
<div class="description req-false">This will be the variable name under which the counter value is available.  
        If you name it <span class="code">counterA</span>, you can then access it using <span class="code">${counterA}</span> 
        as explained in <a href="functions.html">user-defined values</a> (By default, it creates an empty string variable that can be accessed using <span class="code">${}</span> but this is highly discouraged)</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Track Counter Independently for each User</div>
<div class="description req-false">In other words, is this a global counter, or does each user get their
        own counter?  If unchecked, the counter is global (i.e., user #1 will get value "<span class="code">1</span>", and user #2 will get value "<span class="code">2</span>" on
        the first iteration).  If checked, each user has an independent counter.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Reset counter on each Thread Group Iteration</div>
<div class="description req-false">This option is only available when counter is tracked per User, if checked, 
        counter will be reset to <span class="code">Start</span> value on each Thread Group iteration. This can be useful when Counter is inside a Loop Controller.</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Simple_Config_Element">Simple Config Element<a class="sectionlink" href="#Simple_Config_Element" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The Simple Config Element lets you add or override arbitrary values in samplers.  You can choose the name of the value
and the value itself.  Although some adventurous users might find a use for this element, it's here primarily for developers as a basic
GUI that they can use while developing new JMeter components.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/simple_config_element.png"><img src="../images/screenshots/simple_config_element.png" width="627" height="282" alt="Screenshot for Control-Panel of Simple Config Element"></a>
<figcaption>Screenshot of Control-Panel of Simple Config Element</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Simple_Config_Element_parms1">
        Parameters
        <a class="sectionlink" href="#Simple_Config_Element_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree. </div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Parameter Name</div>
<div class="description req-true">The name of each parameter.  These values are internal to JMeter's workings and
  are not generally documented.  Only those familiar with the code will know these values.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Parameter Value</div>
<div class="description req-true">The value to apply to that parameter.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>



<div class="component">
<h2 id="MongoDB_Source_Config_(DEPRECATED)">MongoDB Source Config (DEPRECATED)<a class="sectionlink" href="#MongoDB_Source_Config_(DEPRECATED)" title="Link to here">&para;</a>
</h2>
<div class="description">Creates a MongoDB connection (used by <a href="../usermanual/component_reference.html#MongoDB_Script">MongoDB Script</a>Sampler)
     from the supplied Connection settings. Each thread gets its own connection.
     The connection configuration name is used by the JDBC Sampler to select the appropriate
     connection.
     <p>
     You can then access <span class="code">com.mongodb.DB</span> object in Beanshell or JSR223 Test Elements through the element <a href="../api/org/apache/jmeter/protocol/mongodb/config/MongoDBHolder.html">MongoDBHolder</a> 
     using this code</p>
     
    
<pre class="source">
import com.mongodb.DB;
import org.apache.jmeter.protocol.mongodb.config.MongoDBHolder;
DB db = MongoDBHolder.getDBFromSource("value of property MongoDB Source",
            "value of property Database Name");
&hellip;
    </pre>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/mongodb-source-config.png"><img src="../images/screenshots/mongodb-source-config.png" width="1233" height="618" alt="Screenshot for Control-Panel of MongoDB Source Config (DEPRECATED)"></a>
<figcaption>Screenshot of Control-Panel of MongoDB Source Config (DEPRECATED)</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="MongoDB_Source_Config_(DEPRECATED)_parms1">
        Parameters
        <a class="sectionlink" href="#MongoDB_Source_Config_(DEPRECATED)_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for the connection configuration that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Server Address List</div>
<div class="description req-true">Mongo DB Servers</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">MongoDB Source</div>
<div class="description req-true">The name of the variable the connection is tied to.  
        <div class="clear"></div>
<div class="note">Each name must be different. If there are two configuration elements using the same name, only one will be saved.</div>
<div class="clear"></div>
        
</div>
<div class="required req-true">Yes</div>
</div>
        
        
<div class="property">
<div class="name req-false">Keep Trying</div>
<div class="description req-false">
            If <span class="code">true</span>, the driver will keep trying to connect to the same server in case that the socket cannot be established.<br>
            There is maximum amount of time to keep retrying, which is 15s by default.<br>This can be useful to avoid some exceptions being thrown when a server is down temporarily by blocking the operations.
            <br>It can also be useful to smooth the transition to a new master (so that a new master is elected within the retry time).<br>
            
<div class="clear"></div>
<div class="note">Note that when using this flag
              <ul>
                
<li>for a replica set, the driver will try to connect to the old master for that time, instead of failing over to the new one right away </li>
                
<li>this does not prevent exception from being thrown in read/write operations on the socket, which must be handled by application.</li>
              
</ul>
              Even if this flag is false, the driver already has mechanisms to automatically recreate broken connections and retry the read operations.
            </div>
<div class="clear"></div>
            Default is <span class="code">false</span>.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Maximum connections per host</div>
<div class="description req-false"></div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Connection timeout</div>
<div class="description req-false">
            The connection timeout in milliseconds.<br>It is used solely when establishing a new connection <span class="code">Socket.connect(java.net.SocketAddress, int)</span>
<br>Default is <span class="code">0</span> and means no timeout.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Maximum retry time</div>
<div class="description req-false">
            The maximum amount of time in milliseconds to spend retrying to open connection to the same server.<br>Default is <span class="code">0</span>, which means to use the default 15s if <span class="code">autoConnectRetry</span> is on.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Maximum wait time</div>
<div class="description req-false">
            The maximum wait time in milliseconds that a thread may wait for a connection to become available.<br>Default is <span class="code">120,000</span>.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Socket timeout</div>
<div class="description req-false">
            The socket timeout in milliseconds It is used for I/O socket read and write operations <span class="code">Socket.setSoTimeout(int)</span>
<br>Default is <span class="code">0</span> and means no timeout.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Socket keep alive</div>
<div class="description req-false">
            This flag controls the socket keep alive feature that keeps a connection alive through firewalls <span class="code">Socket.setKeepAlive(boolean)</span>
<br>
            Default is <span class="code">false</span>.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">ThreadsAllowedToBlockForConnectionMultiplier</div>
<div class="description req-false">
        This multiplier, multiplied with the connectionsPerHost setting, gives the maximum number of threads that may be waiting for a connection to become available from the pool.<br>
        All further threads will get an exception right away.<br>
        For example if <span class="code">connectionsPerHost</span> is <span class="code">10</span> and <span class="code">threadsAllowedToBlockForConnectionMultiplier</span> is <span class="code">5</span>, then up to 50 threads can wait for a connection.<br>
        Default is <span class="code">5</span>.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Write Concern : Safe</div>
<div class="description req-false">
            If <span class="code">true</span> the driver will use a <span class="code">WriteConcern</span> of <span class="code">WriteConcern.SAFE</span> for all operations.<br>
            If <span class="code">w</span>, <span class="code">wtimeout</span>, <span class="code">fsync</span> or <span class="code">j</span> are specified, this setting is ignored.<br>
            Default is <span class="code">false</span>.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Write Concern : Fsync</div>
<div class="description req-false">
            The <span class="code">fsync</span> value of the global <span class="code">WriteConcern</span>.<br>
            Default is <span class="code">false</span>.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Write Concern : Wait for Journal</div>
<div class="description req-false">
            The <span class="code">j</span> value of the global <span class="code">WriteConcern</span>.<br>
            Default is <span class="code">false</span>.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Write Concern : Wait for servers</div>
<div class="description req-false">
            The <span class="code">w</span> value of the global <span class="code">WriteConcern</span>.<br>Default is <span class="code">0</span>.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Write Concern : Wait timeout</div>
<div class="description req-false">
            The <span class="code">wtimeout</span> value of the global <span class="code">WriteConcern</span>.<br>Default is <span class="code">0</span>.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Write Concern : Continue on error</div>
<div class="description req-false">
            If batch inserts should continue after the first error
        </div>
<div class="required req-false">No</div>
</div>
    
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<a href="#">^</a>


<div class="component">
<h2 id="Bolt_Connection_Configuration">Bolt Connection Configuration<a class="sectionlink" href="#Bolt_Connection_Configuration" title="Link to here">&para;</a>
</h2>
<div class="description">Creates a Bolt connection pool (used by <a href="../usermanual/component_reference.html#Bolt_Request">Bolt Request</a> Sampler)
        from the supplied Connection settings.
    </div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/bolt-connection-config.png"><img src="../images/screenshots/bolt-connection-config.png" width="711" height="170" alt="Screenshot for Control-Panel of Bolt Connection Configuration"></a>
<figcaption>Screenshot of Control-Panel of Bolt Connection Configuration</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Bolt_Connection_Configuration_parms1">
        Parameters
        <a class="sectionlink" href="#Bolt_Connection_Configuration_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this sampler that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Comments</div>
<div class="description req-false">Free text for additional details.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Bolt URI</div>
<div class="description req-true">The database URI.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Username</div>
<div class="description req-false">User account.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Password</div>
<div class="description req-false">User credentials.</div>
<div class="required req-false">No</div>
</div>
    
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<a href="#">^</a>


</div>
<div class="section">
<h1 id="assertions">18.5 Assertions<a class="sectionlink" href="#assertions" title="Link to here">&para;</a>
</h1>

<div class="description">
    
<p>
    Assertions are used to perform additional checks on samplers, and are processed after <b>every sampler</b>
    in the same scope.
    To ensure that an Assertion is applied only to a particular sampler, add it as a child of the sampler.
    </p>
    
<div class="clear"></div>
<div class="note">
    Note: Unless documented otherwise, Assertions are not applied to sub-samples (child samples) -
    only to the parent sample.
    In the case of JSR223 and BeanShell Assertions, the script can retrieve sub-samples using the method
    <span class="code">prev.getSubResults()</span> which returns an array of SampleResults.
    The array will be empty if there are none.
    </div>
<div class="clear"></div>
    
<p>
    Assertions can be applied to either the main sample, the sub-samples or both. 
    The default is to apply the assertion to the main sample only.
    If the Assertion supports this option, then there will be an entry on the GUI which looks like the following:
    </p>
    
<figure>
<a href="../images/screenshots/assertion/assertionscope.png"><img src="../images/screenshots/assertion/assertionscope.png" width="658" height="54" alt="Assertion Scope"></a>
<figcaption>Assertion Scope</figcaption>
</figure>
    or the following
    <figure>
<a href="../images/screenshots/assertion/assertionscopevar.png"><img src="../images/screenshots/assertion/assertionscopevar.png" width="841" height="55" alt="Assertion Scope"></a>
<figcaption>Assertion Scope</figcaption>
</figure>
    
<p>
    If a sub-sampler fails and the main sample is successful,
    then the main sample will be set to failed status and an Assertion Result will be added.
    If the JMeter variable option is used, it is assumed to relate to the main sample, and
    any failure will be applied to the main sample only.
    </p>
    
<div class="clear"></div>
<div class="note">
    The variable <span class="code">JMeterThread.last_sample_ok</span> is updated to
    "<span class="code">true</span>" or "<span class="code">false</span>" after all assertions for a sampler have been run.
     </div>
<div class="clear"></div>

</div>

<div class="component">
<h2 id="Response_Assertion">Response Assertion<a class="sectionlink" href="#Response_Assertion" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The response assertion control panel lets you add pattern strings to be compared against various
    fields of the request or response.
    The pattern strings are:
    </p>
    
<ul>
    
<li>
<span class="code">Contains</span>, <span class="code">Matches</span>: Perl5-style regular expressions</li>
    
<li>
<span class="code">Equals</span>, <span class="code">Substring</span>: plain text, case-sensitive</li>
    
</ul>
    
<p>
    A summary of the pattern matching characters can be found at <a href="http://jakarta.apache.org/oro/api/org/apache/oro/text/regex/package-summary.html">ORO Perl5 regular expressions.</a>
    
</p>
    
<p>You can also choose whether the strings will be expected
to <b>match</b> the entire response, or if the response is only expected to <b>contain</b> the
pattern. You can attach multiple assertions to any controller for additional flexibility.</p>

<p>Note that the pattern string should not include the enclosing delimiters, 
    i.e. use <span class="code">Price: \d+</span> not <span class="code">/Price: \d+/</span>.
    </p>
    
<p>
    By default, the pattern is in multi-line mode, which means that the "<span class="code">.</span>" meta-character does not match newline.
    In multi-line mode, "<span class="code">^</span>" and "<span class="code">$</span>" match the start or end of any line anywhere within the string 
    - not just the start and end of the entire string. Note that <span class="code">\s</span> does match new-line.
    Case is also significant. To override these settings, one can use the <i>extended regular expression</i> syntax.
    For example:
</p>

<dl>

<dt>
<span class="code">(?i)</span>
</dt>
<dd>ignore case</dd>

<dt>
<span class="code">(?s)</span>
</dt>
<dd>treat target as single line, i.e. "<span class="code">.</span>" matches new-line</dd>

<dt>
<span class="code">(?is)</span>
</dt>
<dd>both the above</dd>

</dl>
These can be used anywhere within the expression and remain in effect until overridden. E.g.
<dl>

<dt>
<span class="code">(?i)apple(?-i) Pie</span>
</dt>
<dd>matches "<span class="code">ApPLe Pie</span>", but not "<span class="code">ApPLe pIe</span>"</dd>

<dt>
<span class="code">(?s)Apple.+?Pie</span>
</dt>
<dd>matches <span class="code">Apple</span> followed by <span class="code">Pie</span>, which may be on a subsequent line.</dd>

<dt>
<span class="code">Apple(?s).+?Pie</span>
</dt>
<dd>same as above, but it's probably clearer to use the <span class="code">(?s)</span> at the start.</dd>

</dl>


</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/assertion/assertion.png"><img src="../images/screenshots/assertion/assertion.png" width="909" height="607" alt="Screenshot for Control-Panel of Response Assertion"></a>
<figcaption>Screenshot of Control-Panel of Response Assertion</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Response_Assertion_parms1">
        Parameters
        <a class="sectionlink" href="#Response_Assertion_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Apply to:</div>
<div class="description req-true">
        This is for use with samplers that can generate sub-samples, 
        e.g. HTTP Sampler with embedded resources, Mail Reader or samples generated by the Transaction Controller.
        <ul>
        
<li>
<span class="code">Main sample only</span> - only applies to the main sample</li>
        
<li>
<span class="code">Sub-samples only</span> - only applies to the sub-samples</li>
        
<li>
<span class="code">Main sample and sub-samples</span> - applies to both.</li>
        
<li>
<span class="code">JMeter Variable Name to use</span> - assertion is to be applied to the contents of the named variable</li>
        
</ul>
        
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Field to Test</div>
<div class="description req-true">Instructs JMeter which field of the Request or Response to test.
        <ul>
        
<li>
<span class="code">Text Response</span> - the response text from the server, i.e. the body, excluding any HTTP headers.</li>
        
<li>
<span class="code">Request data</span> - the request text sent to the server, i.e. the body, excluding any HTTP headers.</li>
        
<li>
<span class="code">Response Code</span> - e.g. <span class="code">200</span>
</li>
        
<li>
<span class="code">Response Message</span> - e.g. <span class="code">OK</span>
</li>
        
<li>
<span class="code">Response Headers</span>, including Set-Cookie headers (if any)</li>
        
<li>
<span class="code">Request Headers</span>
</li>
        
<li>
<span class="code">URL sampled</span>
</li>
        
<li>
<span class="code">Document (text)</span> - the extract text from various type of documents via Apache Tika (see <a href="../usermanual/component_reference.html#View_Results_Tree">View Results Tree</a> Document view section).</li>
        
</ul>
        
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Ignore status</div>
<div class="description req-true">Instructs JMeter to set the status to success initially. 
                <p>
                The overall success of the sample is determined by combining the result of the
                assertion with the existing Response status.
                When the <span class="code">Ignore Status</span> checkbox is selected, the Response status is forced
                to successful before evaluating the Assertion.
                </p>
                HTTP Responses with statuses in the <span class="code">4xx</span> and <span class="code">5xx</span> ranges are normally
                regarded as unsuccessful. 
                The "<span class="code">Ignore status</span>" checkbox can be used to set the status successful before performing further checks.
                Note that this will have the effect of clearing any previous assertion failures,
                so make sure that this is only set on the first assertion.
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Pattern Matching Rules</div>
<div class="description req-true">Indicates how the text being tested
        is checked against the pattern.
        <ul>
        
<li>
<span class="code">Contains</span> - true if the text contains the regular expression pattern</li>
        
<li>
<span class="code">Matches</span> - true if the whole text matches the regular expression pattern</li>
        
<li>
<span class="code">Equals</span> - true if the whole text equals the pattern string (case-sensitive)</li>
        
<li>
<span class="code">Substring</span> - true if the text contains the pattern string (case-sensitive)</li>
        
</ul>
        
<span class="code">Equals</span> and <span class="code">Substring</span> patterns are plain strings, not regular expressions.
        <span class="code">NOT</span> may also be selected to invert the result of the check.
        <span class="code">OR</span> Apply each assertion in OR combination (if 1 pattern to test matches, Assertion will be ok) instead of AND (All patterns must match so that Assertion is OK).</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Patterns to Test</div>
<div class="description req-true">A list of patterns to
        be tested.  
        Each pattern is tested separately. 
        If a pattern fails, then further patterns are not checked.
        There is no difference between setting up
        one Assertion with multiple patterns and setting up multiple Assertions with one
        pattern each (assuming the other options are the same).
        <div class="clear"></div>
<div class="note">However, when the <span class="code">Ignore Status</span> checkbox is selected, this has the effect of cancelling any
        previous assertion failures - so make sure that the <span class="code">Ignore Status</span> checkbox is only used on
        the first Assertion.</div>
<div class="clear"></div>
        
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Custom failure message</div>
<div class="description req-false">Lets you define the failure message that will replace the generated one
        </div>
<div class="required req-false">No</div>
</div>

</div>
<p>
    The pattern is a Perl5-style regular expression, but without the enclosing brackets.
</p>
<div class="example">
<div class="title">Assertion Examples<a class="sectionlink" href="#assertion_examples" title="Link to here">&para;</a>
</div>

<center>

<figure>
<a href="../images/screenshots/assertion/example1a.png"><img src="../images/screenshots/assertion/example1a.png" width="266" height="117" alt="Figure 14 - Test Plan"></a>
<figcaption>Figure 14 - Test Plan</figcaption>
</figure>

<figure>
<a href="../images/screenshots/assertion/example1b.png"><img src="../images/screenshots/assertion/example1b.png" width="920" height="451" alt="Figure 15 - Assertion Control Panel with Pattern"></a>
<figcaption>Figure 15 - Assertion Control Panel with Pattern</figcaption>
</figure>

<figure>
<a href="../images/screenshots/assertion/example1c-pass.png"><img src="../images/screenshots/assertion/example1c-pass.png" width="801" height="230" alt="Figure 16 - Assertion Listener Results (Pass)"></a>
<figcaption>Figure 16 - Assertion Listener Results (Pass)</figcaption>
</figure>

<figure>
<a href="../images/screenshots/assertion/example1c-fail.png"><img src="../images/screenshots/assertion/example1c-fail.png" width="800" height="233" alt="Figure 17 - Assertion Listener Results (Fail)"></a>
<figcaption>Figure 17 - Assertion Listener Results (Fail)</figcaption>
</figure>

</center>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Duration_Assertion">Duration Assertion<a class="sectionlink" href="#Duration_Assertion" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The Duration Assertion tests that each response was received within a given amount
of time.  Any response that takes longer than the given number of milliseconds (specified by the
user) is marked as a failed response.</p>
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/duration_assertion.png"><img src="../images/screenshots/duration_assertion.png" width="606" height="187" alt="Screenshot for Control-Panel of Duration Assertion"></a>
<figcaption>Screenshot of Control-Panel of Duration Assertion</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Duration_Assertion_parms1">
        Parameters
        <a class="sectionlink" href="#Duration_Assertion_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
        
<div class="property">
<div class="name req-true">Duration in Milliseconds</div>
<div class="description req-true">The maximum number of milliseconds
        each response is allowed before being marked as failed.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Size_Assertion">Size Assertion<a class="sectionlink" href="#Size_Assertion" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The Size Assertion tests that each response contains the right number of bytes in it.  You can specify that
the size be equal to, greater than, less than, or not equal to a given number of bytes.</p>

<div class="clear"></div>
<div class="note">An empty response is treated as being 0 bytes rather than reported as an error.</div>
<div class="clear"></div>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/size_assertion.png"><img src="../images/screenshots/size_assertion.png" width="732" height="358" alt="Screenshot for Control-Panel of Size Assertion"></a>
<figcaption>Screenshot of Control-Panel of Size Assertion</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Size_Assertion_parms1">
        Parameters
        <a class="sectionlink" href="#Size_Assertion_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
        
<div class="property">
<div class="name req-true">Apply to:</div>
<div class="description req-true">
        This is for use with samplers that can generate sub-samples, 
        e.g. HTTP Sampler with embedded resources, Mail Reader or samples generated by the Transaction Controller.
        <ul>
        
<li>
<span class="code">Main sample only</span> - assertion only applies to the main sample</li>
        
<li>
<span class="code">Sub-samples only</span> - assertion only applies to the sub-samples</li>
        
<li>
<span class="code">Main sample and sub-samples</span> - assertion applies to both.</li>
        
<li>
<span class="code">JMeter Variable Name to use</span> - assertion is to be applied to the contents of the named variable</li>
        
</ul>
        
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Size in bytes</div>
<div class="description req-true">The number of bytes to use in testing the size of the response (or value of the JMeter variable).</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Type of Comparison</div>
<div class="description req-true">Whether to test that the response is equal to, greater than, less than,
        or not equal to, the number of bytes specified.</div>
<div class="required req-true">Yes</div>
</div>


</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="XML_Assertion">XML Assertion<a class="sectionlink" href="#XML_Assertion" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The XML Assertion tests that the response data consists of a formally correct XML document.  It does not
validate the XML based on a DTD or schema or do any further validation.</p>
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/xml_assertion.png"><img src="../images/screenshots/xml_assertion.png" width="470" height="85" alt="Screenshot for Control-Panel of XML Assertion"></a>
<figcaption>Screenshot of Control-Panel of XML Assertion</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="XML_Assertion_parms1">
        Parameters
        <a class="sectionlink" href="#XML_Assertion_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>

<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>


</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="BeanShell_Assertion">BeanShell Assertion<a class="sectionlink" href="#BeanShell_Assertion" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The BeanShell Assertion allows the user to perform assertion checking using a BeanShell script.
</p>

<p>

<b>For full details on using BeanShell, please see the <a href="http://www.beanshell.org/">BeanShell website.</a></b>

<div class="clear"></div>
<div class="note">Migration to <a href="../usermanual/component_reference.html#JSR223_Assertion">JSR223 Assertion</a>+Groovy is highly recommended for performance, support of new Java features and limited maintenance of the BeanShell library.</div>
<div class="clear"></div>

</p>
<p>
Note that a different Interpreter is used for each independent occurrence of the assertion
in each thread in a test script, but the same Interpreter is used for subsequent invocations.
This means that variables persist across calls to the assertion.
</p>

<p>
All Assertions are called from the same thread as the sampler.
</p>

<p>
If the property "<span class="code">beanshell.assertion.init</span>" is defined, it is passed to the Interpreter
as the name of a sourced file. This can be used to define common methods and variables.
There is a sample init file in the <span class="code">bin</span> directory: <span class="code">BeanShellAssertion.bshrc</span>

</p>

<p>
The test element supports the <span class="code">ThreadListener</span> and <span class="code">TestListener</span> methods.
These should be defined in the initialisation file.
See the file <span class="code">BeanShellListeners.bshrc</span> for example definitions.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/beanshell_assertion.png"><img src="../images/screenshots/beanshell_assertion.png" width="849" height="633" alt="Screenshot for Control-Panel of BeanShell Assertion"></a>
<figcaption>Screenshot of Control-Panel of BeanShell Assertion</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="BeanShell_Assertion_parms1">
        Parameters
        <a class="sectionlink" href="#BeanShell_Assertion_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.
    The name is stored in the script variable <span class="code">Label</span>
</div>
<div class="required req-true"></div>
</div>
    
<div class="property">
<div class="name req-true">Reset bsh.Interpreter before each call</div>
<div class="description req-true">
    If this option is selected, then the interpreter will be recreated for each sample.
    This may be necessary for some long running scripts. 
    For further information, see <a href="best-practices#bsh_scripting">Best Practices - BeanShell scripting</a>.
    </div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Parameters</div>
<div class="description req-false">Parameters to pass to the BeanShell script.
    The parameters are stored in the following variables:
    <ul>
        
<li>
<span class="code">Parameters</span> - string containing the parameters as a single variable</li>
        
<li>
<span class="code">bsh.args</span> - String array containing parameters, split on white-space</li>
    
</ul>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Script file</div>
<div class="description req-false">A file containing the BeanShell script to run. This overrides the script.
    The file name is stored in the script variable <span class="code">FileName</span>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Script</div>
<div class="description req-true">The BeanShell script to run. The return value is ignored.</div>
<div class="required req-true">Yes (unless script file is provided)</div>
</div>

</div>
<p>There's a <a href="../demos/BeanShellAssertion.bsh">sample script</a> you can try.</p>
<p>
Before invoking the script, some variables are set up in the BeanShell interpreter.
These are strings unless otherwise noted:
</p>
<ul>
  
<li>
<span class="code">log</span> - the <a href="https://www.slf4j.org/api/org/slf4j/Logger.html">Logger</a> Object. (e.g.) <span class="code">log.warn("Message"[,Throwable])</span>
</li>
  
<li>
<span class="code">SampleResult</span>, <span class="code">prev</span> - the <a href="../api/org/apache/jmeter/samplers/SampleResult.html">SampleResult</a> Object; read-write</li>
  
<li>
<span class="code">Response</span> - the response Object; read-write</li>
  
<li>
<span class="code">Failure</span> - boolean; read-write; used to set the Assertion status</li>
  
<li>
<span class="code">FailureMessage</span> - String; read-write; used to set the Assertion message</li>
  
<li>
<span class="code">ResponseData</span> - the response body (byte [])</li>
  
<li>
<span class="code">ResponseCode</span> - e.g. <span class="code">200</span>
</li>
  
<li>
<span class="code">ResponseMessage</span> - e.g. <span class="code">OK</span>
</li>
  
<li>
<span class="code">ResponseHeaders</span> - contains the HTTP headers</li>
  
<li>
<span class="code">RequestHeaders</span> - contains the HTTP headers sent to the server</li>
  
<li>
<span class="code">SampleLabel</span>
</li>
  
<li>
<span class="code">SamplerData</span> - data that was sent to the server</li>
  
<li>
<span class="code">ctx</span> - <a href="../api/org/apache/jmeter/threads/JMeterContext.html">JMeterContext</a>
</li>
  
<li>
<span class="code">vars</span> - <a href="../api/org/apache/jmeter/threads/JMeterVariables.html">JMeterVariables</a>  - e.g. 
    <pre class="source">vars.get("VAR1");
vars.put("VAR2","value");
vars.putObject("OBJ1",new Object());</pre>
</li>
  
<li>
<span class="code">props</span> - JMeterProperties (class <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html"><span class="code">java.util.Properties</span></a>) - e.g.
    <pre class="source">props.get("START.HMS");
props.put("PROP1","1234");</pre>
</li>

</ul>
<p>The following methods of the Response object may be useful:</p>
<ul>
    
<li>
<span class="code">setStopThread(boolean)</span>
</li>
    
<li>
<span class="code">setStopTest(boolean)</span>
</li>
    
<li>
<span class="code">String getSampleLabel()</span>
</li>
    
<li>
<span class="code">setSampleLabel(String)</span>
</li>

</ul>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="MD5Hex_Assertion">MD5Hex Assertion<a class="sectionlink" href="#MD5Hex_Assertion" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The MD5Hex Assertion allows the user to check the MD5 hash of the response data.</p>
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/assertion/MD5HexAssertion.png"><img src="../images/screenshots/assertion/MD5HexAssertion.png" width="398" height="130" alt="Screenshot for Control-Panel of MD5Hex Assertion"></a>
<figcaption>Screenshot of Control-Panel of MD5Hex Assertion</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="MD5Hex_Assertion_parms1">
        Parameters
        <a class="sectionlink" href="#MD5Hex_Assertion_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>

<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">MD5 sum</div>
<div class="description req-true">32 hex digits representing the MD5 hash (case not significant)</div>
<div class="required req-true">Yes</div>
</div>


</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="HTML_Assertion">HTML Assertion<a class="sectionlink" href="#HTML_Assertion" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The HTML Assertion allows the user to check the HTML syntax of the response data using JTidy.</p>
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/assertion/HTMLAssertion.png"><img src="../images/screenshots/assertion/HTMLAssertion.png" width="505" height="341" alt="Screenshot for Control-Panel of HTML Assertion"></a>
<figcaption>Screenshot of Control-Panel of HTML Assertion</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="HTML_Assertion_parms1">
        Parameters
        <a class="sectionlink" href="#HTML_Assertion_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>

<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">doctype</div>
<div class="description req-true">
<span class="code">omit</span>, <span class="code">auto</span>, <span class="code">strict</span> or <span class="code">loose</span>
</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-true">Format</div>
<div class="description req-true">
<span class="code">HTML</span>, <span class="code">XHTML</span> or <span class="code">XML</span>
</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-true">Errors only</div>
<div class="description req-true">Only take note of errors?</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-true">Error threshold</div>
<div class="description req-true">Number of errors allowed before classing the response as failed</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-true">Warning threshold</div>
<div class="description req-true">Number of warnings allowed before classing the response as failed</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-false">Filename</div>
<div class="description req-false">Name of file to which report is written</div>
<div class="required req-false">No</div>
</div>


</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>

<div class="component">
<h2 id="XPath_Assertion">XPath Assertion<a class="sectionlink" href="#XPath_Assertion" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The XPath Assertion tests a document for well formedness, has the option
of validating against a DTD, or putting the document through JTidy and testing for an
XPath.  If that XPath exists, the Assertion is true.  Using "<span class="code">/</span>" will match any well-formed
document, and is the default XPath Expression. 
The assertion also supports boolean expressions, such as "<span class="code">count(//*error)=2</span>".
See <a href="http://www.w3.org/TR/xpath">http://www.w3.org/TR/xpath</a> for more information
on XPath.
</p>
Some sample expressions:
<ul>

<li>
<span class="code">//title[text()='Text to match']</span> - matches <span class="code">&lt;title&gt;Text to match&lt;/title&gt;</span> anywhere in the response</li>

<li>
<span class="code">/title[text()='Text to match']</span> - matches <span class="code">&lt;title&gt;Text to match&lt;/title&gt;</span> at root level in the response</li>

</ul>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/xpath_assertion.png"><img src="../images/screenshots/xpath_assertion.png" width="871" height="615" alt="Screenshot for Control-Panel of XPath Assertion"></a>
<figcaption>Screenshot of Control-Panel of XPath Assertion</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="XPath_Assertion_parms1">
        Parameters
        <a class="sectionlink" href="#XPath_Assertion_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>

<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-true">Use Tidy (tolerant parser)</div>
<div class="description req-true">Use Tidy, i.e. be tolerant of XML/HTML errors</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-false">Quiet</div>
<div class="description req-false">Sets the Tidy Quiet flag</div>
<div class="required req-false">If Tidy is selected</div>
</div>

<div class="property">
<div class="name req-false">Report Errors</div>
<div class="description req-false">If a Tidy error occurs, then set the Assertion accordingly</div>
<div class="required req-false">If Tidy is selected</div>
</div>

<div class="property">
<div class="name req-false">Show warnings</div>
<div class="description req-false">Sets the Tidy showWarnings option</div>
<div class="required req-false">If Tidy is selected</div>
</div>

<div class="property">
<div class="name req-false">Use Namespaces</div>
<div class="description req-false">Should namespaces be honoured? (see note below on NAMESPACES)</div>
<div class="required req-false">If Tidy is not selected</div>
</div>

<div class="property">
<div class="name req-false">Validate XML</div>
<div class="description req-false">Check the document against its schema.</div>
<div class="required req-false">If Tidy is not selected</div>
</div>

<div class="property">
<div class="name req-false">Ignore Whitespace</div>
<div class="description req-false">Ignore Element Whitespace.</div>
<div class="required req-false">If Tidy is not selected</div>
</div>

<div class="property">
<div class="name req-false">Fetch External DTDs</div>
<div class="description req-false">If selected, external DTDs are fetched.</div>
<div class="required req-false">If Tidy is not selected</div>
</div>

<div class="property">
<div class="name req-true">XPath Assertion</div>
<div class="description req-true">XPath to match in the document.</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-false">Invert assertion(will fail if above conditions met)</div>
<div class="description req-false">True if a XPath expression is not matched or returns false</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="clear"></div>
<div class="note">
The non-tolerant parser can be quite slow, as it may need to download the DTD etc.
</div>
<div class="clear"></div>
<div class="clear"></div>
<div class="note">

<b>NAMESPACES</b>
<br>
As a work-round for namespace limitations of the Xalan XPath parser (implementation on which JMeter is based) you need to:
<ul>

<li>provide a Properties file (if for example your file is named namespaces.properties) which contains mappings for the namespace prefixes: 
<pre class="source">
prefix1=http\://foo.apache.org
prefix2=http\://toto.apache.org
&hellip;
</pre>
</li>


<li>reference this file in <span class="code">user.properties</span> file using the property:
    <pre class="source">xpath.namespace.config=namespaces.properties</pre>
</li>

</ul>

</div>
<div class="clear"></div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="XPath2_Assertion">XPath2 Assertion<a class="sectionlink" href="#XPath2_Assertion" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The XPath2 Assertion tests a document for well formedness.  Using "<span class="code">/</span>" will match any well-formed
document, and is the default XPath2 Expression. 
The assertion also supports boolean expressions, such as "<span class="code">count(//*error)=2</span>".
</p>
Some sample expressions:
<ul>

<li>
<span class="code">//title[text()='Text to match']</span> - matches <span class="code">&lt;title&gt;Text to match&lt;/title&gt;</span> anywhere in the response</li>

<li>
<span class="code">/title[text()='Text to match']</span> - matches <span class="code">&lt;title&gt;Text to match&lt;/title&gt;</span> at root level in the response</li>

</ul>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/xpath_assertion.png"><img src="../images/screenshots/xpath_assertion.png" width="871" height="615" alt="Screenshot for Control-Panel of XPath2 Assertion"></a>
<figcaption>Screenshot of Control-Panel of XPath2 Assertion</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="XPath2_Assertion_parms1">
        Parameters
        <a class="sectionlink" href="#XPath2_Assertion_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>

<div class="property">
<div class="name req-false">Namespaces aliases list</div>
<div class="description req-false">List of namespaces aliases you want to use to parse the document, one line per declaration.
    You must specify them as follow : <span class="code">prefix=namespace</span>. This implementation makes it easier to
    use namespaces than with the old XPathExtractor version.</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-true">XPath2 Assertion</div>
<div class="description req-true">XPath to match in the document.</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-false">Invert assertion</div>
<div class="description req-false">Will fail if xpath expression returns true or matches, succeed otherwise</div>
<div class="required req-false">No</div>
</div>

<div class="property">
<div class="name req-false">Namespace aliases list</div>
<div class="description req-false">List of namespace aliases prefix=full namespace (one per line)</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>



<div class="component">
<h2 id="XML_Schema_Assertion">XML Schema Assertion<a class="sectionlink" href="#XML_Schema_Assertion" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The XML Schema Assertion allows the user to validate a response against an XML Schema.</p>
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/assertion/XMLSchemaAssertion.png"><img src="../images/screenshots/assertion/XMLSchemaAssertion.png" width="472" height="132" alt="Screenshot for Control-Panel of XML Schema Assertion"></a>
<figcaption>Screenshot of Control-Panel of XML Schema Assertion</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="XML_Schema_Assertion_parms1">
        Parameters
        <a class="sectionlink" href="#XML_Schema_Assertion_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>

<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>

<div class="property">
<div class="name req-true">File Name</div>
<div class="description req-true">Specify XML Schema File Name</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="JSR223_Assertion">JSR223 Assertion<a class="sectionlink" href="#JSR223_Assertion" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The JSR223 Assertion allows JSR223 script code to be used to check the status of the previous sample.
</p>

</div>
<div class="properties">
<h3 id="JSR223_Assertion_parms1">
        Parameters
        <a class="sectionlink" href="#JSR223_Assertion_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Language</div>
<div class="description req-true">The JSR223 language to be used</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Parameters</div>
<div class="description req-false">Parameters to pass to the script.
    The parameters are stored in the following variables:
    <ul>
        
<li>
<span class="code">Parameters</span> - string containing the parameters as a single variable</li>
        
<li>
<span class="code">args</span> - String array containing parameters, split on white-space</li>
    
</ul>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Script file</div>
<div class="description req-false">A file containing the script to run, if a relative file path is used, then it will be relative to directory referenced by "<span class="code">user.dir</span>" System property</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Script compilation caching</div>
<div class="description req-false">Unique String across Test Plan that JMeter will use to cache result of Script compilation if language used supports <span class="code"><a href="https://docs.oracle.com/javase/8/docs/api/javax/script/Compilable.html">Compilable</a></span> interface (Groovy is one of these, java, BeanShell and JavaScript are not)
    <div class="clear"></div>
<div class="note">See note in JSR223 Sampler Java System property if you're using Groovy without checking this option</div>
<div class="clear"></div>
    
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Script</div>
<div class="description req-true">The script to run.</div>
<div class="required req-true">Yes (unless script file is provided)</div>
</div>

</div>
<p>The following variables are set up for use by the script:</p>
<ul>

<li>
<span class="code">log</span> - (<a href="https://www.slf4j.org/api/org/slf4j/Logger.html">Logger</a>) - can be used to write to the log file</li>

<li>
<span class="code">Label</span> - the String Label</li>

<li>
<span class="code">Filename</span> - the script file name (if any)</li>

<li>
<span class="code">Parameters</span> - the parameters (as a String)</li>

<li>
<span class="code">args</span> - the parameters as a String array (split on whitespace)</li>

<li>
<span class="code">ctx</span> - (<a href="../api/org/apache/jmeter/threads/JMeterContext.html">JMeterContext</a>) - gives access to the context</li>

<li>
<span class="code">vars</span> - (<a href="../api/org/apache/jmeter/threads/JMeterVariables.html">JMeterVariables</a>) - gives read/write access to variables:
<pre class="source">
vars.get(key);
vars.put(key,val);
vars.putObject("OBJ1",new Object());
vars.getObject("OBJ2");
</pre>
</li>

<li>
<span class="code">props</span> - (JMeterProperties - class <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html"><span class="code">java.util.Properties</span></a>) - e.g.
<pre class="source">
props.get("START.HMS");
props.put("PROP1","1234");
</pre>
</li>

<li>
<span class="code">SampleResult</span>, <span class="code">prev</span> - (<a href="../api/org/apache/jmeter/samplers/SampleResult.html">SampleResult</a>) - gives access to the previous SampleResult (if any)</li>

<li>
<span class="code">sampler</span> - (<a href="../api/org/apache/jmeter/samplers/Sampler.html">Sampler</a>) - gives access to the current sampler</li>

<li>
<span class="code">OUT</span> - <span class="code">System.out</span> - e.g. <span class="code">OUT.println("message")</span>
</li>

<li>
<span class="code">AssertionResult</span> - (<a href="../api/org/apache/jmeter/assertions/AssertionResult.html">AssertionResult</a>) - the assertion result</li>

</ul>
<p>
The script can check various aspects of the <a href="../api/org/apache/jmeter/samplers/SampleResult.html">SampleResult</a>.
If an error is detected, the script should use <span class="code">AssertionResult.setFailureMessage("message")</span> and <span class="code">AssertionResult.setFailure(true)</span>.
</p>
<p>For further details of all the methods available on each of the above variables, please check the Javadoc</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Compare_Assertion">Compare Assertion<a class="sectionlink" href="#Compare_Assertion" title="Link to here">&para;</a>
</h2>
<div class="description">

<div class="clear"></div>
<div class="note">
Compare Assertion <b>must not be used</b> during load test as it consumes a lot of resources (memory and CPU). Use it only for either functional testing or 
during Test Plan debugging and Validation.
</div>
<div class="clear"></div>

The Compare Assertion can be used to compare sample results within its scope.
Either the contents or the elapsed time can be compared, and the contents can be filtered before comparison.
The assertion comparisons can be seen in the <a href="../usermanual/component_reference.html#Comparison_Assertion_Visualizer">Comparison Assertion Visualizer</a>.
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/assertion/compare.png"><img src="../images/screenshots/assertion/compare.png" width="580" height="302" alt="Screenshot for Control-Panel of Compare Assertion"></a>
<figcaption>Screenshot of Control-Panel of Compare Assertion</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Compare_Assertion_parms1">
        Parameters
        <a class="sectionlink" href="#Compare_Assertion_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Compare Content</div>
<div class="description req-true">Whether or not to compare the content (response data)</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Compare Time</div>
<div class="description req-true">If the value is &ge;0, then check if the response time difference is no greater than the value.
    I.e. if the value is <span class="code">0</span>, then the response times must be exactly equal.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Comparison Filters</div>
<div class="description req-false">Filters can be used to remove strings from the content comparison.
    For example, if the page has a time-stamp, it might be matched with: "<span class="code">Time: \d\d:\d\d:\d\d</span>" and replaced with a dummy fixed time "<span class="code">Time: HH:MM:SS</span>".
    </div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="SMIME_Assertion">SMIME Assertion<a class="sectionlink" href="#SMIME_Assertion" title="Link to here">&para;</a>
</h2>
<div class="description">
The SMIME Assertion can be used to evaluate the sample results from the Mail Reader Sampler.
This assertion verifies if the body of a mime message is signed or not. The signature can also be verified against a specific signer certificate.
As this is a functionality that is not necessarily needed by most users, additional jars need to be downloaded and added to <span class="code">JMETER_HOME/lib</span>:<br> 

<ul>

<li>
<span class="code">bcmail-xxx.jar</span> (BouncyCastle SMIME/CMS)</li>

<li>
<span class="code">bcprov-xxx.jar</span> (BouncyCastle Provider)</li>

</ul>
These need to be <a href="http://www.bouncycastle.org/latest_releases.html">downloaded from BouncyCastle.</a>

<p>
If using the <a href="../usermanual/component_reference.html#Mail_Reader_Sampler">Mail Reader Sampler</a>, 
please ensure that you select "<span class="code">Store the message using MIME (raw)</span>" otherwise the Assertion won't be able to process the message correctly.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/assertion/smime.png"><img src="../images/screenshots/assertion/smime.png" width="471" height="428" alt="Screenshot for Control-Panel of SMIME Assertion"></a>
<figcaption>Screenshot of Control-Panel of SMIME Assertion</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="SMIME_Assertion_parms1">
        Parameters
        <a class="sectionlink" href="#SMIME_Assertion_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Verify Signature</div>
<div class="description req-true">If selected, the assertion will verify if it is a valid signature according to the parameters defined in the <span class="code">Signer Certificate</span> box.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Message not signed</div>
<div class="description req-true">Whether or not to expect a signature in the message</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Signer Certificate</div>
<div class="description req-true">"<span class="code">No Check</span>" means that it will not perform signature verification. "<span class="code">Check values</span>" is used to verify the signature against the inputs provided. And "<span class="code">Certificate file</span>" will perform the verification against a specific certificate file.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Message Position</div>
<div class="description req-true">
    The Mail sampler can retrieve multiple messages in a single sample.
    Use this field to specify which message will be checked.
    Messages are numbered from <span class="code">0</span>, so <span class="code">0</span> means the first message.
    Negative numbers count from the LAST message; <span class="code">-1</span> means LAST, <span class="code">-2</span> means penultimate etc.
    </div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>

<div class="component">
<h2 id="JSON_Assertion">JSON Assertion<a class="sectionlink" href="#JSON_Assertion" title="Link to here">&para;</a>
</h2>
<div class="description">
        
<p>
            This component allows you to perform validations of JSON documents.
            First, it will parse the JSON and fail if the data is not JSON.
            Second, it will search for specified path, using syntax from <a href="https://github.com/json-path/JsonPath">Jayway JsonPath 1.2.0</a>. If the path is not found, it will fail.
            Third, if JSON path was found in the document, and validation against expected value was requested, it will perform validation. For the <span class="code">null</span> value there is special checkbox in the GUI.
            Note that if the path will return array object, it will be iterated and if expected value is found, the assertion will succeed. To validate empty array use <span class="code">[]</span> string. Also, if patch will return dictionary object, it will be converted to string before comparison.
        </p>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/assertion/json_assertion.png"><img src="../images/screenshots/assertion/json_assertion.png" width="1095" height="307" alt="Screenshot for Control-Panel of JSON Assertion"></a>
<figcaption>Screenshot of Control-Panel of JSON Assertion</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="JSON_Assertion_parms1">
        Parameters
        <a class="sectionlink" href="#JSON_Assertion_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Assert JSON Path exists</div>
<div class="description req-true">Path to JSON element for assert.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Additionally assert value</div>
<div class="description req-false">Select checkbox if you want make assert with some value</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Match as regular expression</div>
<div class="description req-false">Select checkbox if you want use regular expression</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Expected Value</div>
<div class="description req-false">Value for assert or regular expression for match</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Expect null</div>
<div class="description req-false">Select checkbox if you expect null</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Invert assertion (will fail if above conditions met)</div>
<div class="description req-false">Invert assertion (will fail if above conditions met)</div>
<div class="required req-false">No</div>
</div>
    
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>

<div class="component">
<h2 id="JSON_JMESPath_Assertion">JSON JMESPath Assertion<a class="sectionlink" href="#JSON_JMESPath_Assertion" title="Link to here">&para;</a>
</h2>
<div class="description">
        
<p>
            This component allows you to perform assertion on JSON documents content using <a href="http://jmespath.org/" target="blank">JMESPath</a>.
            First, it will parse the JSON and fail if the data is not JSON. <br>
            Second, it will search for specified path, using JMESPath syntax. <br>
            If the path is not found, it will fail. <br>
            Third, if JMES path was found in the document, and validation against expected value was requested, it will perform this additional check. 
            If you want to check for nullity, use the <span class="code">Expect null</span> checkbox. <br>
            Note that the path cannot be null as the expression JMESPath will not be compiled and an error will occur. 
            Even if you expect an empty or null response, you must put a valid JMESPath expression.
        </p>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/assertion/jmespath_assertion.png"><img src="../images/screenshots/assertion/jmespath_assertion.png" width="1095" height="307" alt="Screenshot for Control-Panel of JSON JMESPath Assertion"></a>
<figcaption>Screenshot of Control-Panel of JSON JMESPath Assertion</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="JSON_JMESPath_Assertion_parms1">
        Parameters
        <a class="sectionlink" href="#JSON_JMESPath_Assertion_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Assert JMESPath exists</div>
<div class="description req-true">Check that JMESPath to JSON element exists</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Additionally assert value</div>
<div class="description req-false">Select checkbox if you check the extracted JMESPath against an expected one</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Match as regular expression</div>
<div class="description req-false">Select checkbox if you want to use a regular expression for matching</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Expected Value</div>
<div class="description req-false">Value to use for exact matching or regular expression if <span class="code">Match as regular expression</span> is checked</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Expect null</div>
<div class="description req-false">Select checkbox if you expect the value to be null</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Invert assertion (will fail if above conditions met)</div>
<div class="description req-false">Invert assertion (will fail if above conditions met)</div>
<div class="required req-false">No</div>
</div>
    
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>

<a href="#">^</a>


</div>
<div class="section">
<h1 id="timers">18.6 Timers<a class="sectionlink" href="#timers" title="Link to here">&para;</a>
</h1>

<div class="description">
    
<div class="clear"></div>
<div class="note">
    Since version 3.1, a new feature (in Beta mode as of JMeter 3.1 and subject to changes) has been implemented which provides the following feature.<br>
    You can apply a multiplication factor on the sleep delays computed by Random timer by setting property <span class="code">timer.factor=float number</span> where float number is a decimal positive number.<br>
    JMeter will multiply this factor by the computed sleep delay. This feature can be used by:
    <ul> 
        
<li>
<a href="../usermanual/component_reference.html#Gaussian_Random_Timer">Gaussian Random Timer</a>
</li>
        
<li>
<a href="../usermanual/component_reference.html#Poisson_Random_Timer">Poisson Random Timer</a>
</li>
        
<li>
<a href="../usermanual/component_reference.html#Uniform_Random_Timer">Uniform Random Timer</a>
</li>
    
</ul> 
    
</div>
<div class="clear"></div>
    
<div class="clear"></div>
<div class="note">
    Note that timers are processed <b>before</b> each sampler in the scope in which they are found;
    if there are several timers in the same scope, <b>all</b> the timers will be processed <b>before
    each</b> sampler.
    <br>
    Timers are only processed in conjunction with a sampler.
    A timer which is not in the same scope as a sampler will not be processed at all.
    <br>
    To apply a timer to a single sampler, add the timer as a child element of the sampler.
    The timer will be applied before the sampler is executed.
    To apply a timer after a sampler, either add it to the next sampler, or add it as the
    child of a <a href="../usermanual/component_reference.html#Flow_Control_Action">Flow Control Action</a> Sampler.
    </div>
<div class="clear"></div>

</div>

<div class="component">
<h2 id="Constant_Timer">Constant Timer<a class="sectionlink" href="#Constant_Timer" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>If you want to have each thread pause for the same amount of time between
requests, use this timer.</p>
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/timers/constant_timer.png"><img src="../images/screenshots/timers/constant_timer.png" width="372" height="100" alt="Screenshot for Control-Panel of Constant Timer"></a>
<figcaption>Screenshot of Control-Panel of Constant Timer</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Constant_Timer_parms1">
        Parameters
        <a class="sectionlink" href="#Constant_Timer_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this timer that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Thread Delay</div>
<div class="description req-true">Number of milliseconds to pause.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Gaussian_Random_Timer">Gaussian Random Timer<a class="sectionlink" href="#Gaussian_Random_Timer" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>This timer pauses each thread request for a random amount of time, with most
of the time intervals occurring near a particular value.  
The total delay is the sum of the Gaussian distributed value (with mean <span class="code">0.0</span> and standard deviation <span class="code">1.0</span>) times
the deviation value you specify, and the offset value.
Another way to explain it, in Gaussian Random Timer, the variation around constant offset has a Gaussian curve distribution. 

</p>
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/timers/gauss_random_timer.png"><img src="../images/screenshots/timers/gauss_random_timer.png" width="372" height="156" alt="Screenshot for Control-Panel of Gaussian Random Timer"></a>
<figcaption>Screenshot of Control-Panel of Gaussian Random Timer</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Gaussian_Random_Timer_parms1">
        Parameters
        <a class="sectionlink" href="#Gaussian_Random_Timer_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this timer that is shown in the tree</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Deviation</div>
<div class="description req-true">Deviation in milliseconds.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Constant Delay Offset</div>
<div class="description req-true">Number of milliseconds to pause in addition
to the random delay.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Uniform_Random_Timer">Uniform Random Timer<a class="sectionlink" href="#Uniform_Random_Timer" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>This timer pauses each thread request for a random amount of time, with
each time interval having the same probability of occurring. The total delay
is the sum of the random value and the offset value.</p>
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/timers/uniform_random_timer.png"><img src="../images/screenshots/timers/uniform_random_timer.png" width="372" height="157" alt="Screenshot for Control-Panel of Uniform Random Timer"></a>
<figcaption>Screenshot of Control-Panel of Uniform Random Timer</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Uniform_Random_Timer_parms1">
        Parameters
        <a class="sectionlink" href="#Uniform_Random_Timer_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this timer that is shown in the tree. </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Random Delay Maximum</div>
<div class="description req-true">Maximum random number of milliseconds to
pause.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Constant Delay Offset</div>
<div class="description req-true">Number of milliseconds to pause in addition
to the random delay.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Constant_Throughput_Timer">Constant Throughput Timer<a class="sectionlink" href="#Constant_Throughput_Timer" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>This timer introduces variable pauses, calculated to keep the total throughput (in terms of samples per minute) as close as possible to a give figure. Of course the throughput will be lower if the server is not capable of handling it, or if other timers or time-consuming test elements prevent it.</p>

<p>
N.B. although the Timer is called the Constant Throughput timer, the throughput value does not need to be constant.
It can be defined in terms of a variable or function call, and the value can be changed during a test.
The value can be changed in various ways:
</p>

<ul>

<li>using a counter variable</li>

<li>using a <span class="code">__jexl3</span>, <span class="code">__groovy</span> function to provide a changing value</li>

<li>using the remote BeanShell server to change a JMeter property</li>

</ul>

<p>See <a href="best-practices.html">Best Practices</a> for further details.
<div class="clear"></div>
<div class="note">
Note that the throughput value should not be changed too often during a test
- it will take a while for the new value to take effect.
</div>
<div class="clear"></div>

</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/timers/constant_throughput_timer.png"><img src="../images/screenshots/timers/constant_throughput_timer.png" width="636" height="146" alt="Screenshot for Control-Panel of Constant Throughput Timer"></a>
<figcaption>Screenshot of Control-Panel of Constant Throughput Timer</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Constant_Throughput_Timer_parms1">
        Parameters
        <a class="sectionlink" href="#Constant_Throughput_Timer_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
  
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this timer that is shown in the tree. </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Target Throughput</div>
<div class="description req-true">Throughput we want the timer to try to generate.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Calculate Throughput based on</div>
<div class="description req-true">
   
<ul>
    
<li>
<span class="code">this thread only</span> - each thread will try to maintain the target throughput. The overall throughput will be proportional to the number of active threads.</li>
    
<li>
<span class="code">all active threads in current thread group</span> - the target throughput is divided amongst all the active threads in the group. 
    Each thread will delay as needed, based on when it last ran.</li>
    
<li>
<span class="code">all active threads</span> - the target throughput is divided amongst all the active threads in all Thread Groups.
    Each thread will delay as needed, based on when it last ran.
    In this case, each other Thread Group will need a Constant Throughput timer with the same settings.</li>
    
<li>
<span class="code">all active threads in current thread group (shared)</span> - as above, but each thread is delayed based on when any thread in the group last ran.</li>
    
<li>
<span class="code">all active threads (shared)</span> - as above; each thread is delayed based on when any thread last ran.</li>
   
</ul>
  
</div>
<div class="required req-true">Yes</div>
</div>
  
<p>The shared and non-shared algorithms both aim to generate the desired throughput, and will produce similar results.<br>
  The shared algorithm should generate a more accurate overall transaction rate.<br>
  The non-shared algorithm should generate a more even spread of transactions across threads.</p>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Precise_Throughput_Timer">Precise Throughput Timer<a class="sectionlink" href="#Precise_Throughput_Timer" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>This timer introduces variable pauses, calculated to keep the total throughput (e.g. in terms of samples per minute) as close as possible to a give figure. Of course the throughput will be lower if the server is not capable of handling it, or if other timers, or if there's not enough threads, or time-consuming test elements prevent it.</p>

<p>Although the Timer is called Precise Throughput Timer, it does not aim to produce precisely the same number of samples over one-second intervals during the test.</p>

<p>The timer works best for rates under 36000 requests/hour, however your mileage might vary (see monitoring section below if your goals are
    vastly different).</p>


<h4>Best location of a Precise Throughput Timer in a Test Plan</h4>

<p>As you might know, the timers are inherited by all the siblings and their child elements. That is why one of the best places for
    <span class="code">Precise Throughput Timer</span> is under the first element in a test loop. For instance, you might add a dummy sampler at the beginning,
    and place the timer under that dummy sampler</p>


<h4>Produced schedule</h4>

<p>
<span class="code">Precise Throughput Timer</span> models <a href="https://en.wikipedia.org/wiki/Poisson_point_process">Poisson arrivals</a> schedule. That schedule often happens in a real-life, so it makes sense to use that for load testing.
    For instance, it naturally might generate samples that are close together thus it might reveal concurrency issues. Even if you manage to generate Poisson arrivals
    with <a href="../usermanual/component_reference.html#Poisson_Random_Timer">Poisson Random Timer</a>, it would be susceptible to the issues listed below. For instance, true Poisson arrivals might have indefinitely long
    pause, and that is not practical for load testing. For instance, "regular" Poisson arrivals with 1 per second rate might end up with 50 samples over 60 second long test.</p>

<p>
<a href="../usermanual/component_reference.html#Constant_Throughput_Timer">Constant Throughput Timer</a> converges to the specified rate, however it tends to produce samples at even intervals.</p>


<h4>Ramp-up and startup spike</h4>

<p>You might used "ramp-up" or similar approaches to avoid a spike at the test start. For instance, if you configure <a href="../usermanual/component_reference.html#Thread_Group">Thread Group</a> to have
    100 threads, and set <span class="code">Ramp-up Period</span> to 0 (or to a small number), then all the threads would start at the same time, and it would produce an unwanted spike of the load. On top of that, if you set <span class="code">Ramp-up Period</span> too high, it might result in "too few" threads being available at the very beginning to achieve
the required load.</p>

<p>
<span class="code">Precise Throughput Timer</span> schedules executions in a random way, so it can be used to generate constant load, and it is recommended to set both
    <span class="code">Ramp-up Period</span> and <span class="code">Delay</span> to <span class="code">0</span>.</p>


<h4>Multiple thread groups starting at the same time</h4>

<p>A variation of <span class="code">Ramp-up</span> issue might appear when <a href="../usermanual/component_reference.html#Test_Plan">Test Plan</a> includes multiple <a href="../usermanual/component_reference.html#Thead_Group">Thead Group</a>s. To mitigate that issue
    one typically adds "random" delay to each <a href="../usermanual/component_reference.html#Thead_Group">Thead Group</a> so threads start at different times.</p>

<p>
<span class="code">Precise Throughput Timer</span> avoids that issue since it schedules executions in a random way. You do not need to add extra random delays to mitigate startup spike</p>


<h4>Number of iterations per hour</h4>

<p>One of the basic requirements is to issue N samples per M minutes. Let it be 60 iterations per hour. Business customers would not understand if you report load test
    results with 57 executions "just because the random was random". In order to generate 60 iterations per hour, you need to configure as follows (other parameters
    could be left with their default values)</p>

<ul>
    
<li>
<span class="code">Target throughput (samples)</span>: 60</li>
    
<li>
<span class="code">Throughput period (seconds)</span>: 3600</li>
    
<li>
<span class="code">Test duration (seconds)</span>: 3600</li>

</ul>

<p>The first two options set the throughput. Even though 60/3600, 30/1800, and 120/7200 represent exactly the same load level, pick the one that represents
    business requirements better. For instance, if the requirement is to test for "60 sample per hour", then set 60/3600. If the requirement is to test "1 sample per minute",
    then set 1/60.</p>

<p>
<span class="code">Test duration (seconds)</span> is there so the timer ensures exact number of samples for a given test duration. <span class="code">Precise Throughput Timer</span> creates
    a schedule for the samples at the test startup. For instance, if you
    wish to perform 5 minutes test with 60 per hour throughput, you would set <span class="code">Test duration (seconds)</span> to 300. This enables to configure throughput
    in a business-friendly way. Note: <span class="code">Test duration (seconds)</span> does <b>not</b> limit test duration. It is just a hint for the timer.</p>


<h4>Number of threads and think times</h4>

<p>One of the common pitfalls is to adjust number of threads and think times in order to end up with the desired throughput. Even though it might work, that approach
    results in lots of time spent on the test runs. It might require to adjust threads and delays again when new application version arrives.</p>

<p>
<span class="code">Precise Throughput Timer</span> enables to set throughput goal and go for it no matter how well application performs. In order to do that, <span class="code">Precise Throughput Timer</span>
    creates a schedule at the test startup, then it uses that schedule to release threads. The main driver for the think times and number of threads should be business
    requirements, not the desire to match throughput somehow.</p>

<p>For instance, if you application is used by support engineers in a call center. Suppose there are 2 engineers in the call center, and the target throughput is 1 per minute.
    Suppose it takes 4 minutes for the engineer to read and review the web page. For that case you should set 2 threads in the group, use 4 minutes
    for think time delays, and specify 1 per minute in <span class="code">Precise Throughput Timer</span>. Of course it would result in something around 2samples/4minutes=0.5 per minute
    and the result of such a test means "you need more support engineers in a call center" or "you need to reduce the time it takes an engineer to fulfill a task".</p>


<h4>Testing low rates and repeatable tests</h4>

<p>Testing at low rates (e.g. 60 per hour) requires to know the desired test profile. For instance, if you need to inject load at even intervals (e.g. 60 seconds in between)
    then you'd better use <a href="../usermanual/component_reference.html#Constant_Throughput_Timer">Constant Throughput Timer</a>. However, if you need to have randomized schedule (e.g. to model real users that execute reports),
    then <span class="code">Precise Throughput Timer</span> is your friend.</p>

<p>When comparing outcomes of multiple load tests, it is useful to be able to repeat exactly the same test profile. For instance, if action X (e.g. "Profit Report")
    is invoked after 5 minutes of the test start, then it would be nice to replicate that pattern for subsequent test executions. Replicating the same load pattern
    simplifies analysis of the test results (e.g. CPU% chart).</p>

<p>
<span class="code">Random seed (change from 0 to random)</span> enables to control the seed value that is used by <span class="code">Precise Throughput Timer</span>. By default it is
    initialized with <span class="code">0</span> and that means random seed is used for each test execution. If you need to have repeatable load pattern, then change
    <span class="code">Random seed</span> so some random value. The general advice is to use non-zero seed, and "0 by default" is an implementation limit.</p>

<p>Note: when using multiple thread groups with same throughput rates and same non-zero seed it might result in unwanted firing the samples at the same time.</p>


<h4>Testing high rates and/or long test durations</h4>

<p>When the number of samples is high (e.g. it exceeds 10'000), schedule generation might take noticeable time (e.g. seconds) as <span class="code">Precise Throughput Timer</span> tries
    to produce the exact number of samples. There's memory consumption as well, however it should not matter much as every item in the schedule consumes 8 bytes.
    In order to reduce schedule generation overhead, <span class="code">Precise Throughput Timer</span> allows some slack when generating long schedules. It is controlled by
    <span class="code">Accuracy of generated delays</span> properties. By default, inexact schedules are allowed when number of samples exceeds 10'000.</p>

<p>If you want to perform 2-week long test with 5'000 per hour rate, you do not need to create a schedule for that 2 weeks.
    You can set <span class="code">Test duration (seconds)</span> property of the timer to 1 hour. The timer would create a schedule of 5'000 samples for an hour, and when the schedule is exhausted, the timer would generate
    a schedule for the next hour.</p>


<h4>Bursty load</h4>

<p>There might be a case when all the samples should come in pairs, triples, etc. Certain cases might be solved via <a href="../usermanual/component_reference.html#Synchronizing_Timer">Synchronizing Timer</a>, however
    <span class="code">Precise Throughput Timer</span> has native way to issue requests in packs. This behavior is disabled by default, and it is controlled with "Batched departures"
    settings</p>

<ul>
    
<li>
<span class="code">Number of threads in the batch (threads)</span>. Specifies the number of samples in a batch. Note the overall number of samples will still be in line with <span class="code">Target Throughput</span>
</li>
    
<li>
<span class="code">Delay between threads in the batch (ms)</span>. For instance, if set to 42, and the batch size is 3, then threads will depart at x, x+42ms, x+84ms</li>

</ul>


<h4>Variable load rate</h4>
    
<p>Even though property values (e.g. throughput) can be defined via expressions, it is recommended to keep the value more or less the same through the test, as it takes time to recompute the new schedule to adapt new values.</p>


<h4>Monitoring</h4>

<p>As next schedule is generated, <span class="code">Precise Throughput Timer</span> logs a message to <span class="code">jmeter.log</span>:
    <span class="code">2018-01-04 17:34:03,635 INFO o.a.j.t.ConstantPoissonProcessGenerator: Generated 21 timings (... 20 required, rate 1.0, duration 20, exact lim 20000,
    i21) in 0 ms, restart was issued 3 times. First 15 events will be fired at: 1.1869653574244292 (+1.1869653574244292), 1.4691340403043207 (+0.2821686828798915),
    3.638151706179226 (+2.169017665874905), 3.836357090410566 (+0.19820538423134026), 4.709330071408575 (+0.8729729809980085), 5.61330076999953 (+0.903970698590955),
        ...</span>
This shows that schedule generation took 0ms, and it shows absolute timestamps in seconds. In the case above, the rate was set to be 1 per second, and the actual timestamps
    became 1.2 sec, 1.5 sec, 3.6 sec, 3.8 sec, 4.7 sec, and so on.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/timers/precise_throughput_timer.png"><img src="../images/screenshots/timers/precise_throughput_timer.png" width="523" height="318" alt="Screenshot for Control-Panel of Precise Throughput Timer"></a>
<figcaption>Screenshot of Control-Panel of Precise Throughput Timer</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Precise_Throughput_Timer_parms1">
        Parameters
        <a class="sectionlink" href="#Precise_Throughput_Timer_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this timer that is shown in the tree</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Target throughput (in samples per 'throughput period')</div>
<div class="description req-true">Maximum number of samples you want to obtain per "throughput period", including all threads in group, from all affected samplers.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Throughput period (seconds)</div>
<div class="description req-true">Throughput period. For example, if "throughput" is set to 42 and "throughput period" to 21 sec, then you'll get 2 samples per second.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Test duration (seconds)</div>
<div class="description req-true">This is used to ensure you'll get throughput*duration samples during "test duration" timeframe.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Number of threads in the batch (threads)</div>
<div class="description req-true">If the value exceeds 1, then multiple threads depart from the timer simultaneously. Average throughput still meets "throughput" value.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Delay between threads in the batch (ms)</div>
<div class="description req-true">For instance, if set to 42, and the batch size is 3, then threads will depart at x, x+42ms, x+84ms.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Use approximate throughput when sequence length exceeds (samples)</div>
<div class="description req-true">When the required number of samples is less than this limit, timer will generate exact number of samples.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Allowed throughput surplus (percents)</div>
<div class="description req-true">When more than "max exact samples" samples is required, timer might generate slightly more events than specified by throughput.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Random seed (change from 0 to random)</div>
<div class="description req-true">Note: different timers should better have different seed values. Constant seed ensures timer generates the same delays each test start. The value of "0" means the timer is truly random (non-repeatable from one execution to another)..</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Synchronizing_Timer">Synchronizing Timer<a class="sectionlink" href="#Synchronizing_Timer" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The purpose of the SyncTimer is to block threads until X number of threads have been blocked, and
then they are all released at once.  A SyncTimer can thus create large instant loads at various
points of the test plan.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/timers/sync_timer.png"><img src="../images/screenshots/timers/sync_timer.png" width="410" height="145" alt="Screenshot for Control-Panel of Synchronizing Timer"></a>
<figcaption>Screenshot of Control-Panel of Synchronizing Timer</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Synchronizing_Timer_parms1">
        Parameters
        <a class="sectionlink" href="#Synchronizing_Timer_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
  
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this timer that is shown in the tree. </div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Number of Simultaneous Users to Group by</div>
<div class="description req-true">Number of threads to release at once. Setting it to <span class="code">0</span> is equivalent to setting it to Number of threads in Thread Group.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-false">Timeout in milliseconds</div>
<div class="description req-false">If set to <span class="code">0</span>, Timer will wait for the number of threads to reach the value in "<span class="code">Number of Simultaneous Users to Group</span>". If superior to <span class="code">0</span>, then timer will wait at max "<span class="code">Timeout in milliseconds</span>" for the number of Threads. If after the timeout interval the number of users waiting is not reached, timer will stop waiting. Defaults to <span class="code">0</span>
</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="clear"></div>
<div class="note">
If timeout in milliseconds is set to <span class="code">0</span> and number of threads never reaches "<span class="code">Number of Simultaneous Users to Group by</span>" then Test will pause infinitely.
Only a forced stop will stop it. Setting Timeout in milliseconds is an option to consider in this case.
</div>
<div class="clear"></div>
<div class="clear"></div>
<div class="note">
Synchronizing timer blocks only within one JVM, so if using Distributed testing ensure you never set "<span class="code">Number of Simultaneous Users to Group by</span>" to a value superior to the number of users
of its containing Thread group considering 1 injector only.
</div>
<div class="clear"></div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="BeanShell_Timer">BeanShell Timer<a class="sectionlink" href="#BeanShell_Timer" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The BeanShell Timer can be used to generate a delay.
</p>

<p>

<b>For full details on using BeanShell, please see the <a href="http://www.beanshell.org/">BeanShell website.</a></b>

<div class="clear"></div>
<div class="note">Migration to <a href="../usermanual/component_reference.html#JSR223_Timer">JSR223 Timer</a>+Groovy is highly recommended for performance, support of new Java features and limited maintenance of the BeanShell library.</div>
<div class="clear"></div>

</p>

<p>
The test element supports the <span class="code">ThreadListener</span> and <span class="code">TestListener</span> methods.
These should be defined in the initialisation file.
See the file <span class="code">BeanShellListeners.bshrc</span> for example definitions.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/timers/beanshell_timer.png"><img src="../images/screenshots/timers/beanshell_timer.png" width="846" height="636" alt="Screenshot for Control-Panel of BeanShell Timer"></a>
<figcaption>Screenshot of Control-Panel of BeanShell Timer</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="BeanShell_Timer_parms1">
        Parameters
        <a class="sectionlink" href="#BeanShell_Timer_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.
    The name is stored in the script variable <span class="code">Label</span>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Reset bsh.Interpreter before each call</div>
<div class="description req-true">
    If this option is selected, then the interpreter will be recreated for each sample.
    This may be necessary for some long running scripts. 
    For further information, see <a href="best-practices#bsh_scripting">Best Practices - BeanShell scripting</a>.
    </div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Parameters</div>
<div class="description req-false">Parameters to pass to the BeanShell script.
    The parameters are stored in the following variables:
    <ul>
        
<li>
<span class="code">Parameters</span> - string containing the parameters as a single variable</li>
        
<li>
<span class="code">bsh.args</span> - String array containing parameters, split on white-space</li>
    
</ul>
    
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Script file</div>
<div class="description req-false">
    A file containing the BeanShell script to run.
    The file name is stored in the script variable <span class="code">FileName</span>
     The return value is used as the number of milliseconds to wait.
     </div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Script</div>
<div class="description req-true">
        The BeanShell script. The return value is used as the number of milliseconds to wait.
    </div>
<div class="required req-true">Yes (unless script file is provided)</div>
</div>

</div>
<p>Before invoking the script, some variables are set up in the BeanShell interpreter:</p>
<ul>

<li>
<span class="code">log</span> - (<a href="https://www.slf4j.org/api/org/slf4j/Logger.html">Logger</a>) - can be used to write to the log file</li>

<li>
<span class="code">ctx</span> - (<a href="../api/org/apache/jmeter/threads/JMeterContext.html">JMeterContext</a>) - gives access to the context</li>

<li>
<span class="code">vars</span> - (<a href="../api/org/apache/jmeter/threads/JMeterVariables.html">JMeterVariables</a>) - gives read/write access to variables: <pre class="source">
vars.get(key);
vars.put(key,val);
vars.putObject("OBJ1",new Object());
</pre>
</li>

<li>
<span class="code">props</span> - (JMeterProperties - class java.util.Properties) - e.g. <span class="code">props.get("START.HMS");</span> <span class="code">props.put("PROP1","1234");</span>
</li>

<li>
<span class="code">prev</span> - (<a href="../api/org/apache/jmeter/samplers/SampleResult.html">SampleResult</a>) - gives access to the previous <span class="code">SampleResult</span> (if any)</li>

</ul>
<p>For details of all the methods available on each of the above variables, please check the Javadoc</p>
<p>If the property <span class="code">beanshell.timer.init</span> is defined, this is used to load an initialisation file, which can be used to define methods etc. for use in the BeanShell script.</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="JSR223_Timer">JSR223 Timer<a class="sectionlink" href="#JSR223_Timer" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The JSR223 Timer can be used to generate a delay using a JSR223 scripting language,
</p>

</div>
<div class="properties">
<h3 id="JSR223_Timer_parms1">
        Parameters
        <a class="sectionlink" href="#JSR223_Timer_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">ScriptLanguage</div>
<div class="description req-true">
        The scripting language to be used.
    </div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Parameters</div>
<div class="description req-false">Parameters to pass to the script.
    The parameters are stored in the following variables:
    <ul>
        
<li>
<span class="code">Parameters</span> - string containing the parameters as a single variable</li>
        
<li>
<span class="code">args</span> - String array containing parameters, split on white-space</li>
    
</ul>
    
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Script file</div>
<div class="description req-false">
    A file containing the script to run, if a relative file path is used, then it will be relative to directory referenced by "<span class="code">user.dir</span>" System property
     The return value is converted to a long integer and used as the number of milliseconds to wait.
     </div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Script compilation caching</div>
<div class="description req-false">Unique String across Test Plan that JMeter will use to cache result of Script compilation if language used supports <span class="code"><a href="https://docs.oracle.com/javase/8/docs/api/javax/script/Compilable.html">Compilable</a></span> interface (Groovy is one of these, java, beanshell and javascript are not)
    <div class="clear"></div>
<div class="note">See note in JSR223 Sampler Java System property if you're using Groovy without checking this option</div>
<div class="clear"></div>
    
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Script</div>
<div class="description req-true">
        The script. The return value is used as the number of milliseconds to wait.
    </div>
<div class="required req-true">Yes (unless script file is provided)</div>
</div>

</div>
<p>Before invoking the script, some variables are set up in the script interpreter:</p>
<ul>

<li>
<span class="code">log</span> - (<a href="https://www.slf4j.org/api/org/slf4j/Logger.html">Logger</a>) - can be used to write to the log file</li>

<li>
<span class="code">ctx</span> - (<a href="../api/org/apache/jmeter/threads/JMeterContext.html">JMeterContext</a>) - gives access to the context</li>

<li>
<span class="code">vars</span> - (<a href="../api/org/apache/jmeter/threads/JMeterVariables.html">JMeterVariables</a>) - gives read/write access to variables: <pre class="source">vars.get(key);
vars.put(key,val);
vars.putObject("OBJ1",new Object());</pre>
</li>

<li>
<span class="code">props</span> - (JMeterProperties - class java.util.Properties) - e.g. <span class="code">props.get("START.HMS");</span> <span class="code">props.put("PROP1","1234");</span>
</li>

<li>
<span class="code">sampler</span> - (<a href="../api/org/apache/jmeter/samplers/Sampler.html">Sampler</a>) - the current Sampler</li>

<li>
<span class="code">Label</span> - the name of the Timer</li>

<li>
<span class="code">FileName</span> - the file name (if any)</li>

<li>
<span class="code">OUT</span> - System.out</li>

</ul>
<p>For details of all the methods available on each of the above variables, please check the Javadoc</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Poisson_Random_Timer">Poisson Random Timer<a class="sectionlink" href="#Poisson_Random_Timer" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>This timer pauses each thread request for a random amount of time, with most
of the time intervals occurring near a particular value.  The total delay is the
sum of the Poisson distributed value, and the offset value.</p>

<p>Note: if you want to model Poisson arrivals, consider using <a href="../usermanual/component_reference.html#Precise_Throughput_Timer">Precise Throughput Timer</a> instead.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/timers/poisson_random_timer.png"><img src="../images/screenshots/timers/poisson_random_timer.png" width="341" height="182" alt="Screenshot for Control-Panel of Poisson Random Timer"></a>
<figcaption>Screenshot of Control-Panel of Poisson Random Timer</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Poisson_Random_Timer_parms1">
        Parameters
        <a class="sectionlink" href="#Poisson_Random_Timer_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this timer that is shown in the tree</div>
<div class="required req-false">No</div>
</div>
  
<div class="property">
<div class="name req-true">Lambda</div>
<div class="description req-true">Lambda value in milliseconds.</div>
<div class="required req-true">Yes</div>
</div>
  
<div class="property">
<div class="name req-true">Constant Delay Offset</div>
<div class="description req-true">Number of milliseconds to pause in addition
to the random delay.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<a href="#">^</a>


</div>
<div class="section">
<h1 id="preprocessors">18.7 Pre Processors<a class="sectionlink" href="#preprocessors" title="Link to here">&para;</a>
</h1>
    
<div class="description">
    
<br>
        Preprocessors are used to modify the Samplers in their scope.
    <br>
    
</div>

<div class="component">
<h2 id="HTML_Link_Parser">HTML Link Parser<a class="sectionlink" href="#HTML_Link_Parser" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>This modifier parses HTML response from the server and extracts
links and forms.  A URL test sample that passes through this modifier will be examined to
see if it "matches" any of the links or forms extracted
from the immediately previous response.  It would then replace the values in the URL
test sample with appropriate values from the matching link or form.  Perl-type regular
expressions are used to find matches.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/html_link_parser.png"><img src="../images/screenshots/html_link_parser.png" width="373" height="79" alt="Screenshot for Control-Panel of HTML Link Parser"></a>
<figcaption>Screenshot of Control-Panel of HTML Link Parser</figcaption>
</figure>
</div>
<div class="clear"></div>
<div class="note">
Matches are performed using <span class="code">protocol</span>, <span class="code">host</span>, <span class="code">path</span> and <span class="code">parameter names</span>.
The target sampler cannot contain parameters that are not in the response links.
</div>
<div class="clear"></div>
<div class="clear"></div>
<div class="note">
If using distributed testing, ensure you switch mode (see <span class="code">jmeter.properties</span>) so that it's not a stripping one, see <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=56376">
      Bug
      56376</a>

</div>
<div class="clear"></div>
<div class="example">
<div class="title">Spidering Example<a class="sectionlink" href="#spider_example" title="Link to here">&para;</a>
</div>

<p>Consider a simple example: let's say you wanted JMeter to "spider" through your site,
hitting link after link parsed from the HTML returned from your server (this is not
actually the most useful thing to do, but it serves as a good example).  You would create
a <a href="../usermanual/component_reference.html#Simple_Controller">Simple Controller</a>, and add the "HTML Link Parser" to it.  Then, create an
HTTP Request, and set the domain to "<span class="code">.*</span>", and the path likewise. This will
cause your test sample to match with any link found on the returned pages.  If you wanted to
restrict the spidering to a particular domain, then change the domain value
to the one you want.  Then, only links to that domain will be followed.
</p>

</div>
<div class="example">
<div class="title">Poll Example<a class="sectionlink" href="#poll_example" title="Link to here">&para;</a>
</div>

<p>A more useful example: given a web polling application, you might have a page with
several poll options as radio buttons for the user to select.  Let's say the values
of the poll options are very dynamic - maybe user generated.  If you wanted JMeter to
test the poll, you could either create test samples with hardcoded values chosen, or you
could let the HTML Link Parser parse the form, and insert a random poll option into
your URL test sample.  To do this, follow the above example, except, when configuring
your Web Test controller's URL options, be sure to choose "<span class="code">POST</span>" as the
method.  Put in hard-coded values for the <span class="code">domain</span>, <span class="code">path</span>, and any additional form parameters.
Then, for the actual radio button parameter, put in the name (let's say it's called "<span class="code">poll_choice</span>"),
and then "<span class="code">.*</span>" for the value of that parameter.  When the modifier examines
this URL test sample, it will find that it "matches" the poll form (and
it shouldn't match any other form, given that you've specified all the other aspects of
the URL test sample), and it will replace your form parameters with the matching
parameters from the form.  Since the regular expression "<span class="code">.*</span>" will match with
anything, the modifier will probably have a list of radio buttons to choose from.  It
will choose at random, and replace the value in your URL test sample.  Each time through
the test, a new random value will be chosen.</p>


<figure>
<a href="../images/screenshots/modification.png"><img src="../images/screenshots/modification.png" width="1250" height="493" alt="Figure 18 - Online Poll Example"></a>
<figcaption>Figure 18 - Online Poll Example</figcaption>
</figure>


<div class="clear"></div>
<div class="note">One important thing to remember is that you must create a test sample immediately
prior that will return an HTML page with the links and forms that are relevant to
your dynamic test sample.</div>
<div class="clear"></div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="HTTP_URL_Re-writing_Modifier">HTTP URL Re-writing Modifier<a class="sectionlink" href="#HTTP_URL_Re-writing_Modifier" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>This modifier works similarly to the HTML Link Parser, except it has a specific purpose for which
it is easier to use than the HTML Link Parser, and more efficient.  For web applications that
use URL Re-writing to store session ids instead of cookies, this element can be attached at the
ThreadGroup level, much like the <a href="../usermanual/component_reference.html#HTTP_Cookie_Manager">HTTP Cookie Manager</a>.  Simply give it the name
of the session id parameter, and it will find it on the page and add the argument to every
request of that ThreadGroup.</p>

<p>Alternatively, this modifier can be attached to select requests and it will modify only them.
Clever users will even determine that this modifier can be used to grab values that elude the
<a href="../usermanual/component_reference.html#HTML_Link_Parser">HTML Link Parser</a>.</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/url_rewriter.png"><img src="../images/screenshots/url_rewriter.png" width="579" height="239" alt="Screenshot for Control-Panel of HTTP URL Re-writing Modifier"></a>
<figcaption>Screenshot of Control-Panel of HTTP URL Re-writing Modifier</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="HTTP_URL_Re-writing_Modifier_parms1">
        Parameters
        <a class="sectionlink" href="#HTTP_URL_Re-writing_Modifier_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name given to this element in the test tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Session Argument Name</div>
<div class="description req-true">The name of the parameter to grab from
        previous response.  This modifier will find the parameter anywhere it exists on the page, and
        grab the value assigned to it, whether it's in an HREF or a form.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Path Extension</div>
<div class="description req-false">Some web apps rewrite URLs by appending
        a semi-colon plus the session id parameter.  Check this box if that is so.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Do not use equals in path extension</div>
<div class="description req-false">Some web apps rewrite URLs without using an "<span class="code">=</span>" sign between the parameter name and value (such as Intershop Enfinity).</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Do not use questionmark in path extension</div>
<div class="description req-false">Prevents the query string to end up in the path extension (such as Intershop Enfinity).</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Cache Session Id?</div>
<div class="description req-true">
        Should the value of the session Id be saved for later use when the session Id is not present?
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">URL Encode</div>
<div class="description req-false">
        URL Encode value when writing parameter
        </div>
<div class="required req-false">No</div>
</div>

</div>
<div class="clear"></div>
<div class="note">
If using distributed testing, ensure you switch mode (see <span class="code">jmeter.properties</span>) so that it's not a stripping one, see <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=56376">
      Bug
      56376</a>.
</div>
<div class="clear"></div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="User_Parameters">User Parameters<a class="sectionlink" href="#User_Parameters" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>Allows the user to specify values for User Variables specific to individual threads.</p>

<p>User Variables can also be specified in the Test Plan but not specific to individual threads. This panel allows
you to specify a series of values for any User Variable. For each thread, the variable will be assigned one of the values from the series
in sequence. If there are more threads than values, the values get re-used. For example, this can be used to assign a distinct
user id to be used by each thread. User variables can be referenced in any field of any JMeter Component.</p>


<p>The variable is specified by clicking the <span class="code">Add Variable</span> button in the bottom of the panel and filling in the Variable name in the '<span class="code">Name:</span>' column.
To add a new value to the series, click the '<span class="code">Add User</span>' button and fill in the desired value in the newly added column.</p>


<p>Values can be accessed in any test component in the same thread group, using the <a href="functions.html">function syntax</a>: <span class="code">${variable}</span>.</p>

<p>See also the <a href="../usermanual/component_reference.html#CSV_Data_Set_Config">CSV Data Set Config</a> element, which is more suitable for large numbers of parameters</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/user_params.png"><img src="../images/screenshots/user_params.png" width="703" height="303" alt="Screenshot for Control-Panel of User Parameters"></a>
<figcaption>Screenshot of Control-Panel of User Parameters</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="User_Parameters_parms1">
        Parameters
        <a class="sectionlink" href="#User_Parameters_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
        
<div class="property">
<div class="name req-true">Update Once Per Iteration</div>
<div class="description req-true">A flag to indicate whether the User Parameters element
        should update its variables only once per iteration.  if you embed functions into the UP, then you may need greater
        control over how often the values of the variables are updated.  Keep this box checked to ensure the values are
        updated each time through the UP's parent controller.  Uncheck the box, and the UP will update the parameters for 
        every sample request made within its <a href="test_plan.html#scoping_rules">scope</a>.</div>
<div class="required req-true">Yes</div>
</div>
        

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="BeanShell_PreProcessor">BeanShell PreProcessor<a class="sectionlink" href="#BeanShell_PreProcessor" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The BeanShell PreProcessor allows arbitrary code to be applied before taking a sample.
</p>

<p>

<b>For full details on using BeanShell, please see the <a href="http://www.beanshell.org/">BeanShell website.</a></b>

<div class="clear"></div>
<div class="note">Migration to <a href="../usermanual/component_reference.html#JSR223_PreProcessor">JSR223 PreProcessor</a>+Groovy is highly recommended for performance, support of new Java features and limited maintenance of the BeanShell library.</div>
<div class="clear"></div>

</p>

<p>
The test element supports the <span class="code">ThreadListener</span> and <span class="code">TestListener</span> methods.
These should be defined in the initialisation file.
See the file <span class="code">BeanShellListeners.bshrc</span> for example definitions.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/beanshell_preprocessor.png"><img src="../images/screenshots/beanshell_preprocessor.png" width="845" height="633" alt="Screenshot for Control-Panel of BeanShell PreProcessor"></a>
<figcaption>Screenshot of Control-Panel of BeanShell PreProcessor</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="BeanShell_PreProcessor_parms1">
        Parameters
        <a class="sectionlink" href="#BeanShell_PreProcessor_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.
    The name is stored in the script variable <span class="code">Label</span>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Reset bsh.Interpreter before each call</div>
<div class="description req-true">
    If this option is selected, then the interpreter will be recreated for each sample.
    This may be necessary for some long running scripts. 
    For further information, see <a href="best-practices#bsh_scripting">Best Practices - BeanShell scripting</a>.
    </div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Parameters</div>
<div class="description req-false">Parameters to pass to the BeanShell script.
    The parameters are stored in the following variables:
    <ul>
        
<li>
<span class="code">Parameters</span> - string containing the parameters as a single variable</li>
        
<li>
<span class="code">bsh.args</span> - String array containing parameters, split on white-space</li>
    
</ul>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Script file</div>
<div class="description req-false">A file containing the BeanShell script to run.
    The file name is stored in the script variable <span class="code">FileName</span>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Script</div>
<div class="description req-true">The BeanShell script. The return value is ignored.</div>
<div class="required req-true">Yes (unless script file is provided)</div>
</div>

</div>
<p>Before invoking the script, some variables are set up in the BeanShell interpreter:</p>
<ul>

<li>
<span class="code">log</span> - (<a href="https://www.slf4j.org/api/org/slf4j/Logger.html">Logger</a>) - can be used to write to the log file</li>

<li>
<span class="code">ctx</span> - (<a href="../api/org/apache/jmeter/threads/JMeterContext.html">JMeterContext</a>) - gives access to the context</li>

<li>
<span class="code">vars</span> - (<a href="../api/org/apache/jmeter/threads/JMeterVariables.html">JMeterVariables</a>) - gives read/write access to variables: <pre class="source">vars.get(key);
vars.put(key,val);
vars.putObject("OBJ1",new Object());</pre>
</li>

<li>
<span class="code">props</span> - (JMeterProperties - class java.util.Properties) - e.g. <span class="code">props.get("START.HMS");</span> <span class="code">props.put("PROP1","1234");</span>
</li>

<li>
<span class="code">prev</span> - (<a href="../api/org/apache/jmeter/samplers/SampleResult.html">SampleResult</a>) - gives access to the previous SampleResult (if any)</li>

<li>
<span class="code">sampler</span> - (<a href="../api/org/apache/jmeter/samplers/Sampler.html">Sampler</a>)- gives access to the current sampler</li>

</ul>
<p>For details of all the methods available on each of the above variables, please check the Javadoc</p>
<p>If the property <span class="code">beanshell.preprocessor.init</span> is defined, this is used to load an initialisation file, which can be used to define methods etc. for use in the BeanShell script.</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="JSR223_PreProcessor">JSR223 PreProcessor<a class="sectionlink" href="#JSR223_PreProcessor" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The JSR223 PreProcessor allows JSR223 script code to be applied before taking a sample.
</p>

</div>
<div class="properties">
<h3 id="JSR223_PreProcessor_parms1">
        Parameters
        <a class="sectionlink" href="#JSR223_PreProcessor_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Language</div>
<div class="description req-true">The JSR223 language to be used</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Parameters</div>
<div class="description req-false">Parameters to pass to the script.
    The parameters are stored in the following variables:
    <ul>
        
<li>
<span class="code">Parameters</span> - string containing the parameters as a single variable</li>
        
<li>
<span class="code">args</span> - String array containing parameters, split on white-space</li>
    
</ul>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Script file</div>
<div class="description req-false">A file containing the script to run, if a relative file path is used, then it will be relative to directory referenced by "<span class="code">user.dir</span>" System property</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Script compilation caching</div>
<div class="description req-false">Unique String across Test Plan that JMeter will use to cache result of Script compilation if language used supports <span class="code"><a href="https://docs.oracle.com/javase/8/docs/api/javax/script/Compilable.html">Compilable</a></span> interface (Groovy is one of these, java, beanshell and javascript are not)
    <div class="clear"></div>
<div class="note">See note in JSR223 Sampler Java System property if you're using Groovy without checking this option</div>
<div class="clear"></div>
    
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Script</div>
<div class="description req-true">The script to run.</div>
<div class="required req-true">Yes (unless script file is provided)</div>
</div>

</div>
<p>The following JSR223 variables are set up for use by the script:</p>
<ul>

<li>
<span class="code">log</span> - (<a href="https://www.slf4j.org/api/org/slf4j/Logger.html">Logger</a>) - can be used to write to the log file</li>

<li>
<span class="code">Label</span> - the String Label</li>

<li>
<span class="code">FileName</span> - the script file name (if any)</li>

<li>
<span class="code">Parameters</span> - the parameters (as a String)</li>

<li>
<span class="code">args</span> - the parameters as a String array (split on whitespace)</li>

<li>
<span class="code">ctx</span> - (<a href="../api/org/apache/jmeter/threads/JMeterContext.html">JMeterContext</a>) - gives access to the context</li>

<li>
<span class="code">vars</span> - (<a href="../api/org/apache/jmeter/threads/JMeterVariables.html">JMeterVariables</a>) - gives read/write access to variables: <pre class="source">vars.get(key);
vars.put(key,val);
vars.putObject("OBJ1",new Object());
vars.getObject("OBJ2");</pre>
</li>

<li>
<span class="code">props</span> - (JMeterProperties - class java.util.Properties) - e.g. <span class="code">props.get("START.HMS");</span> <span class="code">props.put("PROP1","1234");</span>
</li>

<li>
<span class="code">sampler</span> - (<a href="../api/org/apache/jmeter/samplers/Sampler.html">Sampler</a>)- gives access to the current sampler</li>

<li>
<span class="code">OUT</span> - System.out - e.g. <span class="code">OUT.println("message")</span>
</li>

</ul>
<p>For details of all the methods available on each of the above variables, please check the Javadoc</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="JDBC_PreProcessor">JDBC PreProcessor<a class="sectionlink" href="#JDBC_PreProcessor" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The JDBC PreProcessor enables you to run some SQL statement just before a sample runs.
This can be useful if your JDBC Sample requires some data to be in DataBase and you cannot compute this in a setup Thread group.
For details, see <a href="../usermanual/component_reference.html#JDBC_Request">JDBC Request</a>.
</p>

<p>
See the following Test plan:
</p>

<div class="links">
<div class="title">See also:</div>
<ul class="links">
<li>
<a href="../demos/JDBC-Pre-Post-Processor.jmx">Test Plan using JDBC Pre/Post Processor</a>
</li>
</ul>
</div>

<p>
In the linked test plan, "<span class="code">Create Price Cut-Off</span>" JDBC PreProcessor calls a stored procedure to create a Price Cut-Off in Database,
this one will be used by "<span class="code">Calculate Price cut off</span>".
</p>

<figure>
<a href="../images/screenshots/jdbc-pre-processor.png"><img src="../images/screenshots/jdbc-pre-processor.png" width="818" height="394" alt="Create Price Cut-Off Preprocessor"></a>
<figcaption>Create Price Cut-Off Preprocessor</figcaption>
</figure>


</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="RegEx_User_Parameters">RegEx User Parameters<a class="sectionlink" href="#RegEx_User_Parameters" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>Allows to specify dynamic values for HTTP parameters extracted from another HTTP Request using regular expressions.
            RegEx User Parameters are specific to individual threads.</p>
        
<p>This component allows you to specify reference name of a regular expression that extracts names and values of HTTP request parameters. 
            Regular expression group numbers must be specified for parameter's name and also for parameter's value.
            Replacement will only occur for parameters in the Sampler that uses this RegEx User Parameters which name matches </p>
    
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/regex_user_params.png"><img src="../images/screenshots/regex_user_params.png" width="727" height="138" alt="Screenshot for Control-Panel of RegEx User Parameters"></a>
<figcaption>Screenshot of Control-Panel of RegEx User Parameters</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="RegEx_User_Parameters_parms1">
        Parameters
        <a class="sectionlink" href="#RegEx_User_Parameters_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
        
<div class="property">
<div class="name req-true">Regular Expression Reference Name</div>
<div class="description req-true">Name of a reference to a regular expression</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Parameter names regexp group number</div>
<div class="description req-true">Group number of regular expression used to extract parameter names</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Parameter values regex group number</div>
<div class="description req-true">Group number of regular expression used to extract parameter values</div>
<div class="required req-true">Yes</div>
</div>
    
</div>
<div class="example">
<div class="title">Regexp Example<a class="sectionlink" href="#regex_user_param_example" title="Link to here">&para;</a>
</div>
    
<p>Suppose we have a request which returns a form with 3 input parameters and we want to extract the value of 2 of them to inject them in next request</p>
    
<ol>
      
<li>Create Post Processor Regular Expression for first HTTP Request
        <ul>
          
<li>
<span class="code">refName</span> - set name of a regular expression Expression (<span class="code">listParams</span>)</li>
          
<li>
<span class="code">regular expression</span> - expression that will extract input names and input values attributes
            <br>
            Ex: <span class="code">input name="([^"]+?)" value="([^"]+?)"</span>
</li>
          
<li>
<span class="code">template</span> - would be empty</li>
          
<li>
<span class="code">match nr</span> - <span class="code">-1</span> (in order to iterate through all the possible matches)</li>
        
</ul>
      
</li>
      
<li>Create Pre Processor RegEx User Parameters for second HTTP Request
        <ul>
          
<li>
<span class="code">refName</span> - set the same reference name of a regular expression, would be <span class="code">listParams</span> in our example</li>
          
<li>
<span class="code">parameter names group number</span> - group number of regular expression for parameter names, would be <span class="code">1</span> in our example</li>
          
<li>
<span class="code">parameter values group number</span> - group number of regular expression for parameter values, would be <span class="code">2</span> in our example</li>
        
</ul>
      
</li>
    
</ol>
    
</div>
<p>See also the <a href="../usermanual/component_reference.html#Regular_Expression_Extractor">Regular Expression Extractor</a> element, which is used to extract parameters names and values</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>

<div class="links">
<div class="title">See also:</div>
<ul class="links">
<li>
<a href="../demos/RegEx-User-Parameters.jmx">Test Plan showing how to use RegEx User Parameters</a>
</li>
</ul>
</div>


<div class="component">
<h2 id="Sample_Timeout">Sample Timeout<a class="sectionlink" href="#Sample_Timeout" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>This Pre-Processor schedules a timer task to interrupt a sample if it takes too long to complete.
The timeout is ignored if it is zero or negative.
For this to work, the sampler must implement Interruptible. 
The following samplers are known to do so:<br>
AJP, BeanShell, FTP, HTTP, Soap, AccessLog, MailReader, JMS Subscriber, TCPSampler, TestAction, JavaSampler
</p>

<p>
The test element is intended for use where individual timeouts such as Connection Timeout or Response Timeout are insufficient,
or where the Sampler does not support timeouts.
The timeout should be set sufficiently long so that it is not triggered in normal tests, but short enough that it interrupts samples
that are stuck.
</p>

<p>
[By default, JMeter uses a Callable to interrupt the sampler.
This executes in the same thread as the timer, so if the interrupt takes a long while, 
it may delay the processing of subsequent timeouts.
This is not expected to be a problem, but if necessary the property <span class="code">InterruptTimer.useRunnable</span>
can be set to <span class="code">true</span> to use a separate Runnable thread instead of the Callable.]
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/sample_timeout.png"><img src="../images/screenshots/sample_timeout.png" width="316" height="138" alt="Screenshot for Control-Panel of Sample Timeout"></a>
<figcaption>Screenshot of Control-Panel of Sample Timeout</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Sample_Timeout_parms1">
        Parameters
        <a class="sectionlink" href="#Sample_Timeout_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this timer that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Sample Timeout</div>
<div class="description req-true">If the sample takes longer to complete, it will be interrupted.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<a href="#">^</a>


</div>
<div class="section">
<h1 id="postprocessors">18.8 Post-Processors<a class="sectionlink" href="#postprocessors" title="Link to here">&para;</a>
</h1>
    
<div class="description">
    
<p>
        As the name suggests, Post-Processors are applied after samplers. Note that they are
        applied to <b>all</b> the samplers in the same scope, so to ensure that a post-processor
        is applied only to a particular sampler, add it as a child of the sampler.
    </p>
    
<div class="clear"></div>
<div class="note">
    Note: Unless documented otherwise, Post-Processors are not applied to sub-samples (child samples) -
    only to the parent sample.
    In the case of JSR223 and BeanShell post-processors, the script can retrieve sub-samples using the method
    <span class="code">prev.getSubResults()</span> which returns an array of SampleResults.
    The array will be empty if there are none.
    </div>
<div class="clear"></div>
    
<p>
    Post-Processors are run before Assertions, so they do not have access to any Assertion Results, nor will
    the sample status reflect the results of any Assertions. If you require access to Assertion Results, try
    using a Listener instead. Also note that the variable <span class="code">JMeterThread.last_sample_ok</span> is set to "<span class="code">true</span>" or "<span class="code">false</span>"
    after all Assertions have been run.
    </p>
    
</div>

<div class="component">
<h2 id="Regular_Expression_Extractor">Regular Expression Extractor<a class="sectionlink" href="#Regular_Expression_Extractor" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>Allows the user to extract values from a server response using a Perl-type regular expression.  As a post-processor,
this element will execute after each Sample request in its scope, applying the regular expression, extracting the requested values,
generate the template string, and store the result into the given variable name.</p>
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/regex_extractor.png"><img src="../images/screenshots/regex_extractor.png" width="1127" height="277" alt="Screenshot for Control-Panel of Regular Expression Extractor"></a>
<figcaption>Screenshot of Control-Panel of Regular Expression Extractor</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Regular_Expression_Extractor_parms1">
        Parameters
        <a class="sectionlink" href="#Regular_Expression_Extractor_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
        
<div class="property">
<div class="name req-true">Apply to:</div>
<div class="description req-true">
        This is for use with samplers that can generate sub-samples, 
        e.g. HTTP Sampler with embedded resources, Mail Reader or samples generated by the Transaction Controller.
        <ul>
        
<li>
<span class="code">Main sample only</span> - only applies to the main sample</li>
        
<li>
<span class="code">Sub-samples only</span> - only applies to the sub-samples</li>
        
<li>
<span class="code">Main sample and sub-samples</span> - applies to both.</li>
        
<li>
<span class="code">JMeter Variable Name to use</span> - extraction is to be applied to the contents of the named variable</li>
        
</ul>
        Matching is applied to all qualifying samples in turn.
        For example if there is a main sample and 3 sub-samples, each of which contains a single match for the regex,
        (i.e. 4 matches in total).
        For match number = <span class="code">3</span>, Sub-samples only, the extractor will match the 3<sup>rd</sup> sub-sample.
        For match number = <span class="code">3</span>, Main sample and sub-samples, the extractor will match the 2<sup>nd</sup> sub-sample (1<sup>st</sup> match is main sample).
        For match number = <span class="code">0</span> or negative, all qualifying samples will be processed.
        For match number &gt; <span class="code">0</span>, matching will stop as soon as enough matches have been found.
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Field to check</div>
<div class="description req-true">
        The following fields can be checked:
        <ul>
        
<li>
<span class="code">Body</span> - the body of the response, e.g. the content of a web-page (excluding headers)</li>
        
<li>
<span class="code">Body (unescaped)</span> - the body of the response, with all Html escape codes replaced.
        Note that Html escapes are processed without regard to context, so some incorrect substitutions
        may be made.
        <div class="clear"></div>
<div class="note">Note that this option highly impacts performances, so use it only when absolutely necessary and be aware of its impacts</div>
<div class="clear"></div>
        
</li>
        
<li>
<span class="code">Body as a Document</span> - the extract text from various type of documents via Apache Tika (see <a href="../usermanual/component_reference.html#View_Results_Tree">View Results Tree</a> Document view section).
        <div class="clear"></div>
<div class="note">Note that the Body as a Document option can impact performances, so ensure it is OK for your test</div>
<div class="clear"></div>
        
</li>
        
<li>
<span class="code">Request Headers</span> - may not be present for non-HTTP samples</li>
        
<li>
<span class="code">Response Headers</span> - may not be present for non-HTTP samples</li>
        
<li>
<span class="code">URL</span>
</li>
        
<li>
<span class="code">Response Code</span> - e.g. <span class="code">200</span>
</li>
        
<li>
<span class="code">Response Message</span> - e.g. <span class="code">OK</span>
</li>
        
</ul>
        Headers can be useful for HTTP samples; it may not be present for other sample types.
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Name of created variable</div>
<div class="description req-true">The name of the JMeter variable in which to store the result.  Also note that each group is stored as <span class="code">[refname]_g#</span>, where <span class="code">[refname]</span> is the string you entered as the reference name, and <span class="code">#</span> is the group number, where group <span class="code">0</span> is the entire match, group <span class="code">1</span> is the match from the first set of parentheses, etc.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Regular Expression</div>
<div class="description req-true">The regular expression used to parse the response data. 
        This must contain at least one set of parentheses "<span class="code">()</span>" to capture a portion of the string, unless using the group <span class="code">$0$</span>.
        Do not enclose the expression in <span class="code">/ /</span> - unless of course you want to match these characters as well.
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Template</div>
<div class="description req-true">The template used to create a string from the matches found.  This is an arbitrary string
        with special elements to refer to groups within the regular expression.  The syntax to refer to a group is: '<span class="code">$1$</span>' to refer to
        group <span class="code">1</span>, '<span class="code">$2$</span>' to refer to group <span class="code">2</span>, etc. <span class="code">$0$</span> refers to whatever the entire expression matches.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Match No. (0 for Random)</div>
<div class="description req-true">Indicates which match to use.  The regular expression may match multiple times.  
            <ul>
                
<li>Use a value of zero to indicate JMeter should choose a match at random.</li>
                
<li>A positive number N means to select the n<sup>th</sup> match.</li>
                
<li> Negative numbers are used in conjunction with the <a href="../usermanual/component_reference.html#ForEach_Controller">ForEach Controller</a> - see below.</li>
            
</ul>
        
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Default Value</div>
<div class="description req-false">
        If the regular expression does not match, then the reference variable will be set to the default value.
        This is particularly useful for debugging tests. If no default is provided, then it is difficult to tell
        whether the regular expression did not match, or the RE element was not processed or maybe the wrong variable
        is being used.
        <p>
        However, if you have several test elements that set the same variable, 
        you may wish to leave the variable unchanged if the expression does not match.
        In this case, remove the default value once debugging is complete.
        </p> 
        
</div>
<div class="required req-false">No, but recommended</div>
</div>
        
<div class="property">
<div class="name req-false">Use empty default value</div>
<div class="description req-false">
        If the checkbox is checked and <span class="code">Default Value</span> is empty, then JMeter will set the variable to empty string instead of not setting it.
        Thus when you will for example use <span class="code">${var}</span> (if <span class="code">Reference Name</span> is var) in your Test Plan, if the extracted value is not found then 
        <span class="code">${var}</span> will be equal to empty string instead of containing <span class="code">${var}</span> which may be useful if extracted value is optional.
        </div>
<div class="required req-false">No</div>
</div>

</div>
<p>
    If the match number is set to a non-negative number, and a match occurs, the variables are set as follows:
</p>
<ul>
        
<li>
<span class="code">refName</span> - the value of the template</li>
        
<li>
<span class="code">refName_g<em>n</em></span>, where <span class="code">n</span>=<span class="code">0</span>,<span class="code">1</span>,<span class="code">2</span> - the groups for the match</li>
        
<li>
<span class="code">refName_g</span> - the number of groups in the Regex (excluding <span class="code">0</span>)</li>
    
</ul>
<p>
    If no match occurs, then the <span class="code">refName</span> variable is set to the default (unless this is absent). 
    Also, the following variables are removed:
</p>
<ul>
        
<li>
<span class="code">refName_g0</span>
</li>
        
<li>
<span class="code">refName_g1</span>
</li>
        
<li>
<span class="code">refName_g</span>
</li>
    
</ul>
<p>
    If the match number is set to a negative number, then all the possible matches in the sampler data are processed.
    The variables are set as follows:
</p>
<ul>
        
<li>
<span class="code">refName_matchNr</span> - the number of matches found; could be <span class="code">0</span>
</li>
        
<li>
<span class="code">refName_<em>n</em></span>, where <span class="code">n</span> = <span class="code">1</span>, <span class="code">2</span>, <span class="code">3</span> etc. - the strings as generated by the template</li>
        
<li>
<span class="code">refName_<em>n</em>_g<em>m</em></span>, where <span class="code">m</span>=<span class="code">0</span>, <span class="code">1</span>, <span class="code">2</span> - the groups for match <span class="code">n</span>
</li>
        
<li>
<span class="code">refName</span> - always set to the default value</li>
        
<li>
<span class="code">refName_g<em>n</em></span> - not set</li>
    
</ul>
<p>
    Note that the <span class="code">refName</span> variable is always set to the default value in this case, 
    and the associated group variables are not set.
</p>
<p>See also <a href="../usermanual/component_reference.html#Response_Assertion">Response Assertion</a> for some examples of how to specify modifiers,
    and <a href="regular_expressions.html"> for further information on JMeter regular expressions.</a>
</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="CSS_Selector_Extractor">CSS Selector Extractor<a name="CSS/JQuery_Extractor">
            (was:
            CSS/JQuery Extractor
            )
          </a><a class="sectionlink" href="#CSS_Selector_Extractor" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>Allows the user to extract values from a server HTML response using a CSS Selector syntax.  As a post-processor,
this element will execute after each Sample request in its scope, applying the CSS/JQuery expression, extracting the requested nodes,
extracting the node as text or attribute value and store the result into the given variable name.</p>
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/css_extractor_attr.png"><img src="../images/screenshots/css_extractor_attr.png" width="826" height="276" alt="Screenshot for Control-Panel of CSS Selector Extractor"></a>
<figcaption>Screenshot of Control-Panel of CSS Selector Extractor</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="CSS_Selector_Extractor_parms1">
        Parameters
        <a class="sectionlink" href="#CSS_Selector_Extractor_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
        
<div class="property">
<div class="name req-true">Apply to:</div>
<div class="description req-true">
        This is for use with samplers that can generate sub-samples, 
        e.g. HTTP Sampler with embedded resources, Mail Reader or samples generated by the Transaction Controller.
        <ul>
        
<li>
<span class="code">Main sample only</span> - only applies to the main sample</li>
        
<li>
<span class="code">Sub-samples only</span> - only applies to the sub-samples</li>
        
<li>
<span class="code">Main sample and sub-samples</span> - applies to both.</li>
        
<li>
<span class="code">JMeter Variable Name to use</span> - extraction is to be applied to the contents of the named variable</li>
        
</ul>
        Matching is applied to all qualifying samples in turn.
        For example if there is a main sample and 3 sub-samples, each of which contains a single match for the regex,
        (i.e. 4 matches in total).
        For match number = <span class="code">3</span>, Sub-samples only, the extractor will match the 3<sup>rd</sup> sub-sample.
        For match number = <span class="code">3</span>, Main sample and sub-samples, the extractor will match the 2<sup>nd</sup> sub-sample (1<sup>st</sup> match is main sample).
        For match number = <span class="code">0</span> or negative, all qualifying samples will be processed.
        For match number &gt; <span class="code">0</span>, matching will stop as soon as enough matches have been found.
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">CSS Selector Implementation</div>
<div class="description req-false">
        2 Implementations for CSS/JQuery based syntax are supported:
        <ul>
                
<li>
<a href="http://jsoup.org/">JSoup</a>
</li>
                
<li>
<a href="http://jodd.org/doc/lagarto/index.html">Jodd-Lagarto (CSSelly)</a>
</li>
        
</ul>
        If selector is set to empty, default implementation(JSoup) will be used.
        </div>
<div class="required req-false">False</div>
</div>
        
<div class="property">
<div class="name req-true">Name of created variable</div>
<div class="description req-true">The name of the JMeter variable in which to store the result.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">CSS/JQuery expression</div>
<div class="description req-true">The CSS/JQuery selector used to select nodes from the response data. 
        Selector, selectors combination and pseudo-selectors are supported, examples:
        <ul>
            
<li>
<span class="code">E[foo]</span> - an <span class="code">E</span> element with a "<span class="code">foo</span>" attribute</li>
            
<li>
<span class="code">ancestor child</span> - child elements that descend from ancestor, e.g. <span class="code">.body p</span> finds <span class="code">p</span> elements anywhere under a block with class "<span class="code">body</span>"</li>
            
<li>
<span class="code">:lt(n)</span> - find elements whose sibling index (i.e. its position in the DOM tree relative to its parent) is less than <span class="code">n</span>; e.g. <span class="code">td:lt(3)</span>
</li>
            
<li>
<span class="code">:contains(text)</span> - find elements that contain the given <span class="code">text</span>. The search is case-insensitive; e.g. <span class="code">p:contains(jsoup)</span>
</li>
            
<li>&hellip;</li>
        
</ul>
        For more details on syntax, see:
            <ul>
                
<li>
<a href="http://jsoup.org/cookbook/extracting-data/selector-syntax">JSoup</a>
</li>
                
<li>
<a href="http://jodd.org/doc/csselly/">Jodd-Lagarto (CSSelly)</a>
</li>
            
</ul>
        
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Attribute</div>
<div class="description req-false">
            Name of attribute (as per HTML syntax) to extract from nodes that matched the selector. If empty, then the combined text of this element and all its children will be returned.<br>
            This is the equivalent <a href="http://jsoup.org/apidocs/org/jsoup/nodes/Node.html#attr%28java.lang.String%29">Element#attr(name)</a> function for JSoup if an attribute is set.<br>
            
<figure>
<a href="../images/screenshots/css_extractor_attr.png"><img src="../images/screenshots/css_extractor_attr.png" width="826" height="275" alt="CSS Extractor with attribute value set"></a>
<figcaption>CSS Extractor with attribute value set</figcaption>
</figure>
<br>
            If empty this is the equivalent of <a href="http://jsoup.org/apidocs/org/jsoup/nodes/Element.html#text%28%29">Element#text()</a> function for JSoup if not value is set for attribute.
            <figure>
<a href="../images/screenshots/css_extractor_noattr.png"><img src="../images/screenshots/css_extractor_noattr.png" width="825" height="275" alt="CSS Extractor with no attribute set"></a>
<figcaption>CSS Extractor with no attribute set</figcaption>
</figure>
        
</div>
<div class="required req-false">false</div>
</div>
        
<div class="property">
<div class="name req-true">Match No. (0 for Random)</div>
<div class="description req-true">Indicates which match to use.  The CSS/JQuery selector may match multiple times.  
            <ul>
                
<li>Use a value of zero to indicate JMeter should choose a match at random.</li>
                
<li>A positive number <span class="code">N</span> means to select the n<sup>th</sup> match.</li>
                
<li> Negative numbers are used in conjunction with the <a href="../usermanual/component_reference.html#ForEach_Controller">ForEach Controller</a> - see below.</li>
            
</ul>
        
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Default Value</div>
<div class="description req-false">
        If the expression does not match, then the reference variable will be set to the default value.
        This is particularly useful for debugging tests. If no default is provided, then it is difficult to tell
        whether the expression did not match, or the CSS/JQuery element was not processed or maybe the wrong variable
        is being used.
        <p>
        However, if you have several test elements that set the same variable, 
        you may wish to leave the variable unchanged if the expression does not match.
        In this case, remove the default value once debugging is complete.
        </p> 
        
</div>
<div class="required req-false">No, but recommended</div>
</div>
        
<div class="property">
<div class="name req-false">Use empty default value</div>
<div class="description req-false">
        If the checkbox is checked and <span class="code">Default Value</span> is empty, then JMeter will set the variable to empty string instead of not setting it.
        Thus when you will for example use <span class="code">${var}</span> (if <span class="code">Reference Name</span> is var) in your Test Plan, if the extracted value is not found then 
        <span class="code">${var}</span> will be equal to empty string instead of containing <span class="code">${var}</span> which may be useful if extracted value is optional.
        </div>
<div class="required req-false">No</div>
</div>

</div>
<p>
    If the match number is set to a non-negative number, and a match occurs, the variables are set as follows:
</p>
<ul>
        
<li>
<span class="code">refName</span> - the value of the template</li>
    
</ul>
<p>
    If no match occurs, then the <span class="code">refName</span> variable is set to the default (unless this is absent). 
</p>
<p>
    If the match number is set to a negative number, then all the possible matches in the sampler data are processed.
    The variables are set as follows:
</p>
<ul>
        
<li>
<span class="code">refName_matchNr</span> - the number of matches found; could be <span class="code">0</span>
</li>
        
<li>
<span class="code">refName_n</span>, where <span class="code">n</span> = <span class="code">1</span>, <span class="code">2</span>, <span class="code">3</span>, etc. - the strings as generated by the template</li>
        
<li>
<span class="code">refName</span> - always set to the default value</li>
    
</ul>
<p>
    Note that the <span class="code">refName</span> variable is always set to the default value in this case.
</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="XPath2_Extractor">XPath2 Extractor<a class="sectionlink" href="#XPath2_Extractor" title="Link to here">&para;</a>
</h2>
<div class="description">This test element allows the user to extract value(s) from structured response - XML or (X)HTML - 
    using XPath2 query language.
   </div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/xpath2_extractor.png"><img src="../images/screenshots/xpath2_extractor.png" width="926" height="333" alt="Screenshot for Control-Panel of XPath2 Extractor"></a>
<figcaption>Screenshot of Control-Panel of XPath2 Extractor</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="XPath2_Extractor_parms1">
        Parameters
        <a class="sectionlink" href="#XPath2_Extractor_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
       
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
       
<div class="property">
<div class="name req-true">Apply to:</div>
<div class="description req-true">
        This is for use with samplers that can generate sub-samples, 
        e.g. HTTP Sampler with embedded resources, Mail Reader or samples generated by the Transaction Controller.
        <ul>
        
<li>
<span class="code">Main sample only</span> - only applies to the main sample</li>
        
<li>
<span class="code">Sub-samples only</span> - only applies to the sub-samples</li>
        
<li>
<span class="code">Main sample and sub-samples</span> - applies to both.</li>
        
<li>
<span class="code">JMeter Variable Name to use</span> - extraction is to be applied to the contents of the named variable</li>
        
</ul>
        XPath matching is applied to all qualifying samples in turn, and all the matching results will be returned.
       </div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Return entire XPath fragment instead of text content?</div>
<div class="description req-true">
    If selected, the fragment will be returned rather than the text content.<br>
    For example <span class="code">//title</span> would return "<span class="code">&lt;title&gt;Apache JMeter&lt;/title&gt;</span>" rather than "<span class="code">Apache JMeter</span>".<br>
    In this case, <span class="code">//title/text()</span> would return "<span class="code">Apache JMeter</span>".
    </div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Name of created variable</div>
<div class="description req-true">The name of the JMeter variable in which to store the result.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">XPath Query</div>
<div class="description req-true">Element query in XPath 2.0 language. Can return more than one match.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Match No. (0 for Random)</div>
<div class="description req-false">If the XPath Path query leads to many results, you can choose which one(s) to extract as Variables:
    <ul>
        
<li>
<span class="code">0</span> : means random (default value)</li>
        
<li>
<span class="code">-1</span> means extract all results, they will be named as <span class="code"><em>&lt;variable name&gt;</em>_N</span> (where <span class="code">N</span> goes from 1 to Number of results)</li>
        
<li>
<span class="code">X</span> : means extract the X<sup>th</sup> result. If this X<sup>th</sup> is greater than number of matches, then nothing is returned. Default value will be used</li>
    
</ul>
    
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Default Value</div>
<div class="description req-true">Default value returned when no match found. 
    It is also returned if the node has no value and the fragment option is not selected.</div>
<div class="required req-true">yes</div>
</div>
    
<div class="property">
<div class="name req-false">Namespaces aliases list</div>
<div class="description req-false">List of namespaces aliases you want to use to parse the document, one line per declaration.
    You must specify them as follow : <span class="code">prefix=namespace</span>. This implementation makes it easier to
    use namespaces than with the old XPathExtractor version.</div>
<div class="required req-false">No</div>
</div>
   
</div>
<p>To allow for use in a <a href="../usermanual/component_reference.html#ForEach_Controller">ForEach Controller</a>, it works exactly the same as the above XPath Extractor</p>
<p>XPath2 Extractor provides some interestings tools such as an improved syntax and much more functions than in it's first version.</p>
<p>Here are some exemples : </p>
<dl> 
   
<dt>
<span class="code">abs(/book/page[2])</span>
</dt>
     
<dd>extracts 2<sup>nd</sup> absolute value of the page from a book</dd>
   
<dt>
<span class="code">avg(/librarie/book/page)</span>
</dt>
     
<dd>extracts the average number of page from all the books in the libraries</dd>
     
<dt>
<span class="code">compare(/book[1]/page[2],/book[2]/page[2])</span>
</dt>
    
<dd>return Integer value equal 0 to if the 2<sup>nd</sup> page of the first book is equal to the 2<sup>nd</sup> page of the 2<sup>nd</sup> book, else return -1.</dd>
 
</dl>
<p>To see more informations about thoses fuctions, please check <a href="http://saxon.sourceforge.net/saxon7.9.1/functions.html">xPath2 functions</a>
</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="XPath_Extractor">XPath Extractor<a class="sectionlink" href="#XPath_Extractor" title="Link to here">&para;</a>
</h2>
<div class="description">This test element allows the user to extract value(s) from 
        structured response - XML or (X)HTML - using XPath
        query language.
        <div class="clear"></div>
<div class="note">Since JMeter 5.0, you should use <a href="../usermanual/component_reference.html#XPath2_Extractor">XPath2 Extractor</a> as it provides better and easier namespace management, better performances and support for XPath 2.0</div>
<div class="clear"></div>
   
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/xpath_extractor.png"><img src="../images/screenshots/xpath_extractor.png" width="729" height="317" alt="Screenshot for Control-Panel of XPath Extractor"></a>
<figcaption>Screenshot of Control-Panel of XPath Extractor</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="XPath_Extractor_parms1">
        Parameters
        <a class="sectionlink" href="#XPath_Extractor_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
       
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
       
<div class="property">
<div class="name req-true">Apply to:</div>
<div class="description req-true">
        This is for use with samplers that can generate sub-samples, 
        e.g. HTTP Sampler with embedded resources, Mail Reader or samples generated by the Transaction Controller.
        <ul>
        
<li>
<span class="code">Main sample only</span> - only applies to the main sample</li>
        
<li>
<span class="code">Sub-samples only</span> - only applies to the sub-samples</li>
        
<li>
<span class="code">Main sample and sub-samples</span> - applies to both.</li>
        
<li>
<span class="code">JMeter Variable Name to use</span> - extraction is to be applied to the contents of the named variable</li>
        
</ul>
        XPath matching is applied to all qualifying samples in turn, and all the matching results will be returned.
       </div>
<div class="required req-true">Yes</div>
</div>
       
<div class="property">
<div class="name req-true">Use Tidy (tolerant parser)</div>
<div class="description req-true">If checked use Tidy to parse HTML response into XHTML.
       <ul>
           
<li>"<span class="code">Use Tidy</span>" should be checked on for HTML response. Such response is converted to valid XHTML (XML compatible HTML) using Tidy</li>
           
<li>"<span class="code">Use Tidy</span>" should be unchecked for both XHTML or XML response (for example RSS)</li>
       
</ul>
       
<div class="clear"></div>
<div class="note">For HTML, CSS Selector Extractor is the correct and performing solution. Don't use XPath for HTML extractions.</div>
<div class="clear"></div>
       
</div>
<div class="required req-true">Yes</div>
</div>

<div class="property">
<div class="name req-false">Quiet</div>
<div class="description req-false">Sets the Tidy Quiet flag</div>
<div class="required req-false">If Tidy is selected</div>
</div>

<div class="property">
<div class="name req-false">Report Errors</div>
<div class="description req-false">If a Tidy error occurs, then set the Assertion accordingly</div>
<div class="required req-false">If Tidy is selected</div>
</div>

<div class="property">
<div class="name req-false">Show warnings</div>
<div class="description req-false">Sets the Tidy showWarnings option</div>
<div class="required req-false">If Tidy is selected</div>
</div>

<div class="property">
<div class="name req-false">Use Namespaces</div>
<div class="description req-false">
        If checked, then the XML parser will use namespace resolution.(see note below on NAMESPACES)
        Note that currently only namespaces declared on the root element will be recognised.
        See below for user-definition of additional workspace names.        
</div>
<div class="required req-false">If Tidy is not selected</div>
</div>
    
<div class="property">
<div class="name req-false">Validate XML</div>
<div class="description req-false">Check the document against its schema.</div>
<div class="required req-false">If Tidy is not selected</div>
</div>
    
<div class="property">
<div class="name req-false">Ignore Whitespace</div>
<div class="description req-false">Ignore Element Whitespace.</div>
<div class="required req-false">If Tidy is not selected</div>
</div>
    
<div class="property">
<div class="name req-false">Fetch External DTDs</div>
<div class="description req-false">If selected, external DTDs are fetched.</div>
<div class="required req-false">If Tidy is not selected</div>
</div>
    
<div class="property">
<div class="name req-true">Return entire XPath fragment instead of text content?</div>
<div class="description req-true">
    If selected, the fragment will be returned rather than the text content.<br>
    For example <span class="code">//title</span> would return "<span class="code">&lt;title&gt;Apache JMeter&lt;/title&gt;</span>" rather than "<span class="code">Apache JMeter</span>".<br>
    In this case, <span class="code">//title/text()</span> would return "<span class="code">Apache JMeter</span>".
    </div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Name of created variable</div>
<div class="description req-true">The name of the JMeter variable in which to store the result.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">XPath Query</div>
<div class="description req-true">Element query in XPath language. Can return more than one match.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Match No. (0 for Random)</div>
<div class="description req-false">If the XPath Path query leads to many results, you can choose which one(s) to extract as Variables:
    <ul>
        
<li>
<span class="code">0</span> : means random</li>
        
<li>
<span class="code">-1</span> means extract all results (default value), they will be named as <span class="code"><em>&lt;variable name&gt;</em>_N</span> (where <span class="code">N</span> goes from 1 to Number of results)</li>
        
<li>
<span class="code">X</span> : means extract the X<sup>th</sup> result. If this X<sup>th</sup> is greater than number of matches, then nothing is returned. Default value will be used</li>
    
</ul>
    
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Default Value</div>
<div class="description req-true">Default value returned when no match found. 
    It is also returned if the node has no value and the fragment option is not selected.</div>
<div class="required req-true"></div>
</div>
   
</div>
<p>To allow for use in a <a href="../usermanual/component_reference.html#ForEach_Controller">ForEach Controller</a>, the following variables are set on return:</p>
<ul>
   
<li>
<span class="code">refName</span> - set to first (or only) match; if no match, then set to default</li>
   
<li>
<span class="code">refName_matchNr</span> - set to number of matches (may be <span class="code">0</span>)</li>
   
<li>
<span class="code">refName_n</span> - <span class="code">n</span>=<span class="code">1</span>, <span class="code">2</span>, <span class="code">3</span>, etc. Set to the 1<sup>st</sup>, 2<sup>nd</sup> 3<sup>rd</sup> match etc. 
   </li>
   
</ul>
<div class="clear"></div>
<div class="note">Note: The next <span class="code">refName_n</span> variable is set to <span class="code">null</span> - e.g. if there are 2 matches, then <span class="code">refName_3</span> is set to <span class="code">null</span>,
   and if there are no matches, then <span class="code">refName_1</span> is set to <span class="code">null</span>.
   </div>
<div class="clear"></div>
<p>XPath is query language targeted primarily for XSLT transformations. However it is useful as generic query language for structured data too. See 
       <a href="http://www.topxml.com/xsl/xpathref.asp">XPath Reference</a> or <a href="http://www.w3.org/TR/xpath">XPath specification</a> for more information. Here are few examples:
   </p>
<dl> 
   
<dt>
<span class="code">/html/head/title</span>
</dt>
     
<dd>extracts title element from HTML response</dd>
   
<dt>
<span class="code">/book/page[2]</span>
</dt>
     
<dd>extracts 2<sup>nd</sup> page from a book</dd>
   
<dt>
<span class="code">/book/page</span>
</dt>
     
<dd>extracts all pages from a book</dd>
     
<dt>
<span class="code">//form[@name='countryForm']//select[@name='country']/option[text()='Czech Republic'])/@value</span>
</dt>
    
<dd>extracts value attribute of option element that match text '<span class="code">Czech Republic</span>'
        inside of select element with name attribute  '<span class="code">country</span>' inside of
        form with name attribute '<span class="code">countryForm</span>'</dd>
 
</dl>
<div class="clear"></div>
<div class="note">When "<span class="code">Use Tidy</span>" is checked on - resulting XML document may slightly differ from original HTML response:
     <ul>
         
<li>All elements and attribute names are converted to lowercase</li>
         
<li>Tidy attempts to correct improperly nested elements. For example - original (incorrect) <span class="code">ul/font/li</span> becomes correct <span class="code">ul/li/font</span>
</li>
     
</ul>
     See <a href="http://jtidy.sf.net">Tidy homepage</a> for more information.
 </div>
<div class="clear"></div>
<div class="clear"></div>
<div class="note">

<b>NAMESPACES</b>
<br>
As a work-round for namespace limitations of the Xalan XPath parser (implementation on which JMeter is based) you need to:
<ul>

<li>provide a Properties file (if for example your file is named namespaces.properties) which contains mappings for the namespace prefixes: 
<pre class="source">
prefix1=http\://foo.apache.org
prefix2=http\://toto.apache.org
&hellip;
</pre>
</li>


<li>reference this file in <span class="code">user.properties</span> file using the property:
    <pre class="source">xpath.namespace.config=namespaces.properties</pre>
</li>

</ul>

</div>
<div class="clear"></div>
<p></p>
<pre class="source">//mynamespace:tagname</pre>
<pre class="source">//*[local-name()='tagname' and namespace-uri()='uri-for-namespace']</pre>
<span class="code">uri-for-namespace</span><span class="code">mynamespace</span>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="JSON_JMESPath_Extractor">JSON JMESPath Extractor<a class="sectionlink" href="#JSON_JMESPath_Extractor" title="Link to here">&para;</a>
</h2>
<div class="description">This test element allows the user to extract value(s) from 
        structured response - XML or (X)HTML - using JMESPath
        query language.
   </div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/jmes_extractor.png"><img src="../images/screenshots/jmes_extractor.png" width="729" height="317" alt="Screenshot for Control-Panel of JSON JMESPath Extractor"></a>
<figcaption>Screenshot of Control-Panel of JSON JMESPath Extractor</figcaption>
</figure>
</div>
<div class="clear"></div>
<div class="note">In the XPATH Extractor we support to extract multiple xpaths at the same time, but in JMES Extractor only 
   one JMES Expression can be entered at a time.
   </div>
<div class="clear"></div>
<div class="properties">
<h3 id="JSON_JMESPath_Extractor_parms1">
        Parameters
        <a class="sectionlink" href="#JSON_JMESPath_Extractor_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
       
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
       
<div class="property">
<div class="name req-true">Apply to:</div>
<div class="description req-true">
        This is for use with samplers that can generate sub-samples, 
        e.g. HTTP Sampler with embedded resources, Mail Reader or samples generated by the Transaction Controller.
        <ul>
        
<li>
<span class="code">Main sample only</span> - only applies to the main sample</li>
        
<li>
<span class="code">Sub-samples only</span> - only applies to the sub-samples</li>
        
<li>
<span class="code">Main sample and sub-samples</span> - applies to both.</li>
        
<li>
<span class="code">JMeter Variable Name to use</span> - extraction is to be applied to the contents of the named variable</li>
        
</ul>
       
</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">Name of created variable</div>
<div class="description req-true">The name of the JMeter variable in which to store the result.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">JMESPath expressions</div>
<div class="description req-true">Element query in JMESPath query language. Can return the matched result.</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Match No. (0 for Random)</div>
<div class="description req-false">If the JMESPath query leads to many results, you can choose which one(s) to extract as Variables:
    <ul>
        
<li>
<span class="code">0</span> : means random</li>
        
<li>
<span class="code">-1</span> means extract all results (default value), they will be named as <span class="code"><em>&lt;variable name&gt;</em>_N</span> (where <span class="code">N</span> goes from 1 to Number of results)</li>
        
<li>
<span class="code">X</span> : means extract the X<sup>th</sup> result. If this X<sup>th</sup> is greater than number of matches, then nothing is returned. Default value will be used</li>
    
</ul>
    
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Default Value</div>
<div class="description req-true">Default value returned when no match found. 
    It is also returned if the node has no value and the fragment option is not selected.</div>
<div class="required req-true"></div>
</div>
   
</div>
<p>JMESPath is a query language for JSON. It is described in an ABNF grammar with a complete specification. This ensures that the language syntax is precisely defined. 
    See <a href="http://jmespath.org/">JMESPath Reference</a> for more information. Here are also some examples <a href="http://jmespath.org/tutorial.html">JMESPath Example</a>.
   </p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Result_Status_Action_Handler">Result Status Action Handler<a class="sectionlink" href="#Result_Status_Action_Handler" title="Link to here">&para;</a>
</h2>
<div class="description">This test element allows the user to stop the thread or the whole test if the relevant sampler failed.
   </div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/resultstatusactionhandler.png"><img src="../images/screenshots/resultstatusactionhandler.png" width="613" height="133" alt="Screenshot for Control-Panel of Result Status Action Handler"></a>
<figcaption>Screenshot of Control-Panel of Result Status Action Handler</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Result_Status_Action_Handler_parms1">
        Parameters
        <a class="sectionlink" href="#Result_Status_Action_Handler_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
   
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
   
<div class="property">
<div class="name req-true">Action to be taken after a Sampler error</div>
<div class="description req-true">
   Determines what happens if a sampler error occurs, either because the sample itself failed or an assertion failed.
   The possible choices are:
   <ul>
   
<li>
<span class="code">Continue</span> - ignore the error and continue with the test</li>
   
<li>
<span class="code">Start next thread loop</span> - does not execute samplers following the sampler in error for the current iteration and restarts the loop on next iteration</li>
   
<li>
<span class="code">Stop Thread</span> - current thread exits</li>
   
<li>
<span class="code">Stop Test</span> - the entire test is stopped at the end of any current samples.</li>
   
<li>
<span class="code">Stop Test Now</span> - the entire test is stopped abruptly. Any current samplers are interrupted if possible.</li>
   
</ul>
   
</div>
<div class="required req-true">
            No
          </div>
</div>
   
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="BeanShell_PostProcessor">BeanShell PostProcessor<a class="sectionlink" href="#BeanShell_PostProcessor" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The BeanShell PreProcessor allows arbitrary code to be applied after taking a sample.
</p>

<p>BeanShell Post-Processor no longer ignores samples with zero-length result data</p>

<p>

<b>For full details on using BeanShell, please see the <a href="http://www.beanshell.org/">BeanShell website.</a></b>

<div class="clear"></div>
<div class="note">Migration to <a href="../usermanual/component_reference.html#JSR223_PostProcessor">JSR223 PostProcessor</a>+Groovy is highly recommended for performance, support of new Java features and limited maintenance of the BeanShell library.</div>
<div class="clear"></div>

</p>

<p>
The test element supports the <span class="code">ThreadListener</span> and <span class="code">TestListener</span> methods.
These should be defined in the initialisation file.
See the file <span class="code">BeanShellListeners.bshrc</span> for example definitions.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/beanshell_postprocessor.png"><img src="../images/screenshots/beanshell_postprocessor.png" width="847" height="633" alt="Screenshot for Control-Panel of BeanShell PostProcessor"></a>
<figcaption>Screenshot of Control-Panel of BeanShell PostProcessor</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="BeanShell_PostProcessor_parms1">
        Parameters
        <a class="sectionlink" href="#BeanShell_PostProcessor_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.
    The name is stored in the script variable <span class="code">Label</span>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Reset bsh.Interpreter before each call</div>
<div class="description req-true">
    If this option is selected, then the interpreter will be recreated for each sample.
    This may be necessary for some long running scripts. 
    For further information, see <a href="best-practices#bsh_scripting">Best Practices - BeanShell scripting</a>.
    </div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Parameters</div>
<div class="description req-false">Parameters to pass to the BeanShell script.
    The parameters are stored in the following variables:
    <ul>
        
<li>
<span class="code">Parameters</span> - string containing the parameters as a single variable</li>
        
<li>
<span class="code">bsh.args</span> - String array containing parameters, split on white-space</li>
    
</ul>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Script file</div>
<div class="description req-false">A file containing the BeanShell script to run.
    The file name is stored in the script variable <span class="code">FileName</span>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Script</div>
<div class="description req-true">The BeanShell script. The return value is ignored.</div>
<div class="required req-true">Yes (unless script file is provided)</div>
</div>

</div>
<p>The following BeanShell variables are set up for use by the script:</p>
<ul>

<li>
<span class="code">log</span> - (<a href="https://www.slf4j.org/api/org/slf4j/Logger.html">Logger</a>) - can be used to write to the log file</li>

<li>
<span class="code">ctx</span> - (<a href="../api/org/apache/jmeter/threads/JMeterContext.html">JMeterContext</a>) - gives access to the context</li>

<li>
<span class="code">vars</span> - (<a href="../api/org/apache/jmeter/threads/JMeterVariables.html">JMeterVariables</a>) - gives read/write access to variables: <pre class="source">vars.get(key);
vars.put(key,val);
vars.putObject("OBJ1",new Object());</pre>
</li>

<li>
<span class="code">props</span> - (JMeterProperties - class java.util.Properties) - e.g. <span class="code">props.get("START.HMS");</span> <span class="code">props.put("PROP1","1234");</span>
</li>

<li>
<span class="code">prev</span> - (<a href="../api/org/apache/jmeter/samplers/SampleResult.html">SampleResult</a>) - gives access to the previous SampleResult</li>

<li>
<span class="code">data</span> - (byte [])- gives access to the current sample data</li>

</ul>
<p>For details of all the methods available on each of the above variables, please check the Javadoc</p>
<p>If the property <span class="code">beanshell.postprocessor.init</span> is defined, this is used to load an initialisation file, which can be used to define methods etc. for use in the BeanShell script.</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="JSR223_PostProcessor">JSR223 PostProcessor<a class="sectionlink" href="#JSR223_PostProcessor" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The JSR223 PostProcessor allows JSR223 script code to be applied after taking a sample.
</p>

</div>
<div class="properties">
<h3 id="JSR223_PostProcessor_parms1">
        Parameters
        <a class="sectionlink" href="#JSR223_PostProcessor_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Language</div>
<div class="description req-true">The JSR223 language to be used</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Parameters</div>
<div class="description req-false">Parameters to pass to the script.
    The parameters are stored in the following variables:
    <ul>
        
<li>
<span class="code">Parameters</span> - string containing the parameters as a single variable</li>
        
<li>
<span class="code">args</span> - String array containing parameters, split on white-space</li>
    
</ul>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Script file</div>
<div class="description req-false">A file containing the script to run, if a relative file path is used, then it will be relative to directory referenced by "<span class="code">user.dir</span>" System property</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Script compilation caching</div>
<div class="description req-false">Unique String across Test Plan that JMeter will use to cache result of Script compilation if language used supports <span class="code"><a href="https://docs.oracle.com/javase/8/docs/api/javax/script/Compilable.html">Compilable</a></span> interface (Groovy is one of these, java, beanshell and javascript are not)
    <div class="clear"></div>
<div class="note">See note in JSR223 Sampler Java System property if you're using Groovy without checking this option</div>
<div class="clear"></div>
    
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Script</div>
<div class="description req-true">The script to run.</div>
<div class="required req-true">Yes (unless script file is provided)</div>
</div>

</div>
<p>
Before invoking the script, some variables are set up.
Note that these are JSR223 variables - i.e. they can be used directly in the script.
</p>
<ul>

<li>
<span class="code">log</span> - (<a href="https://www.slf4j.org/api/org/slf4j/Logger.html">Logger</a>) - can be used to write to the log file</li>

<li>
<span class="code">Label</span> - the String Label</li>

<li>
<span class="code">FileName</span> - the script file name (if any)</li>

<li>
<span class="code">Parameters</span> - the parameters (as a String)</li>

<li>
<span class="code">args</span> - the parameters as a String array (split on whitespace)</li>

<li>
<span class="code">ctx</span> - (<a href="../api/org/apache/jmeter/threads/JMeterContext.html">JMeterContext</a>) - gives access to the context</li>

<li>
<span class="code">vars</span> - (<a href="../api/org/apache/jmeter/threads/JMeterVariables.html">JMeterVariables</a>) - gives read/write access to variables: <pre class="source">vars.get(key);
vars.put(key,val);
vars.putObject("OBJ1",new Object());
vars.getObject("OBJ2");</pre>
</li>

<li>
<span class="code">props</span> - (JMeterProperties - class java.util.Properties) - e.g. <span class="code">props.get("START.HMS");</span> <span class="code">props.put("PROP1","1234");</span>
</li>

<li>
<span class="code">prev</span> - (<a href="../api/org/apache/jmeter/samplers/SampleResult.html">SampleResult</a>) - gives access to the previous SampleResult (if any)</li>

<li>
<span class="code">sampler</span> - (<a href="../api/org/apache/jmeter/samplers/Sampler.html">Sampler</a>)- gives access to the current sampler</li>

<li>
<span class="code">OUT</span> - System.out - e.g. <span class="code">OUT.println("message")</span>
</li>

</ul>
<p>For details of all the methods available on each of the above variables, please check the Javadoc</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="JDBC_PostProcessor">JDBC PostProcessor<a class="sectionlink" href="#JDBC_PostProcessor" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The JDBC PostProcessor enables you to run some SQL statement just after a sample has run.
This can be useful if your JDBC Sample changes some data and you want to reset state to what it was before the JDBC sample run.
</p>

</div>
<div class="links">
<div class="title">See also:</div>
<ul class="links">
<li>
<a href="../demos/JDBC-Pre-Post-Processor.jmx">Test Plan using JDBC Pre/Post Processor</a>
</li>
</ul>
</div>
<p>
In the linked test plan, "<span class="code">JDBC PostProcessor</span>" JDBC PostProcessor calls a stored procedure to delete from Database the Price Cut-Off that was created by PreProcessor.
</p>
<figure>
<a href="../images/screenshots/jdbc-post-processor.png"><img src="../images/screenshots/jdbc-post-processor.png" width="818" height="399" alt="JDBC PostProcessor"></a>
<figcaption>JDBC PostProcessor</figcaption>
</figure>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="JSON_Extractor">JSON Extractor<a class="sectionlink" href="#JSON_Extractor" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The JSON PostProcessor enables you extract data from JSON responses using JSON-PATH syntax. This post processor is very similar to Regular expression extractor.
It must be placed as a child of HTTP Sampler or any other sampler that has responses.
It will allow you to extract in a very easy way text content, see <a href="https://github.com/json-path/JsonPath">JSON Path syntax</a>.
</p>

</div>
<div class="properties">
<h3 id="JSON_Extractor_parms1">
        Parameters
        <a class="sectionlink" href="#JSON_Extractor_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-true">Names of created variables</div>
<div class="description req-true">Semi-colon separated names of variables that will contain the results of JSON-PATH expressions (must match number of JSON-PATH expressions)</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-true">JSON Path Expressions</div>
<div class="description req-true">Semi-colon separated JSON-PATH expressions (must match number of variables)</div>
<div class="required req-true">Yes</div>
</div>
    
<div class="property">
<div class="name req-false">Default Values</div>
<div class="description req-false">Semi-colon separated default values if JSON-PATH expressions do not return any result(must match number of variables)</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Match No. (0 for Random)</div>
<div class="description req-false">If the JSON Path query leads to many results, you can choose which one(s) to extract as Variables:
    <ul>
        
<li>
<span class="code">0</span> : means random (Default Value)</li>
        
<li>
<span class="code">-1</span> means extract all results, they will be named as <span class="code"><em>&lt;variable name&gt;</em>_N</span> (where <span class="code">N</span> goes from 1 to Number of results)</li>
        
<li>
<span class="code">X</span> : means extract the X<sup>th</sup> result. If this X<sup>th</sup> is greater than number of matches, then nothing is returned. Default value will be used</li>
    
</ul>
    
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">Compute concatenation var</div>
<div class="description req-false">If many results are found, plugin will concatenate them using &lsquo;<span class="code">,</span>&rsquo; separator and store it in a var named <span class="code"><em>&lt;variable name&gt;</em>_ALL</span>
</div>
<div class="required req-false">No</div>
</div>

</div>
<figure>
<a href="../images/screenshots/json-post-processor.png"><img src="../images/screenshots/json-post-processor.png" width="855" height="276" alt="JSON PostProcessor"></a>
<figcaption>JSON PostProcessor</figcaption>
</figure>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Boundary_Extractor">Boundary Extractor<a class="sectionlink" href="#Boundary_Extractor" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>Allows the user to extract values from a server response using left and right boundaries.  As a post-processor,
this element will execute after each Sample request in its scope, testing the boundaries, extracting the requested values,
generate the template string, and store the result into the given variable name.</p>
</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/extractor/boundary_extractor.png"><img src="../images/screenshots/extractor/boundary_extractor.png" width="1078" height="315" alt="Screenshot for Control-Panel of Boundary Extractor"></a>
<figcaption>Screenshot of Control-Panel of Boundary Extractor</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Boundary_Extractor_parms1">
        Parameters
        <a class="sectionlink" href="#Boundary_Extractor_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
        
<div class="property">
<div class="name req-true">Apply to:</div>
<div class="description req-true">
        This is for use with samplers that can generate sub-samples, 
        e.g. HTTP Sampler with embedded resources, Mail Reader or samples generated by the Transaction Controller.
        <ul>
        
<li>
<span class="code">Main sample only</span> - only applies to the main sample</li>
        
<li>
<span class="code">Sub-samples only</span> - only applies to the sub-samples</li>
        
<li>
<span class="code">Main sample and sub-samples</span> - applies to both.</li>
        
<li>
<span class="code">JMeter Variable Name to use</span> - assertion is to be applied to the contents of the named variable</li>
        
</ul>
        Matching is applied to all qualifying samples in turn.
        For example if there is a main sample and 3 sub-samples, each of which contains a single match test,
        (i.e. 4 matches in total).
        For match number = <span class="code">3</span>, Sub-samples only, the extractor will match the 3<sup>rd</sup> sub-sample.
        For match number = <span class="code">3</span>, Main sample and sub-samples, the extractor will match the 2<sup>nd</sup> sub-sample (1<sup>st</sup> match is main sample).
        For match number = <span class="code">0</span> or negative, all qualifying samples will be processed.
        For match number &gt; <span class="code">0</span>, matching will stop as soon as enough matches have been found.
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Field to check</div>
<div class="description req-true">
        The following fields can be checked:
        <ul>
        
<li>
<span class="code">Body</span> - the body of the response, e.g. the content of a web-page (excluding headers)</li>
        
<li>
<span class="code">Body (unescaped)</span> - the body of the response, with all Html escape codes replaced.
        Note that Html escapes are processed without regard to context, so some incorrect substitutions
        may be made.
        <div class="clear"></div>
<div class="note">Note that this option highly impacts performances, so use it only when absolutely necessary and be aware of its impacts</div>
<div class="clear"></div>
        
</li>
        
<li>
<span class="code">Body as a Document</span> - the extract text from various type of documents via Apache Tika (see <a href="../usermanual/component_reference.html#View_Results_Tree">View Results Tree</a> Document view section).
        <div class="clear"></div>
<div class="note">Note that the Body as a Document option can impact performances, so ensure it is OK for your test</div>
<div class="clear"></div>
        
</li>
        
<li>
<span class="code">Request Headers</span> - may not be present for non-HTTP samples</li>
        
<li>
<span class="code">Response Headers</span> - may not be present for non-HTTP samples</li>
        
<li>
<span class="code">URL</span>
</li>
        
<li>
<span class="code">Response Code</span> - e.g. <span class="code">200</span>
</li>
        
<li>
<span class="code">Response Message</span> - e.g. <span class="code">OK</span>
</li>
        
</ul>
        Headers can be useful for HTTP samples; it may not be present for other sample types.
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Name of created variable</div>
<div class="description req-true">The name of the JMeter variable in which to store the result.  Also note that each group is stored as <span class="code">[refname]_g#</span>, where <span class="code">[refname]</span> is the string you entered as the reference name, and <span class="code">#</span> is the group number, where group <span class="code">0</span> is the entire match, group <span class="code">1</span> is the match from the first set of parentheses, etc.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Left Boundary</div>
<div class="description req-false">Left boundary of value to find</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Right Boundary</div>
<div class="description req-false">Right boundary of value to find</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Match No. (0 for Random)</div>
<div class="description req-true">Indicates which match to use.  The boundaries may match multiple times.  
            <ul>
                
<li>Use a value of zero to indicate JMeter should choose a match at random.</li>
                
<li>A positive number N means to select the n<sup>th</sup> match.</li>
                
<li> Negative numbers are used in conjunction with the <a href="../usermanual/component_reference.html#ForEach_Controller">ForEach Controller</a> - see below.</li>
            
</ul>
        
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Default Value</div>
<div class="description req-false">
        If the boundaries do not match, then the reference variable will be set to the default value.
        This is particularly useful for debugging tests. If no default is provided, then it is difficult to tell
        whether the boundaries did not match, or maybe the wrong variable
        is being used.
        <p>
        However, if you have several test elements that set the same variable, 
        you may wish to leave the variable unchanged if the expression does not match.
        In this case, remove the default value once debugging is complete.
        </p> 
        
</div>
<div class="required req-false">No, but recommended</div>
</div>

</div>
<p>
    If the match number is set to a non-negative number, and a match occurs, the variables are set as follows:
</p>
<ul>
        
<li>
<span class="code">refName</span> - the value of the extraction</li>
    
</ul>
<p>
    If no match occurs, then the <span class="code">refName</span> variable is set to the default (unless this is absent). 
</p>
<p>
    If the match number is set to a negative number, then all the possible matches in the sampler data are processed.
    The variables are set as follows:
</p>
<ul>
        
<li>
<span class="code">refName_matchNr</span> - the number of matches found; could be <span class="code">0</span>
</li>
        
<li>
<span class="code">refName_<em>n</em></span>, where <span class="code">n</span> = <span class="code">1</span>, <span class="code">2</span>, <span class="code">3</span> etc. - the strings as generated by the template</li>
        
<li>
<span class="code">refName_<em>n</em>_g<em>m</em></span>, where <span class="code">m</span>=<span class="code">0</span>, <span class="code">1</span>, <span class="code">2</span> - the groups for match <span class="code">n</span>
</li>
        
<li>
<span class="code">refName</span> - always set to the default value</li>
    
</ul>
<p>
    Note that the <span class="code">refName</span> variable is always set to the default value in this case, 
    and the associated group variables are not set.
</p>
<div class="clear"></div>
<div class="note">If both left and right boundary are null, the whole data selected in scope is returned</div>
<div class="clear"></div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>

</div>
<div class="section">
<h1 id="Miscellaneous_Features">18.9 Miscellaneous Features<a class="sectionlink" href="#Miscellaneous_Features" title="Link to here">&para;</a>
</h1>

<div class="description">
        
<br>

</div>

<div class="component">
<h2 id="Test_Plan">Test Plan<a class="sectionlink" href="#Test_Plan" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The Test Plan is where the overall settings for a test are specified.
</p>

<p>
Static variables can be defined for values that are repeated throughout a test, such as server names.
For example the variable <span class="code">SERVER</span> could be defined as <span class="code">www.example.com</span>, and the rest of the test plan
could refer to it as <span class="code">${SERVER}</span>. This simplifies changing the name later.
</p>

<p>
If the same variable name is reused on one of more
<a href="../usermanual/component_reference.html#User_Defined_Variables">User Defined Variables</a> Configuration elements,
the value is set to the last definition in the test plan (reading from top to bottom).
Such variables should be used for items that may change between test runs, 
but which remain the same during a test run.
</p>

<p>

<div class="clear"></div>
<div class="note">Note that the Test Plan cannot refer to variables it defines.</div>
<div class="clear"></div> 
If you need to construct other variables from the Test Plan variables, 
use a <a href="../usermanual/component_reference.html#User_Defined_Variables">User Defined Variables</a> test element.
</p>

<p>
Selecting Functional Testing instructs JMeter to save the  additional sample information
- Response Data and Sampler Data - to all result files.
This increases the resources needed to run a test, and may adversely impact JMeter performance.
If more data is required for a particular sampler only, then add a Listener to it, and configure the fields as required.
<div class="clear"></div>
<div class="note">The option does not affect CSV result files, which cannot currently store such information.</div>
<div class="clear"></div>

</p>

<p>Also, an option exists here to instruct JMeter to run the <a href="../usermanual/component_reference.html#Thread_Group">Thread Group</a> serially rather than in parallel.</p>

<p>Run tearDown Thread Groups after shutdown of main threads: 
if selected, the tearDown groups (if any) will be run after graceful shutdown of the main threads.
The tearDown threads won't be run if the test is forcibly stopped.
</p>

<p>
Test plan now provides an easy way to add classpath setting to a specific test plan. 
The feature is additive, meaning that you can add jar files or directories,
but removing an entry requires restarting JMeter.
<div class="clear"></div>
<div class="note">Note that this cannot be used to add JMeter GUI plugins, because they are processed earlier.</div>
<div class="clear"></div>
However it can be useful for utility jars such as JDBC drivers. The jars are only added to
the search path for the JMeter loader, not for the system class loader.
</p>

<p>
JMeter properties also provides an entry for loading additional classpaths.
In <span class="code">jmeter.properties</span>, edit "<span class="code">user.classpath</span>" or "<span class="code">plugin_dependency_paths</span>" to include additional libraries.
See <a href="get-started.html#classpath">JMeter's Classpath</a> and
<a href="get-started.html#configuring_jmeter">Configuring JMeter</a> for details.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/testplan.png"><img src="../images/screenshots/testplan.png" width="560" height="457" alt="Screenshot for Control-Panel of Test Plan"></a>
<figcaption>Screenshot of Control-Panel of Test Plan</figcaption>
</figure>
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Thread_Group">Thread Group<a class="sectionlink" href="#Thread_Group" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>A Thread Group defines a pool of users that will execute a particular test case against your server.  In the Thread Group GUI, you can control the number of users simulated (number of threads), the ramp up time (how long it takes to start all the threads), the number of times to perform the test, and optionally, a start and stop time for the test.</p>

<p>
See also <a href="../usermanual/component_reference.html#tearDown_Thread_Group">tearDown Thread Group</a> and <a href="../usermanual/component_reference.html#setUp_Thread_Group">setUp Thread Group</a>.
</p>

<p>
When using the scheduler, JMeter runs the thread group until either the number of loops is reached or the duration/end-time is reached - whichever occurs first.
Note that the condition is only checked between samples; when the end condition is reached, that thread will stop.
JMeter does not interrupt samplers which are waiting for a response, so the end time may be delayed arbitrarily.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/threadgroup.png"><img src="../images/screenshots/threadgroup.png" width="911" height="390" alt="Screenshot for Control-Panel of Thread Group"></a>
<figcaption>Screenshot of Control-Panel of Thread Group</figcaption>
</figure>
</div>
<p>
Since JMeter 3.0, you can run a selection of Thread Group by selecting them and right clicking. A popup menu will appear:
<figure>
<a href="../images/screenshots/threadgroup-popup-menu.png"><img src="../images/screenshots/threadgroup-popup-menu.png" width="461" height="818" alt="Popup menu to start a selection of Thread Groups"></a>
<figcaption>Popup menu to start a selection of Thread Groups</figcaption>
</figure>


<br>Notice you have 3 options to run the selection of Thread Groups:
<ul>

<li>Start : Start the selected thread groups only</li>

<li>Start no pauses : Start the selected thread groups only but without running the timers</li>

<li>Validate : Start the selected thread groups only using validation mode. Per default this runs the Thread Group in validation mode (see below)</li>

</ul> 


<b>Validation Mode:</b>
<br>
This mode enables rapid validation of a Thread Group by running it with 1 thread, 1 iteration, no timers and no <span class="code">Startup delay</span> set to 0.
Behaviour can be modified with some properties by setting in user.properties:
<ul>

<li>
<span class="code">testplan_validation.nb_threads_per_thread_group</span> : Number of threads to use to validate a Thread Group, by default 1</li>

<li>
<span class="code">testplan_validation.ignore_timers</span> : Ignore timers when validating the thread group of plan, by default 1</li>

<li>
<span class="code">testplan_validation.number_iterations</span> : Number of iterations to use to validate a Thread Group</li>

<li>
<span class="code">testplan_validation.tpc_force_100_pct</span> : Wether to force Throughput Controller in percentage mode to run as if percentage was 100%. Defaults to false</li>

</ul> 

</p>
<div class="properties">
<h3 id="Thread_Group_parms1">
        Parameters
        <a class="sectionlink" href="#Thread_Group_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true"></div>
</div>
        
<div class="property">
<div class="name req-true">Action to be taken after a Sampler error</div>
<div class="description req-true">
        Determines what happens if a sampler error occurs, either because the sample itself failed or an assertion failed.
        The possible choices are:
        <ul>
        
<li>
<span class="code">Continue</span> - ignore the error and continue with the test</li>
        
<li>
<span class="code">Start Next Thread Loop</span> - ignore the error, start next loop and continue with the test</li>
        
<li>
<span class="code">Stop Thread</span> - current thread exits</li>
        
<li>
<span class="code">Stop Test</span> - the entire test is stopped at the end of any current samples.</li>
        
<li>
<span class="code">Stop Test Now</span> - the entire test is stopped abruptly. Any current samplers are interrupted if possible.</li>
        
</ul>
        
</div>
<div class="required req-true">
            No
          </div>
</div>
        
<div class="property">
<div class="name req-true">Number of Threads</div>
<div class="description req-true">Number of users to simulate.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Ramp-up Period</div>
<div class="description req-true">How long JMeter should take to get all the threads started.  If there are 10 threads and a ramp-up time of 100 seconds, then each thread will begin 10 seconds after the previous thread started, for a total time of 100 seconds to get the test fully up to speed.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Loop Count</div>
<div class="description req-true">Number of times to perform the test case.  Alternatively, "<span class="code">infinite</span>" can be selected causing the test to run until manually stopped or end of the thread lifetime is reached.</div>
<div class="required req-true">Yes, unless Infinite is selected</div>
</div>
        
<div class="property">
<div class="name req-true">Delay Thread creation until needed</div>
<div class="description req-true">
        If selected, threads are created only when the appropriate proportion of the ramp-up time has elapsed.
        This is most appropriate for tests with a ramp-up time that is significantly longer than the time to execute a single thread.
        I.e. where earlier threads finish before later ones start.
        <br>
        If not selected, all threads are created when the test starts (they then pause for the appropriate proportion of the ramp-up time).
        This is the original default, and is appropriate for tests where threads are active throughout most of the test.
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Specify Thread lifetime</div>
<div class="description req-true">If selected, confines Thread operation time to the given bounds</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Duration (seconds)</div>
<div class="description req-false">
            If the scheduler checkbox is selected, one can choose a relative end time. 
            JMeter will use this to calculate the End Time.
        </div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Startup delay (seconds)</div>
<div class="description req-false">
            If the scheduler checkbox is selected, one can choose a relative startup delay.
            JMeter will use this to calculate the Start Time.
        </div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="WorkBench">WorkBench<a class="sectionlink" href="#WorkBench" title="Link to here">&para;</a>
</h2>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="SSL_Manager">SSL Manager<a class="sectionlink" href="#SSL_Manager" title="Link to here">&para;</a>
</h2>
<p>
  The SSL Manager is a way to select a client certificate so that you can test
  applications that use Public Key Infrastructure (PKI).
  It is only needed if you have not set up the appropriate System properties.

</p>
<div class="clear"></div>
<div class="note">If you want to test client certificate authentication, see <a href="../usermanual/component_reference.html#Keystore_Configuration">Keystore Configuration</a>
</div>
<div class="clear"></div>
<b>Choosing a Client Certificate</b>
<p>
  You may either use a Java Key Store (JKS) format key store, or a Public Key
  Certificate Standard #12 (PKCS12) file for your client certificates.  There
  is a feature of the JSSE libraries that require you to have at least a six character
  password on your key (at least for the keytool utility that comes with your
  JDK).
</p>
<p>
  To select the client certificate, choose <span class="menuchoice"><span class="guimenuitem">Options</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">SSL Manager</span></span> from the menu bar.
  You will be presented with a file finder that looks for PKCS12 files by default.
  Your PKCS12 file must have the extension '<span class="code">.p12</span>' for SSL Manager to recognize it
  as a PKCS12 file.  Any other file will be treated like an average JKS key store.
  If JSSE is correctly installed, you will be prompted for the password.  The text
  box does not hide the characters you type at this point -- so make sure no one is
  looking over your shoulder.  The current implementation assumes that the password
  for the keystore is also the password for the private key of the client you want
  to authenticate as.
</p>
<p>Or you can set the appropriate System properties - see the <span class="code">system.properties</span> file.</p>
<p>
  The next time you run your test, the SSL Manager will examine your key store to
  see if it has at least one key available to it.  If there is only one key, SSL
  Manager will select it for you.  If there is more than one key, it currently selects the first key.
  There is currently no way to select other entries in the keystore, so the desired key must be the first.
</p>
<b>Things to Look Out For</b>
<p>
  You must have your Certificate Authority (CA) certificate installed properly
  if it is not signed by one of the five CA certificates that ships with your
  JDK.  One method to install it is to import your CA certificate into a JKS
  file, and name the JKS file "<span class="code">jssecacerts</span>".  Place the file in your JRE's
  <span class="code">lib/security</span> folder.  This file will be read before the "<span class="code">cacerts</span>" file in
  the same directory.  Keep in mind that as long as the "<span class="code">jssecacerts</span>" file
  exists, the certificates installed in "<span class="code">cacerts</span>" will not be used.  This may
  cause problems for you.  If you don't mind importing your CA certificate into
  the "<span class="code">cacerts</span>" file, then you can authenticate against all of the CA certificates
  installed.
</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="HTTP(S)_Test_Script_Recorder">HTTP(S) Test Script Recorder<a name="HTTP_Proxy_Server">
            (was:
            HTTP Proxy Server
            )
          </a><a class="sectionlink" href="#HTTP(S)_Test_Script_Recorder" title="Link to here">&para;</a>
</h2>
<div class="description">
<p>The HTTP(S) Test Script Recorder allows JMeter to intercept and record your actions while you browse your web application
with your normal browser.  JMeter will create test sample objects and store them
directly into your test plan as you go (so you can view samples interactively while you make them).<br>
Ensure you read this <a href="https://cwiki.apache.org/confluence/display/JMETER/TestRecording210">wiki page</a> to setup correctly JMeter.
</p>


<p>To use the recorder, <i>add</i> the HTTP(S) Test Script Recorder element.
Right-click on the Test Plan element to get the Add menu:
(<span class="menuchoice"><span class="guimenuitem">Add</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">Non-Test Elements</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">HTTP(S) Test Script Recorder</span></span>
).
</p>

<p>
The recorder is implemented as an HTTP(S) proxy server.
You need to set up your browser use the proxy for all HTTP and HTTPS requests.
<div class="clear"></div>
<div class="note">Do not use JMeter as the proxy for any other request types - FTP, etc. - as JMeter cannot handle them.</div>
<div class="clear"></div>

</p>

<p>
Ideally use private browsing mode when recording the session.
This should ensure that the browser starts with no stored cookies, and prevents certain changes from being saved.
For example, Firefox does not allow certificate overrides to be saved permanently.
</p>

<h4>HTTPS recording and certificates</h4>

<p>
HTTPS connections use certificates to authenticate the connection between the browser and the web server.
When connecting via HTTPS, the server presents the certificate to the browser.
To authenticate the certificate, the browser checks that the server certificate is signed
by a Certificate Authority (CA) that is linked to one of its in-built root CAs.
<div class="clear"></div>
<div class="note">Browsers also check that the certificate is for the correct host or domain, and that it is valid and not expired.</div>
<div class="clear"></div>
If any of the browser checks fail, it will prompt the user who can then decide whether to allow the connection to proceed.  
</p>

<p>
JMeter needs to use its own certificate to enable it to intercept the HTTPS connection from
the browser. Effectively JMeter has to pretend to be the target server.
</p>

<p>
JMeter will generate its own certificate(s).
These are generated with a validity period defined by the property <span class="code">proxy.cert.validity</span>, default 7 days, and random passwords.
If JMeter detects that it is running under Java 8 or later, it will generate certificates for each target server as necessary (dynamic mode)
unless the following property is defined: <span class="code">proxy.cert.dynamic_keys=false</span>.
When using dynamic mode, the certificate will be for the correct host name, and will be signed by a JMeter-generated CA certificate.
By default, this CA certificate won't be trusted by the browser, however it can be installed as a trusted certificate.
Once this is done, the generated server certificates will be accepted by the browser.
This has the advantage that even embedded HTTPS resources can be intercepted, and there is no need to override the browser checks for each new server.
<div class="clear"></div>
<div class="note">Browsers don't prompt for embedded resources. So with earlier versions, embedded resources would only be downloaded for servers that were already 'known' to the browser</div>
<div class="clear"></div>

</p>

<p>Unless a keystore is provided (and you define the property <span class="code">proxy.cert.alias</span>),
JMeter needs to use the keytool application to create the keystore entries. 
JMeter includes code to check that keytool is available by looking in various standard places.
If JMeter is unable to find the keytool application, it will report an error.
If necessary, the system property <span class="code">keytool.directory</span> can be used to tell JMeter where to find keytool.
This should be defined in the file <span class="code">system.properties</span>.
</p>

<p>
The JMeter certificates are generated (if necessary) when the <span class="code">Start</span> button is pressed.
<div class="clear"></div>
<div class="note">Certificate generation can take some while, during which time the GUI will be unresponsive.</div>
<div class="clear"></div>
The cursor is changed to an hour-glass whilst this is happening.
When certificate generation is complete, the GUI will display a pop-up dialogue containing the details of the certificate for the root CA.
This certificate needs to be installed by the browser in order for it to accept the host certificates generated by JMeter; see <a href="#install_cert">below</a> for details.
</p>

<p>
If necessary, you can force JMeter to regenerate the keystore (and the exported certificates - <span class="code">ApacheJMeterTemporaryRootCA[.usr|.crt]</span>) by deleting the keystore file <span class="code">proxyserver.jks</span> from the JMeter directory.
</p>

<p>
This certificate is not one of the certificates that browsers normally trust, and will not be for the
correct host.<br>
As a consequence: 
</p>

<ul>

<li>The browser should display a dialogue asking if you want to accept the certificate or not. For example:
<pre class="source">
1) The server's name "<span class="code">www.example.com</span>" does not match the certificate's name
   "<span class="code">JMeter Proxy (DO NOT TRUST)</span>". Somebody may be trying to eavesdrop on you.
2) The certificate for "<span class="code">JMeter Proxy (DO NOT TRUST)</span>" is signed by the unknown Certificate Authority
   "<span class="code">JMeter Proxy (DO NOT TRUST)</span>". It is not possible to verify that this is a valid certificate.
</pre>
You will need to accept the certificate in order to allow the JMeter Proxy to intercept the SSL traffic in order to
record it.
However, do not accept this certificate permanently; it should only be accepted temporarily.
Browsers only prompt this dialogue for the certificate of the main URL, not for the resources loaded in the page, such as images, CSS or JavaScript files hosted on a secured external CDN. 
If you have such resources (gmail has for example), you'll have to first browse manually to these other domains in order to accept JMeter's certificate for them. 
Check in <span class="code">jmeter.log</span> for secure domains that you need to register certificate for.
</li>

<li>If the browser has already registered a validated certificate for this domain, the browser will detect JMeter as a security breach and will refuse to load the page. If so, you have to remove the trusted certificate from your browser's keystore.
</li>

</ul>

<p>
Versions of JMeter from 2.10 onwards still support this method, and will continue to do so if you define the following property:
<span class="code">proxy.cert.alias</span>
The following properties can be used to change the certificate that is used:
</p>

<ul>

<li>
<span class="code">proxy.cert.directory</span> - the directory in which to find the certificate (default = JMeter <span class="code">bin/</span>)</li>

<li>
<span class="code">proxy.cert.file</span> - name of the keystore file (default "<span class="code">proxyserver.jks</span>")</li>

<li>
<span class="code">proxy.cert.keystorepass</span> - keystore password (default "<span class="code">password</span>") [Ignored if using JMeter certificate]</li>

<li>
<span class="code">proxy.cert.keypassword</span> - certificate key password (default "<span class="code">password</span>") [Ignored if using JMeter certificate]</li>

<li>
<span class="code">proxy.cert.type</span> - the certificate type (default "<span class="code">JKS</span>") [Ignored if using JMeter certificate]</li>

<li>
<span class="code">proxy.cert.factory</span> - the factory (default "<span class="code">SunX509</span>") [Ignored if using JMeter certificate]</li>

<li>
<span class="code">proxy.cert.alias</span> - the alias for the key to be used. If this is defined, JMeter does not attempt to generate its own certificate(s).</li>

<li>
<span class="code">proxy.ssl.protocol</span> - the protocol to be used (default "<span class="code">SSLv3</span>")</li>

</ul>

<div class="clear"></div>
<div class="note">
If your browser currently uses a proxy (e.g. a company intranet may route all external requests via a proxy),
then you need to <a href="get-started.html#proxy_server">tell JMeter to use that proxy</a> before starting JMeter, 
using the <a href="get-started.html#options">command-line options</a> <span class="code">-H</span> and <span class="code">-P</span>.
This setting will also be needed when running the generated test plan.
</div>
<div class="clear"></div>

<a name="install_cert"></a>

<h4>Installing the JMeter CA certificate for HTTPS recording</h4>

<p>
As mentioned above, when run under Java 8, JMeter can generate certificates for each server.
For this to work smoothly, the root CA signing certificate used by JMeter needs to be trusted by the browser.
The first time that the recorder is started, it will generate the certificates if necessary. 
The root CA certificate is exported into a file with the name <span class="code">ApacheJMeterTemporaryRootCA</span> in the current launch directory.
When the certificates have been set up, JMeter will show a dialog with the current certificate details.
At this point, the certificate can be imported into the browser, as per the instructions below.
</p>

<p>
Note that once the root CA certificate has been installed as a trusted CA, the browser will trust any certificates signed by it.
Until such time as the certificate expires or the certificate is removed from the browser, it will not warn the user that the certificate is being relied upon.
So anyone that can get hold of the keystore and password can use the certificate to generate certificates which will be accepted
by any browsers that trust the JMeter root CA certificate.
For this reason, the password for the keystore and private keys are randomly generated and a short validity period used.
The passwords are stored in the local preferences area.
Please ensure that only trusted users have access to the host with the keystore.
</p>

<div class="clear"></div>
<div class="note">
The popup that displays once you start the Recorder is an informational popup:
<figure>
<a href="../images/screenshots/recorder_popup_info.png"><img src="../images/screenshots/recorder_popup_info.png" width="1024" height="749" alt="Recorder Install Certificate Popup"></a>
<figcaption>Recorder Install Certificate Popup</figcaption>
</figure>
Just click ok and proceed further.
</div>
<div class="clear"></div>

<h5>Installing the certificate in Firefox</h5>

<p>
Choose the following options:
</p>

<ul>

<li>
<span class="code">Tools / Options</span>
</li>

<li>
<span class="code">Advanced / Certificates</span>
</li>

<li>
<span class="code">View Certificates</span>
</li>

<li>
<span class="code">Authorities</span>
</li>

<li>
<span class="code">Import &hellip;</span>
</li>

<li>Browse to the JMeter launch directory, and click on the file <span class="code">ApacheJMeterTemporaryRootCA.crt</span>, press <span class="code">Open</span>
</li>

<li>Click <span class="code">View</span> and check that the certificate details agree with the ones displayed by the JMeter Test Script Recorder</li>

<li>If OK, select "<span class="code">Trust this CA to identify web sites</span>", and press <span class="code">OK</span>
</li>

<li>Close dialogs by pressing <span class="code">OK</span> as necessary</li>

</ul>

<h5>Installing the certificate in Chrome or Internet Explorer</h5>

<p>
Both Chrome and Internet Explorer use the same trust store for certificates.
</p>

<ul>

<li>Browse to the JMeter launch directory, and click on the file <span class="code">ApacheJMeterTemporaryRootCA.crt</span>, and open it</li>

<li>Click on the "<span class="code">Details</span>" tab and check that the certificate details agree with the ones displayed by the JMeter Test Script Recorder</li>

<li>If OK, go back to the "<span class="code">General</span>" tab, and click on "<span class="code">Install Certificate &hellip;</span>" and follow the Wizard prompts</li>

</ul>

<h5>Installing the certificate in Opera</h5>

<ul>

<li>
<span class="code">Tools / Preferences / Advanced / Security</span>
</li>

<li>
<span class="code">Manage Certificates &hellip;</span>
</li>

<li>Select "<span class="code">Intermediate</span>" tab, click "<span class="code">Import &hellip;</span>"</li>

<li>Browse to the JMeter launch directory, and click on the file <span class="code">ApacheJMeterTemporaryRootCA.usr</span>, and open it</li>

<li></li>

</ul>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/proxy_control.png"><img src="../images/screenshots/proxy_control.png" width="1052" height="694" alt="Screenshot for Control-Panel of HTTP(S) Test Script Recorder"></a>
<figcaption>Screenshot of Control-Panel of HTTP(S) Test Script Recorder</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="HTTP(S)_Test_Script_Recorder_parms1">
        Parameters
        <a class="sectionlink" href="#HTTP(S)_Test_Script_Recorder_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Port</div>
<div class="description req-true">The port that the HTTP(S) Test Script Recorder listens to.  <span class="code">8888</span> is the default, but you can change it.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">HTTPS Domains</div>
<div class="description req-false">List of domain (or host) names for HTTPS. Use this to pre-generate certificates for all servers you wish to record.
        <br>
        For example, <span class="code">*.example.com,*.subdomain.example.com</span>
        
<br>
        Note that wildcard domains only apply to one level,
        i.e. <span class="code">abc.subdomain.example.com</span> matches <span class="code">*.subdomain.example.com</span> but not <span class="code">*.example.com</span>
        
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Target Controller</div>
<div class="description req-true">The controller where the proxy will store the generated samples. By default, it will look for a Recording Controller and store them there wherever it is.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Grouping</div>
<div class="description req-true">Whether to group samplers for requests from a single "click" (requests received without significant time separation), and how to represent that grouping in the recording:
           <ul>
             
<li>
<span class="code">Do not group samplers</span> - store all recorded samplers sequentially, without any grouping.</li>
             
<li>
<span class="code">Add separators between groups</span> - add a controller named "<span class="code">--------------</span>" to create a visual separation between the groups. Otherwise the samplers are all stored sequentially.</li>
             
<li>
<span class="code">Put each group in a new controller</span> - create a new <a href="../usermanual/component_reference.html#Simple_Controller">Simple Controller</a> for each group, and store all samplers for that group in it.</li>
             
<li>
<span class="code">Store 1<sup>st</sup> sampler of each group only</span> - only the first request in each group will be recorded. The "<span class="code">Follow Redirects</span>" and "<span class="code">Retrieve All Embedded Resources &hellip;</span>" flags will be turned on in those samplers.</li>
             
<li>
<span class="code">Put each group in a new transaction controller</span> - create a new <a href="../usermanual/component_reference.html#Transaction_Controller">Transaction Controller</a> for each group, and store all samplers for that group in it.</li>
           
</ul>
           The property <span class="code">proxy.pause</span> determines the minimum gap that JMeter needs between requests
           to treat them as separate "clicks". The default is <span class="code">5000</span> (milliseconds) i.e. 5 seconds.
           If you are using grouping, please ensure that you leave the required gap between clicks.
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Capture HTTP Headers</div>
<div class="description req-true">Should headers be added to the plan?
        If specified, a Header Manager will be added to each HTTP Sampler.
        The Proxy server always removes Cookie and Authorization headers from the generated Header Managers.
        By default it also removes <span class="code">If-Modified-Since</span> and <span class="code">If-None-Match</span> headers.
        These are used to determine if the browser cache items are up to date;
        when recording one normally wants to download all the content.
        To change which additional headers are removed, define the JMeter property <span class="code">proxy.headers.remove</span>
        as a comma-separated list of headers.
        </div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Add Assertions</div>
<div class="description req-true">Add a blank assertion to each sampler?</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Regex Matching</div>
<div class="description req-true">Use Regex Matching when replacing variables? If checked replacement will use word boundaries, i.e. it will only replace word matching values of variable, not part of a word. A word boundary follows Perl5 definition and is equivalent to <span class="code">\b</span>. More information below in the paragraph about "<span class="code">User Defined Variable replacement</span>".</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Prefix/Transaction name</div>
<div class="description req-false">Add a prefix to sampler name during recording (Prefix mode). Or replace sampler name by user chosen name (Transaction name)</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">Create new transaction after request (ms)</div>
<div class="description req-true">Inactivity time between two requests needed to consider them in two separate groups.</div>
<div class="required req-true">
            No
          </div>
</div>
        
<div class="property">
<div class="name req-true">Type</div>
<div class="description req-true">Which type of sampler to generate (the HTTPClient default or Java)</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Redirect Automatically</div>
<div class="description req-true">Set Redirect Automatically in the generated samplers?</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Follow Redirects</div>
<div class="description req-true">Set Follow Redirects in the generated samplers?<br>
        
<div class="clear"></div>
<div class="note">Note: see "Recording and redirects" section below for important information.</div>
<div class="clear"></div>
        
</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Use Keep-Alive</div>
<div class="description req-true">Set Use Keep-Alive in the generated samplers?</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Retrieve all Embedded Resources</div>
<div class="description req-true">Set Retrieve all Embedded Resources in the generated samplers?</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Content Type filter</div>
<div class="description req-false">
        Filter the requests based on the <span class="code">content-type</span> - e.g. "<span class="code">text/html [;charset=utf-8 ]</span>".
        The fields are regular expressions which are checked to see if they are contained in the <span class="code">content-type</span>.
        [Does not have to match the entire field].
        The include filter is checked first, then the exclude filter.
        Samples which are filtered out will not be stored.
        <div class="clear"></div>
<div class="note">Note: this filtering is applied to the content type of the response</div>
<div class="clear"></div>
        
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Patterns to Include</div>
<div class="description req-false">Regular expressions that are matched against the full URL that is sampled.  Allows filtering of requests that are recorded.  All requests pass through, but only
        those that meet the requirements of the <span class="code">Include</span>/<span class="code">Exclude</span> fields are <em>recorded</em>.  If both <span class="code">Include</span> and <span class="code">Exclude</span> are
        left empty, then everything is recorded (which can result in dozens of samples recorded for each page, as images, stylesheets,
        etc. are recorded).  <div class="clear"></div>
<div class="note">If there is at least one entry in the <span class="code">Include</span> field, then only requests that match one or more <span class="code">Include</span> patterns are
        recorded</div>
<div class="clear"></div>.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Patterns to Exclude</div>
<div class="description req-false">Regular expressions that are matched against the URL that is sampled.
        <div class="clear"></div>
<div class="note">Any requests that match one or more <span class="code">Exclude</span> pattern are <em>not</em> recorded</div>
<div class="clear"></div>.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Notify Child Listeners of filtered samplers</div>
<div class="description req-false">Notify Child Listeners of filtered samplers
        <div class="clear"></div>
<div class="note">Any response that match one or more <span class="code">Exclude</span> pattern is <em>not</em> delivered to Child Listeners (View Results Tree)</div>
<div class="clear"></div>.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Start Button</div>
<div class="description req-false">Start the proxy server.  JMeter writes the following message to the console once the proxy server has started up and is ready to take requests: "<span class="code">Proxy up and running!</span>".</div>
<div class="required req-false">N/A</div>
</div>
        
<div class="property">
<div class="name req-false">Stop Button</div>
<div class="description req-false">Stop the proxy server.</div>
<div class="required req-false">N/A</div>
</div>
        
<div class="property">
<div class="name req-false">Restart Button</div>
<div class="description req-false">Stops and restarts the proxy server.  This is
  useful when you change/add/delete an include/exclude filter expression.</div>
<div class="required req-false">N/A</div>
</div>

</div>
<h4>Recording and redirects</h4>
<p>
During recording, the browser will follow a redirect response and generate an additional request.
The Proxy will record both the original request and the redirected request
(subject to whatever exclusions are configured).
The generated samples have "<span class="code">Follow Redirects</span>" selected by default, because that is generally better.
<div class="clear"></div>
<div class="note">Redirects may depend on the original request, so repeating the originally recorded sample may not always work.</div>
<div class="clear"></div>

</p>
<p>
Now if JMeter is set to follow the redirect during replay, it will issue the original request, 
and then replay the redirect request that was recorded.
To avoid this duplicate replay, JMeter tries to detect when a sample is the result of a previous
redirect. If the current response is a redirect, JMeter will save the redirect URL.
When the next request is received, it is compared with the saved redirect URL and if there is a match,
JMeter will disable the generated sample. It also adds comments to the redirect chain.
This assumes that all the requests in a redirect chain will follow each other without any intervening requests.
To disable the redirect detection, set the property <span class="code">proxy.redirect.disabling=false</span>

</p>
<h4>Includes and Excludes</h4>
<p>The <b>include and exclude patterns</b> are treated as regular expressions (using Jakarta ORO).
They will be matched against the host name, port (actual or implied), path and query (if any) of each browser request.
If the URL you are browsing is <br> 
"<span class="code">http://localhost/jmeter/index.html?username=xxxx</span>",<br> 
then the regular expression will be tested against the string:<br> 
"<span class="code">localhost:80/jmeter/index.html?username=xxxx</span>".<br>   
Thus, if you want to include all <span class="code">.html</span> files, your regular expression might look like: <br> 
"<span class="code">.*\.html(\?.*)?</span>" - or "<span class="code">.*\.html</span> 
if you know that there is no query string or you only want html pages without query strings.
</p>
<p>
If there are any include patterns, then the URL <b>must match at least one</b> of the patterns
, otherwise it will not be recorded.
If there are any exclude patterns, then the URL <b>must not match any</b> of the patterns
, otherwise it will not be recorded.
Using a combination of includes and excludes,
you should be able to record what you are interested in and skip what you are not.
</p>
<div class="clear"></div>
<div class="note">
N.B. the string that is matched by the regular expression must be the same as the <b>whole</b> host+path string.<br>Thus "<span class="code">\.html</span>" will <b>not</b> match <span class="code">localhost:80/index.html</span>

</div>
<div class="clear"></div>
<h4>Capturing binary POST data</h4>
<p>
JMeter is able to capture binary POST data.
To configure which <span class="code">content-types</span> are treated as binary, update the JMeter property <span class="code">proxy.binary.types</span>.
The default settings are as follows:
</p>
<pre class="source">
# These content-types will be handled by saving the request in a file:
proxy.binary.types=application/x-amf,application/x-java-serialized-object
# The files will be saved in this directory:
proxy.binary.directory=user.dir
# The files will be created with this file filesuffix:
proxy.binary.filesuffix=.binary
</pre>
<h4>Adding timers</h4>
<p>It is also possible to have the proxy add timers to the recorded script. To
do this, create a timer directly within the HTTP(S) Test Script Recorder component.
The proxy will place a copy of this timer into each sample it records, or into
the first sample of each group if you're using grouping. This copy will then be
scanned for occurrences of variable <span class="code">${T}</span> in its properties, and any such
occurrences will be replaced by the time gap from the previous sampler
recorded (in milliseconds).</p>
<p>When you are ready to begin, hit "<span class="code">start</span>".</p>
<div class="clear"></div>
<div class="note">You will need to edit the proxy settings of your browser to point at the
appropriate server and port, where the server is the machine JMeter is running on, and
the port # is from the Proxy Control Panel shown above.</div>
<div class="clear"></div>
<h4>Where Do Samples Get Recorded?</h4>
<p>JMeter places the recorded samples in the Target Controller you choose. If you choose the default option
"<span class="code">Use Recording Controller</span>", they will be stored in the first Recording Controller found in the test object tree (so be
sure to add a Recording Controller before you start recording).</p>
<p>
If the Proxy does not seem to record any samples, this could be because the browser is not actually using the proxy.
To check if this is the case, try stopping the proxy.
If the browser still downloads pages, then it was not sending requests via the proxy.
Double-check the browser options. 
If you are trying to record from a server running on the same host,
then check that the browser is not set to "<span class="code">Bypass proxy server for local addresses</span>"
(this example is from IE7, but there will be similar options for other browsers).
If JMeter does not record browser URLs such as <span class="code">http://localhost/</span> or <span class="code">http://127.0.0.1/</span>,
try using the non-loopback hostname or IP address, e.g. <span class="code">http://myhost/</span> or <span class="code">http://192.168.0.2/</span>.
</p>
<h4>Handling of HTTP Request Defaults</h4>
<p>If the HTTP(S) Test Script Recorder finds enabled <a href="../usermanual/component_reference.html#HTTP_Request_Defaults">HTTP Request Defaults</a> directly within the
controller where samples are being stored, or directly within any of its parent controllers, the recorded samples
will have empty fields for the default values you specified. You may further control this behaviour by placing an
HTTP Request Defaults element directly within the HTTP(S) Test Script Recorder, whose non-blank values will override
those in the other HTTP Request Defaults. See <a href="best-practices.html#proxy_server"> Best
Practices with the HTTP(S) Test Script Recorder</a> for more info.</p>
<h4>User Defined Variable replacement</h4>
<p>Similarly, if the HTTP(S) Test Script Recorder finds <a href="../usermanual/component_reference.html#User_Defined_Variables">User Defined Variables</a> (UDV) directly within the
controller where samples are being stored, or directly within any of its parent controllers, the recorded samples
will have any occurrences of the values of those variables replaced by the corresponding variable. Again, you can
place User Defined Variables directly within the HTTP(S) Test Script Recorder to override the values to be replaced. See
<a href="best-practices.html#proxy_server"> Best Practices with the Test Script Recorder</a> for more info.</p>
<div class="clear"></div>
<div class="note">Please note that matching is case-sensitive.</div>
<div class="clear"></div>
<p>Replacement by Variables: by default, the Proxy server looks for all occurrences of UDV values. 
If you define the variable <span class="code">WEB</span> with the value <span class="code">www</span>, for example,
the string <span class="code">www</span> will be replaced by <span class="code">${WEB}</span> wherever it is found.
To avoid this happening everywhere, set the "<span class="code">Regex Matching</span>" check-box.
This tells the proxy server to treat values as Regexes (using the perl5 compatible regex matchers provided by ORO).</p>
<p>If "<span class="code">Regex Matching</span>" is selected every variable will be compiled into a perl compatible regex enclosed in
<span class="code">\b(</span> and <span class="code">)\b</span>. That way each match will start and end at a word boundary.</p>
<div class="clear"></div>
<div class="note">Note that the boundary characters are not part of the matching group, e.g. <span class="code">n.*</span> to match <span class="code">name</span> out
of <span class="code">You can call me 'name'</span>.</div>
<div class="clear"></div>
<p>If you don't want your regex to be enclosed with those boundary matchers, you have to enclose your
regex within parens, e.g <span class="code">('.*?')</span> to match <span class="code">'name'</span> out of <span class="code">You can call me 'name'</span>.</p>
<div class="clear"></div>
<div class="note">
The variables will be checked in random order. So ensure, that the potential matches don't overlap.
Overlapping matchers would be <span class="code">.*</span> (which matches anything) and <span class="code">www</span> (which
matches <span class="code">www</span> only). Non-overlapping matchers would be <span class="code">a+</span> (matches a sequence
of <span class="code">a</span>'s) and <span class="code">b+</span> (matches a sequence of <span class="code">b</span>'s).
</div>
<div class="clear"></div>
<p>If you want to match a whole string only, enclose it in <span class="code">(^</span> and <span class="code">$)</span>, e.g. <span class="code">(^thus$)</span>.
The parens are necessary, since the normally added boundary characters will prevent <span class="code">^</span> and
<span class="code">$</span> to match.</p>
<p>If you want to match <span class="code">/images</span> at the start of a string only, use the value <span class="code">(^/images)</span>.
Jakarta ORO also supports zero-width look-ahead, so one can match <span class="code">/images/&hellip;</span>
but retain the trailing <span class="code">/</span> in the output by using <span class="code">(^/images(?=/))</span>.</p>
<div class="clear"></div>
<div class="note">
Note that the current version of Jakarta ORO does not support look-behind - i.e. <span class="code">(?&lt;=&hellip;)</span> or <span class="code">(?&lt;!&hellip;)</span>.
</div>
<div class="clear"></div>
<p>Look out for overlapping matchers. For example the value <span class="code">.*</span> as a regex in a variable named
<span class="code">regex</span> will partly match a previous replaced variable, which will result in something like
<span class="code">${{regex}</span>, which is most probably not the desired result.</p>
<p>If there are any problems interpreting any variables as patterns, these are reported in <span class="code">jmeter.log</span>,
so be sure to check this if UDVs are not working as expected.</p>
<p>When you are done recording your test samples, stop the proxy server (hit the "<span class="code">stop</span>" button).  Remember to reset
your browser's proxy settings.  Now, you may want to sort and re-order the test script, add timers, listeners, a
cookie manager, etc.</p>
<h4>How can I record the server's responses too?</h4>
<p>Just place a <a href="../usermanual/component_reference.html#View_Results_Tree">View Results Tree</a> listener as a child of the HTTP(S) Test Script Recorder and the responses will be displayed. 
You can also add a <a href="../usermanual/component_reference.html#Save_Responses_to_a_file">Save Responses to a file</a> Post-Processor which will save the responses to files.
</p>
<h4>Associating requests with responses</h4>
<p>
If you define the property <span class="code">proxy.number.requests=true</span> 
JMeter will add a number to each sampler and each response.
Note that there may be more responses than samplers if excludes or includes have been used.
Responses that have been excluded will have labels enclosed in <span class="code">[</span> and <span class="code">],</span> for example <span class="code">[23 /favicon.ico]</span> 

</p>
<h4>Cookie Manager</h4>
<p>
If the server you are testing against uses cookies, remember to add an <a href="../usermanual/component_reference.html#HTTP_Cookie_Manager">HTTP Cookie Manager</a> to the test plan
when you have finished recording it.
During recording, the browser handles any cookies, but JMeter needs a Cookie Manager
to do the cookie handling during a test run.
The JMeter Proxy server passes on all cookies sent by the browser during recording, but does not save them to the test
plan because they are likely to change between runs.
</p>
<h4>Authorization Manager</h4>
<p>
The HTTP(S) Test Script Recorder grabs "<span class="code">Authentication</span>" header, tries to compute the Auth Policy. If Authorization Manager was added to target
controller manually, HTTP(S) Test Script Recorder will find it and add authorization (matching ones will be removed). Otherwise
Authorization Manager will be added to target controller with authorization object.
You may have to fix automatically computed values after recording.

</p>
<h4>Uploading files</h4>
<p>
Some browsers (e.g. Firefox and Opera) don't include the full name of a file when uploading files.
This can cause the JMeter proxy server to fail.
One solution is to ensure that any files to be uploaded are in the JMeter working directory,
either by copying the files there or by starting JMeter in the directory containing the files.
</p>
<h4>Recording HTTP Based Non Textual Protocols not natively available in JMeter</h4>
<p>
You may have to record an HTTP protocol that is not handled by default by JMeter (Custom Binary Protocol, Adobe Flex, Microsoft Silverlight, &hellip; ).
Although JMeter does not provide a native proxy implementation to record these protocols, you have the ability to
record these protocols by implementing a custom <span class="code">SamplerCreator</span>. This Sampler Creator will translate the binary format into a <span class="code">HTTPSamplerBase</span> subclass
that can be added to the JMeter Test Case.
For more details see "Extending JMeter".
</p>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="HTTP_Mirror_Server">HTTP Mirror Server<a class="sectionlink" href="#HTTP_Mirror_Server" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The HTTP Mirror Server is a very simple HTTP server - it simply mirrors the data sent to it.
This is useful for checking the content of HTTP requests.
</p>

<p>
It uses default port <span class="code">8081</span>.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/mirrorserver.png"><img src="../images/screenshots/mirrorserver.png" width="794" height="157" alt="Screenshot for Control-Panel of HTTP Mirror Server"></a>
<figcaption>Screenshot of Control-Panel of HTTP Mirror Server</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="HTTP_Mirror_Server_parms1">
        Parameters
        <a class="sectionlink" href="#HTTP_Mirror_Server_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Port</div>
<div class="description req-true">Port on which Mirror server listens, defaults to <span class="code">8081</span>.</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-false">Max Number of threads</div>
<div class="description req-false">If set to a value &gt; <span class="code">0</span>, number of threads serving requests will be limited to the configured number, if set to a value &le; <span class="code">0</span> 
        a new thread will be created to serve each incoming request. Defaults to <span class="code">0</span>
</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">Max Queue size</div>
<div class="description req-false">Size of queue used for holding tasks before they are executed by Thread Pool, when Thread pool is exceeded, incoming requests will
        be held in this queue and discarded when this queue is full. This parameter is only used if Max Number of Threads is greater than <span class="code">0</span>. Defaults to <span class="code">25</span>
</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="clear"></div>
<div class="note">
Note that you can get more control over the responses by adding an HTTP Header Manager with the following name/value pairs:
</div>
<div class="clear"></div>
<div class="properties">
<h3 id="HTTP_Mirror_Server_parms2">
        Parameters
        <a class="sectionlink" href="#HTTP_Mirror_Server_parms2" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">X-Sleep</div>
<div class="description req-false">Time to sleep in ms before sending response</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">X-SetCookie</div>
<div class="description req-false">Cookies to be set on response</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">X-ResponseStatus</div>
<div class="description req-false">Response status, see <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html">HTTP Status responses</a>, example 200 OK, 500 Internal Server Error, &hellip;.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">X-ResponseLength</div>
<div class="description req-false">Size of response, this trims the response to the requested size if that is less than the total size</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-false">X-SetHeaders</div>
<div class="description req-false">Pipe separated list of headers, example:<br> 
        
<span class="code">headerA=valueA|headerB=valueB</span> would set <span class="code">headerA</span> to <span class="code">valueA</span> and <span class="code">headerB</span> to <span class="code">valueB</span>.
        </div>
<div class="required req-false">No</div>
</div>

</div>
<p>
You can also use the following query parameters:
</p>
<div class="properties">
<h3 id="HTTP_Mirror_Server_parms3">
        Parameters
        <a class="sectionlink" href="#HTTP_Mirror_Server_parms3" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
    
<div class="property">
<div class="name req-false">redirect</div>
<div class="description req-false">Generates a 302 (Temporary Redirect) with the provided location.
    e.g. <span class="code">?redirect=/path</span>
    
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">status</div>
<div class="description req-false">Overrides the default status return. e.g. <span class="code">?status=404 Not Found</span>
</div>
<div class="required req-false">No</div>
</div>
    
<div class="property">
<div class="name req-false">v</div>
<div class="description req-false">Verbose flag, writes some details to standard output. e.g. first line and redirect location if specified</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Property_Display">Property Display<a class="sectionlink" href="#Property_Display" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The Property Display shows the values of System or JMeter properties.
Values can be changed by entering new text in the Value column.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/property_display.png"><img src="../images/screenshots/property_display.png" width="804" height="508" alt="Screenshot for Control-Panel of Property Display"></a>
<figcaption>Screenshot of Control-Panel of Property Display</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Property_Display_parms1">
        Parameters
        <a class="sectionlink" href="#Property_Display_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Debug_Sampler">Debug Sampler<a class="sectionlink" href="#Debug_Sampler" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The Debug Sampler generates a sample containing the values of all JMeter variables and/or properties.
</p>

<p>
The values can be seen in the <a href="../usermanual/component_reference.html#View_Results_Tree">View Results Tree</a> Listener Response Data pane.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/debug_sampler.png"><img src="../images/screenshots/debug_sampler.png" width="431" height="172" alt="Screenshot for Control-Panel of Debug Sampler"></a>
<figcaption>Screenshot of Control-Panel of Debug Sampler</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Debug_Sampler_parms1">
        Parameters
        <a class="sectionlink" href="#Debug_Sampler_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">JMeter Properties</div>
<div class="description req-true">Include JMeter properties?</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">JMeter Variables</div>
<div class="description req-true">Include JMeter variables?</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">System Properties</div>
<div class="description req-true">Include System properties?</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Debug_PostProcessor">Debug PostProcessor<a class="sectionlink" href="#Debug_PostProcessor" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The Debug PostProcessor creates a subSample with the details of the previous Sampler properties, 
JMeter variables, properties and/or System Properties.
</p>

<p>
The values can be seen in the <a href="../usermanual/component_reference.html#View_Results_Tree">View Results Tree</a> Listener Response Data pane.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/debug_postprocessor.png"><img src="../images/screenshots/debug_postprocessor.png" width="344" height="193" alt="Screenshot for Control-Panel of Debug PostProcessor"></a>
<figcaption>Screenshot of Control-Panel of Debug PostProcessor</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Debug_PostProcessor_parms1">
        Parameters
        <a class="sectionlink" href="#Debug_PostProcessor_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-false">Name</div>
<div class="description req-false">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-false">No</div>
</div>
        
<div class="property">
<div class="name req-true">JMeter Properties</div>
<div class="description req-true">Whether to show JMeter properties (default <span class="code">false</span>).</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">JMeter Variables</div>
<div class="description req-true">Whether to show JMeter variables (default <span class="code">false</span>).</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Sampler Properties</div>
<div class="description req-true">Whether to show Sampler properties (default <span class="code">true</span>).</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">System Properties</div>
<div class="description req-true">Whether to show System properties (default <span class="code">false</span>).</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="Test_Fragment">Test Fragment<a class="sectionlink" href="#Test_Fragment" title="Link to here">&para;</a>
</h2>
<div class="description">

<p>
The Test Fragment is used in conjunction with the <a href="../usermanual/component_reference.html#Include_Controller">Include Controller</a> and <a href="../usermanual/component_reference.html#Module_Controller">Module Controller</a>.
</p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/test_fragment.png"><img src="../images/screenshots/test_fragment.png" width="236" height="94" alt="Screenshot for Control-Panel of Test Fragment"></a>
<figcaption>Screenshot of Control-Panel of Test Fragment</figcaption>
</figure>
</div>
<div class="properties">
<h3 id="Test_Fragment_parms1">
        Parameters
        <a class="sectionlink" href="#Test_Fragment_parms1" title="Link to here">&para;</a>
</h3>
<div class="property title">
<div class="name title">Attribute</div>
<div class="description title">Description</div>
<div class="required title">Required</div>
</div>
        
<div class="property">
<div class="name req-true">Name</div>
<div class="description req-true">Descriptive name for this element that is shown in the tree.</div>
<div class="required req-true">Yes</div>
</div>

</div>
<div class="clear"></div>
<div class="note">
When using Test Fragment with <a href="../usermanual/component_reference.html#Module_Controller">Module Controller</a>, ensure you disable the Test Fragment to avoid the execution of Test Fragment itself.
This is done by default since JMeter 2.13.
</div>
<div class="clear"></div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="setUp_Thread_Group">setUp Thread Group<a class="sectionlink" href="#setUp_Thread_Group" title="Link to here">&para;</a>
</h2>
<div class="description">
    
<p>
    A special type of ThreadGroup that can be utilized to perform Pre-Test Actions.  The behavior of these threads
    is exactly like a normal <a href="../usermanual/component_reference.html#Thread_Group">Thread Group</a> element.  The difference is that these type of threads 
    execute before the test proceeds to the executing of regular Thread Groups.
    </p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/setup_thread_group.png"><img src="../images/screenshots/setup_thread_group.png" width="1252" height="828" alt="Screenshot for Control-Panel of setUp Thread Group"></a>
<figcaption>Screenshot of Control-Panel of setUp Thread Group</figcaption>
</figure>
</div>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<div class="component">
<h2 id="tearDown_Thread_Group">tearDown Thread Group<a class="sectionlink" href="#tearDown_Thread_Group" title="Link to here">&para;</a>
</h2>
<div class="description">
    
<p>
    A special type of ThreadGroup that can be utilized to perform Post-Test Actions.  The behavior of these threads
    is exactly like a normal <a href="../usermanual/component_reference.html#Thread_Group">Thread Group</a> element.  The difference is that these type of threads 
    execute after the test has finished executing its regular Thread Groups.
    </p>

</div>
<div class="screenshot">
<figure>
<a href="../images/screenshots/teardown_thread_group.png"><img src="../images/screenshots/teardown_thread_group.png" width="1248" height="824" alt="Screenshot for Control-Panel of tearDown Thread Group"></a>
<figcaption>Screenshot of Control-Panel of tearDown Thread Group</figcaption>
</figure>
</div>
<div class="clear"></div>
<div class="note">
Note that by default it won't run if Test is gracefully shutdown, if you want to make it run in this case, 
ensure you check option "<span class="code">Run tearDown Thread Groups after shutdown of main threads</span>" on Test Plan element.
If Test Plan is stopped, tearDown will not run even if option is checked.
</div>
<div class="clear"></div>
<figure>
<a href="../images/screenshots/tear_down_on_shutdown.png"><img src="../images/screenshots/tear_down_on_shutdown.png" width="1130" height="486" alt="Figure 1 - Run tearDown Thread Groups after shutdown of main threads"></a>
<figcaption>Figure 1 - Run tearDown Thread Groups after shutdown of main threads</figcaption>
</figure>
<div class="go-top">
<a href="#">^</a>
</div>
</div>


<a href="#">^</a>


</div>
<ul class="pagelinks">
<li>
<a href="boss.html">&lt; Prev</a>
</li>
<li>
<a href="../index.html">Index</a>
</li>
<li>
<a href="properties_reference.html">Next &gt;</a>
</li>
</ul>
<div class="share-links">
      Share this page:
      <ul>
<li class="fb">
<a data-social-url="https://facebook.com/sharer/sharer.php?u=" title="Share on facebook"><i class="fa fa-facebook" aria-hidden="true"></i>share</a>
</li>
<li class="twitter">
<a data-social-url="https://twitter.com/intent/tweet?url=" title="Tweet on twitter"><i class="fa fa-twitter" aria-hidden="true"></i>tweet</a>
</li>
</ul>
</div>
<a href="#top" id="topButton">Go to top</a>
</div>
<div class="footer">
<div class="copyright">
            Copyright &copy;
            1999 &ndash;
            2019
            , Apache Software Foundation
          </div>
<div class="trademarks">Apache, Apache JMeter, JMeter, the Apache
            feather, and the Apache JMeter logo are
            trademarks of the
            Apache Software Foundation.
          </div>
</div>
<script>(function(){
            "use strict";
            // enable 'go to top' button functionality
            document.addEventListener('scroll', function() {
                if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) {
                    document.getElementById("topButton").style.display = "block";
                } else {
                    document.getElementById("topButton").style.display = "none";
                }
            });
            // fill in the current location into social links on this page.
            var as = document.getElementsByTagName('a');
            var loc = document.location.href;
            if (!loc.toLowerCase().startsWith('http')) {
                return;
            }
            for (var i=0; i<as.length; i++) {
                var href = as[i].getAttribute('data-social-url');
                if (href !== null) {
                    as[i].href = href + encodeURIComponent(loc);
                }
            }
        })();</script>
</body>
</html>
