Modified: jmeter/trunk/docs/usermanual/build-db-test-plan.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/build-db-test-plan.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/build-db-test-plan.html (original) +++ jmeter/trunk/docs/usermanual/build-db-test-plan.html Sun Sep 9 15:25:54 2018 @@ -207,8 +207,8 @@ To construct the Test Plan, you will use <div class="clear"></div> <div class="note">This example uses the MySQL database driver. -To use this driver, its containing .jar file (ex. mysql-connector-java-X.X.X-bin.jar) must be copied to the JMeter -<b>./lib</b> directory (see <a href="get-started.html#classpath">JMeter's Classpath</a> +To use this driver, its containing <span class="code">.jar</span> file (ex. <span class="code">mysql-connector-java-X.X.X-bin.jar</span>) must be copied to the JMeter +<span class="code">./lib</span> directory (see <a href="get-started.html#classpath">JMeter's Classpath</a> for more details).</div> <div class="clear"></div> @@ -221,7 +221,7 @@ for more details).</div> <p>The first step you want to do with every JMeter Test Plan is to add a <a href="test_plan.html#thread_group">Thread Group</a> element. The Thread Group tells JMeter the number of users you want to simulate, how often the users should -send requests, and the how many requests they should send.</p> +send requests, and how many requests they should send.</p> <p>Go ahead and add the ThreadGroup element by first selecting the Test Plan, @@ -230,7 +230,7 @@ clicking your right mouse button to get <p>You should now see the Thread Group element under Test Plan. If you do not -see the element, then "expand" the Test Plan tree by clicking on the +see the element, then <em>expand</em> the Test Plan tree by clicking on the Test Plan element.</p> @@ -249,29 +249,29 @@ Figure 6.1. Thread Group with Default Va <p>Start by providing a more descriptive name for our Thread Group. In the name -field, enter JDBC Users.</p> +field, enter <span class="code">JDBC Users</span>.</p> <div class="clear"></div> <div class="note">You will need a valid database, database table, and user-level access to that -table. In the example shown here, the database is 'cloud' and the table name is -'vm_instance'.</div> +table. In the example shown here, the database is '<span class="code">cloud</span>' and the table name is +'<span class="code">vm_instance</span>'.</div> <div class="clear"></div> -<p>Next, increase the number of users to 50.</p> +<p>Next, increase the number of users to <span class="code">50</span>.</p> -<p>In the next field, the Ramp-Up Period, leave the value of 10 +<p>In the next field, the Ramp-Up Period, leave the value of <span class="code">10</span> seconds. This property tells JMeter how long to delay between starting each user. For example, if you enter a Ramp-Up Period of 10 seconds, JMeter will finish starting all of your users by the end of the 10 seconds. So, if we have 50 users and a 10 second Ramp-Up Period, then the delay between starting users -would be 200 milliseconds (10 seconds / 50 users = 0.2 user per second). If you set the +would be 200 milliseconds (10 seconds / 50 users = 0.2 second per user). If you set the value to 0, then JMeter will immediately start all of your users.</p> -<p>Finally, enter a value of 100 in +<p>Finally, enter a value of <span class="code">100</span> in the Loop Count field. This property tells JMeter how many times to repeat your test. To have JMeter repeatedly run your Test Plan, select the Forever checkbox.</p> @@ -307,31 +307,35 @@ will be performing. In this section, yo perform.</p> -<p>Begin by selecting the JDBC Users element. Click your right mouse button +<p>Begin by selecting the <span class="code">JDBC Users</span> element. Click your right mouse button to get the <b>Add</b> menu, and then select <span class="menuchoice"><span class="guimenuitem">Add</span> → <span class="guimenuitem">Config Element</span> → <span class="guimenuitem">JDBC Connection Configuration</span></span>. Then, select this new element to view its Control Panel (see Figure 6.3).</p> -<p>Set up the following fields (these assume we will be using a MySQL database called 'cloud'):</p> +<p>Set up the following fields (these assume we will be using a MySQL database called '<span class="code">cloud</span>'):</p> <ul> -<li>Variable name (here: myDatabase) bound to pool. This needs to uniquely identify the configuration. It is used by the JDBC Sampler to identify the configuration to be used.</li> +<li>Variable name (here: <span class="code">myDatabase</span>) bound to pool. This needs to uniquely identify the configuration. It is used by the JDBC Sampler to identify the configuration to be used.</li> -<li>Database URL: jdbc:mysql://ipOfTheServer:3306/cloud</li> +<li>Database URL: <span class="code">jdbc:mysql://ipOfTheServer:3306/cloud</span> +</li> -<li>JDBC Driver class: com.mysql.jdbc.Driver</li> +<li>JDBC Driver class: <span class="code">com.mysql.jdbc.Driver</span> +</li> -<li>Username: the username of database</li> +<li>Username: <em>the username of database</em> +</li> -<li>Password: password for the username</li> +<li>Password: <em>password for the username</em> +</li> </ul> <p>The other fields on the screen can be left as the defaults.</p> <p>JMeter creates a database connection pool with the configuration settings as specified in the Control Panel. -The pool is referred to in JDBC Requests in the 'Variable Name' field. +The pool is referred to in JDBC Requests in the '<span class="code">Variable Name</span>' field. Several different JDBC Configuration elements can be used, but they must have unique names. Every JDBC Request must refer to a JDBC Configuration pool. More than one JDBC Request can refer to the same pool. @@ -372,15 +376,15 @@ are illustrated below.</p> <p>Start by editing the following properties (see Figure 6.5): <ul> -<li>Change the Name to 'VM Running'.</li> +<li>Change the Name to '<span class="code">VM Running</span>'.</li> -<li>Enter the Pool Name: 'myDatabase' (same as in the configuration element)</li> +<li>Enter the Pool Name: '<span class="code">myDatabase</span>' (same as in the configuration element)</li> <li>Enter the SQL Query String field.</li> -<li>Enter the Parameter values field with 'Running' value.</li> +<li>Enter the Parameter values field with '<span class="code">Running</span>' value.</li> -<li>Enter the Parameter types with 'VARCHAR'.</li> +<li>Enter the Parameter types with '<span class="code">VARCHAR</span>'.</li> </ul> @@ -399,9 +403,9 @@ Figure 6.5. JDBC Request for the first S Figure 6.6): <ul> -<li>Change the Name to 'VM Expunging'.</li> +<li>Change the Name to '<span class="code">VM Expunging</span>'.</li> -<li>Change the value of Parameter values to 'Expunging'.</li> +<li>Change the value of Parameter values to '<span class="code">Expunging</span>'.</li> </ul> @@ -475,6 +479,7 @@ Figure 6.7. Graph results Listener</figc </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -490,8 +495,16 @@ Figure 6.7. Graph results Listener</figc </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) {
Modified: jmeter/trunk/docs/usermanual/build-ftp-test-plan.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/build-ftp-test-plan.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/build-ftp-test-plan.html (original) +++ jmeter/trunk/docs/usermanual/build-ftp-test-plan.html Sun Sep 9 15:25:54 2018 @@ -465,6 +465,7 @@ Figure 7.7. View Results in Table Listen </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -480,8 +481,16 @@ Figure 7.7. View Results in Table Listen </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/build-jms-point-to-point-test-plan.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/build-jms-point-to-point-test-plan.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/build-jms-point-to-point-test-plan.html (original) +++ jmeter/trunk/docs/usermanual/build-jms-point-to-point-test-plan.html Sun Sep 9 15:25:54 2018 @@ -493,6 +493,7 @@ Figure 10.2. Graph Results Listener</fig </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -508,8 +509,16 @@ Figure 10.2. Graph Results Listener</fig </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/build-jms-topic-test-plan.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/build-jms-topic-test-plan.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/build-jms-topic-test-plan.html (original) +++ jmeter/trunk/docs/usermanual/build-jms-topic-test-plan.html Sun Sep 9 15:25:54 2018 @@ -469,6 +469,7 @@ Figure 11.4. Graph Results Listener</fig </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -484,8 +485,16 @@ Figure 11.4. Graph Results Listener</fig </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/build-ldap-test-plan.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/build-ldap-test-plan.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/build-ldap-test-plan.html (original) +++ jmeter/trunk/docs/usermanual/build-ldap-test-plan.html Sun Sep 9 15:25:54 2018 @@ -475,6 +475,7 @@ Users element and add a View Results in </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -490,8 +491,16 @@ Users element and add a View Results in </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/build-ldapext-test-plan.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/build-ldapext-test-plan.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/build-ldapext-test-plan.html (original) +++ jmeter/trunk/docs/usermanual/build-ldapext-test-plan.html Sun Sep 9 15:25:54 2018 @@ -975,6 +975,7 @@ this is given in a (self defined) xml-st </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -990,8 +991,16 @@ this is given in a (self defined) xml-st </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/build-monitor-test-plan.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/build-monitor-test-plan.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/build-monitor-test-plan.html (original) +++ jmeter/trunk/docs/usermanual/build-monitor-test-plan.html Sun Sep 9 15:25:54 2018 @@ -416,6 +416,7 @@ performance or a bug of some sort.</p> </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -431,8 +432,16 @@ performance or a bug of some sort.</p> </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/build-test-plan.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/build-test-plan.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/build-test-plan.html (original) +++ jmeter/trunk/docs/usermanual/build-test-plan.html Sun Sep 9 15:25:54 2018 @@ -396,6 +396,7 @@ The status of a sample result can be see </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -411,8 +412,16 @@ The status of a sample result can be see </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/build-web-test-plan.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/build-web-test-plan.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/build-web-test-plan.html (original) +++ jmeter/trunk/docs/usermanual/build-web-test-plan.html Sun Sep 9 15:25:54 2018 @@ -357,7 +357,7 @@ cookies, but shared across all <a href=" <figure> -<a href="../images/screenshots/webtest/http-cookie.png"><img src="../images/screenshots/webtest/http-cookie.png" width="" height="" alt=" +<a href="../images/screenshots/webtest/http-cookie-manager.png"><img src="../images/screenshots/webtest/http-cookie-manager.png" width="" height="" alt=" Figure 4.5. HTTP Cookie Manager"></a> <figcaption> Figure 4.5. HTTP Cookie Manager</figcaption> @@ -503,6 +503,7 @@ Figure 4.8. Sample HTTP login request</f </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -518,8 +519,16 @@ Figure 4.8. Sample HTTP login request</f </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/build-ws-test-plan.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/build-ws-test-plan.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/build-ws-test-plan.html (original) +++ jmeter/trunk/docs/usermanual/build-ws-test-plan.html Sun Sep 9 15:25:54 2018 @@ -417,6 +417,7 @@ You may also need to modify "<span class </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -432,8 +433,16 @@ You may also need to modify "<span class </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/component_reference.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/component_reference.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/component_reference.html (original) +++ jmeter/trunk/docs/usermanual/component_reference.html Sun Sep 9 15:25:54 2018 @@ -245,7 +245,11 @@ <a href="#Mail_Reader_Sampler">Mail Reader Sampler</a> </li> <li> -<a href="#Test_Action">Test Action</a> +<a href="#Flow_Control_Action">Flow Control Action + (was: + Test Action + ) + </a> </li> <li> <a href="#SMTP_Sampler">SMTP Sampler</a> @@ -547,7 +551,14 @@ <a href="#Regular_Expression_Extractor">Regular Expression Extractor</a> </li> <li> -<a href="#CSS/JQuery_Extractor">CSS/JQuery Extractor</a> +<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> @@ -904,11 +915,10 @@ Latency is set to the time it takes to l <pre class="source"> https.sessioncontext.shared=true </pre> - By default, the SSL context is retained for the duration of the test. - The SSL session can be optionally reset for each test iteration. - To enable this, set the JMeter property: + 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"> -https.use.cached.ssl.context=false +httpclient.reset_state_on_thread_group_iteration=true </pre> <div class="clear"></div> @@ -968,13 +978,27 @@ https.default.protocol=SSLv3 </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, 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> -<div class="required req-true">Yes, unless provided by HTTP Request Defaults</div> +<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"> @@ -4660,7 +4684,11 @@ The current implementation is quite basi <div class="component"> -<h2 id="Test_Action">Test Action<a class="sectionlink" href="#Test_Action" title="Link to here">¶</a> +<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">¶</a> </h2> <div class="description"> The Test Action sampler is a sampler that is intended for use in a conditional controller. @@ -4684,14 +4712,14 @@ In non-GUI mode, JMeter will exit if som </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 Test Action"></a> -<figcaption>Screenshot of Control-Panel of Test Action</figcaption> +<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="Test_Action_parms1"> +<h3 id="Flow_Control_Action_parms1"> Parameters - <a class="sectionlink" href="#Test_Action_parms1" title="Link to here">¶</a> + <a class="sectionlink" href="#Flow_Control_Action_parms1" title="Link to here">¶</a> </h3> <div class="property title"> <div class="name title">Attribute</div> @@ -4899,6 +4927,12 @@ Relative paths are resolved against the </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> @@ -6052,6 +6086,12 @@ Please refer to the <a href="../usermanu <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__<Name of your element>__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> @@ -6291,9 +6331,9 @@ This would be the case if the Regular Ex </div> <div class="property"> -<div class="name req-true">Input variable prefix</div> -<div class="description req-true">Prefix for the variable names to be used as input.</div> -<div class="required req-true">Yes</div> +<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"> @@ -6309,10 +6349,10 @@ This would be the case if the Regular Ex </div> <div class="property"> -<div class="name req-true">Output variable</div> -<div class="description req-true"> - The name of the variable which can be used in the loop for replacement in the samplers</div> -<div class="required req-true">Yes</div> +<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"> @@ -8111,18 +8151,23 @@ i.e. 30.0 requests/minute is saved as <s </div> <div class="property"> -<div class="name req-true">Filename Prefix</div> +<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. - </div> + 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</div> +<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. @@ -8133,6 +8178,12 @@ i.e. 30.0 requests/minute is saved as <s </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> @@ -8151,15 +8202,22 @@ i.e. 30.0 requests/minute is saved as <s </div> <div class="property"> -<div class="name req-true">Don't add suffix</div> +<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-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 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> @@ -9222,6 +9280,9 @@ Look at the two sample configuration fil 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 @@ -9326,7 +9387,7 @@ Note that if <span class="code">Cache-Co 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="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a> section 13.2.4. using <span class="code">Last-Modified</span> time and response Date. +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> @@ -9726,9 +9787,9 @@ but if the button is on, a later element <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, -unless the entry value is empty, in which case any existing entry is removed. -This allows one to set up a default set of headers, and apply adjustments to particular samplers. +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> @@ -10726,9 +10787,10 @@ to use a variable other than a property <div class="property"> <div class="name req-false">Random Seed</div> -<div class="description req-false">The seed for the random number generator. Default is the current time in milliseconds. +<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> @@ -10816,9 +10878,11 @@ with the start, continuing on like that </div> <div class="property"> -<div class="name req-true">Reference Name</div> -<div class="description req-true">This controls how you refer to this value in other elements. Syntax is - as in <a href="functions.html">user-defined values</a>: <span class="code">$(reference_name}</span>.</div> +<div class="name req-true">Exported Variable Name</div> +<div class="description req-true">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> +</div> <div class="required req-true">Yes</div> </div> @@ -12557,7 +12621,7 @@ requests, use this timer.</p> 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. +Another way to explain it, in Gaussian Random Timer, the variation around constant offset has a Gaussian curve distribution. </p> </div> @@ -12767,14 +12831,14 @@ Note that the throughput value should no <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 milage might vary (see monitoring section below if your goals are +<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 beginnig, + <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> @@ -12783,7 +12847,7 @@ Note that the throughput value should no <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 suseptible to the issues listed below. For instance, true Poisson arrivals might have indefinitely long + 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> @@ -12848,7 +12912,7 @@ the required load.</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 troughput somehow.</p> + 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 @@ -14388,23 +14452,27 @@ generate the template string, and store <div class="component"> -<h2 id="CSS/JQuery_Extractor">CSS/JQuery Extractor<a class="sectionlink" href="#CSS/JQuery_Extractor" title="Link to here">¶</a> +<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">¶</a> </h2> <div class="description"> -<p>Allows the user to extract values from a server response using a CSS/JQuery selector like syntax. As a post-processor, +<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/JQuery Extractor"></a> -<figcaption>Screenshot of Control-Panel of CSS/JQuery Extractor</figcaption> +<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/JQuery_Extractor_parms1"> +<h3 id="CSS_Selector_Extractor_parms1"> Parameters - <a class="sectionlink" href="#CSS/JQuery_Extractor_parms1" title="Link to here">¶</a> + <a class="sectionlink" href="#CSS_Selector_Extractor_parms1" title="Link to here">¶</a> </h3> <div class="property title"> <div class="name title">Attribute</div> @@ -14450,7 +14518,7 @@ extracting the node as text or attribute </div> <div class="property"> -<div class="name req-false">CSS/JQuery extractor Implementation</div> +<div class="name req-false">CSS Selector Implementation</div> <div class="description req-false"> 2 Implementations for CSS/JQuery based syntax are supported: <ul> @@ -14620,12 +14688,160 @@ extracting the node as text or attribute <div class="component"> +<h2 id="XPath2_Extractor">XPath2 Extractor<a class="sectionlink" href="#XPath2_Extractor" title="Link to here">¶</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">¶</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"><title>Apache JMeter</title></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><variable name></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">¶</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> + <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> @@ -14686,7 +14902,7 @@ extracting the node as text or attribute </ul> <div class="clear"></div> -<div class="note">For HTML, CSS/JQuery Extractor is the correct and performing solution. Don't use XPath for HTML extractions.</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> @@ -15442,7 +15658,7 @@ generate the template string, and store <div class="property"> <div class="name req-true">Right Boundary</div> -<div class="description req-true">Left boundary of value to find</div> +<div class="description req-true">Right boundary of value to find</div> <div class="required req-true">Yes</div> </div> @@ -16234,7 +16450,7 @@ Both Chrome and Internet Explorer use th <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 choosen name (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> @@ -16998,6 +17214,7 @@ If Test Plan is stopped, tearDown will n </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -17013,8 +17230,16 @@ If Test Plan is stopped, tearDown will n </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/functions.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/functions.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/functions.html (original) +++ jmeter/trunk/docs/usermanual/functions.html Sun Sep 9 15:25:54 2018 @@ -286,6 +286,10 @@ Alternatively, just use <span class="cod </tr> <tr> +<td>Information</td><td> <a href="#__threadGroupName">threadGroupName</a></td><td>get thread group name</td><td>4.1</td> +</tr> + +<tr> <td>Information</td><td> <a href="#__samplerName">samplerName</a></td><td>get the sampler name (label)</td><td>2.5</td> </tr> @@ -903,6 +907,34 @@ Nor does it make sense to use it on the <div class="component"> +<h2 id="__threadGroupName">__threadGroupName<a class="sectionlink" href="#__threadGroupName" title="Link to here">¶</a> +</h2> +<div class="description"> +<p>The thread group name function simply returns the name of the thread group +being executed.</p> + + +<p>There are no arguments for this function.</p> + +<p>Usage Example: +<pre class="source">${__threadGroupName}</pre> + +</p> + +</div> +<div class="clear"></div> +<div class="note"> +This function does not work in any Configuration elements (e.g. User Defined Variables) as these are run from a separate thread. +Nor does it make sense to use it on the Test Plan. +</div> +<div class="clear"></div> +<div class="go-top"> +<a href="#">^</a> +</div> +</div> + + +<div class="component"> <h2 id="__intSum">__intSum<a class="sectionlink" href="#__intSum" title="Link to here">¶</a> </h2> <div class="description"> @@ -1600,11 +1632,15 @@ The variables can be simple or multi-val <ul> <li> +<a href="component_reference.html#Boundary_Extractor">Boundary Extractor</a> +</li> + +<li> <a href="component_reference.html#Regular_Expression_Extractor">Regular Expression Extractor</a> </li> <li> -<a href="component_reference.html#CSS/JQuery_Extractor">CSS/JQuery Extractor</a> +<a href="component_reference.html#CSS_Selector_Extractor">CSS Selector Extractor</a> </li> <li> @@ -1612,7 +1648,11 @@ The variables can be simple or multi-val </li> <li> -<a href="component_reference.html#XPath_Assertion">XPath Assertion</a> +<a href="component_reference.html#XPath_Extractor">XPath Extractor</a> +</li> + +<li> +<a href="component_reference.html#XPath2_Extractor">XPath2 Extractor</a> </li> </ul> @@ -1683,7 +1723,7 @@ This leads to creation of match number v </div> <p>Examples: -<pre class="source">${UUID()}</pre> will return UUIDs with this format : <span class="code">c69e0dd1-ac6b-4f2b-8d59-5d4e8743eecd</span> +<pre class="source">${__UUID()}</pre> will return UUIDs with this format : <span class="code">c69e0dd1-ac6b-4f2b-8d59-5d4e8743eecd</span> <br> </p> @@ -2881,6 +2921,14 @@ i.intValue(); // or use i.longValue() </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"> + The default value in case no variable found, if it's empty and no variable found function returns the variable name + </div> +<div class="required req-false">No</div> +</div> </div> <div class="go-top"> @@ -3251,7 +3299,7 @@ Function to encode a string to a <span c </p> <p> -For example, the string <pre class="source">${__urldecode(Word "school" is "école" in french)}</pre> returns +For example, the string <pre class="source">${__urlencode(Word "school" is "école" in french)}</pre> returns <span class="code">Word+%22school%22+is+%22%C3%A9cole%22+in+french</span>. </p> @@ -3727,15 +3775,15 @@ returns: <div class="property"> <div class="name req-true">Date String</div> <div class="description req-true"> - The date string to convert from Source Date Format to Target Date Format. + The date string to convert from Source Date Format to Target Date Format. A date as a epoch time could be use here if Source Date Format is empty. </div> <div class="required req-true">Yes</div> </div> <div class="property"> -<div class="name req-true">Source Date Format</div> -<div class="description req-true">The original date format</div> -<div class="required req-true">Yes</div> +<div class="name req-false">Source Date Format</div> +<div class="description req-false">The original date format. If empty, the Date String field must be a epoch time.</div> +<div class="required req-false">No</div> </div> <div class="property"> @@ -3755,6 +3803,9 @@ returns: <pre class="source">${__dateTimeConvert(01212018,MMddyyyy,dd/MM/yyyy,)}</pre> returns <span class="code">21/01/2018</span> </p> +<p> + With epoch time value: 1526574881000, <pre class="source">${__dateTimeConvert(1526574881000,,dd/MM/yyyy HH:mm,)}</pre> returns <span class="code">17/05/2018 16:34</span> in UTC time(-Duser.timezone=GMT) + </p> <div class="go-top"> <a href="#">^</a> </div> @@ -4000,6 +4051,7 @@ They are mainly intended for use in file </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -4015,8 +4067,16 @@ They are mainly intended for use in file </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/generating-dashboard.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/generating-dashboard.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/generating-dashboard.html (original) +++ jmeter/trunk/docs/usermanual/generating-dashboard.html Sun Sep 9 15:25:54 2018 @@ -368,10 +368,24 @@ <h2 id="configuration_requirements">14.2.1 Requirements<a class="sectionlink" href="#configuration_requirements" title="Link to here">¶</a> </h2> +<div class="subsection"> +<h2 id="saveservice_requirements">14.2.1.1 Filtering configuration<a class="sectionlink" href="#saveservice_requirements" title="Link to here">¶</a> +</h2> + Ensure you set property <span class="code">jmeter.reportgenerator.exporter.html.series_filter</span> to keep only the transactions + you want in the report if you don't want everything.<br> + In the example below you must only modify <span class="code">Search|Order</span>, keep the rest: + <pre class="source">jmeter.reportgenerator.exporter.html.series_filter=^(Search|Order)(-success|-failure)?$</pre> + +</div> + +<div class="subsection"> +<h2 id="saveservice_requirements">14.2.1.2 Save Service configuration<a class="sectionlink" href="#saveservice_requirements" title="Link to here">¶</a> +</h2> + <p> - To enable the generator to operate, the input CSV files - must include certain required data. Check that your JMeter - configuration follows these settings (these are the defaults): + To enable the generator to operate, the CSV file generated by JMeter + must include certain required data which <b>are correct by default in the last live version</b> of JMeter.<br> + If you modified those settings, check that your JMeter configuration follows these settings (these are the defaults): <pre class="source"> jmeter.save.saveservice.bytes = true # Only available with HttpClient4 @@ -385,67 +399,56 @@ jmeter.save.saveservice.thread_counts = jmeter.save.saveservice.thread_name = true jmeter.save.saveservice.time = true jmeter.save.saveservice.connect_time = true +jmeter.save.saveservice.assertion_results_failure_message = true # the timestamp format must include the time and should include the date. # For example the default, which is milliseconds since the epoch: jmeter.save.saveservice.timestamp_format = ms # Or the following would also be suitable -jmeter.save.saveservice.timestamp_format = yyyy/MM/dd HH:mm:ss +# jmeter.save.saveservice.timestamp_format = yyyy/MM/dd HH:mm:ss </pre> + +</p> + +</div> + +<div class="subsection"> +<h2 id="transaction_controller_requirements">14.2.1.3 Transaction Controller configuration<a class="sectionlink" href="#transaction_controller_requirements" title="Link to here">¶</a> +</h2> + +<p> + If you use <span class="code">Transaction Controller</span>s, to ensure most accurate results: + <ul> -<div class="clear"></div> -<div class="note"> - The input CSV file must include the timeStamp - </div> -<div class="clear"></div> - -<div class="clear"></div> -<div class="note"> - To ensure most accurate results, if you use a transaction controller, uncheck the box: - <span class="code">Generate parent sample</span> - +<li>uncheck the box (<b>this is the default configuration</b>): + <span class="code">Generate parent sample</span> + <figure> <a href="../images/screenshots/transactioncontroller.png"><img src="../images/screenshots/transactioncontroller.png" width="" height="" alt=""></a> <figcaption></figcaption> </figure> -</div> -<div class="clear"></div> - -<div class="clear"></div> -<div class="note"> - The "<span class="code">Errors</span>" summary table shows more - accurate data if these settings are fulfilled: - <ul> - -<li> -<pre class="source">jmeter.save.saveservice.assertion_results_failure_message = true</pre> </li> - + <li> - If you use a transaction controller, uncheck the box - <span class="code">Generate parent sample</span> - -<figure> -<a href="../images/screenshots/transactioncontroller.png"><img src="../images/screenshots/transactioncontroller.png" width="" height="" alt=""></a> + If <span class="code">Transaction Controller</span> is used as a Container to represent a request for an HTML Page that will trigger Ajax calls and you + only want in your report the Transaction Controller, then Right click on the node and Apply Naming Policy + <figure> +<a href="../images/screenshots/apply_naming_policy1.png"><img src="../images/screenshots/apply_naming_policy1.png" width="" height="" alt=""></a> +<figcaption></figcaption> +</figure> + You will obtain this: + <figure> +<a href="../images/screenshots/apply_naming_policy2.png"><img src="../images/screenshots/apply_naming_policy2.png" width="" height="" alt=""></a> <figcaption></figcaption> </figure> - -</li> - -</ul> -</div> -<div class="clear"></div> +</li> -<div class="clear"></div> -<div class="note">When using JMeter distributed mode with multiple jmeter-server instances, ensure you add in your Thread Groups something that uniquely identifies ThreadGroup for every JVM, example: - <pre class="source">ThreadXXX_${__P(JVM_ID)}</pre> - where you pass a different JVM_ID property for each jmeter-server through: - <pre class="source">-JJVM_ID=i</pre> where <span class="code">i</span> varies between 1 and the number of jmeter-server you are using. - </div> -<div class="clear"></div> +</ul> </p> + +</div> </div> @@ -1508,7 +1511,74 @@ jmeter.reportgenerator.exporter.html.fil </div> <div class="subsection"> -<h2 id="development">14.5 Want to improve Report Dashboard ?<a class="sectionlink" href="#development" title="Link to here">¶</a> +<h2 id="customs_graphs">14.5 Generating customs graphs over time<a class="sectionlink" href="#customs_graphs" title="Link to here">¶</a> +</h2> + +<p> + You can graph any sample_variable in CSV over time, you can customize your graphs + by settings their properties in the user.properties file. + <br> + They must use the id prefix <span class="code">custom_</span>: + <pre class="source">jmeter.reportgenerator.graph.custom_<your_graph_name_id>.property.<your_option_name></pre> + To specify that this graph is a customized one : + <pre class="source">jmeter.reportgenerator.graph.custom_<your_graph_name_id>.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer</pre> + +</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-true">set_X_Axis</div> +<div class="description req-true">Sets the X axis name of the graph.</div> +<div class="required req-true">Yes</div> +</div> + +<div class="property"> +<div class="name req-true">set_Y_Axis</div> +<div class="description req-true">Sets the Y axis name of the graph.</div> +<div class="required req-true">Yes</div> +</div> + +<div class="property"> +<div class="name req-true">set_Content_Message</div> +<div class="description req-true">Sets the displayed message when the cursor is on a point of the graph.</div> +<div class="required req-true">Yes</div> +</div> + +<div class="property"> +<div class="name req-true">set_Sample_Variable_Name</div> +<div class="description req-true">Name of the column you want to graph in the csv.</div> +<div class="required req-true">Yes</div> +</div> + +</div> + + +<p>Here is an example of a custom graph configuration that graphs the variable <span class="code">ts-hit</span>: </p> + +<pre class="source"> +jmeter.reportgenerator.graph.custom_testGraph.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer +jmeter.reportgenerator.graph.custom_testGraph.title=Chunk Hit +jmeter.reportgenerator.graph.custom_testGraph.property.set_Y_Axis=Number of Hits +jmeter.reportgenerator.graph.custom_testGraph.set_X_Axis=Over Time +jmeter.reportgenerator.graph.custom_testGraph.property.set_granularity=60000 +jmeter.reportgenerator.graph.custom_testGraph.property.set_Sample_Variable_Name=ts-hit +jmeter.reportgenerator.graph.custom_testGraph.property.set_Content_Message=Number of Hits : + </pre> + +</div> + + +<div class="subsection"> +<h2 id="development">14.6 Want to improve Report Dashboard ?<a class="sectionlink" href="#development" title="Link to here">¶</a> </h2> If you want to contribute new graphs or improve current ones, you can read this <a href="../devguide-dashboard.html">developer documentation</a>.<br> @@ -1542,6 +1612,7 @@ jmeter.reportgenerator.exporter.html.fil </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -1557,8 +1628,16 @@ jmeter.reportgenerator.exporter.html.fil </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/get-started.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/get-started.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/get-started.html (original) +++ jmeter/trunk/docs/usermanual/get-started.html Sun Sep 9 15:25:54 2018 @@ -250,7 +250,7 @@ The first step is to configure the injec <li>Java setup: Ensure you install the latest version of Java supported by JMeter</li> <li> -<b>Correct sizing of Java Heap</b>. By default JMeter runs with a heap of 512MB, this might not be enough for your test and depends on your test plan and number of threads you want to run</li> +<b>Increase the Java Heap size</b>. By default JMeter runs with a heap of 1 GB, this might not be enough for your test and depends on your test plan and number of threads you want to run</li> </ul> @@ -669,7 +669,7 @@ jmeter -t test.jmx … <dt> <span class="code">HEAP</span> </dt> -<dd>JVM memory settings used when starting JMeter. Defaults to <span class="code">-Xms512m -Xmx512m -XX:MaxMetaspaceSize=256m</span> +<dd>JVM memory settings used when starting JMeter. Defaults to <span class="code">-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m</span> </dd> <dt> @@ -691,7 +691,7 @@ jmeter -t test.jmx … <dt> <span class="code">JMETER_LANGUAGE</span> </dt> -<dd>Java runtime options to specify used languauge. Defaults to: <span class="code">-Duser.language="en" -Duser.region="EN"</span> +<dd>Java runtime options to specify used language. Defaults to: <span class="code">-Duser.language="en" -Duser.region="EN"</span> </dd> <dt> @@ -787,7 +787,7 @@ export JMETER_LANGUAGE=" " <dt> <span class="code">HEAP</span> </dt> -<dd>Java runtime options for memory management used when JMeter is started. Defaults to <span class="code">-Xms512m -Xmx512m -X:MaxMetaspaceSize=256m</span> +<dd>Java runtime options for memory management used when JMeter is started. Defaults to <span class="code">-Xms1g -Xmx1g -X:MaxMetaspaceSize=256m</span> </dd> <dt> @@ -1569,7 +1569,7 @@ These are shown below.</p> -S, --systemPropertyFile <argument> additional system property file(s) -f, --forceDeleteResultFile - force delete existing results files before start the test + force delete existing results files and web report folder if present before starting the test -L, --loglevel <argument>=<value> [category=]level e.g. jorphan=INFO, jmeter.util=DEBUG or com.example.foo=WARN -r, --runremote @@ -1830,6 +1830,7 @@ See also the comments in the <span class </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -1845,8 +1846,16 @@ See also the comments in the <span class </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/glossary.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/glossary.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/glossary.html (original) +++ jmeter/trunk/docs/usermanual/glossary.html Sun Sep 9 15:25:54 2018 @@ -321,6 +321,7 @@ The formula is: Throughput = (number of </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -336,8 +337,16 @@ The formula is: Throughput = (number of </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/hints_and_tips.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/hints_and_tips.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/hints_and_tips.html (original) +++ jmeter/trunk/docs/usermanual/hints_and_tips.html Sun Sep 9 15:25:54 2018 @@ -596,6 +596,7 @@ will match any component that contains t </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -611,8 +612,16 @@ will match any component that contains t </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/history_future.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/history_future.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/history_future.html (original) +++ jmeter/trunk/docs/usermanual/history_future.html Sun Sep 9 15:25:54 2018 @@ -261,6 +261,7 @@ The primary goal of further developments </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -276,8 +277,16 @@ The primary goal of further developments </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/include_controller_tutorial.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/include_controller_tutorial.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/include_controller_tutorial.html (original) +++ jmeter/trunk/docs/usermanual/include_controller_tutorial.html Sun Sep 9 15:25:54 2018 @@ -322,6 +322,7 @@ as the root and add other controllers to </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -337,8 +338,16 @@ as the root and add other controllers to </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/index.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/index.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/index.html (original) +++ jmeter/trunk/docs/usermanual/index.html Sun Sep 9 15:25:54 2018 @@ -839,6 +839,7 @@ </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -854,8 +855,16 @@ </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/jmeter_accesslog_sampler_step_by_step.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/jmeter_accesslog_sampler_step_by_step.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/jmeter_accesslog_sampler_step_by_step.html (original) +++ jmeter/trunk/docs/usermanual/jmeter_accesslog_sampler_step_by_step.html Sun Sep 9 15:25:54 2018 @@ -396,6 +396,7 @@ or from the menu </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -411,8 +412,16 @@ or from the menu </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/jmeter_distributed_testing_step_by_step.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/jmeter_distributed_testing_step_by_step.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/jmeter_distributed_testing_step_by_step.html (original) +++ jmeter/trunk/docs/usermanual/jmeter_distributed_testing_step_by_step.html Sun Sep 9 15:25:54 2018 @@ -529,6 +529,7 @@ to stop the Linux firewall or ensure you </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -544,8 +545,16 @@ to stop the Linux firewall or ensure you </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/jmeter_proxy_step_by_step.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/jmeter_proxy_step_by_step.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/jmeter_proxy_step_by_step.html (original) +++ jmeter/trunk/docs/usermanual/jmeter_proxy_step_by_step.html Sun Sep 9 15:25:54 2018 @@ -603,6 +603,7 @@ At the end of the test, an HTML report w </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -618,8 +619,16 @@ At the end of the test, an HTML report w </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/jmeter_tutorial.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/jmeter_tutorial.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/jmeter_tutorial.html (original) +++ jmeter/trunk/docs/usermanual/jmeter_tutorial.html Sun Sep 9 15:25:54 2018 @@ -1567,6 +1567,7 @@ Here are some example commands. </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -1582,8 +1583,16 @@ Here are some example commands. </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) { Modified: jmeter/trunk/docs/usermanual/junitsampler_tutorial.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/junitsampler_tutorial.html?rev=1840418&r1=1840417&r2=1840418&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/junitsampler_tutorial.html (original) +++ jmeter/trunk/docs/usermanual/junitsampler_tutorial.html Sun Sep 9 15:25:54 2018 @@ -529,6 +529,7 @@ runs multi-threaded, it is important to </li> </ul> </div> +<a href="#top" id="topButton">Go to top</a> </div> <div class="footer"> <div class="copyright"> @@ -544,8 +545,16 @@ runs multi-threaded, it is important to </div> </div> <script>(function(){ - // fill in the current location into social links on this page. "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')) {