<!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>
</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>
</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>
</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="#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-true">Path</div>
<div class="description req-true">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-true">Yes</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>
<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">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-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>
<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/jayway/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>


<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="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="http://goessner.net/articles/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-true">Left Boundary</div>
<div class="description req-true">Left boundary of value to find</div>
<div class="required req-true">Yes</div>
</div>
        
<div class="property">
<div class="name req-true">Right Boundary</div>
<div class="description req-true">Right boundary of value to find</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 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="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">forever</span>" can be selected causing the test to run until manually stopped.</div>
<div class="required req-true">Yes, unless forever 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">Scheduler</div>
<div class="description req-true">If selected, enables the scheduler</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="908" height="364" 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="909" height="366" 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>
