| <?xml version="1.0"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <!DOCTYPE document [ |
| <!ENTITY vellip "⋮" > |
| <!ENTITY hellip "…"> |
| <!ENTITY le "≤"> |
| <!ENTITY nbsp " "> |
| <!ENTITY oacute "ó"> |
| <!ENTITY THORN "Þ"> |
| <!ENTITY rarr "→"> |
| <!ENTITY rArr "⇒"> |
| ]> |
| <document> |
| <properties> |
| <author email="dev AT jmeter.apache.org">JMeter developers</author> |
| <title>History of Previous Changes</title> |
| </properties> |
| <body> |
| <section name="History of Previous Changes"> |
| <note> |
| <b>This page details the changes made in previous versions only.</b> |
| <br></br> |
| Current changes are detailed in <a href="changes.html">Changes</a>. |
| </note> |
| <p><b>Changes sections are chronologically ordered from top (most recent) to bottom |
| (least recent)</b></p> |
| |
| <!-- =================== 5.1.1 =================== --> |
| |
| <h1>Version 5.1.1</h1> |
| <p> |
| Summary |
| </p> |
| <ul> |
| <li><a href="#New and Noteworthy">New and Noteworthy</a></li> |
| <li><a href="#Incompatible changes">Incompatible changes</a></li> |
| <li><a href="#Bug fixes">Bug fixes</a></li> |
| <li><a href="#Improvements">Improvements</a></li> |
| <li><a href="#Non-functional changes">Non-functional changes</a></li> |
| <li><a href="#Known problems and workarounds">Known problems and workarounds</a></li> |
| <li><a href="#Thanks">Thanks</a></li> |
| |
| </ul> |
| |
| <ch_section>New and Noteworthy</ch_section> |
| <p> |
| This release is mainly a bugfix release. Please see the <a href="changes_history.html">Changes history page</a> |
| to view the last major behaviors with the version 5.1. |
| </p> |
| <!-- |
| <ch_title>Core improvements</ch_title> |
| <ch_title>UX improvements</ch_title> |
| <ch_title>Test Plan</ch_title> |
| <ch_title>Scripting / Debugging enhancements</ch_title> |
| --> |
| <ch_title>Live Reporting and Web Report</ch_title> |
| <p>A new menu entry has been added to the <b>Tools</b> menu. It's allow to generate |
| a results report from a previous CSV/JTL file. |
| <figure width="1209" height="341" image="changes/5.1.1/01_menu_generate_report.png" /> |
| <br/> |
| <figure width="1624" height="565" image="changes/5.1.1/02_windows_generate_report.png" /> |
| </p> |
| <!-- |
| <ch_title>Functions</ch_title> |
| --> |
| <!-- =================== Incompatible changes =================== --> |
| |
| <ch_section>Incompatible changes</ch_section> |
| <ul> |
| </ul> |
| <!-- =================== Improvements =================== --> |
| |
| <ch_section>Improvements</ch_section> |
| |
| <h3>HTTP Samplers and Test Script Recorder</h3> |
| <ul> |
| <li><bug>62977</bug>Allow sending HTTP requests without a default User-Agent header</li> |
| </ul> |
| |
| <h3>Other samplers</h3> |
| <ul> |
| <li><bug>63185</bug>LDAP related elements: Add option to implicitly trust SSL/TLS connections/Disable hostname verification. Based on contribution by Brian Wolfe (wolfebrian2120 at gmail.com)</li> |
| </ul> |
| |
| <h3>Controllers</h3> |
| <ul> |
| </ul> |
| |
| <h3>Listeners</h3> |
| <ul> |
| </ul> |
| |
| <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> |
| <ul> |
| <li><bug>63178</bug>CSS Selector Extractor: Improve performance of JODD (JoddExtractor) based implementation</li> |
| </ul> |
| |
| <h3>Functions</h3> |
| <ul> |
| </ul> |
| |
| <h3>I18N</h3> |
| <ul> |
| </ul> |
| |
| <h3>Report / Dashboard</h3> |
| <ul> |
| <li><bug>59896</bug> Report / Dashboard: Add a menu entry to generate a report on demand from a CSV file. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| </ul> |
| |
| <h3>General</h3> |
| <ul> |
| <li><pr>444</pr>Update to latest Spock v1.2 (was 1.0). Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><pr>446</pr>Improve Unit tests readability and use of Spock. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| </ul> |
| |
| <ch_section>Non-functional changes</ch_section> |
| <ul> |
| <li><bug>63203</bug>Unit Tests: Replace use of <code>@Deprecated</code> by <code>@VisibleForTesting</code> for methods/constructors/classes made public for Unit Testing only</li> |
| <li><pr>449</pr>Refactor and Test ResponseTimePercentilesOverTimeGraphConsumer. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><pr>450</pr>Abstract graph consumer improvements. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><pr>451</pr>Improve a few unit tests and classes. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| </ul> |
| |
| <!-- =================== Bug fixes =================== --> |
| |
| <ch_section>Bug fixes</ch_section> |
| |
| <h3>HTTP Samplers and Test Script Recorder</h3> |
| <ul> |
| </ul> |
| |
| <h3>Other Samplers</h3> |
| <ul> |
| <li><bug>63202</bug>JMS Publisher: ObjectMessageRenderer creates XStream instance with uninitialized security</li> |
| </ul> |
| |
| <h3>Controllers</h3> |
| <ul> |
| </ul> |
| |
| <h3>Listeners</h3> |
| <ul> |
| <li><bug>63204</bug><code>RenderAsJSON#prettyJSON</code>: <code>JSONParser#parse</code> cannot return JSONValue</li> |
| </ul> |
| |
| <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> |
| <ul> |
| <li><bug>62446</bug>Counter documentation is wrong in required fieds. Contributed by orimarko at gmail.com</li> |
| <li><bug>62327</bug>TestPlan: In library table if path is modified and plan saved, the modification is lost on file reload</li> |
| </ul> |
| |
| <h3>Functions</h3> |
| <ul> |
| <li><bug>63241</bug><code>__threadGroupName</code> causes a NullPointerException if called from non Test threads</li> |
| </ul> |
| |
| <h3>I18N</h3> |
| <ul> |
| </ul> |
| |
| <h3>Report / Dashboard</h3> |
| <ul> |
| <li><bug>63198</bug>Response Time Vs Request and Latency Vs Request graphs don't line up with throughput. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| </ul> |
| |
| <h3>Documentation</h3> |
| <ul> |
| </ul> |
| |
| <h3>General</h3> |
| <ul> |
| <li><bug>63201</bug>SearchTreeDialog disappears behind master JFrame. Contributed by Benoit Vatan (benoit.vatan at gmail.com)</li> |
| <li><bug>63220</bug><code>Function Helper Dialog</code>, <code>Export transactions for report</code> and <code>Import from cURL</code> disappear being master JFrame. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>63207</bug>java.lang.NullPointerException: null when run Jmeter 5.1 with proxy options</li> |
| <li><bug>58183</bug>Rampup may not be respected if thread take time to start leading to threads continuing to start post ramp up time</li> |
| </ul> |
| |
| <!-- =================== Thanks =================== --> |
| |
| <ch_section>Thanks</ch_section> |
| <p>We thank all contributors mentioned in bug and improvement sections above: |
| </p> |
| <ul> |
| <li><a href="https://ubikloadpack.com">Ubik Load Pack</a></li> |
| <li>Benoit Vatan (benoit.vatan at gmail.com)</li> |
| <li>Graham Russell (graham at ham1.co.uk)</li> |
| <li>Brian Wolfe (wolfebrian2120 at gmail.com)</li> |
| <li>orimarko at gmail.com</li> |
| </ul> |
| <p>We also thank bug reporters who helped us improve JMeter.</p> |
| <ul> |
| </ul> |
| <p> |
| Apologies if we have omitted anyone else. |
| </p> |
| <!-- =================== Known bugs or issues related to JAVA Bugs =================== --> |
| |
| <ch_section>Known problems and workarounds</ch_section> |
| <ul> |
| <li>The Once Only controller behaves correctly under a Thread Group or Loop Controller, |
| but otherwise its behaviour is not consistent (or clearly specified).</li> |
| |
| <li> |
| The numbers that appear to the left of the green box are the number of active threads / total number of threads, |
| the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>). |
| </li> |
| |
| <li> |
| Note that under some windows systems you may have this WARNING: |
| <source> |
| java.util.prefs.WindowsPreferences |
| WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0 |
| x80000002. Windows RegCreateKeyEx(…) returned error code 5. |
| </source> |
| The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore. |
| </li> |
| |
| <li> |
| You may encounter the following error: |
| <source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source> |
| 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 <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits. |
| This error is related to increased security in Java 8+. |
| <br></br> |
| To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing |
| the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case. |
| <br></br> |
| This property is in this file: |
| <source>JAVA_HOME/jre/lib/security/java.security</source> |
| See <bugzilla>56357</bugzilla> for details. |
| </li> |
| |
| <li> |
| Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers. |
| This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a> |
| The fix is to use JDK8_u45 or later. |
| </li> |
| |
| <li> |
| View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>. |
| This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes. |
| See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a> |
| The fix is to use JDK9 b65 or later. |
| </li> |
| |
| <li> |
| JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX. |
| This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a> |
| The fix is to use JDK 8 b132 or later. |
| </li> |
| </ul> |
| |
| <!-- =================== 5.1 =================== --> |
| |
| <h1>Version 5.1</h1> |
| <p> |
| Summary |
| </p> |
| <ul> |
| <li><a href="#New and Noteworthy">New and Noteworthy</a></li> |
| <li><a href="#Incompatible changes">Incompatible changes</a></li> |
| <li><a href="#Bug fixes">Bug fixes</a></li> |
| <li><a href="#Improvements">Improvements</a></li> |
| <li><a href="#Non-functional changes">Non-functional changes</a></li> |
| <li><a href="#Known problems and workarounds">Known problems and workarounds</a></li> |
| <li><a href="#Thanks">Thanks</a></li> |
| |
| </ul> |
| |
| <ch_section>New and Noteworthy</ch_section> |
| <ch_title>Core improvements</ch_title> |
| <p>JDBC testing has been improved with ability to set init SQL statements and add |
| compatibility with JDBC drivers that do not support QueryTimeout |
| <figure width="1122" height="727" image="changes/5.1/jdbc-connection-config-init-request.png" /> |
| </p> |
| <ul> |
| <li>Various bug fixes have been implemented, like gathering the correct headers when recording requests through the HTTP(S) Test Script Recorder using HTTPS</li> |
| <li>In version 5.0, JMeter was changed to rename Sub results using a custom Naming Policy (<bugzilla>62550</bugzilla>). This change could be annoying for Functional Testing, a new property |
| <code>subresults.disable_renaming=true</code> has been introduced to revert if needed to previous behaviour. An alternative is to check <code>Functional Test Mode</code> in Test Plan, see <bugzilla>63055</bugzilla></li> |
| </ul> |
| <ch_title>UX improvements</ch_title> |
| <p>Templates can provide parameters that are filled in on test plan generation, |
| <code>Recording</code> template uses this feature |
| <figure width="726" height="453" image="changes/5.1/templates-parametes.png" /> |
| </p> |
| <p>A new <code>Tools</code> menu has been introduced to collect those entries, |
| that are used for general usage around JMeter, like: |
| <ul> |
| <li><code>Function Helper Dialog</code></li> |
| <li><code>Export transactions for report</code></li> |
| <li><code>Generate Schematic View</code> which provides an overview as HTML of the Test plan</li> |
| <li><code>Import from cURL</code> which allows you to create or update your test plan by importing a cURL command</li> |
| <li><code>Compile JSR223 Test Elements</code></li> |
| <li><code>Create a heap dump</code></li> |
| <li><code>Create a thread dump</code></li> |
| </ul> |
| <figure width="268" height="237" image="changes/5.1/jmeter-new-menu-tools.png" /> |
| </p> |
| <ch_title>Test Plan</ch_title> |
| <p>Ability to create a Test plan from a cURL command. |
| <figure width="1026" height="439" image="changes/5.1/http-request-from-curl-request.png" /> |
| </p> |
| <ch_title>Scripting / Debugging enhancements</ch_title> |
| <ul> |
| <li>A menu item to compile all JSR223 Elements is now available in <code>Tools</code> menu</li> |
| </ul> |
| <ch_title>Live Reporting and Web Report</ch_title> |
| <ul> |
| <li>A JSON file containing summary of a load test statistics is now generated when using <code>-e</code> or <code>-g</code> options.</li> |
| <li>Percentiles computing graphed over time algorithm has been modified to restart for each time slot</li> |
| <li>More user-friendly behaviour when reporting folder does not exist or is not empty through <code>-f</code> command line option</li> |
| </ul> |
| <!-- |
| <ch_title>Functions</ch_title> |
| --> |
| <!-- =================== Incompatible changes =================== --> |
| |
| <ch_section>Incompatible changes</ch_section> |
| <ul> |
| <li>In <code>Response Time Percentiles Over Time (successful responses)</code> graph of the HTML report, before this version, percentile computation of each time slot used the percentile data |
| of previous time slot as a base. Starting with this version, each time slot is independant. See <bugzilla>62883</bugzilla></li> |
| <li><code>ClientJMeterEngine#rsetProperties</code> signature has been changed to use <code>HashMap<String,String></code> instead of Properties, see <bugzilla>63034</bugzilla></li> |
| <li>A new Menu item <code>Tools</code> has been introduced, some menu items that were in <code>Help</code> menu are now under this new menu item. See <bugzilla>63094</bugzilla> |
| </li> |
| <li><code>slf4j-ext</code> has been removed from libraries (lib folder) and JMeter pom. It was not used by default and due to CVE-2018-8088 and unavailability of a stable version |
| containing a fix to this issue, we decided to remove it. If you still needed, you can add it in lib folder.</li> |
| </ul> |
| <!-- =================== Improvements =================== --> |
| |
| <ch_section>Improvements</ch_section> |
| |
| <h3>HTTP Samplers and Test Script Recorder</h3> |
| <ul> |
| <li><bug>62840</bug>HTTP Request: Add option <code>httpclient4.gzip_relax_mode</code> to avoid error when unzipping what seems to be invalid streams</li> |
| <li><bug>63025</bug>Enhance Search & Replace functionality for HTTP Request to include port and protocol field. Initial code fix by Mohamed Ibrahim (rollno748 at gmail.com)</li> |
| </ul> |
| |
| <h3>Other samplers</h3> |
| <ul> |
| <li><bug>62934</bug>Add compatibility for JDBC drivers that do not support QueryTimeout </li> |
| <li><bug>62935</bug>Pass custom <code>mail.*</code> properties to Mail Reader Sampler. Implemented by Artem Fedorov (artem.fedorov at blazemeter.com) and contributed by BlazeMeter.</li> |
| <li><bug>63055</bug>Don't rename SampleResult Label when test is running in Functional mode or property <code>subresults.disable_renaming=true</code>. Implemented by Artem Fedorov (artem.fedorov at blazemeter.com) and contributed by BlazeMeter.</li> |
| </ul> |
| |
| <h3>Controllers</h3> |
| <ul> |
| </ul> |
| |
| <h3>Listeners</h3> |
| <ul> |
| <li><bug>62822</bug><pr>407</pr>Render uninitialized min and max values in Summary Report as <code>#N/A</code></li> |
| </ul> |
| |
| <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> |
| <ul> |
| <li><bug>62766</bug>Keystore Config: We should load all aliases by default. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62832</bug>JDBC Connection Configuration: Be able to set init SQL statements. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| </ul> |
| |
| <h3>Functions</h3> |
| <ul> |
| <li><bug>63037</bug>When using <code>CSVRead</code> search the script base path for files, too.</li> |
| </ul> |
| |
| <h3>I18N</h3> |
| <ul> |
| </ul> |
| |
| <h3>Report / Dashboard</h3> |
| <ul> |
| <li><bug>62883</bug>Report / Dashboard: Change the way percentiles are computed for Response Time Percentiles Over Time (successful responses) graph</li> |
| <li><bug>63060</bug>Report Generator: A generator should only check for folder/files it generates and only delete those ones</li> |
| <li><bug>63059</bug>Create a new JsonExporter that exports as JSON the content of data computed for HTML Dashboard Statistics table. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>63081</bug>Command line Option <code>-f</code> does not delete report folder when using generation only through command line option <code>-g</code>. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| </ul> |
| |
| <h3>General</h3> |
| <ul> |
| <li><bug>62959</bug>Ability to create a Test plan from a cURL command. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><pr>394</pr>Allow <code>null</code> values in <code>FieldStringEditor</code>. Based on patch by Mingun (alexander_sergey at mail.ru)</li> |
| <li><bug>62826</bug>When changing LAF, make JMeter restart if user clicks yes to popup</li> |
| <li><bug>62257</bug><pr>401</pr>Expand/Collapse short key <keysym>-</keysym> (minus sign) on numpad doesn't work. Contributed by Ori Marko (orimarko at gmail.com)</li> |
| <li><bug>62752</bug>Add to Documentation: <code>ctx.getThreadNum()</code> is zero-based while <code>${__threadNum}</code> is one-based</li> |
| <li><pr>411</pr>Use <code>SHA-1</code> instead of <code>SHA1</code> in <code>org.apache.jmeter.save.SaveService</code>. Contributed by Paco (paco.xu at daocloud.io)</li> |
| <li><bug>62914</bug>Add a hint in Thread Group UI about duration of test</li> |
| <li><bug>62925</bug>Add support for ThreadDump to the JMeter non-GUI</li> |
| <li><bug>62870</bug>Templates: Add ability to provide parameters. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62829</bug>Allow specifying Proxy server scheme for HTTP request sampler, Advanced tab and command line option. Contributed by Hitesh Patel (hitesh.h.patel at gmail.com)</li> |
| <li><bug>59633</bug>Menus <code>Save Test Plan as</code>, <code>Save as Test Fragment</code> and <code>Save Selection as ...</code> should use a new file name in File Dialog</li> |
| <li><bug>61486</bug>Make jmeter-server and non GUI mode run headless</li> |
| <li><bug>63093</bug>Add <code>Compile JSR223 Test Elements</code> menu item. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>63094</bug>Introduce a new Tools menu</li> |
| <li><bug>63101</bug>Propose a menu item to generate readable overview of Test Plan</li> |
| <li><bug>63144</bug>View listener tree take a long time to open response that has huge text. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| </ul> |
| |
| <ch_section>Non-functional changes</ch_section> |
| <ul> |
| <li><pr>408</pr>Log an informational message instead of an stack trace, when JavaFX is not found for the <code>RenderInBrowser</code> component.</li> |
| <li><pr>412</pr>Update Chinese translation. Contributed by 刘士 (liushilive at outlook.com).</li> |
| <li><pr>406</pr>Add a short paragraph on how to use a security manager with JMeter.</li> |
| <li><bug>62893</bug>Use StringEscapeUtils from commons-text (version 1.6) instead of the deprecated ones from commons-lang3.</li> |
| <li><bug>62972</bug><pr>435</pr>Replace calls to deprecated method <code>Class#newInstance</code>.</li> |
| <li><bug>63034</bug>ClientJMeterEngine: Make rsetProperties use <code>HashMap<String,String></code> instead of Properties</li> |
| <li>Updated to httpclient/httpmime 4.5.7 (from 4.5.6)</li> |
| <li>Updated to httpcore 4.4.11 (from 4.4.10)</li> |
| <li>Updated to httpcore-nio 4.4.11 (from 4.4.10)</li> |
| <li>Updated to tika-core and tika-parsers 1.20 (from 1.18)</li> |
| <li>Updated to commons-dbcp2-2.5.0 (from commons-dbcp2-2.4.0)</li> |
| <li>Updated to commons-lang3-3.8.1 (from commons-lang3-3.8)</li> |
| <li>Updated to groovy-all-2.4.16 (from groovy-all-2.4.15)</li> |
| <li>Updated to httpasyncclient-4.1.4.jar (from 4.1.3)</li> |
| <li>Updated to jsoup-1.11.3 (from 1.11.2)</li> |
| <li>Updated to cglib-nodep-3.2.9 (from cglib-nodep-3.2.7)</li> |
| <li>Updated to ph-commons-9.2.1 (from ph-commons-9.1.2)</li> |
| <li>Updated to log4j-2.11.1 (from log4j-2.11.0)</li> |
| <li>Updated to xmlgraphics-commons 2.3 (from 2.2)</li> |
| <li><bug>63033</bug>Updated to Saxon-HE 9.9.1-1 (from 9.8.0-12). Thanks at Saxonica</li> |
| <li>Updated to xstream 1.4.11 (from 1.4.10)</li> |
| <li>Updated to jodd 5.0.6 (from 4.1.4)</li> |
| <li>Updated to asm-7.0 (from 6.1)</li> |
| <li>Update to ActiveMQ 5.15.8 (from 5.5.16)</li> |
| <li>Updated to rsyntaxtextarea-3.0.2 (from 2.6.1)</li> |
| <li>Updated to apache-rat-0.13 (from 0.12)</li> |
| <li>Updated to jacocoant-0.8.3 (from 0.8.2)</li> |
| <li>Updated to hsqldb-2.4.1 (from 2.4.0)</li> |
| <li>Updated to mina-core-2.0.19 (from 2.0.16)</li> |
| <li><bug>62818</bug>Updated to xercesImpl to 2.12.0 (from 2.11.0). Reported by Stefan Seide (stefan at trilobyte-se.de)</li> |
| <li><bug>62744</bug>Upgrade jquery to version 3.3.1, jquery-ui to 1.12.1, bootstrap to 3.3.7</li> |
| <li><bug>62821</bug><pr>405</pr>Use SHA-512 checksums instead of MD5 to verify jar downloads</li> |
| <li><bug>63053</bug>Remove referrals to never implemented internals from user documentation. Reported by U. Poblotzki (u.poblotzki at thalia.de)</li> |
| <li><bug>63082</bug><pr>437</pr>Use utf-8 for properties files in source</li> |
| <li><bug>63177</bug>Rename NON GUI mode into CLI Mode in documentation</li> |
| </ul> |
| |
| <!-- =================== Bug fixes =================== --> |
| |
| <ch_section>Bug fixes</ch_section> |
| |
| <h3>HTTP Samplers and Test Script Recorder</h3> |
| <ul> |
| <li><bug>62785</bug><pr>400</pr>Incomplete search path applied to the filenames used in the upload functionality of the HTTP sampler. Implemented by Artem Fedorov (artem.fedorov at blazemeter.com) and contributed by BlazeMeter.</li> |
| <li><bug>62842</bug>HTTP(S) Test Script Recorder: Brotli compression is not supported leading to "<code>Content Encoding Error</code>"</li> |
| <li><bug>60424</bug>Hessian Burlap application: JMeter inserts <code>0x0D</code> before <code>0x0A</code> automatically (http binary post data)</li> |
| <li><bug>62940</bug>Use different <code>cn</code> and type of SAN extension when we are generating certificates based on IP addresses.</li> |
| <li><bug>62916</bug>HTTP Test Script Recorder fails with UnsupportedOperationException if recording is started after a distributed test has been run</li> |
| <li><bug>62987</bug>A TestBean element under HTTP(S) Test Script recorder does not work. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>63015</bug>Abnormal NoHttpResponseException when running request through proxy HTTP(S) Test Script Recorder after a first failing request. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62852</bug>HTTP Request Header missing information when using a proxy. Thanks to Oleg Kalnichevski (olegk at apache.org)</li> |
| <li><bug>63048</bug>JMeter does not retrieve link resources of type "shortcut icon" or "icon". Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| </ul> |
| |
| <h3>Other Samplers</h3> |
| <ul> |
| <li><bug>62775</bug>If many jars are in a folder referenced by <code>user.classpath</code>, startup can be extremely slow due to JUnit</li> |
| <li><bug>63031</bug>Incorrect JDBC driver class: <code>org.firebirdsql.jdbc.FBDrivery</code>. Contributed by Sonali (arora.sonali99 at gmail.com)</li> |
| </ul> |
| |
| <h3>Controllers</h3> |
| <ul> |
| <li><bug>62806</bug>ModuleController cloning by Run behaves differently wether in GUI or Non GUI mode. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62847</bug>If Controller cannot use variable for index exposed by LoopController/WhileController/ForEachController</li> |
| <li><bug>63064</bug>Ignore spaces at the end and beginning of expressions used in IfController</li> |
| </ul> |
| |
| <h3>Listeners</h3> |
| <ul> |
| <li><bug>62770</bug>Aggregate Graph throws <code>ArrayIndexOutOfBoundsException</code></li> |
| <li><bug>63069</bug>ResultCollector does not write end of XML file if user exits while a Recording or a test is running. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>63138</bug>InfluxDB BackendListenerClient: In case of error, log is in debug, it should be in error</li> |
| </ul> |
| |
| <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> |
| <ul> |
| <li><bug>62774</bug>XPath2Extractor: Scope variable is broken. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62860</bug>JSON Extractor: Avoid NPE and noisy error message "<code>Error processing JSON content in</code>" when variable is not found</li> |
| </ul> |
| |
| <h3>Functions</h3> |
| <ul> |
| </ul> |
| |
| <h3>I18N</h3> |
| <ul> |
| </ul> |
| |
| <h3>Report / Dashboard</h3> |
| <ul> |
| <li><bug>62777</bug>Web Report / Dashboard: Hide All in <code>Response Time Percentiles Over Time (successful responses)</code> fails.</li> |
| <li><bug>62780</bug>Web Report / Dashboard: Display All in <code>Response Time Vs Request</code> fails.</li> |
| <li><bug>62781</bug>Web Report / Dashboard: Display All in <code>Response Time Overview</code> fails.</li> |
| <li><bug>62782</bug>Web Report / Dashboard: Remove duplicate/unused dependencies</li> |
| <li><bug>62894</bug>Report / Dashboard: Throughput is in wrong column which is confusing as unit is millisecond</li> |
| <li><bug>63016</bug>Empty HTML report if source csv contains labels with quotes. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| </ul> |
| |
| <h3>Documentation</h3> |
| <ul> |
| <li>Change <code>Test Action</code> (old name) to <code>Flow Control Action</code> in Component Reference documentation. Contributed by Ori Marko (orimarko at gmail.com)</li> |
| </ul> |
| |
| <h3>General</h3> |
| <ul> |
| <li><bug>62745</bug>Fix undefined disabled icon. Contributed by Till Neunast (https://github.com/tilln)</li> |
| <li><bug>62743</bug>Client auth must be enabled on distributed testing</li> |
| <li><bug>62767</bug>NPE when searching under certain conditions. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62790</bug><code>ArrayIndexOutOfBoundsException</code> when calling replace without selecting the first match</li> |
| <li><bug>62795</bug>JMeter master sometimes ends distributed test even though some of the slaves have not finished</li> |
| <li><bug>62336</bug><pr>396</pr>Some shortcuts are not working correctly on windows. Contributed by Michael Pavlov (michael.paulau at gmail.com)</li> |
| <li><bug>62889</bug>Format JSON Arrays when displayed with JSON Path Tester.</li> |
| <li><bug>62900</bug>ObjectProperty#getStringValue() can throw NullPointerException</li> |
| <li><bug>63099</bug>Escape commata in function helper dialog only outside of variable replacement structures.</li> |
| <li><bug>63105</bug>Export Transactions for Report: fix 2 bugs</li> |
| <li><bug>63106</bug>Apply naming policy does not refresh UI</li> |
| <li><bug>63180</bug>Apply Naming Policy allows multi selection but only considers first node</li> |
| <li><bug>63090</bug>Remove slf4j-ext due to CVE-2018-8088</li> |
| </ul> |
| |
| <!-- =================== Thanks =================== --> |
| |
| <ch_section>Thanks</ch_section> |
| <p>We thank all contributors mentioned in bug and improvement sections above: |
| </p> |
| <ul> |
| <li>Oleg Kalnichevski (olegk at apache.org)</li> |
| <li>Till Neunast (https://github.com/tilln)</li> |
| <li>Mingun (alexander_sergey at mail.ru)</li> |
| <li><a href="https://ubikloadpack.com">Ubik Load Pack</a></li> |
| <li>Artem Fedorov (artem.fedorov at blazemeter.com)</li> |
| <li>Stefan Seide (stefan at trilobyte-se.de)</li> |
| <li>刘士 (liushilive at outlook.com)</li> |
| <li>Michael Pavlov (michael.paulau at gmail.com)</li> |
| <li>Ori Marko (orimarko at gmail.com)</li> |
| <li>Paco (paco.xu at daocloud.io)</li> |
| <li>Hitesh Patel (hitesh.h.patel at gmail.com)</li> |
| <li>Sonali (arora.sonali99 at gmail.com)</li> |
| <li>Mohamed Ibrahim (rollno748 at gmail.com)</li> |
| <li>U. Poblotzki (u.poblotzki at thalia.de)</li> |
| <li><a href="https://www.saxonica.com">Saxonica</a></li> |
| </ul> |
| <p>We also thank bug reporters who helped us improve JMeter.</p> |
| <ul> |
| </ul> |
| <p> |
| Apologies if we have omitted anyone else. |
| </p> |
| <!-- =================== Known bugs or issues related to JAVA Bugs =================== --> |
| |
| <ch_section>Known problems and workarounds</ch_section> |
| <ul> |
| <li>The Once Only controller behaves correctly under a Thread Group or Loop Controller, |
| but otherwise its behaviour is not consistent (or clearly specified).</li> |
| |
| <li> |
| The numbers that appear to the left of the green box are the number of active threads / total number of threads, |
| the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>). |
| </li> |
| |
| <li> |
| Note that under some windows systems you may have this WARNING: |
| <source> |
| java.util.prefs.WindowsPreferences |
| WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0 |
| x80000002. Windows RegCreateKeyEx(…) returned error code 5. |
| </source> |
| The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore. |
| </li> |
| |
| <li> |
| You may encounter the following error: |
| <source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source> |
| 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 <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits. |
| This error is related to increased security in Java 8+. |
| <br></br> |
| To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing |
| the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case. |
| <br></br> |
| This property is in this file: |
| <source>JAVA_HOME/jre/lib/security/java.security</source> |
| See <bugzilla>56357</bugzilla> for details. |
| </li> |
| |
| <li> |
| Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers. |
| This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a> |
| The fix is to use JDK8_u45 or later. |
| </li> |
| |
| <li> |
| View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>. |
| This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes. |
| See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a> |
| The fix is to use JDK9 b65 or later. |
| </li> |
| |
| <li> |
| JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX. |
| This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a> |
| The fix is to use JDK 8 b132 or later. |
| </li> |
| </ul> |
| |
| <!-- =================== 5.0 =================== --> |
| |
| <h1>Version 5.0</h1> |
| <p> |
| Summary |
| </p> |
| <ul> |
| <li><a href="#New and Noteworthy">New and Noteworthy</a></li> |
| <li><a href="#Incompatible changes">Incompatible changes</a></li> |
| <li><a href="#Bug fixes">Bug fixes</a></li> |
| <li><a href="#Improvements">Improvements</a></li> |
| <li><a href="#Non-functional changes">Non-functional changes</a></li> |
| <li><a href="#Known problems and workarounds">Known problems and workarounds</a></li> |
| <li><a href="#Thanks">Thanks</a></li> |
| |
| </ul> |
| |
| <ch_section>New and Noteworthy</ch_section> |
| <ch_title>Core improvements</ch_title> |
| <p>Rest support has been improved in many fields |
| <ul> |
| <li>Multipart/form-data requests now work for <code>PUT</code>, <code>DELETE</code> …</li> |
| <li>It is now also possible to send a JSON Body with attached file</li> |
| <li>Parameters entered in Parameters Tab are now used in body instead of being ignored</li> |
| </ul> |
| <figure width="1216" height="340" image="changes/5.0/jmeter_5_rest1.png" /> |
| <figure width="1223" height="314" image="changes/5.0/jmeter_5_rest2.png" /> |
| </p> |
| <p>In distributed testing, JMeter now automatically prefixes thread names with engine host and port, this makes the counting of threads correct in the HTML report without any other configuration as it was required before |
| <figure width="1156" height="543" image="changes/5.0/jmeter_5_distributed.png" /> |
| </p> |
| <p>XPath 2.0 is supported in a new element called <code>XPath2 extractor</code> providing easier XML namespaces handling, up to date XPath syntax and better performances |
| <figure width="879" height="340" image="changes/5.0/jmeter_5_xpath2_extractor.png" /> |
| <figure width="1213" height="730" image="changes/5.0/jmeter_5_xpath2_tester.png" /> |
| </p> |
| <p>Upgrade to HTTP Components 4.6 last APIs has been completed and JMeter does not rely anymore on deprecated APIs of this library</p> |
| <p>It is now possible to control in an easier way Loop breaking and Loop switching to next iteration. This is available in <code>Flow Control Action</code> and <code>Result Status Action Handler</code> elements |
| <figure width="772" height="270" image="changes/5.0/jmeter_5_flow_control_action.png" /> |
| <figure width="615" height="212" image="changes/5.0/jmeter_5_result_status_handler.png" /> |
| |
| </p> |
| <p>While Controller now exports a variable containing its current index named <code>__jm__<Name of your element>__idx</code>. So for |
| example, if your While Controller is named WC, then you can access the looping index through <code>${__jm__WC__idx}</code></p> |
| |
| <ch_title>Scripting / Debugging enhancements</ch_title> |
| <p>Search feature has been improved to allow you to iterate in the tree over search results and do necessary replacements through <code>Next</code>/<code>Previous</code>/<code>Replace</code>/<code>Replace/Find</code> buttons |
| <figure width="829" height="524" image="changes/5.0/jmeter_5_search_feature.png" /> |
| </p> |
| <p>In View Results Tree, the request and response headers/body are clearly separated to allow you to better inspect requests and responses. You can also search in all those tabs for a particular value |
| <figure width="737" height="366" image="changes/5.0/jmeter_5_vrt_request_body.png" /> |
| <figure width="771" height="552" image="changes/5.0/jmeter_5_vrt_response_body.png" /> |
| </p> |
| <p>Recording feature has been improved to provide a popup that is always on top when you navigate in browser allowing you to name transactions while you navigate in your application. |
| <figure width="1425" height="796" image="changes/5.0/jmeter_5_recording.png" /> |
| </p> |
| <p>You can now restart JMeter from menu <menuchoice><guimenuitem>File</guimenuitem><guimenuitem>Restart</guimenuitem></menuchoice> |
| <figure width="199" height="318" image="changes/5.0/jmeter_5_restart.png" /> |
| </p> |
| |
| <ch_title>Live Reporting and Web Report</ch_title> |
| Reporting feature has been enhanced |
| <p>A new Graph Total Transactions per second has been added to the HTML Web Report |
| <figure width="1156" height="536" image="changes/5.0/jmeter_5_total_trans_per_sec.png" /> |
| </p> |
| <p>It is now possible to graph over time custom metrics available as JMeter Variables through <code>sample_variables</code>. Those custom metrics graphs will be |
| available in the HTML Report in <code>Custom Graphs section</code> |
| <figure width="1426" height="755" image="changes/5.0/jmeter_5_custom_graphs.png" /> |
| </p> |
| <p>Hits per second graph now takes into account the embedded resources |
| <figure width="1153" height="537" image="changes/5.0/jmeter_5_hits_per_sec.png" /> |
| </p> |
| |
| <p>In Live reporting, the sent and received bytes are now sent to Backends (InfluxDB or Graphite)</p> |
| |
| <ch_title>Functions</ch_title> |
| <p>A New function <code><funclink name="__threadGroupName"/></code> has been introduced to obtain ThreadGroup name.</p> |
| |
| <!-- =================== Incompatible changes =================== --> |
| |
| <ch_section>Incompatible changes</ch_section> |
| <ul> |
| <li>Since JMeter 5.0, when using default HC4 Implementation, JMeter will reset HTTP state (SSL State + Connections) on each thread group iteration. If you don't want |
| this behaviour, set <code>httpclient.reset_state_on_thread_group_iteration=false</code></li> |
| <li>Since JMeter 5.0, in relation to above remark, <code>https.use.cached.ssl.context</code> is deprecated and not used anymore.</li> |
| <li>Since JMeter 5.0, when using CSV output, sub results will now be also output to CSV file. To revert to previous behaviour set <code>jmeter.save.saveservice.subresults=false</code>, see <bugzilla>62470</bugzilla>, <bugzilla>60917</bugzilla>, <bugzilla>62550</bugzilla>.</li> |
| <li>Since JMeter 5.0, <code>CSS/JQuery Extractor</code> has been renamed to <code>CSS Selector Extractor</code></li> |
| <li>Since JMeter 5.0, <code>Test Action</code> has been renamed to <code>Flow Control Action</code></li> |
| <li>Since JMeter 5.0, JMeter renames subResults to <code>parentName-N</code> where N is a number to ensure that Hits Per Second graph includes resources downloads, see <bugzilla>62550</bugzilla>, <bugzilla>62470</bugzilla> and <bugzilla>60917</bugzilla></li> |
| |
| </ul> |
| <!-- =================== Improvements =================== --> |
| |
| <ch_section>Improvements</ch_section> |
| |
| <h3>HTTP Samplers and Test Script Recorder</h3> |
| <ul> |
| <li><bug>62260</bug>Improve Rest support. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>58757</bug>HTTP Request : Updated deprecated methods of HttpComponents to last APIs of httpclient-4.5.X. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62212</bug>Recorder : Improve UX by providing a popup above all windows to be able to change Transaction names and pauses while using Browser. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62248</bug>HTTP Request : Parameters entered in Parameters Tab should be used in body instead of being ignored. Partly based on a patch by Artem Fedorov contributed by Blazemeter.</li> |
| <li><bug>60015</bug>Multipart/form-data works only for <code>POST</code> using HTTPClient4 while it should for <code>PUT</code>, <code>DELETE</code>, … Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62317</bug>HTTP(S) Test Script Recorder: allow to add ResultSaver to created sampler</li> |
| </ul> |
| |
| <h3>Other samplers</h3> |
| <ul> |
| <li><pr>376</pr>JUnitSampler logs exceptions except assertion-failures from test cases as warnings. Contributed by Davide Angelocola (davide.angelocola at fisglobal.com)</li> |
| <li><bug>62244</bug>Rename <code>Test Action</code> to <code>Flow Control Action</code></li> |
| <li><bug>62302</bug>Move JSR223 Sampler up the menu. Contributed by Ori Marko (orimarko at gmail.com)</li> |
| <li><bug>62595</bug>SMTPSampler does not allow configuring the SSL/TLS protocols to be used on handshake. Contributed by Felipe Cuozzo (felipe.cuozzo at gmail.com)</li> |
| </ul> |
| |
| <h3>Controllers</h3> |
| <ul> |
| <li><bug>62237</bug>While Controller : Export variable containing current index of iteration. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| </ul> |
| |
| <h3>Listeners</h3> |
| <ul> |
| <li><bug>62195</bug>Save Responses to a file : Improve component and UI. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62209</bug>InfluxBackendListenerClient: First Assertion Failure Message must be sent if error code and response code are empty or OK</li> |
| <li><bug>62269</bug>Bug 62269 - View Results Tree : Response and Request Tabs should contains Header and Body tabs. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62270</bug>View Results Tree : Allow searching in Request headers, Response Headers, and Request body. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62276</bug>InfluxDBBackendListenerClient / GraphiteBackendListenerClient : Add sent and received bytes to metrics. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| </ul> |
| |
| <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> |
| <ul> |
| <li><bug>62320</bug>Counter : Reference Name property is not clear</li> |
| <li><bug>60991</bug>XPath Extractor : Implement XPath 2.0. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62593</bug>Rename CSS/JQuery Extractor to CSS Selector Extractor. Contributed by Ori Marko (orimarko at gmail.com)</li> |
| </ul> |
| |
| <h3>Functions</h3> |
| <ul> |
| <li><bug>62178</bug>Add default value to <code><funclink name="__V"/></code> function. Contributed by Ori Marko (orimarko at gmail.com)</li> |
| <li><bug>62178</bug>Add function <code><funclink name="__threadGroupName"/></code> function to obtain ThreadGroup name. Mainly contributed by Ori Marko (orimarko at gmail.com)</li> |
| <li><bug>62533</bug>Allow use epoch time as Date String value in function <code><funclink name="__dateTimeConvert"/></code> </li> |
| <li><bug>62541</bug>Allow <code><funclink name="__jexl3"/></code>, <code><funclink name="__jexl2"/></code> functions to support new syntax as <code>var x;</code>. Contributed by Ori Marko (orimarko at gmail.com)</li> |
| <li><bug>61834</bug>Function Helper Dialog : Improve tests by showing variables and keeping them available between evaluations</li> |
| </ul> |
| <h3>I18N</h3> |
| <ul> |
| </ul> |
| |
| <h3>Report / Dashboard</h3> |
| <ul> |
| <li><bug>62243</bug>Dashboard : make option "<code>--forceDeleteResultFile</code>"/"<code>-f</code>" option delete folder referenced by "<code>-o</code>" option</li> |
| <li><bug>62367</bug>HTML Report Generator: Add Graph Total Transactions per Second. Contributed mainly by Martha Laks (laks.martha at gmail.com)</li> |
| <li><bug>62166</bug>Report/Dashboard: Provide ability to register custom graphs and metrics in the JMeter Dashboard. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62542</bug>Report/Dashboard : Display more information on filters when graph is empty. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62426</bug>Optimize performance of report generation. Based on feedback by Allen (444104595 at qq.com)</li> |
| <li><bug>62550</bug>Modify SubResult Naming Policy</li> |
| <li><bug>60917</bug>Load Test with embedded resources download : Hits per seconds does not take into account the downloaded resources</li> |
| </ul> |
| |
| <h3>General</h3> |
| <ul> |
| <li><bug>62684</bug>Distributed Testing : Add automatically to thread name a prefix to identify engine. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62155</bug>Search Feature: Make Search text field get focus</li> |
| <li><bug>62156</bug>Search Feature : Distinguish between node that matches search and node that contains a child that matches search</li> |
| <li><bug>62234</bug>Search/Replace Feature : Enhance UX and add Replace/Next/Previous/Replace & Find features. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62238</bug>Add ability to Switch to next iteration of Current Loop. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62239</bug>Add ability to Break Current Loop</li> |
| <li><bug>61635</bug>Add a menu to restart JMeter</li> |
| <li><bug>62470</bug>CSV Output : Enable logging of sub results when <code>jmeter.save.saveservice.subresults=true</code>. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62473</bug>Setting "<code>saveservice_properties</code>" has counter intuitive behaviour</li> |
| <li><bug>62354</bug>Correct calculation and usage of units for second per user (reported by jffagot05 at gmail.com)</li> |
| <li><bug>62700</bug>Introduce <code>jsr223.init.file</code> to allow calling a JSR-223 script on JMeter startup</li> |
| <li><bug>62128</bug>Try to guess <code>JMETER_HOME</code> correctly, when <code>jmeter.bat</code> is called from a batch file in another directory. Contributed by logox01 (logox01 at gmx.at)</li> |
| <li><pr>386</pr>Add parameter support for RMI keystore creation scripts. Contributed by Logan Mauzaize (t524467 at airfrance.fr)</li> |
| <li><bug>62065</bug>Use Maven artifact for JAF Module instead of embedded module</li> |
| <li><bug>61714</bug>Update Real-time results documentation</li> |
| <li><pr>382</pr>Correct typo in documentation. Reported by Perze Ababa (perze.ababa at gmail.com>)</li> |
| <li><pr>392</pr>Correct typo in documentation. Reported by Aaron Levin</li> |
| <li><pr>379</pr> Improve chinese translations. Contributed by XmeterNet</li> |
| </ul> |
| |
| <ch_section>Non-functional changes</ch_section> |
| <ul> |
| <li><pr>358</pr><pr>365</pr><pr>366</pr><pr>375</pr>Updated to latest checkstyle (v8.8). Expanded Checkstyle to files |
| in <code>src</code> and <code>test</code>; fixed newly checked files. Based on contribution |
| by Graham Russell (graham at ham1.co.uk)</li> |
| <li><bug>62095</bug>Correct description for right boundary parameter in Boundary Extractor. Contributed by Ori Marko (orimarko at gmail.com)</li> |
| <li><bug>62113</bug>Updated to latest Bouncycastle (v1.60). Based on contribution by Olaf Flebbe (oflebbe at apache.org)</li> |
| <li><bug>62171</bug>Remove <code>.md5</code> checksums and keep only <code>.sha512</code> checksums for source and binary archives</li> |
| <li>Updated to groovy-all-2.4.15 (from groovy-all-2.4.13)</li> |
| <li>Updated to asm-6.1 (from 6.0)</li> |
| <li>Updated to tika-core and tika-parsers 1.18 (from 1.17)</li> |
| <li><bug>62482</bug>Sync documentation to the implementation of the ForEachController. Based on contribution by Ori Marko (orimarko at gmail.com)</li> |
| <li><bug>62529</bug>Updated to httpclient-4.5.6 (from httpclient 4.5.5) and updated to freemarker-2.3.28 (from freemarker-2.3.23). Based on patch by Ori Marko (orimarko at gmail.com)</li> |
| <li>Updated to httpmime-4.5.6 (from httpmime-4.5.5)</li> |
| <li>Updated to caffeine-2.6.2 (from caffeine-2.6.1)</li> |
| <li>Updated to cglib-nodep-3.2.7 (from cglib-nodep-3.2.6)</li> |
| <li>Updated to commons-dbcp2-2.4.0 (from commons-dbcp2-2.2.0)</li> |
| <li>Updated to commons-pool2-2.6.0 (from commons-pool2-2.5.0)</li> |
| <li>Updated to httpcore-4.4.10 (from httpcore-4.4.9)</li> |
| <li>Updated to httpcore-nio-4.4.10 (from httpcore-nio-4.4.9)</li> |
| <li>Updated to log4j-2.11.0 (from log4j-2.10.0)</li> |
| <li>Updated to ph-css-6.1.1 (from ph-css-6.0.0)</li> |
| <li>Updated to ph-commons-9.1.2 (from ph-commons-9.0.0)</li> |
| <li>Updated to rhino-1.7.10 (from +rhino-1.7.7.2)</li> |
| <li>Updated to commons-lang3-3.8 (from commons-lang3-3.7)</li> |
| </ul> |
| |
| <!-- =================== Bug fixes =================== --> |
| |
| <ch_section>Bug fixes</ch_section> |
| |
| <h3>HTTP Samplers and Test Script Recorder</h3> |
| <ul> |
| <li><bug>62114</bug>HTTP(S) Test Script Recorder : Client certificate authentication uses the first SSLManager created. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>61058</bug>HTTP Request : Add option <code>httpclient4.deflate_relax_mode</code> to avoid "Unexpected end of ZLIB input stream" when deflating what seems to be invalid streams. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>43612</bug>HTTP PUT does not honor request parameters. Implemented by Artem Fedorov (artem.fedorov at blazemeter.com) and contributed by BlazeMeter Ltd.</li> |
| <li><bug>60190</bug>Content-Type is added for <code>POST</code> unconditionally. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62462</bug><pr>387</pr>Make delegation of credentials in SPNEGO possible again.</li> |
| <li><bug>58807</bug><code>Reset SSL State on Thread Group iteration only (was https.use.cached.ssl.context=false</code> is broken)</li> |
| <li><bug>62716</bug>When Recording, JMeter removes Authorization from generated Header Manager when using Bearer Token</li> |
| </ul> |
| |
| <h3>Other Samplers</h3> |
| <ul> |
| <li><bug>62235</bug>Java 9 - illegal reflective access by org.apache.jmeter.util.HostNameSetter</li> |
| <li><bug>62464</bug>Set start- and end-time on JMS publisher sampler, even if initialization fails.</li> |
| <li><bug>62616</bug>FTPSampler: Upload file-size is not counted in sentBytes</li> |
| </ul> |
| |
| <h3>Controllers</h3> |
| <ul> |
| <li><bug>62265</bug>ModuleController behaves strangely</li> |
| </ul> |
| |
| <h3>Listeners</h3> |
| <ul> |
| <li><bug>62097</bug>Update JTable in Aggregate Report only when new data has arrived. That way selections of rows will be kept longer around.</li> |
| <li><bug>62203</bug>Influxdb BackendListener client: store user tags to annotation and internal transaction. Contributed by Sergey Batalin (sergey_batalin at mail.ru)</li> |
| <li><bug>62251</bug>TextGraphiteMetricsSender does not invalidate lost connections in case of network errors </li> |
| <li><bug>60705</bug>Fix headers of Aggregate Reports and friends when columns are moved around.</li> |
| <li><bug>62463</bug>Distributed client/server setup: use different RMI ports for the remote objects when using SSL</li> |
| </ul> |
| |
| <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> |
| <ul> |
| <li><bug>61664</bug>HTTP Authorization Manager : Digest works only with legacy <rfc link="2069" />, <rfc link="2617" /> is not implemented. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62252</bug>HTTP header merging logic does not correspond to the documentation</li> |
| <li><bug>62554</bug>BoundaryExtractor : Field to check is not reset</li> |
| <li><bug>62553</bug>Random element might return same value even if property "Per thread user (User)" is set to TRUE</li> |
| <li><bug>62637</bug>Take scheduler into account when calcuting delay for Synchronizing Timer</li> |
| </ul> |
| |
| <h3>Functions</h3> |
| <ul> |
| </ul> |
| |
| <h3>I18N</h3> |
| <ul> |
| <li><bug>62310</bug>French translation of Precise Throughput Timer label</li> |
| </ul> |
| |
| <h3>Report / Dashboard</h3> |
| <ul> |
| <li><bug>62333</bug>Report Dashboard - When one series contains no value, the graph colors logic is wrong. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62283</bug>Report Dashboard - Date is not correctly displayed on chart when granularity is ≤ 1 day</li> |
| <li><bug>62520</bug>The tool-tip text when we hover on the point in 'Latency Vs Request' graph should be 'Median Latency'</li> |
| </ul> |
| |
| <h3>Documentation</h3> |
| <ul> |
| <li><bug>62211</bug>Fix HTTP Request Server Documentation. Contributed by Ori Marko (orimarko at gmail.com)</li> |
| <li><pr>388</pr>Fix a typo. Contributed by Giancarlo Romeo (giancarloromeo at gmail.com)</li> |
| </ul> |
| |
| <h3>General</h3> |
| <ul> |
| <li><bug>62107</bug>JMeter fails to start under Windows when <code>JM_LAUNCH</code> contains spaces</li> |
| <li><bug>62110</bug>A broken JUnit class (due to missing dependency) breaks JMeter menus. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><pr>377</pr>Small fix of the docs. Contributed by Peter Doornbosch (peter.doornbosch at luminis.eu)</li> |
| <li><bug>62124</bug>Recording templates : Add more exclusions and use Transaction Name by default</li> |
| <li><bug>62127</bug>Store filename as String instead of File in FileEditor. This will prevent conversion of filenames from Unix style path separators to Windows style when used for example in CSV Data Set Config.</li> |
| <li><bug>56150</bug>Keep the index right, when scrolling through the menu items.</li> |
| <li><bug>62240</bug>If SampleMonitor implementation is a TestBean if will not be initialized correctly</li> |
| <li><bug>62295</bug>Correct order of elements when duplicating a selection of multiple elements.</li> |
| <li><bug>62397</bug>Don't break lines at commata when using JSON Path Tester</li> |
| <li><bug>62281</bug>Prevent NPE in MapProperty. Patch by belugabehr (dam6923 at gmail.com)</li> |
| <li><bug>62457</bug>In usermanual, the UUID Function's example is wrong. Contributed by helppass (onegaicimasu at hotmail.com)</li> |
| <li><bug>62478</bug>Escape commata in parameters when constructing function strings in the GUI function helper. Reported by blue414 (blue414 at 163.com)</li> |
| <li><bug>62463</bug>Fix usage of ports, when <code>client.rmi.localport</code> is set for distributed runs.</li> |
| <li><bug>62545</bug>Don't use a colon as part of the "tab" string when indenting JSON in RenderAsJSON.</li> |
| <li>Part of <bug>62637</bug> Avoid Integer overrun when dealing with very large values in <code>TimerService#adjustDelay</code></li> |
| <li><bug>62683</bug>Error dialog has no text when user opens completely invalid test plan.</li> |
| </ul> |
| |
| <!-- =================== Thanks =================== --> |
| |
| <ch_section>Thanks</ch_section> |
| <p>We thank all contributors mentioned in bug and improvement sections above: |
| </p> |
| <ul> |
| <li>Graham Russell (graham at ham1.co.uk)</li> |
| <li>Ori Marko (orimarko at gmail.com)</li> |
| <li>Davide Angelocola (davide.angelocola at fisglobal.com)</li> |
| <li><a href="https://ubikloadpack.com">Ubik Load Pack</a></li> |
| <li>Olaf Flebbe (oflebbe at apache.org)</li> |
| <li>Peter Doornbosch (peter.doornbosch at luminis.eu)</li> |
| <li>logox01 (logox01 at gmx.at)</li> |
| <li>Sergey Batalin (sergey_batalin at mail.ru)</li> |
| <li><a href="https://www.xmeter.net">XMeter</a></li> |
| <li>Imane Ankhila (iankhila at ahlane.net)</li> |
| <li>jffagot05 (jffagot05 at gmail.com)</li> |
| <li>Perze Ababa (perze.ababa at gmail.com)</li> |
| <li>Martha Laks (laks.martha at gmail.com)</li> |
| <li>Logan Mauzaize (t524467 at airfrance.fr)</li> |
| <li>belugabehr (dam6923 at gmail.com)</li> |
| <li>Giancarlo Romeo (giancarloromeo at gmail.com)</li> |
| <li>helppass (onegaicimasu at hotmail.com)</li> |
| <li>blue414 (blue414 at 163.com)</li> |
| <li>Aaron Levin</li> |
| <li>Allen (444104595 at qq.com)</li> |
| <li>Felipe Cuozzo (felipe.cuozzo at gmail.com)</li> |
| <li>bangnab (ambrosetti.nicola at gmail.com)</li> |
| </ul> |
| <p>We also thank bug reporters who helped us improve JMeter.</p> |
| <p> |
| Apologies if we have omitted anyone else. |
| </p> |
| <!-- =================== Known bugs or issues related to JAVA Bugs =================== --> |
| |
| <ch_section>Known problems and workarounds</ch_section> |
| <ul> |
| <li>View Results Tree may freeze rendering large response particularly if this response has no spaces, see <bugzilla>60816</bugzilla>. |
| This is due to an identified Java Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8172336">UI stuck when calling <code>JEditorPane.setText()</code> or <code>JTextArea.setText()</code> with long text without space</a>. |
| </li> |
| </ul> |
| <ul> |
| <li>The Once Only controller behaves correctly under a Thread Group or Loop Controller, |
| but otherwise its behaviour is not consistent (or clearly specified).</li> |
| |
| <li> |
| The numbers that appear to the left of the green box are the number of active threads / total number of threads, |
| the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>). |
| </li> |
| |
| <li> |
| Note that under some windows systems you may have this WARNING: |
| <source> |
| java.util.prefs.WindowsPreferences |
| WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0 |
| x80000002. Windows RegCreateKeyEx(…) returned error code 5. |
| </source> |
| The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore. |
| </li> |
| |
| <li> |
| You may encounter the following error: |
| <source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source> |
| 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 <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits. |
| This error is related to increased security in Java 8+. |
| <br></br> |
| To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing |
| the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case. |
| <br></br> |
| This property is in this file: |
| <source>JAVA_HOME/jre/lib/security/java.security</source> |
| See <bugzilla>56357</bugzilla> for details. |
| </li> |
| |
| <li> |
| Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers. |
| This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a> |
| The fix is to use JDK8_u45 or later. |
| </li> |
| |
| <li> |
| View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>. |
| This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes. |
| See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a> |
| The fix is to use JDK9 b65 or later. |
| </li> |
| |
| <li> |
| JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX. |
| This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a> |
| The fix is to use JDK 8 b132 or later. |
| </li> |
| </ul> |
| |
| <!-- =================== 4.0 =================== --> |
| |
| <h1>Version 4.0</h1> |
| <p> |
| Summary |
| </p> |
| <ul> |
| <li><a href="#New and Noteworthy">New and Noteworthy</a></li> |
| <li><a href="#Incompatible changes">Incompatible changes</a></li> |
| <li><a href="#Bug fixes">Bug fixes</a></li> |
| <li><a href="#Improvements">Improvements</a></li> |
| <li><a href="#Non-functional changes">Non-functional changes</a></li> |
| <li><a href="#Known problems and workarounds">Known problems and workarounds</a></li> |
| <li><a href="#Thanks">Thanks</a></li> |
| |
| </ul> |
| |
| <ch_section>New and Noteworthy</ch_section> |
| <!-- <ch_category>Sample category</ch_category> --> |
| <!-- <ch_title>Sample title</ch_title> --> |
| <!-- <figure width="846" height="613" image="changes/3.0/view_results_tree_search_feature.png"></figure> --> |
| <ch_title>Core improvements</ch_title> |
| <p>JMeter now supports JAVA 9.</p> |
| <p>New <a href="usermanual/component_reference.html#Boundary_Extractor"><code>Boundary Extractor</code></a> element available which provides easy extraction with better performances |
| <figure width="1078" height="315" image="changes/4.0/boundary_extractor.png"></figure> |
| </p> |
| <p>New <a href="usermanual/component_reference.html#JSON_Assertion"><code>JSON Assertion</code></a> element available to assert on JSON responses. |
| <figure width="1095" height="307" image="changes/4.0/json_assertion.png"></figure></p> |
| <p>New <a href="usermanual/component_reference.html#Precise_Throughput_Timer"><code>Precise Throughput Timer</code></a> element available which produces Poisson arrivals with given constant throughput. |
| <figure width="1080" height="381" image="changes/4.0/precise_throughput_timer.png"></figure></p> |
| <p>JMS Point-to-Point sampler has been enhanced with <code>read</code>, <code>browse</code>, <code>clear</code> options. |
| <figure width="1080" height="489" image="changes/4.0/jmsptp_communication_styles.png"></figure></p> |
| <p>Best property values are now selected on many Test Elements to ensure best practices are the defaults: |
| <ul> |
| <li>Newly added <code>If Controller</code> now uses by default Expression which is the most performing option. |
| <figure width="716" height="248" image="changes/4.0/if_controller_condition.png"></figure> |
| <figure width="717" height="251" image="changes/4.0/if_controller_expression.png"></figure></li> |
| <li>Newly added JSR223 Test Element now cache compiled script by default if language used provides this feature. |
| <figure width="346" height="49" image="changes/4.0/jsr223_cache_compilation.png"></figure></li> |
| </ul> |
| </p> |
| <p><a href="usermanual/component_reference.html#Loop_Controller"><code>Loop controller</code></a> and |
| <a href="usermanual/component_reference.html#ForEach_Controller"><code>ForEach Controller</code></a> |
| now expose their current iteration as a variable named <code>__jm__<Name of your element>__idx</code> that |
| you can use like this for example for a Loop Controller named <code>MyLoopController</code>: |
| <source>${__jm__MyLoopController__idx}</source>. |
| See <bugzilla>61802</bugzilla></p> |
| <p>Cookies are now shown in View Results Tree during recording. They were previously always shown as empty.</p> |
| <p><a href="usermanual/component_reference.html#Response_Assertion"><code>Response Assertion</code></a> now allows you to customize assertion message and assert on Request Data. |
| <figure width="909" height="617" image="changes/4.0/response_assertion_enhancements.png"></figure></p> |
| <ch_title>UX improvements</ch_title> |
| <p>JMeter now uses <a href="https://github.com/bulenkov/Darcula">Darcula LAF</a> by default</p> |
| <p>Workbench has been dropped from UI, you can now use Non Test Elements as immediate children of Test Plan. |
| <figure width="282" height="144" image="changes/4.0/goodbye_workbench.png"></figure></p> |
| <p>Menu UX have been improved to make most used elements available more rapidly. |
| <figure width="711" height="322" image="changes/4.0/menu_organization.png"></figure></p> |
| <p>HTTP(S) Test Script Recorder now allows you to name your transactions while recording in a more human readable way. |
| <figure width="1011" height="502" image="changes/4.0/recorder_naming_samplers.png"></figure></p> |
| <p></p> |
| <p>UX improvements made on, among the most notable :</p> |
| <ul> |
| <li>Module Controller informs user at least one Controller is required</li> |
| <li>Function Helper Dialog (The wizard that helps using and testing functions) has been improved in many fields. |
| <figure width="772" height="315" image="changes/4.0/function_helper_dialog_enhancements.png"></figure></li> |
| <li>Switch Controller trims text to avoid issues when a space is introduced before/after name</li> |
| <li>Test Plan is now saved before running the test plan</li> |
| </ul> |
| |
| <ch_title>Functions</ch_title> |
| <p>New Function <a href="usermanual/functions.html#__digest"><code>__digest</code></a> provides easy computing of SHA-XXX, MDX hashes: |
| <source>${__digest(MD5,Apache JMeter 4.0 rocks !,,,)}</source> will return <code>0e16c3ce9b6c9971c69ad685fd875d2b</code></p> |
| <p>New Function <a href="usermanual/functions.html#__dateTimeConvert"><code>__dateTimeConvert</code></a> provides easy conversion between date formats: |
| <source>${__dateTimeConvert(01 Jan 2017,dd MMM yyyy,dd/MM/yyyy,)}</source> will return <code>01/01/2017</code></p> |
| <p>New Function <a href="usermanual/functions.html#__changeCase"><code>__changeCase</code></a> provides ability to switch to Upper / Lower / Capitalized cases |
| <source>${__changeCase(Avaro omnia desunt\, inopi pauca\, sapienti nihil,UPPER,)}</source> will return <code>AVARO OMNIA DESUNT, INOPI PAUCA, SAPIENTI NIHIL</code></p> |
| <p>New Functions <a href="usermanual/functions.html#__isVarDefined"><code>__isVarDefined</code></a> |
| and <a href="usermanual/functions.html#__isPropDefined"><code>__isPropDefined</code></a> provide testing of properties and variables availability |
| <source>${__isPropDefined(START.HMS)}</source> will return <code>true</code> |
| <source>${__isVarDefined(JMeterThread.last_sample_ok)}</source> will return <code>true</code> |
| </p> |
| |
| <ch_title>Scripting and Plugin Development</ch_title> |
| <p>You can now call <code>SampleResult#setIgnore()</code> if you don't want your sampler to be visible in results</p> |
| <p><code>JavaSamplerContext</code> used by <code>AbstractJavaSamplerClient</code> has been enhanced with new methods to easy plugin development.</p> |
| <p>JMeter now distributes additional Maven sources and javadoc artifacts into <a href="https://repo1.maven.org/maven2/org/apache/jmeter/ApacheJMeter_core/4.0/">Maven repository</a></p> |
| <p>Plugins can now register listeners to be notified when a Test Plan is opened/closed</p> |
| |
| <ch_title>Live Reporting and Web Report</ch_title> |
| <p>InfluxDB backend listener now allows you to add custom tags by adding them with prefix <code>TAG_</code>, see <bugzilla>61794</bugzilla></p> |
| <p>In Web Report responseTime distribution graph is more precise</p> |
| <p>Some bugfixes have been made on report generation, see <bugzilla>61900</bugzilla>, <bugzilla>61900</bugzilla>61956, <bugzilla>61899</bugzilla>. |
| Graphs <i>Latency Vs Request</i> and <i>Response Time Vs Request</i> did not exceed 1000 RPS due to <bugzilla>61962</bugzilla></p> |
| |
| <ch_title>Configuration of JMeter environment</ch_title> |
| <p>JVM settings for the JMeter start scripts can be placed in a separate file (<code>bin/setenv.sh</code> on Unix |
| and <code>bin\setenv.bat</code> on Windows), that gets called on startup. The startup script |
| itself does not have to be edited anymore.</p> |
| |
| |
| <!-- =================== Incompatible changes =================== --> |
| |
| <ch_section>Incompatible changes</ch_section> |
| <ul> |
| <li><code>Start time</code> and <code>End date</code> of Thread Group have been removed, see <bugzilla>61549</bugzilla></li> |
| <li>In distributed testing, mode <code>Hold</code> has been removed. Use alternative and more efficient modes</li> |
| <li>For 3<sup>rd</sup> party plugins, the following method in <code>org.apache.jmeter.gui.tree.JMeterTreeNode</code> has been dropped for migration to Java 9 (<bugzilla>61529</bugzilla>) |
| <source>public Enumeration<JMeterTreeNode> children()</source> |
| </li> |
| <li><code>tearDown Thread Group</code> will now run on stop and shutdown of a test by default. If you don't want this behaviour, |
| uncheck <code>Run tearDown Thread Groups after shutdown of main threads</code> on <code>Test Plan</code> element, see <bugzilla>61656</bugzilla></li> |
| <li>Properties <code>sampleresult.getbytes.headers_size</code> and <code>sampleresult.getbytes.body_real_size</code> have been dropped, see <bugzilla>61587</bugzilla></li> |
| <li>JMeter will now save your test plan whenever you run it. This behaviour can be controlled by property <code>save_automatically_before_run</code>, see <bugzilla>61731</bugzilla></li> |
| <li>Workbench element has been dropped, you now directly add <code>Non Test Element</code> as children of Test Plan. When loading a Test Plan that contains the element |
| JMeter will move the <code>Mirror Server</code>, <code>Property Display</code> and HTTP(s) <code>Test Script Recorder</code> elements as direct children of Test Plan. For |
| any other element, it will create a <code>Test Fragment</code> element called <code>Workbench Test Fragment and move the elements in it</code>.</li> |
| <li>Following classes have been dropped (<code>org.apache.jmeter.functions.util.ArgumentEncoder</code>, <code>org.apache.jmeter.functions.util.ArgumentDecoder</code>), see <pr>335</pr></li> |
| <li>In JMS Point-to-Point sampler, setting timeout to 0 will now mean infinite timeout while previously it would be switched to 2000 ms, see <bugzilla>61829</bugzilla></li> |
| <li>When Assertions are at different scopes, they are executed starting with the most OUTER one to the most INNER one. See <bugzilla>61846</bugzilla></li> |
| <li>JMeter now starts by default using English locale. This change is due to missing translations in many supported languages. |
| You can change locale by modifying in jmeter and jmeter.bat (or preferably setenv.sh/setenv.bat) the <code>JVM_ARGS</code> system property values. |
| We'd also be very grateful if you can contribute translations in supported languages. |
| </li> |
| <li>SwitchController now trims by default the content of switch to avoid issue related to unwanted spaces. See <bugzilla>61771</bugzilla></li> |
| <li>JMeter JVM heap settings have changed from <code>-Xms512m -Xmx512m</code> to <code>-Xms1g -Xmx1g</code></li> |
| <li>Beanshell version has been upgraded to bsh-2.0b6 which introduces breaking changes and more strict parsing rules</li> |
| </ul> |
| <!-- =================== Improvements =================== --> |
| |
| <ch_section>Improvements</ch_section> |
| |
| <h3>HTTP Samplers and Test Script Recorder</h3> |
| <ul> |
| <li><pr>316</pr>Warn about empty truststore loading. Contributed by Vincent Herilier (https://github.com/vherilier)</li> |
| <li><bug>61639</bug>HTTP(S) Test Script Recorder: In request filtering tab, uncheck by default "Notify Child Listeners of filtered samplers"</li> |
| <li><bug>61672</bug>HTTP(S) Test Script Recorder: Have the ability to choose the sampler name while keeping the ability to just add a prefix</li> |
| <li><bug>53957</bug>HTTP Request: In Parameters tab, allow pasting of content coming from Firefox and Chrome (unparsed)</li> |
| <li><bug>61587</bug>Drop properties <code>sampleresult.getbytes.headers_size</code> and <code>sampleresult.getbytes.body_real_size</code></li> |
| <li><bug>61843</bug>HTTP(S) Test Script Recorder: Add SAN to JMeter generated CA Certificate. Contributed by Matthew Buckett</li> |
| <li><bug>61901</bug>Support for <code>https.cipherSuites</code> System property. Contributed by Jeremy Arnold (jeremy at arnoldzoo.org)</li> |
| </ul> |
| |
| <h3>Other samplers</h3> |
| <ul> |
| <li><bug>61544</bug>JMS Point-to-Point Sampler: Enhance communication styles with read, browse, clear. Based on a contribution by Benny van Wijngaarden (benny at smaragd-it.nl)</li> |
| <li><bug>61829</bug>JMS Point-to-Point: If Receive Queue is empty and a timeout is set, it is not taken into account. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>61739</bug>Java Request / JavaSamplerClient: Improve <code>org.apache.jmeter.protocol.java.sampler.JavaSamplerContext</code></li> |
| <li><bug>61762</bug>Start Next Thread Loop should be used everywhere</li> |
| </ul> |
| |
| <h3>Controllers</h3> |
| <ul> |
| <li><bug>61675</bug>If Controller: Use expression by default and add a warning when the other mode is used. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>61770</bug>Module Controller: Inform user in UI that he needs to have at least one Controller in his plan. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>61771</bug>SwitchController: Switch field should be trimmed by safety</li> |
| </ul> |
| |
| <h3>Listeners</h3> |
| <ul> |
| <li><bug>57760</bug>View Results Tree: Cookie Header is wrongly shown as empty (no cookies) when viewing a recorder Sample Result. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>61769</bug>View Results Tree: Use syntax highlighter in XPath Tester, JSON Path Tester and CSS/JQuery Tester. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>61776</bug>View Results Tree: Expansion of <code>Add expand/collapse all</code> menu in render XML view. Contributed by Maxime Chassagneux and Graham Russell</li> |
| <li><bug>61852</bug>View Results Tree: Add a Boundary Extractor Tester</li> |
| <li><bug>61794</bug>Influxdb backend: Add as many custom tags as wanted by just create new lines and prefix theirs name by "<code>TAG_</code>" on the GUI backend listener</li> |
| </ul> |
| |
| <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> |
| <ul> |
| <li><bug>60213</bug>New component: Boundary based extractor</li> |
| <li><bug>61845</bug>New Component JSON Assertion based on AtlanBH JSON Path Assertion donated to JMeter-Plugins and migrated into JMeter core by Artem Fedorov (artem at blazemeter.com)</li> |
| <li><bug>61931</bug>New Component: Precise Throughput Timer, timer that produces Poisson arrivals with given constant throughput. Contributed by Vladimir Sitnikov (sitnikov.vladimir at gmail.com)</li> |
| <li><bug>61644</bug>HTTP Cache Manager: "Use Cache-Control/Expires header when processing GET requests" should be checked by default</li> |
| <li><bug>61645</bug>Response Assertion: Add ability to assert on Request Data</li> |
| <li><bug>51140</bug>Response Assertion: add ability to set a specific error/failure message that is later shown in the Assertion Result. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>61534</bug>Convert AssertionError to a failed assertion, allowing users to use assert in their code. Fixing a regression introduced in 3.2</li> |
| <li><bug>61756</bug>Extractors: Improve label name "Reference name" to make it clear what it makes</li> |
| <li><bug>61758</bug><code>Apply to:</code> field in Extractors, Assertions: When entering a value in <code>JMeter Variable Name</code>, the radio box <code>JMeter Variable Name</code> should be selected by default. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>61846</bug>Scoped Assertion should follow same order of evaluation as Post Processors</li> |
| |
| </ul> |
| |
| <h3>Functions</h3> |
| <ul> |
| <li><bug>61724</bug>Add <code>__digest</code> function to provide computing of Hashes (SHA-XXX, MDX). Based on a contribution by orimarko at gmail.com</li> |
| <li><bug>61735</bug>Add <code>__dateTimeConvert</code> function to provide date formats conversions. Based on a contribution by orimarko at gmail.com</li> |
| <li><bug>61760</bug>Add <code>__isPropDefined</code> and <code>__isVarDefined</code> functions to know if property or variable exist. Contributed by orimarko at gmail.com</li> |
| <li><bug>61759</bug>Add <code>__changeCase</code> function to change different cases of a string. Based on a contribution by orimarko at gmail.com</li> |
| <li><bug>61561</bug>Function helper dialog should display exception in result</li> |
| <li><bug>61738</bug>Function Helper Dialog: Add Copy in Generate and clarify labels. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>62027</bug>Help: Introduce property <code>help.local</code> to allow choosing between local (offline) documentation and online documentation</li> |
| <li><bug>61593</bug>Remove Detail, Add, Add from Clipboard, Delete buttons in Function Helper GUI</li> |
| </ul> |
| |
| <h3>I18N</h3> |
| <ul> |
| <li><bug>61606</bug>Translate button <code>Browse…</code> in some elements (which use FileEditor class)</li> |
| <li><bug>61747</bug>HTTP(S) Test Script Recorder: add the missing doc to "Create transaction after request (ms)"</li> |
| </ul> |
| |
| <h3>Report / Dashboard</h3> |
| <ul> |
| <li><bug>61871</bug>Reduce jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity default value from 500ms to 100ms</li> |
| <li><bug>61879</bug>Remove useless files in HTML report template</li> |
| </ul> |
| |
| <h3>General</h3> |
| <ul> |
| <li><bug>61591</bug>Drop Workbench from test tree. Implemented by Artem Fedorov (artem at blazemeter.com) and contributed by BlazeMeter Ltd.</li> |
| <li><bug>61549</bug>Thread Group: Remove start and end date</li> |
| <li><bug>61529</bug>Migration to Java 9. Partly contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>61709</bug>SampleResult: Add a method <code>setIgnore()</code> to make JMeter ignore the SampleResult and not send it to listeners</li> |
| <li><bug>61806</bug>Allow to use <code>SampleResult#setIgnore()</code> in post-processors and assertions script (JSR223 elements)</li> |
| <li><bug>61607</bug>Add browse button in all BeanShell elements to select BeanShell script</li> |
| <li><bug>61627</bug>Don't clear LogView anymore when clicking on Warning/Errors Indicator</li> |
| <li><bug>61629</bug>Add Think Times to Children menu should not consider disabled elements</li> |
| <li><bug>61655</bug>SampleSender: Drop HoldSampleSender implementation</li> |
| <li><bug>61656</bug><code>tearDown Thread Group</code> should run by default at stop or shutdown of test</li> |
| <li><bug>61659</bug><code>JMeterVariables#get()</code> should apply <code>toString()</code> on non string objects</li> |
| <li><bug>61555</bug>Metaspace should be restricted as default</li> |
| <li><bug>61693</bug>JMeter aware of Docker (<code>-XX:+UnlockExperimentalVMOptions</code> <code>-XX:+UseCGroupMemoryLimitForHeap</code>)</li> |
| <li><bug>61694</bug>Add <code>-server</code> option in <code>jmeter.bat</code></li> |
| <li><bug>61697</bug>Introduce Darcula Look And Feel to make JMeter UI more attractive</li> |
| <li><bug>61704</bug>Toolbar: Improve a bit the right part</li> |
| <li><bug>61731</bug>Enhance Test plan Backup with option to save before run. Based on a contribution by orimarko at gmail.com</li> |
| <li><bug>61640</bug>JSR223 Test Elements: Enable by default caching. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>61785</bug>Add <menuchoice><guimenuitem>Help</guimenuitem><guimenuitem>Useful links</guimenuitem></menuchoice> to create issues and download nightly build</li> |
| <li><bug>61808</bug>Fix main frame position. Implemented by Artem Fedorov (artem at blazemeter.com) and contributed by BlazeMeter Ltd.</li> |
| <li><bug>61802</bug>Loop / ForEach Controller should expose a variable for current iteration. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><pr>349</pr>Add i18n resources(zh_CN). Contributed by Helly Guo (https://github.com/hellyguo)</li> |
| <li><pr>351</pr>Fixed about dialog position on first view. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><pr>352</pr>Menu bar - added mnemonics to more menu items. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><pr>353</pr>Re-wrote some existing tests in Spock. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><bug>61919</bug>UX: Reorder Menus. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><bug>61920</bug>Plugins: Add ability to listen to Test Plan loading/closing. Contributed by Peter Doornbosch (https://bitbucket.org/pjtr/)</li> |
| <li><bug>61935</bug>Plugins: Let GUI component (dynamically) decide whether it can be added via the menu or not. Contributed by Peter Doornbosch (https://bitbucket.org/pjtr/)</li> |
| <li><bug>61969</bug>When changing LAF through GUI, user should be informed that it is better to restart</li> |
| <li><bug>61970</bug>JMeter now uses English as default locale to avoid missing translations in some locales make UI look weird</li> |
| <li><bug>56368</bug>Create and Deploy source artifacts to Maven central</li> |
| <li><bug>61973</bug>Create and Deploy javadoc artifacts to Maven central</li> |
| <li><pr>371</pr>Fix example in documentation for <complink name="XPath Assertion"/>. Contributed by Konstantin Kalinin (kkalinin at hotmail.com)</li> |
| <li><bug>62039</bug>Distributed testing: Provide ability to use SSL</li> |
| </ul> |
| |
| <ch_section>Non-functional changes</ch_section> |
| <ul> |
| <li>Updated to bsh-2.0b6 (from bsh-2.0b5)</li> |
| <li>Updated to groovy-all-2.4.13 (from groovy-all-2.4.12)</li> |
| <li>Updated to rhino-1.7.7.2 (from rhino-1.7.7.1)</li> |
| <li>Updated to tika-core and tika-parsers 1.17 (from 1.16)</li> |
| <li>Updated to commons-dbcp2-2.2.0 (from 2.1.1)</li> |
| <li>Updated to caffeine 2.6.1 (from 2.5.5)</li> |
| <li>Updated to commons-codec-1.11 (from 1.10)</li> |
| <li>Updated to commons-io-2.6 (from 2.5)</li> |
| <li>Updated to commons-lang3-3.7 (from 3.6)</li> |
| <li>Updated to commons-pool2-2.5.0 (from 2.4.2)</li> |
| <li>Updated to asm-6.0 (from 5.2)</li> |
| <li>Updated to jsoup-1.11.2 (from 1.10.3)</li> |
| <li>Updated to cglib-nodep-3.2.6 (from 3.2.5)</li> |
| <li>Updated to ph-css 6.0.0 (from 5.0.4)</li> |
| <li>Updated to ph-commons 9.0.0 (from 8.6.6)</li> |
| <li>Updated to log4j2 2.10.0 (from 2.8.2)</li> |
| <li>Updated to httpcore 4.4.9 (from 4.4.7)</li> |
| <li>Updated to httpclient 4.5.5 (from 4.5.3)</li> |
| <li>Updated to jodd 4.1.4 (from 3.8.6)</li> |
| <li><bug>61642</bug>Improve FTP test coverage</li> |
| <li><bug>61641</bug>Improve JMS test coverage</li> |
| <li><bug>61651</bug>Improve TCP test coverage</li> |
| <li><bug>61651</bug>Improve OS test coverage. Partly contributed by Aleksei Balan (abalanonline at gmail.com)</li> |
| <li><pr>319</pr>Removed commented out code. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><pr>322</pr>General JavaDoc cleanup. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><pr>323</pr>Extracted method and used streams to improve readability. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><pr>324</pr>Save backup refactor. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><pr>327</pr>Utilising more modern Java, simplifying code and formatting code and comments. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><pr>332</pr>Add the spock framework for groovy unit tests. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><pr>334</pr>Enable running of JUnit tests from within IntelliJ with default config. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><pr>335</pr>Removed <code>functions.util.*</code> as they don't seem to be used (for many years). Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><bug>61867</bug><pr>345</pr>Updated to latest checkstyle (v8.5), Added many more rules to checkstyle, Included checking of test files and more file types. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><pr>350</pr>Parallelised unit tests. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><bug>61966</bug>Setup Test Results Analyzer in jenkins</li> |
| <li><pr>343</pr>Reduce the size of some images in the documentation. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| </ul> |
| |
| <!-- =================== Bug fixes =================== --> |
| |
| <ch_section>Bug fixes</ch_section> |
| |
| <h3>HTTP Samplers and Test Script Recorder</h3> |
| <ul> |
| <li><bug>61569</bug>JMS Point-to-Point Test Plan: Synchronization issue when putting reply. Contributed by Igor Panainte (panainte.i at gmail.com)</li> |
| </ul> |
| |
| <h3>Other Samplers</h3> |
| <ul> |
| <li><bug>61698</bug>Test Action: It stop is selected, samplers following Test Action can run</li> |
| <li><bug>61707</bug>Test Action: Target is ignored when pause is selected, so it should be disabled</li> |
| <li><bug>61827</bug>JMSPublisher: Don't add new line at the end of the file. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| </ul> |
| |
| <h3>Controllers</h3> |
| <ul> |
| <li><bug>61556</bug>Clarify in documentation performance impacts of <code>${}</code> var usage in IfController and groovy. Contributed by Justin McCartney (be_strew at yahoo.co.uk)</li> |
| <li><bug>61713</bug>Test Fragment has option to Change Controller and Insert Parent. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>61965</bug>Module and Include Controller should not allow to add meaningless elements in their context.</li> |
| <li><bug>62062</bug>ThroughputController: StackOverFlowError triggered when throughput=0 (Total Executions or Percentage Executions) Partly implemented by Artem Fedorov (artem.fedorov at blazemeter.com) and contributed by BlazeMeter Ltd.</li> |
| </ul> |
| |
| <h3>Listeners</h3> |
| <ul> |
| <li><bug>61742</bug>BackendListener: fix default value for <code>backend_graphite.send_interval</code></li> |
| <li><bug>61878</bug>BackendListener: NPE if BackendListenerClient#getDefaultParameters returns null</li> |
| <li><bug>61950</bug>View Results Tree: Content-Type <code>audio/mpegurl</code> is wrongly considered as binary</li> |
| </ul> |
| |
| <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> |
| <ul> |
| <li><bug>61716</bug>Header Manager: When pasting Headers from Firefox or Chrome spaces are introduced as first character of value</li> |
| </ul> |
| |
| <h3>Functions</h3> |
| <ul> |
| <li><bug>61588</bug>Better log message for <funclink name="__RandomDate()"/> function</li> |
| <li><bug>61619</bug>In Function Helper Dialog, the 1<sup>st</sup> function doesn't display default parameters</li> |
| <li><bug>61628</bug>If split string has empty separator default separator is not used</li> |
| <li><bug>61752</bug><code>__RandomDate</code>: Function does not allow missing last parameter used for variable name</li> |
| </ul> |
| |
| <h3>I18N</h3> |
| <ul> |
| </ul> |
| |
| <h3>Report / Dashboard</h3> |
| <ul> |
| <li><bug>61807</bug>Web Report: fix error in <code>getTop5ErrorMetrics</code>. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><bug>61900</bug>Report Generator: Report generation fails if separator is a regex reserved char like <code>|</code></li> |
| <li><bug>61925</bug>CsvSampleReader does not increment row in nextSample(). Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><bug>61956</bug>Report Generation: <code>-f</code> of <code>-forceDeleteResultFile</code> option does not work. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>61899</bug>Report Generation: When <code>jmeter.save.saveservice.print_field_names</code> is false and <code>sample_variables</code> are set report generation fails. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>61962</bug>Latency Vs Request and Response Time Vs Request graphs do not exceed 1000 RPS. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| </ul> |
| |
| <h3>General</h3> |
| <ul> |
| <li><bug>61661</bug>Avoid startup/shutdown problems due to 3<sup>rd</sup> party Thread Listener plugins throwing RuntimeException</li> |
| <li><bug>61625</bug>File Editor used in BeanInfo behaves strangely under all LAFs with impact on CSVDataSet, JSR223, BSF, Beanshell Element</li> |
| <li><bug>61844</bug>Maven pom.xml: Libraries used in testing should have scope test</li> |
| <li><bug>61842</bug>Saving with no changes causes a save and duplicate, identical backup file</li> |
| </ul> |
| |
| <!-- =================== Thanks =================== --> |
| |
| <ch_section>Thanks</ch_section> |
| <p>We thank all contributors mentioned in bug and improvement sections above: |
| </p> |
| <ul> |
| <li>Igor Panainte (panainte.i at gmail.com)</li> |
| <li>Emilian Bold (emi at apache.org)</li> |
| <li><a href="https://ubikloadpack.com">Ubik Load Pack</a></li> |
| <li>Justin McCartney (be_strew at yahoo.co.uk)</li> |
| <li>Vincent Herilier (https://github.com/vherilier)</li> |
| <li>Aleksei Balan (abalanonline at gmail.com)</li> |
| <li>Graham Russell (graham at ham1.co.uk)</li> |
| <li>orimarko at gmail.com</li> |
| <li>Artem Fedorov (artem at blazemeter.com)</li> |
| <li><a href="https://www.blazemeter.com">BlazeMeter Ltd</a></li> |
| <li>Benny van Wijngaarden (benny at smaragd-it.nl)</li> |
| <li>Matthew Buckett (https://github.com/buckett)</li> |
| <li>Helly Guo (https://github.com/hellyguo)</li> |
| <li>Peter Doornbosch (https://bitbucket.org/pjtr/)</li> |
| <li>Jeremy Arnold (jeremy at arnoldzoo.org)</li> |
| <li>Vladimir Sitnikov (sitnikov.vladimir at gmail.com)</li> |
| <li>Konstantin Kalinin (kkalinin at hotmail.com)</li> |
| </ul> |
| <p>We also thank bug reporters who helped us improve JMeter. <br/> |
| For this release we want to give special thanks to the following reporters for the clear reports and tests made after our fixes:</p> |
| <ul> |
| <li>user7294900 on Stackoverflow (orimarko at gmail.com)</li> |
| </ul> |
| <p> |
| Apologies if we have omitted anyone else. |
| </p> |
| <!-- =================== Known bugs or issues related to JAVA Bugs =================== --> |
| |
| <ch_section>Known problems and workarounds</ch_section> |
| <ul> |
| <li>View Results Tree may freeze rendering large response particularly if this response has no spaces, see <bugzilla>60816</bugzilla>. |
| This is due to an identified Java Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8172336">UI stuck when calling <code>JEditorPane.setText()</code> or <code>JTextArea.setText()</code> with long text without space</a>. |
| </li> |
| </ul> |
| <ul> |
| <li>The Once Only controller behaves correctly under a Thread Group or Loop Controller, |
| but otherwise its behaviour is not consistent (or clearly specified).</li> |
| |
| <li> |
| The numbers that appear to the left of the green box are the number of active threads / total number of threads, |
| the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>). |
| </li> |
| |
| <li> |
| Note that under some windows systems you may have this WARNING: |
| <source> |
| java.util.prefs.WindowsPreferences |
| WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0 |
| x80000002. Windows RegCreateKeyEx(…) returned error code 5. |
| </source> |
| The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore. |
| </li> |
| |
| <li> |
| You may encounter the following error: |
| <source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source> |
| 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 <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits. |
| This error is related to increased security in Java 8+. |
| <br></br> |
| To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing |
| the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case. |
| <br></br> |
| This property is in this file: |
| <source>JAVA_HOME/jre/lib/security/java.security</source> |
| See <bugzilla>56357</bugzilla> for details. |
| </li> |
| |
| <li> |
| Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers. |
| This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a> |
| The fix is to use JDK8_u45 or later. |
| </li> |
| |
| <li> |
| View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>. |
| This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes. |
| See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a> |
| The fix is to use JDK9 b65 or later. |
| </li> |
| |
| <li> |
| JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX. |
| This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a> |
| The fix is to use JDK 8 b132 or later. |
| </li> |
| </ul> |
| |
| <!-- =================== 3.3 =================== --> |
| |
| <h1>Version 3.3</h1> |
| <p> |
| Summary |
| </p> |
| <ul> |
| <li><a href="#New and Noteworthy">New and Noteworthy</a></li> |
| <li><a href="#Incompatible changes">Incompatible changes</a></li> |
| <li><a href="#Bug fixes">Bug fixes</a></li> |
| <li><a href="#Improvements">Improvements</a></li> |
| <li><a href="#Non-functional changes">Non-functional changes</a></li> |
| <li><a href="#Known problems and workarounds">Known problems and workarounds</a></li> |
| <li><a href="#Thanks">Thanks</a></li> |
| |
| </ul> |
| |
| <ch_section>New and Noteworthy</ch_section> |
| <note>JMeter does not yet support JAVA 9, next JMeter version will support it, you can help and follow progress on this item in <bugzilla>61529</bugzilla>.</note> |
| <note>Using last minor version of JAVA 8 is advised to avoid facing any JDK bug.</note> |
| <!-- <ch_category>Sample category</ch_category> --> |
| <!-- <ch_title>Sample title</ch_title> --> |
| <!-- <figure width="846" height="613" image="changes/3.0/view_results_tree_search_feature.png"></figure> --> |
| <ch_title>Core improvements</ch_title> |
| <p>HTTP Sampler now supports Brotli decompression.</p> |
| <p>CacheManager now completely supports Vary header.</p> |
| <p>InfluxDB BackendListener now supports sending results to InfluxDB through UDP protocol. |
| <figure width="825" height="328" image="changes/3.3/influxdb_udp.png"></figure> |
| It has also been enhanced to send number of errors by response code and message for each transaction</p> |
| <p>TCP Sampler now computes latency, see <bugzilla>60156</bugzilla></p> |
| <p>Upgraded dependencies to last available versions bringing performance improvements and bug fixes</p> |
| <p>Continued to improve the quality of our code and tests coverage. See <a href="https://builds.apache.org/analysis/overview?id=12927" >Quality report</a></p> |
| <ch_title>UX improvements</ch_title> |
| <p>More work has been done to better support HiDPI.</p> |
| <p>Some bugs, that crept in with the work on lowering the memory usage of View Results Tree, were fixed.</p> |
| <p>The constant <code>DEFAULT_IMPLEMENTATION</code> was removed from CookieManager, |
| as it lost it purpose with the removal of the alternate HTTP Client implementation in the last release</p> |
| <p>JDBC Sampler UX has been improved by adding select boxes for drivers and validation queries. |
| <figure width="821" height="543" image="changes/3.3/jdbc_config_validation_driver_url.png"></figure> |
| <figure width="820" height="451" image="changes/3.3/jdbc_config_validation_query.png"></figure> |
| </p> |
| <p>If Controller and While Controller UX have been improved |
| <figure width="821" height="348" image="changes/3.3/jmeter_if_controller.png"></figure> |
| </p> |
| <ch_title>Report/Dashboard improvements</ch_title> |
| A new Help menu item has been added to simplify configuration of report generation. |
| <figure width="491" height="455" image="changes/3.3/jmeter_export_transactions_menu.png"></figure> |
| <figure width="609" height="188" image="changes/3.3/jmeter_export_transactions_result.png"></figure> |
| <ch_title>Documentation improvements</ch_title> |
| Incorporated feedback about unclear documentation. |
| |
| <ch_title>Functions</ch_title> |
| <p>Function Helper Dialog: a new field that shows execution result has been added. |
| <figure width="693" height="344" image="changes/3.3/jmeter_function_result.png"></figure> |
| </p> |
| <p>New functions:</p> |
| <ul> |
| <li><code><funclink name="__timeShift"/></code> - return a date in various formats with the specified amount of seconds/minutes/hours/days added. |
| <figure width="757" height="376" image="changes/3.3/jmeter_function_add_time.png"></figure> |
| </li> |
| <li><code><funclink name="__RandomDate"/></code> - generate random date within a specific date range. |
| <figure width="700" height="369" image="changes/3.3/jmeter_function_random_date.png"></figure> |
| </li> |
| </ul> |
| |
| <!-- =================== Incompatible changes =================== --> |
| |
| <ch_section>Incompatible changes</ch_section> |
| <ul> |
| <li>In InfluxDbBackendListenerClient, <code>statut</code> property has been renamed to <code>status</code></li> |
| <li>In CookieManager, <code>DEFAULT_POLICY</code> and <code>DEFAULT_IMPLEMENTATION</code> constants are now private. |
| <note>If you're using <code>ignorecookies</code> with HC3CookieHandler (< JMeter 3.1) configuration will be reset, ensure you put it back.</note></li> |
| <li>JMeter will not truncate anymore by default responses exceeding 10 MB. If you want to enable this truncation, see property <code>httpsampler.max_bytes_to_store_per_request</code></li> |
| <li><code>org.apache.jmeter.protocol.tcp.sampler.TCPClient.read(InputStream)</code> has been deprecated in favor or org.apache.jmeter.protocol.tcp.sampler.TCPClient.read(InputStream, SampleResult), |
| ensure you update your implementation to be able to compute latency, see <bugzilla>60156</bugzilla></li> |
| </ul> |
| <h3>Removed elements or functions</h3> |
| <ul> |
| <li><code>_StringFromFile</code> function has been dropped, use <code><funclink name="__StringFromFile"/></code> instead</li> |
| </ul> |
| |
| <!-- =================== Improvements =================== --> |
| |
| <ch_section>Improvements</ch_section> |
| |
| <h3>HTTP Samplers and Test Script Recorder</h3> |
| <ul> |
| <li><bug>61056</bug>HTTP : Support brotli decoding</li> |
| <li><bug>61135</bug>CookieManager : Drop Implementation select box and cleanup class</li> |
| <li><bug>61492</bug>HTTP(S) Test Script Recorder : Add the possibility to change the value of proxy.pause in the GUI</li> |
| </ul> |
| |
| <h3>Other samplers</h3> |
| <ul> |
| <li><bug>61320</bug>Test Action : Set duration to <code>0</code> by default</li> |
| <li><bug>61504</bug>JDBC Connection Configuration : Set Max Number of Connections to <code>0</code> by default</li> |
| <li><bug>61505</bug>JDBC Connection Configuration : Set "Validation Query" to <code>empty</code> by default to use <code>isValid</code> method of JDBC driver</li> |
| <li><bug>61506</bug>JDBC Connection Configuration : Add a list for main databases validation queries for "Validation Query" attribute</li> |
| <li><bug>61507</bug>JDBC Connection Configuration : Add a list for main databases JDBC driver class name for "JDBC Driver class" attribute</li> |
| <li><bug>61525</bug>OS Process Sampler : Add browser button to Command and Working directory fields</li> |
| <li><bug>60156</bug>TCPSampler : Latency is not measured for TCP Sampler. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>61039</bug>CSV data set config : Add browser button to Filename field</li> |
| <li><bug>61527</bug>CSV data set config : Add a list for main file encoding values for File encoding attribute</li> |
| </ul> |
| |
| <h3>Controllers</h3> |
| <ul> |
| <li><bug>61131</bug>IfController and WhileController : Improve UX</li> |
| </ul> |
| |
| <h3>Listeners</h3> |
| <ul> |
| <li><bug>61167</bug>InfluxdbBackendListener : add number of errors by response code and message for each transaction</li> |
| <li><bug>61068</bug>Introduce property <code>resultcollector.action_if_file_exists</code> to control the popup "File already exists" when starting a test</li> |
| <li><bug>61457</bug>InfluxDB backend listener client : Support sending result to InfluxDB through UDP protocol. Partly based on <pr>302</pr> by Junlong Wu (github id mybreeze77)</li> |
| </ul> |
| |
| <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> |
| <ul> |
| <li><bug>61176</bug><pr>298</pr> Cache responses that have <code>vary</code> header in the <code>CacheManager</code>.</li> |
| </ul> |
| |
| <h3>Functions</h3> |
| <ul> |
| <li><bug>61040</bug>Add a time shifting function</li> |
| <li><bug>61126</bug>Function Helper Dialog : Add a field that shows execution result</li> |
| <li><bug>61508</bug>Add a random date within a specific date range function</li> |
| </ul> |
| |
| <h3>I18N</h3> |
| <ul> |
| <li><bug>61509</bug>Better label/translation/documentation for labels start and max for Counter element</li> |
| </ul> |
| |
| <h3>Report / Dashboard</h3> |
| <ul> |
| <li><bug>61481</bug>Help Menu Item to export transaction for Web report</li> |
| </ul> |
| |
| <h3>General</h3> |
| <ul> |
| <li>When looking for classes in <code>ActionRouter</code>, fall back to location of the jar, |
| where <code>ActionRouter</code> is loaded from. Provided by Emilian Bold (emi at apache.org)</li> |
| <li><bug>61510</bug>Set 'Max Number of Connections' to <code>0</code> into 'JDBC Connection Configuration' for the 'JDBC Load Test template'</li> |
| <li><bug>61399</bug>Make some bin and extras scripts Shellcheck compatible. Contributed by Wolfgang Wagner (internetwolf2000 at hotmail.com)</li> |
| </ul> |
| |
| <ch_section>Non-functional changes</ch_section> |
| <ul> |
| <li>Updated to groovy 2.4.12 (from 2.4.10)</li> |
| <li>Updated to caffeine 2.5.5 (from 2.4.0)</li> |
| <li>Updated to commons-jexl3 3.1 (from 3.0)</li> |
| <li>Updated to ph-css 5.0.4 (from 5.0.3)</li> |
| <li>Updated to ph-commons 8.6.6 (from 8.6.0)</li> |
| <li>Updated to log4j2 2.8.2 (from 2.8.1)</li> |
| <li>Updated to xmlgraphics-commons 2.2 (from 2.1)</li> |
| <li>Updated to jodd 3.8.6 (from 3.8.1)</li> |
| <li>Updated to xstream 1.4.10 (from 1.4.9)</li> |
| <li>Updated to Apache Tika 1.16 (from 1.14)</li> |
| <li>Updated to jsoup-1.10.3 (from 1.10.2)</li> |
| <li>Updated to commons-lang3 3.6 (from 3.5)</li> |
| <li>Updated to json-path 2.4.0 (from 2.2.0)</li> |
| <li>Updated to httpcore 4.4.7 (from 4.4.6)</li> |
| <li><bug>61438</bug>Change the cryptographic signature of packages from sha-1 to sha-512</li> |
| </ul> |
| |
| <!-- =================== Bug fixes =================== --> |
| |
| <ch_section>Bug fixes</ch_section> |
| |
| <h3>HTTP Samplers and Test Script Recorder</h3> |
| <ul> |
| <li><bug>61384</bug>Don't set the charset on enclosing <code>multipart/form-data</code> header. It irritates some servers.<br/> |
| The charset was added sometime back while refactoring to use a newer API of http client. |
| See <bug>56141</bug> for more info.</li> |
| <li><bug>61456</bug><code>java.lang.ArrayIndexOutOfBoundsException</code> when recording with JMeter and weird Basic Auth Authorization header</li> |
| <li><bug>61395</bug>Large server response truncation can impact recording</li> |
| </ul> |
| |
| <h3>Other Samplers</h3> |
| <ul> |
| <li><bug>60889</bug>JMeter JDBC sample calls <code>SELECT USER()</code> when testing with MySQL JDBC due to <code>Connection#toString</code> call for response headers.</li> |
| <li><bug>61259</bug>JDBC Request : since JMeter 3.0, when JDBC auto-commit is <code>false</code>, a rollback statement happens each time a Request is executed. Partly contributed by Liu XP (liu_xp2003 at sina.com)</li> |
| <li><bug>61319</bug>Fix regression: SMTP Sampler could not send mails, when no attachments were specified.</li> |
| </ul> |
| |
| <h3>Controllers</h3> |
| <ul> |
| <li><bug>61375</bug>Use system DNS resolver as last resort, when resolving entries in the static host table.</li> |
| </ul> |
| |
| <h3>Listeners</h3> |
| <ul> |
| <li><bug>61005</bug>View Results Tree - Browser Response Data is not clearing</li> |
| <li><bug>61121</bug>InfluxdbBackendListenerClient: Only all percentiles are sent, not <code>KO</code> and <code>OK</code></li> |
| <li><bug>60961</bug>Try to keep status of selected and expanded elements in View Results Tree when new elements are added.</li> |
| <li><bug>61198</bug>Backend Listener does not work properly in main script when included scripts also contain Backend Listener</li> |
| <li><bug>61493</bug>Max/Min threads are interchanged in Graphite and InfluxDB backend listener</li> |
| </ul> |
| |
| <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> |
| <ul> |
| <li><bug>58743</bug><pr>293</pr> TableEditor can't be saved, when using two or more instances. Bugfix provided by Emilian Bold (emi at apache.org)</li> |
| <li><bug>61314</bug>HTTP URL Re-writing Modifier doesn't replace existing <code>jsessionid</code> in http sampler, but adds it to the end</li> |
| <li><bug>61336</bug>BeanShell Assertion : mistake in Chinese translation</li> |
| </ul> |
| |
| <h3>Functions</h3> |
| <ul> |
| <li><bug>61258</bug>StringFromFile function is mentioned twice in the Function helper dialog</li> |
| <li><bug>61260</bug><code><funclink name="__XPath"/></code> function returns null despite XPath checker founds matches</li> |
| <li><bug>58876</bug>TestPlanName function returns <code>null</code> for a newly saved Test Plan and uses previously opened one for a new one</li> |
| </ul> |
| |
| <h3>I18N</h3> |
| <ul> |
| </ul> |
| |
| <h3>Report / Dashboard</h3> |
| <ul> |
| <li><bug>61129</bug>Report/Dashboard : If response code is empty but a <code>failureMessage</code> is present, Errors and Top 5 Errors are not accurate. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>61151</bug>Report/Dashboard : Top 5 Errors by Sampler and Errors : If assertion contains html code, the html part is hidden</li> |
| </ul> |
| |
| <h3>General</h3> |
| <ul> |
| <li><bug>60743</bug>Stopping / Shutting down Test might create a deadlock due to HTTPCORE-446, fixed by HttpCore upgrade to 4.4.7</li> |
| <li><bug>60994</bug>Fix some typo in comments or log messages. <pr>289</pr> and <pr>290</pr></li> |
| <li><bug>61011</bug>Replace occurrences count is not correct (Path and Host replacement are counted twice)</li> |
| <li><bug>61026</bug>Cannot run program "keytool": CreateProcess error=2 when starting JMeter 3.2 in GUI mode</li> |
| <li><bug>61054</bug>Endless loop in <code>JOrphanUtils#replaceAllWithRegex</code> when regex is contained in replacement</li> |
| <li><bug>60995</bug>HTTP Test Script Recorder: Port field is very small under some L&F</li> |
| <li><bug>61073</bug>HTTP(S) Test Script Recorder panel have some fields with bad size on HiDPI screen or GTK+ L&F on Linux/XWayland</li> |
| <li><bug>57958</bug>Fix transaction sample not generated if thread stops/restarts. Implemented by Artem Fedorov (artem at blazemeter.com) and contributed by BlazeMeter Ltd.</li> |
| <li><bug>61050</bug>Handle uninitialized RessourceBundle more gracefully, when calling <code>JMeterUtils#getResString</code>.</li> |
| <li><bug>61100</bug>Invalid GC Log Filename on Windows</li> |
| <li><bug>57962</bug>Allow to use variables ( from User Defined Variables only ) in all listeners in slave mode</li> |
| <li><bug>61270</bug>Fixed width fonts too small in text areas to read under HiDPI (user manual bug)</li> |
| <li><bug>61292</bug>Make processing of samples in reporter more robust.</li> |
| <li><bug>61359</bug>When cutting an element from Tree, Test plan is not marked as dirty</li> |
| <li><bug>61380</bug>JMeter shutdown using timers releases thundering herd of interrupted samplers</li> |
| <li><bug>57055</bug>CheckDirty.doAction should clear previousGuiItems for <code>SUB_TREE_SAVED</code></li> |
| </ul> |
| |
| <!-- =================== Thanks =================== --> |
| |
| <ch_section>Thanks</ch_section> |
| <p>We thank all contributors mentioned in bug and improvement sections above: |
| </p> |
| <ul> |
| <li>Anass Benomar (abenomar at umanis.com, Mithrandir0407 at github)</li> |
| <li>Anthony Kearns (anthony.kearns atrightside.co)</li> |
| <li>Emilian Bold (emi at apache.org)</li> |
| <li>Liu XP (liu_xp2003 at sina.com)</li> |
| <li><a href="http://ubikloadpack.com">Ubik Load Pack</a></li> |
| <li>Wolfgang Wagner (internetwolf2000 at hotmail.com)</li> |
| <li>Junlong Wu (github id mybreeze77)</li> |
| </ul> |
| <p>We also thank bug reporters who helped us improve JMeter. <br/> |
| For this release we want to give special thanks to the following reporters for the clear reports and tests made after our fixes:</p> |
| <ul> |
| <li>Liu XP (liu_xp2003 at sina.com)</li> |
| <li>Alexander Podelko (apodelko at yahoo.com)</li> |
| </ul> |
| <p> |
| Apologies if we have omitted anyone else. |
| </p> |
| <!-- =================== Known bugs or issues related to JAVA Bugs =================== --> |
| |
| <ch_section>Known problems and workarounds</ch_section> |
| <ul> |
| <li>View Results Tree may freeze rendering large response particularly if this response has no spaces, see <bugzilla>60816</bugzilla>. |
| This is due to an identified Java Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8172336">UI stuck when calling <code>JEditorPane.setText()</code> or <code>JTextArea.setText()</code> with long text without space</a>. |
| </li> |
| </ul> |
| <ul> |
| <li>The Once Only controller behaves correctly under a Thread Group or Loop Controller, |
| but otherwise its behaviour is not consistent (or clearly specified).</li> |
| |
| <li> |
| The numbers that appear to the left of the green box are the number of active threads / total number of threads, |
| the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>). |
| </li> |
| |
| <li> |
| Note that under some windows systems you may have this WARNING: |
| <source> |
| java.util.prefs.WindowsPreferences |
| WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0 |
| x80000002. Windows RegCreateKeyEx(…) returned error code 5. |
| </source> |
| The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore. |
| </li> |
| |
| <li> |
| You may encounter the following error: |
| <source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source> |
| 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 <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits. |
| This error is related to increased security in Java 8+. |
| <br></br> |
| To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing |
| the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case. |
| <br></br> |
| This property is in this file: |
| <source>JAVA_HOME/jre/lib/security/java.security</source> |
| See <bugzilla>56357</bugzilla> for details. |
| </li> |
| |
| <li> |
| Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers. |
| This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a> |
| The fix is to use JDK8_u45 or later. |
| </li> |
| |
| <li> |
| View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>. |
| This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes. |
| See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a> |
| The fix is to use JDK9 b65 or later. |
| </li> |
| |
| <li> |
| JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX. |
| This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a> |
| The fix is to use JDK 8 b132 or later. |
| </li> |
| </ul> |
| |
| <!-- =================== 3.2 =================== --> |
| |
| <h1>Version 3.2</h1> |
| <p> |
| Summary |
| </p> |
| <ul> |
| <li><a href="#New and Noteworthy">New and Noteworthy</a></li> |
| <li><a href="#Incompatible changes">Incompatible changes</a></li> |
| <li><a href="#Bug fixes">Bug fixes</a></li> |
| <li><a href="#Improvements">Improvements</a></li> |
| <li><a href="#Non-functional changes">Non-functional changes</a></li> |
| <li><a href="#Known problems and workarounds">Known problems and workarounds</a></li> |
| <li><a href="#Thanks">Thanks</a></li> |
| |
| </ul> |
| |
| <ch_section>New and Noteworthy</ch_section> |
| |
| <!-- <ch_category>Sample category</ch_category> --> |
| <!-- <ch_title>Sample title</ch_title> --> |
| <!-- <figure width="846" height="613" image="changes/3.0/view_results_tree_search_feature.png"></figure> --> |
| |
| <ch_section>IMPORTANT CHANGES</ch_section> |
| <p> |
| JMeter now requires Java 8. Ensure you use the most up to date version. |
| </p> |
| <p> |
| JMeter logging has been migrated to SLF4J and Log4j 2. |
| This affects configuration and 3<sup>rd</sup> party plugins, see below <b>"Logging changes"</b>. |
| </p> |
| <p> |
| Starting with JMeter version 3.2 the number of results in View Results Tree is |
| limited by default to 500 entries. If you want more entries, you have to set |
| the property <code>view.results.tree.max_results</code> to a higher value, or to <code>0</code>, if |
| you don't want to impose any limit. |
| You can set the property in bin/user.properties. |
| More info might be found <a href="usermanual/component_reference.html#View_Results_Tree">here</a>. |
| </p> |
| <ch_title>Core improvements</ch_title> |
| <ul> |
| <li>JMeter now provides a new BackendListener implementation that interfaces InfluxDB. |
| <figure width="813" height="407" image="changes/3.2/backend_influxdb.png"></figure> |
| This implementation sends data using Asynchronous HTTP calls to InfluxDB through its <a href="https://docs.influxdata.com/influxdb/v1.2/guides/writing_data/">HTTP API</a> |
| and give you the following graphs with annotations: |
| <figure width="934" height="399" image="backend_listener_influxdb_graph.png"></figure> |
| </li> |
| <li>DNS Cache Manager now has a table to allow static host resolution. |
| <figure width="803" height="561" image="changes/3.2/dns_cache_manager_static_hosts.png"></figure> |
| </li> |
| <li>JMS Publisher and Subscriber now allow reconnection on error with pause. |
| <figure width="852" height="738" image="changes/3.2/jms_publisher_reconnect.png"></figure> |
| <figure width="716" height="538" image="changes/3.2/jms_subscriber_reconnect_pause.png"></figure> |
| </li> |
| <li>Variables in JMS Publisher are now supported for all types of messages. Add the encoding type of the file to parse its content</li> |
| <figure width="750" height="743" image="changes/3.2/jms_subscriber_content_encoding.png"></figure> |
| <li>XPath Extractor now allows extraction randomly, by index or for all matches. |
| <figure width="823" height="348" image="changes/3.2/xpath_extractor_matchno.png"></figure> |
| </li> |
| <li>Response Assertion now allows to work on Request Header, provides a "OR" combination and has a better cell renderer |
| <figure width="1053" height="329" image="changes/3.2/response_assertion.png"></figure> |
| </li> |
| <li>JMeter now uses Oracle Nashorn Javascript engine instead of Rhino. This provides a faster execution of Javascript.</li> |
| <li>HTTP HC4 Implementation now provides preemptive Basic Auth enabled by default</li> |
| <li>Embedded resources download in CSS has been improved to avoid useless repetitive parsing to find the resources</li> |
| <li>An important work on code quality and code coverage with tests has been done since Sonar has been setup on the project. |
| You can see Sonar report <a href="https://builds.apache.org/analysis/overview?id=12927" >here</a>. |
| </li> |
| </ul> |
| |
| <ch_title>UX improvements</ch_title> |
| <ul> |
| <li>When running a Test, GUI is now more responsive and less impacting on memory usage thanks to a limitation on the number of Sample Results |
| listeners hold and a rework of the way GUI is updated</li> |
| <li>HTTP Request GUI has been simplified and provides more place for parameters and body. |
| <figure width="848" height="475" image="changes/3.2/http_request.png"></figure> |
| </li> |
| <li>HTTP(S) Test Script Recorder has been simplified and clarified. |
| <figure width="1023" height="494" image="changes/3.2/http_recorder_1.png"></figure> |
| <figure width="1021" height="711" image="changes/3.2/http_recorder_2.png"></figure> |
| </li> |
| <li>A <code>replace</code> feature has been added to Search feature to allow replacement in some elements. |
| <figure width="459" height="196" image="changes/3.2/search_replace.png"></figure> |
| <note> |
| ReplaceAll does not do replacement on all elements, it does it on:<br/> |
| - HeaderManager: Replacement in values <br/> |
| - Http Request: Replacement in Arguments, Path and Host<br/> |
| </note> |
| </li> |
| <li>View Results Tree now provides a more up to date Browser renderer which requires JavaFX.</li> |
| <li>You can now add through a contextual menu think times, this will add think times between samplers and Transaction Controllers |
| of selected node. |
| <figure width="326" height="430" image="changes/3.2/menu_add_think_times.png"></figure> |
| </li> |
| <li>You can now apply a naming policy to children of a Transaction Controller. A default policy exists but you can implement your own |
| through <code><a href="./api/org/apache/jmeter/gui/action/TreeNodeNamingPolicy.html" >org.apache.jmeter.gui.action.TreeNodeNamingPolicy</a></code> |
| and configuring property <code>naming_policy.impl</code> |
| <figure width="327" height="518" image="changes/3.2/menu_apply_naming_policy.png"></figure> |
| </li> |
| <li>Sorting per column has been added to View Results in Table, Summary Report, Aggregate Report and Aggregate Graph elements. |
| <figure width="1065" height="369" image="changes/3.2/sorting.png"></figure> |
| </li> |
| </ul> |
| |
| <ch_title>Report/Dashboard improvements</ch_title> |
| <ul> |
| <li> |
| Statistics have been reorganized to clarify report: |
| <figure width="1548" height="366" image="dashboard/report_statistics.png"></figure> |
| </li> |
| <li> |
| It is now possible to customize APDEX thresholds per transaction based on regular expression or sample name. |
| The below example will apply different thresholds for samples sample(\\d+), sampleA and scenarioB |
| than default ones (500 and 1500 for satisfied and tolerated thresholds) declared: |
| <source> |
| jmeter.reportgenerator.apdex_satisfied_threshold=500 |
| jmeter.reportgenerator.apdex_tolerated_threshold=1500 |
| jmeter.reportgenerator.apdex_per_transaction=sample(\\d+):1000|2000;\ |
| sampleA:3000|4000;\ |
| scenarioB:5000|6000 |
| </source> |
| </li> |
| </ul> |
| |
| <ch_title>Documentation improvements</ch_title> |
| <ul> |
| <li>PDF Documentations have been migrated and updated to HTML user manual</li> |
| </ul> |
| |
| <!-- =================== Incompatible changes =================== --> |
| |
| <ch_section>Incompatible changes</ch_section> |
| |
| <ul> |
| <li>JMeter requires now at least a Java 8 version to run.</li> |
| <li>JMeter logging has been migrated to SLF4J and Log4j 2, this involves changes in the way configuration is done. JMeter now relies on standard |
| <a href="https://logging.apache.org/log4j/2.x/manual/configuration.html">Log4j 2 configuration</a> in file <code>log4j2.xml</code> |
| See <code>Logging changes</code> section below for further details. |
| </li> |
| <li>The following jars have been removed after migration from LogKit to SLF4J (see <bugzilla>60589</bugzilla>): |
| <ul> |
| <li>ApacheJMeter_slf4j_logkit.jar</li> |
| <li>avalon-framework-4.1.4.jar</li> |
| <li>commons-logging-1.2.jar</li> |
| <li>excalibur-logger-1.1.jar</li> |
| <li>logkit-2.0.jar</li> |
| </ul> |
| </li> |
| <li>The <code>commons-httpclient-3.1.jar</code> has been removed after drop of HC3.1 support(see <bugzilla>60727</bugzilla>)</li> |
| <li>JMeter now sets through <code>-Djava.security.egd=file:/dev/urandom</code> the algorithm for secure random</li> |
| <li>Process Sampler now returns error code 500 when an error occurs. It previously returned an empty value.</li> |
| <li>In <code>org.apache.jmeter.protocol.http.sampler.HTTPHCAbstractImpl</code> two protected static fields (<code>localhost</code> and <code>nonProxyHostSuffixSize</code>) have been renamed to (<code>LOCALHOST</code> and <code>NON_PROXY_HOST_SUFFIX_SIZE</code>) |
| to follow static fields naming convention</li> |
| <li>JMeter now uses by default Oracle Nashorn engine instead of Mozilla Rhino for better performances. This should not have an impact unless |
| you use some advanced features. You can revert back to Rhino by settings property <code>javascript.use_rhino=true</code>. |
| You can read this <a href="https://wiki.openjdk.java.net/display/Nashorn/Rhino+Migration+Guide">migration guide</a> for more details on Nashorn. See <bugzilla>60672</bugzilla></li> |
| <li><bug>60729</bug>The Random Variable Config Element now allows minimum==maximum. Previous versions logged an error when minimum==maximum and did not set the configured variable.</li> |
| <li><bug>60730</bug>The JSON PostProcessor now sets the <code>_ALL</code> variable (assuming <code>Compute concatenation var</code> was checked) |
| even if the JSON path matches only once. Previous versions did not set the <code>_ALL</code> variable in this case.</li> |
| </ul> |
| |
| <h3>Removed elements or functions</h3> |
| <ul> |
| <li>SOAP/XML-RPC Request has been removed as part of <bugzilla>60727</bugzilla>. Use HTTP Request element as a replacement. |
| See <a href="./build-ws-test-plan.html" >Building a WebService Test Plan</a></li> |
| <li><bug>60423</bug>Drop Monitor Results listener </li> |
| <li>Drop deprecated class <code>org.apache.jmeter.protocol.system.NativeCommand</code></li> |
| <li>Drop deprecated class <code>org.apache.jmeter.protocol.http.config.gui.MultipartUrlConfigGui</code></li> |
| <li>Drop deprecated class <code>org.apache.jmeter.testelement.TestListener</code></li> |
| <li>Drop deprecated class <code>org.apache.jmeter.reporters.FileReporter</code></li> |
| <li>Drop deprecated class <code>org.apache.jmeter.protocol.http.modifier.UserSequence</code></li> |
| <li>Drop deprecated class <code>org.apache.jmeter.protocol.http.parser.HTMLParseError</code></li> |
| <li>Drop unused methods <code>org.apache.jmeter.protocol.http.control.HeaderManager#getSOAPHeader</code> |
| and <code>org.apache.jmeter.protocol.http.control.HeaderManager#setSOAPHeader(Object)</code> |
| </li> |
| <li><code>org.apache.jmeter.protocol.http.util.Base64Encode</code> has been deprecated, you can use <code>java.util.Base64</code> as a replacement</li> |
| </ul> |
| |
| <h3>Logging changes</h3> |
| <p> |
| JMeter logging has been migrated to SLF4J and Log4j 2. |
| This affects logging configuration and 3<sup>rd</sup> party plugins (if they use JMeter logging). |
| The following sections describe what changes need to be made. |
| </p> |
| |
| <h4>Setting the logging level and log file</h4> |
| <p> |
| The default logging level can be changed on the command-line using the <code>-L</code> parameter. |
| Likewise the <code>-l</code> parameter can be used to change the name of the log file. |
| However the <code>log_level</code> properties no longer work. |
| </p> |
| <p> |
| The default logging levels and file name are defined in the <code>log4j2.xml</code> configuration file |
| in the launch directory (usually <code>JMETER_HOME/bin</code>) |
| </p> |
| <p> |
| <note>If you need to change the level programmatically from Groovy code or Beanshell, you need to do the following: |
| <source> |
| import org.apache.logging.log4j.core.config.Configurator; |
| ⋮ |
| final String loggerName = te.getClass().getName(); // te being a JMeter class |
| Configurator.setAllLevels(loggerName, Level.DEBUG); |
| </source> |
| </note> |
| </p> |
| |
| <h4>Changes to 3<sup>rd</sup> party plugin logging</h4> |
| <p> |
| <note>3rd party plugins should migrate their logging code from logkit to slf4j. This is fairly easy and can be done by replacing: |
| <source> |
| import org.apache.jorphan.logging.LoggingManager; |
| import org.apache.log.Logger; |
| ⋮ |
| private static final Logger log = LoggingManager.getLoggerForClass(); |
| </source> |
| By: |
| <source> |
| import org.slf4j.Logger; |
| import org.slf4j.LoggerFactory; |
| ⋮ |
| private static final Logger log = LoggerFactory.getLogger(YourClassName.class); |
| </source> |
| </note> |
| </p> |
| <!-- =================== Improvements =================== --> |
| |
| <ch_section>Improvements</ch_section> |
| |
| <h3>HTTP Samplers and Test Script Recorder</h3> |
| <ul> |
| <li><bug>59934</bug>Fix race-conditions in CssParser. Based on a patch by Jerome Loisel (loisel.jerome at gmail.com)</li> |
| <li><bug>60543</bug>HTTP Request / Http Request Defaults UX: Move to advanced panel Timeouts, Implementation, Proxy. Implemented by Philippe Mouawad (p.mouawad at ubik-ingenierie.com) and contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>60548</bug>HTTP Request : Allow Upper Panel to be collapsed</li> |
| <li><bug>57242</bug>HTTP Authorization is not pre-emptively set with HttpClient4</li> |
| <li><bug>60727</bug>Drop commons-httpclient-3.1 and related elements. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>60790</bug>HTTP(S) Test Script Recorder : Improve information on certificate expiration and have better UX for Start/Stop</li> |
| <li><bug>60888</bug>HttpRequest : Add option to allow retrial of all requests including NON Idempotent HTTP methods</li> |
| <li><bug>60896</bug>HTTP(S) Test Script Recorder : Improve UX by reducing number of properties on screen</li> |
| </ul> |
| |
| <h3>Other samplers</h3> |
| <ul> |
| <li><bug>60740</bug>Support variable for all JMS messages (bytes, object, …) and sources (file, folder), based on <pr>241</pr>. Contributed by Maxime Chassagneux (maxime.chassagneux at gmail.com).</li> |
| <li><bug>60585</bug>JMS Publisher and JMS Subscriber : Allow reconnection on error and pause between errors. Based on <pr>240</pr> from by Logan Mauzaize (logan.mauzaize at gmail.com) and Maxime Chassagneux (maxime.chassagneux at gmail.com).</li> |
| <li><pr>259</pr> - Refactored and reformatted SmtpSampler. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| </ul> |
| |
| <h3>Controllers</h3> |
| <ul> |
| <li><bug>60672</bug>JavaScript function / IfController : use Nashorn engine by default</li> |
| </ul> |
| |
| <h3>Listeners</h3> |
| <ul> |
| <li><bug>60144</bug>View Results Tree : Add a more up to date Browser Renderer to replace old Render</li> |
| <li><bug>60542</bug>View Results Tree : Allow Upper Panel to be collapsed. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>52962</bug>Allow sorting by columns for View Results in Table, Summary Report, Aggregate Report and Aggregate Graph. Based on a <pr>245</pr> by Logan Mauzaize (logan.mauzaize at gmail.com) and Maxime Chassagneux (maxime.chassagneux at gmail.com).</li> |
| <li><bug>60590</bug>BackendListener : Add Influxdb BackendListenerClient implementation to JMeter. Partly based on <pr>246</pr> by Logan Mauzaize (logan.mauzaize at gmail.com) and Maxime Chassagneux (maxime.chassagneux at gmail.com).</li> |
| <li><bug>60591</bug>BackendListener : Add a time boxed sampling. Based on a <pr>237</pr> by Logan Mauzaize (logan.mauzaize at gmail.com) and Maxime Chassagneux (maxime.chassagneux at gmail.com).</li> |
| <li><bug>60678</bug>View Results Tree : Text renderer, search should not popup "Text Not Found"</li> |
| <li><bug>60691</bug>View Results Tree : In Renderers (XPath, JSON Path Tester, RegExp Tester and CSS/JQuery Tester) lower panel is sometimes not visible as upper panel is too big and cannot be resized</li> |
| <li><bug>60687</bug>Make GUI more responsive when it gets a lot of events.</li> |
| <li><bug>60791</bug>View Results Tree: Trigger search on Enter key in Search Feature and display red background if no match</li> |
| <li><bug>60822</bug>ResultCollector does not ensure unique file name entries in files HashMap</li> |
| </ul> |
| |
| <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> |
| <ul> |
| <li><bug>60154</bug>User Parameters GUI: allow rows to be moved up & down in the list. Contributed by Murdecai777 (https://github.com/Murdecai777).</li> |
| <li><bug>60507</bug>Added '<code>Or</code>' Function into ResponseAssertion. Based on a contribution from 忻隆 (298015902 at qq.com)</li> |
| <li><bug>58943</bug>Create a Better Think Time experience. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>60602</bug>XPath Extractor : Add Match No. to allow extraction randomly, by index or all matches</li> |
| <li><bug>60710</bug>XPath Extractor : When content on which assertion applies is not XML, in View Results Tree the extractor is marked in Red and named SAXParseException. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>60712</bug>Response Assertion : Improve Renderer of Patterns</li> |
| <li><bug>59174</bug>Add a table with static hosts to the DNS Cache Manager. This enables better virtual hosts testing with HttpClient4.</li> |
| </ul> |
| |
| <h3>Functions</h3> |
| <ul> |
| <li><bug>60883</bug><pr>288</pr> - Add <code>${__escapeXml()}</code> function. Contributed by Michael Osipov (michaelo at apache.org)</li> |
| </ul> |
| |
| <h3>I18N</h3> |
| <ul> |
| <li>Improve translation "<code>save_as</code>" in French. Based on a <pr>252</pr> by Maxime Chassagneux (maxime.chassagneux at gmail.com).</li> |
| <li><bug>60785</bug>Improvement of Japanese translation. Patch by Kimono (kimono.outfit.am at gmail.com).</li> |
| </ul> |
| |
| <h3>Report / Dashboard</h3> |
| <ul> |
| <li><bug>60637</bug>Improve Statistics table design <figure image="dashboard/report_statistics.png" ></figure></li> |
| <li><bug>60112</bug>Report / Dashboard : Add ability to customize APDEX thresholds per Transaction name. Contributed by Stephane Leplus (s.leplus at ubik-ingenierie.com)</li> |
| </ul> |
| |
| <h3>General</h3> |
| <ul> |
| <li><bug>58164</bug>Check if file already exists on ResultCollector listener before starting the loadtest</li> |
| <li><bug>54525</bug>Search Feature : Enhance it with ability to replace</li> |
| <li><bug>60530</bug>Add API to create JMeter threads while test is running. Based on a contribution by Logan Mauzaize (logan.mauzaize at gmail.com) and Maxime Chassagneux (maxime.chassagneux at gmail.com).</li> |
| <li><bug>60514</bug>Ability to apply a naming convention on Children of a Transaction Controller. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>60711</bug>Improve Delete button behaviour for Assertions / Header Manager / User Parameters GUIs / Exclude, Include in HTTP(S) Test Script Recorder</li> |
| <li><bug>60593</bug>Switch to G1 GC algorithm</li> |
| <li><bug>60595</bug>Add a SplashScreen at the start of JMeter GUI. Contributed by Maxime Chassagneux (maxime.chassagneux at gmail.com).</li> |
| <li><bug>55258</bug>Drop "Close" icon from toolbar and add "New" to menu. Partly based on contribution from Sanduni Kanishka (https://github.com/SanduniKanishka)</li> |
| <li><bug>59995</bug>Allow user to change font size with two new menu items and use <code>jmeter.hidpi.scale.factor</code> for scaling fonts. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>60654</bug>Validation Feature : Be able to ignore BackendListener. Contributed by Maxime Chassagneux (maxime.chassagneux at gmail.com).</li> |
| <li><bug>60646</bug>Workbench : Save it by default</li> |
| <li><bug>60684</bug>Thread Group: Validate ended prematurely by Scheduler with 0 or very short duration. Contributed by Andrew Burton (andrewburtonatwh at gmail.com).</li> |
| <li><bug>60589</bug>Migrate LogKit to SLF4J - Drop Avalon, LogKit and Excalibur with backward compatibility for 3<sup>rd</sup> party modules. Contributed by Woonsan Ko (woonsan at apache.org)</li> |
| <li><bug>60565</bug>Migrate LogKit to SLF4J - Optimize logging statements. e.g, message format args, throwable args, unnecessary if-enabled-logging in simple ones, etc. Contributed by Woonsan Ko (woonsan at apache.org)</li> |
| <li><bug>60564</bug>Migrate LogKit to SLF4J - Replace LogKit loggers with SLF4J ones and keep the current LogKit binding solution for backward compatibility with plugins. Contributed by Woonsan Ko (woonsan at apache.org)</li> |
| <li><bug>60664</bug>Add a UI menu to set log level. Contributed by Woonsan Ko (woonsan at apache.org)</li> |
| <li><pr>276</pr> - Added some translations for polish locale. Contributed by Bartosz Siewniak (barteksiewniak at gmail.com)</li> |
| <li><bug>60792</bug>Create a new Help menu item to create a thread dump</li> |
| <li><bug>60813</bug>JSR223 Test element : Take into account JMeterStopTestNowException, JMeterStopTestException and JMeterStopThreadException</li> |
| <li><bug>60814</bug>Menu : Add <code>Open Recent</code> menu item to make recent files loading more obvious</li> |
| <li><bug>60815</bug>Drop "Reset GUI" from menu</li> |
| <li><bug>60886</bug>Build improvements to better enable builds in environments that are behind a proxy. Partly contributed by Michael Osipov (michaelo at apache.org)</li> |
| </ul> |
| |
| <ch_section>Non-functional changes</ch_section> |
| <ul> |
| <li><bug>60415</bug>Drop support for Java 7.</li> |
| <li>Updated to dnsjava-2.1.8.jar (from 2.1.7)</li> |
| <li>Updated to groovy 2.4.10 (from 2.4.7)</li> |
| <li>Updated to httpcore 4.4.6 (from 4.4.5)</li> |
| <li>Updated to httpclient 4.5.3 (from 4.5.2)</li> |
| <li>Updated to jodd 3.8.1 (from 3.7.1.jar)</li> |
| <li>Updated to jsoup-1.10.2 (from 1.10.1)</li> |
| <li>Updated to ph-css 5.0.3 (from 4.1.6)</li> |
| <li>Updated to ph-commons 8.6.0 (from 6.2.4)</li> |
| <li>Updated to slf4j-api 1.7.25 (from 1.7.21)</li> |
| <li>Updated to asm 5.2 (from 5.1)</li> |
| <li>Updated to rsyntaxtextarea-2.6.1 (from 2.6.0)</li> |
| <li>Updated to commons-net-3.6 (from 3.5)</li> |
| <li>Updated to json-smart-2.3 (from 2.2.1)</li> |
| <li>Updated to accessors-smart-1.2 (from 1.1)</li> |
| <li>Converted the old pdf tutorials to xml.</li> |
| <li><pr>255</pr> - Utilised Java 8 (and 7) features to tidy up code. Contributed by Graham Russell (graham at ham1.co.uk)</li> |
| <li><bug>59435</bug>JMeterTestCase no longer supports JUnit3</li> |
| </ul> |
| |
| <!-- =================== Bug fixes =================== --> |
| |
| <ch_section>Bug fixes</ch_section> |
| |
| <h3>HTTP Samplers and Test Script Recorder</h3> |
| <ul> |
| <li><bug>60531</bug>HTTP Cookie Manager : changing Implementation does not update Cookie Policy</li> |
| <li><bug>60575</bug>HTTP GET Requests could have a content-type header without a body.</li> |
| <li><bug>60682</bug>HTTP Request : Get method may fail on redirect due to Content-Length header being set</li> |
| <li><bug>60643</bug>HTTP(S) Test Script Recorder doesn't correctly handle restart or start after stop. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>60652</bug>HTTP PUT Requests might leak file descriptors.</li> |
| <li><bug>60689</bug><code>httpclient4.validate_after_inactivity</code> has no impact leading to usage of potentially stale/closed connections</li> |
| <li><bug>60690</bug>Default values for "httpclient4.validate_after_inactivity" and "httpclient4.time_to_live" which are equal to each other makes validation useless</li> |
| <li><bug>60758</bug>HTTP(s) Test Script Recorder : Number request may generate duplicate numbers. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>56939</bug>Parameters are not passed with OPTIONS HTTP Request</li> |
| <li><bug>60778</bug>Http Java Impl does not show Authorization header in SampleResult even if it is sent</li> |
| <li><bug>60837</bug>GET with body, PUT are not retried even if <code>httpclient4.retrycount</code> is higher than 0</li> |
| <li><bug>60842</bug>Trim extracted URLs when loading embedded resources using the Lagarto based HTML Parser.</li> |
| <li><bug>60928</bug>Http Request : Connection Leak when keepalive is used with Embedded Resources</li> |
| </ul> |
| |
| <h3>Other Samplers</h3> |
| <ul> |
| <li><bug>603982</bug>Guard Exception handler of the <code>JDBCSampler</code> against null messages</li> |
| <li><bug>55652</bug>JavaSampler silently resets classname if class can not be found</li> |
| </ul> |
| |
| <h3>Controllers</h3> |
| <ul> |
| </ul> |
| |
| <h3>Listeners</h3> |
| <ul> |
| <li><bug>60648</bug>GraphiteBackendListener can lose some metrics at end of test if test is very short</li> |
| <li><bug>60650</bug>AbstractBackendListenerClient does not reset UserMetric between runs</li> |
| <li><bug>60759</bug>View Results Tree : Search feature does not search in URL. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>60859</bug>Save Responses to a file : 2 elements with different configuration will overlap</li> |
| </ul> |
| |
| <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> |
| <ul> |
| <li><bug>60438</bug><pr>235</pr> - Clear old variables before extracting new ones in JSON Extractor. |
| Based on a patch by Qi Chen (qi.chensh at ele.me)</li> |
| <li><bug>60607</bug>DNS Cache Manager configuration is ignored</li> |
| <li><bug>60729</bug>The Random Variable Config Element should allow minimum==maximum</li> |
| <li><bug>60730</bug>The JSON PostProcessor should set the <code>_ALL</code> variable even if the JSON path matches only once.</li> |
| <li><bug>60747</bug>Response Assertion : Add Request Headers to <code>Field to Test</code></li> |
| <li><bug>60763</bug>XMLAssertion should not leak errors to console</li> |
| <li><bug>60797</bug>TestAction in pause mode can last beyond configured duration of test</li> |
| </ul> |
| |
| <h3>Functions</h3> |
| <ul> |
| <li><bug>60819</bug>Function __fileToString does not honor the documentation contract when file is not found</li> |
| </ul> |
| |
| <h3>I18N</h3> |
| <ul> |
| </ul> |
| |
| <h3>Report / Dashboard</h3> |
| <ul> |
| <li><bug>60726</bug>Report / Dashboard : Top 5 errors by samplers must not take into account the series filtering</li> |
| <li><bug>60919</bug>Report / Dashboard : Latency Vs Request and Response Time Vs Request are wrong if granularity is different from 1000 (1 second)</li> |
| </ul> |
| |
| <h3>General</h3> |
| <ul> |
| <li><bug>60775</bug>NamePanel ctor calls overrideable method</li> |
| <li><bug>60428</bug>JMeter Graphite Backend Listener throws exception when test ends |
| and <code>useRegexpForSamplersList</code> is set to <code>true</code>. |
| Based on patch by Liu XP (liu_xp2003 at sina.com)</li> |
| <li><bug>60442</bug>Fix a typo in <code>build.xml</code> (gavin at 16degrees.com.au)</li> |
| <li><bug>60449</bug>JMeter Tree : Annoying behaviour when node name is empty</li> |
| <li><bug>60494</bug>Add sonar analysis task to build</li> |
| <li><bug>60501</bug>Search Feature : Performance issue when regexp is checked</li> |
| <li><bug>60444</bug>Intermittent failure of <code>TestHTTPMirrorThread#testSleep()</code>. Contributed by Thomas Schapitz (ts-nospam12 at online.de)</li> |
| <li><bug>60621</bug>The "<code>report-template</code>" folder is missing from <code>ApacheJMeter_config-3.1.jar</code> in maven central</li> |
| <li><bug>60744</bug>GUI elements are not cleaned up when reused during load of Test Plan which can lead them to be partially initialized with a previous state for a new Test Element</li> |
| <li><bug>60812</bug>JMeterThread does not honor contract of JMeterStopTestNowException</li> |
| <li><bug>60857</bug>SaveService omits XML header if _file_encoding is not defined in saveservice.properties</li> |
| <li><bug>60830</bug>Timestamps in CSV file could be corrupted due to sharing a SimpleDateFormatter across threads</li> |
| </ul> |
| |
| <!-- =================== Thanks =================== --> |
| |
| <ch_section>Thanks</ch_section> |
| <p>We thank all contributors mentioned in bug and improvement sections above: |
| </p> |
| <ul> |
| <li>Jerome Loisel (loisel.jerome at gmail.com)</li> |
| <li>Liu XP (liu_xp2003 at sina.com)</li> |
| <li>Qi Chen (qi.chensh at ele.me)</li> |
| <li>(gavin at 16degrees.com.au)</li> |
| <li>Thomas Schapitz (ts-nospam12 at online.de)</li> |
| <li>Murdecai777 (https://github.com/Murdecai777)</li> |
| <li>Logan Mauzaize (logan.mauzaize at gmail.com)</li> |
| <li>Maxime Chassagneux (maxime.chassagneux at gmail.com)</li> |
| <li>忻隆 (298015902 at qq.com)</li> |
| <li><a href="http://ubikloadpack.com">Ubik Load Pack</a></li> |
| <li>Graham Russell (graham at ham1.co.uk)</li> |
| <li>Sanduni Kanishka (https://github.com/SanduniKanishka)</li> |
| <li>Andrew Burton (andrewburtonatwh at gmail.com)</li> |
| <li>Woonsan Ko (woonsan at apache.org)</li> |
| <li>Bartosz Siewniak (barteksiewniak at gmail.com)</li> |
| <li>Kimono (kimono.outfit.am at gmail.com)</li> |
| <li>Michael Osipov (michaelo at apache.org)</li> |
| <li>Stephane Leplus (s.leplus at ubik-ingenierie.com)</li> |
| </ul> |
| <p>We also thank bug reporters who helped us improve JMeter. <br/> |
| For this release we want to give special thanks to the following reporters for the clear reports and tests made after our fixes:</p> |
| <ul> |
| <li>Tuukka Mustonen (tuukka.mustonen at gmail.com) who gave us a lot of useful feedback which helped resolve <bugzilla>60689</bugzilla> and <bugzilla>60690</bugzilla></li> |
| <li>Amar Darisa (amar.darisa at gmail.com) who helped us with his feedback on <bugzilla>60682</bugzilla></li> |
| </ul> |
| <p> |
| Apologies if we have omitted anyone else. |
| </p> |
| <!-- =================== Known bugs or issues related to JAVA Bugs =================== --> |
| |
| <ch_section>Known problems and workarounds</ch_section> |
| <ul> |
| <li>View Results Tree may freeze rendering large response particularly if this response has no spaces, see <bugzilla>60816</bugzilla>. |
| This is due to an identified Java Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8172336">UI stuck when calling JEditorPane.setText() or JTextArea.setText() with long text without space</a>. |
| </li> |
| </ul> |
| <ul> |
| <li>The Once Only controller behaves correctly under a Thread Group or Loop Controller, |
| but otherwise its behaviour is not consistent (or clearly specified).</li> |
| |
| <li> |
| The numbers that appear to the left of the green box are the number of active threads / total number of threads, |
| the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>). |
| </li> |
| |
| <li> |
| Note that under some windows systems you may have this WARNING: |
| <source> |
| java.util.prefs.WindowsPreferences |
| WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0 |
| x80000002. Windows RegCreateKeyEx(…) returned error code 5. |
| </source> |
| The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore. |
| </li> |
| |
| <li> |
| You may encounter the following error: |
| <source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source> |
| 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 md2WithRSAEncryption) or with a SSL certificate with a size lower than 1024 bits. |
| This error is related to increased security in Java 8+. |
| <br></br> |
| To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing |
| the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case. |
| <br></br> |
| This property is in this file: |
| <source>JAVA_HOME/jre/lib/security/java.security</source> |
| See <bugzilla>56357</bugzilla> for details. |
| </li> |
| |
| <li> |
| Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers. |
| This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a> |
| The fix is to use JDK8_u45 or later. |
| </li> |
| |
| <li> |
| View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>. |
| This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes. |
| See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a> |
| The fix is to use JDK9 b65 or later (but be aware that Java 9 is not certified yet for JMeter). |
| </li> |
| |
| <li> |
| JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with JAVA 7 on Mac OSX. |
| This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a> |
| The fix is to use JDK 8 b132 or later. |
| </li> |
| </ul> |
| |
| <!-- =================== 3.1 =================== --> |
| |
| <h1>Version 3.1</h1> |
| <p> |
| Summary |
| </p> |
| <ul> |
| <li><a href="#New and Noteworthy">New and Noteworthy</a></li> |
| <li><a href="#Incompatible changes">Incompatible changes</a></li> |
| <li><a href="#Bug fixes">Bug fixes</a></li> |
| <li><a href="#Improvements">Improvements</a></li> |
| <li><a href="#Non-functional changes">Non-functional changes</a></li> |
| <li><a href="#Known problems and workarounds">Known problems and workarounds</a></li> |
| <li><a href="#Thanks">Thanks</a></li> |
| |
| </ul> |
| |
| <ch_section>New and Noteworthy</ch_section> |
| |
| <ch_section>Improve Report/Dashboard</ch_section> |
| <p> |
| The Dashboard has been improved with 3 new graphs and 1 summary table: |
| </p> |
| <ul> |
| <li>Connect Time over Time graph : <figure width="1635" height="520" image="dashboard/report_connect_time_over_time.png" ></figure></li> |
| <li>Response Time Percentiles Over Time (successful responses) graph : <figure width="1640" height="539" image="dashboard/response_time_percentiles_over_time.png" ></figure></li> |
| <li>Response Time Overview graph : <figure width="1645" height="562" image="dashboard/response_time_overview.png" ></figure></li> |
| <li>Top 5 errors by Sampler table : <figure width="1609" height="508" image="dashboard/top_5_errors_by_sampler.png" ></figure></li> |
| <li>More details on errors in Errors table</li> |
| <li>Average response time added to Statistics table : <figure width="1639" height="467" image="dashboard/report_statistics.png" ></figure></li> |
| <li>Active Threads table now stacks threads : <figure width="1638" height="544" image="dashboard/report_active_threads_over_time.png" ></figure></li> |
| </ul> |
| |
| <ch_section>New Metrics</ch_section> |
| <p> |
| A new <code>sent_bytes</code> metric has been introduced which reports the bytes sent to server.<br/> |
| Another metric <code>connect_time</code> has been enabled by default in this version |
| </p> |
| |
| <ch_section>Handling Big responses</ch_section> |
| <p> |
| JMeter is now able to handle in terms of metrics responses bigger than 2GB, limit has been increased to 9223372 TB.<br/> |
| To handle such big responses, it can also now truncate part of the response to avoid overflooding memory. See <code>httpsampler.max_bytes_to_store_per_request</code> property. |
| </p> |
| |
| <ch_section>New <code>__groovy</code> function</ch_section> |
| <p> |
| Introduce a new function <code>__groovy</code> that enables Groovy functions. This can be handy, as JavaScript can be quite slow (same for BeanShell), when used in highly concurrent test plans. |
| </p> |
| |
| <ch_section>Use Groovy as default for JSR-223 elements</ch_section> |
| <p> |
| Groovy is now set as the default language for JSR-223 elements. If you want to use another of the supported language, you have to make an explicit choice. |
| </p> |
| <note>By default <code>Cache compiled script if available</code> is not checked by default although we advise you to check it and ensure you don't use <code>${varName}</code> syntax to access JMeter variables but <code>vars.get("varName")</code> instead.</note> |
| |
| <ch_section>Formatted HTML source view in Results Tree View</ch_section> |
| <p> |
| The HTML source code in the Results Tree View can now be viewed formatted. This is extremely useful, if the code of the webpage has been stripped of all superfluous whitespace. |
| </p> |
| <figure width="635" height="271" image="html-formatted-tree-view.png">New formatted HTML source view</figure> |
| |
| <ch_section>Ability to update all timers in Test plan with a new property</ch_section> |
| <p> |
| A new property <code>timer.factor=1.0f</code> has been introduced which allows you to multiply pause times computed by Gaussian, Uniform and Poisson Timers by it. |
| This allows you to update Think Times from one place and let you gain productivity. |
| </p> |
| |
| <ch_title>Core improvements</ch_title> |
| <ul> |
| <li>Various GUI and UX fixes</li> |
| <li>Memory usage improvements</li> |
| <li>JDBC Request is now able to return Blob/Clob and computes latency and connect time</li> |
| <li>CSS Parsing introduced in 3.0 has been optimized by introduction of a parsing cache</li> |
| <li>HTTP Request is now able to handle body in GET request, this is useful for Elastic Search requests for example.</li> |
| </ul> |
| |
| <ch_title>Documentation improvements</ch_title> |
| <ul> |
| <li>Documentation review and improvements for easier startup</li> |
| <li>New <a href="usermanual/properties_reference.html">properties reference</a> documentation section</li> |
| </ul> |
| <!-- <ch_category>Sample category</ch_category> --> |
| <!-- <ch_title>Sample title</ch_title> --> |
| <!-- <figure width="846" height="613" image="changes/3.0/view_results_tree_search_feature.png"></figure> --> |
| |
| <!-- =================== Incompatible changes =================== --> |
| |
| <ch_section>Incompatible changes</ch_section> |
| |
| <ul> |
| <li>A cache for CSS Parsing of URLs has been introduced in this version, it is enabled by default. It is controlled by property <code>css.parser.cache.size</code>. It can be disabled by setting its value to <code>0</code>. See <bugzilla>59885</bugzilla></li> |
| <li>ThroughputController defaults have changed. Now defaults are Percent Executions which is global and no more per user. See <bugzilla>60023</bugzilla></li> |
| <li>Since version 3.1, HTML report ignores empty <code>Transaction Controller</code> (possibly generated by <code>If Controller</code> or <code>Throughput Controller</code>) when computing metrics. This provides more accurate metrics</li> |
| <li>Since version 3.1, Summariser ignores SampleResults generated by <code>Transaction Controller</code> when computing the live statistics, see <bugzilla>60109</bugzilla></li> |
| <li>Since version 3.1, when using Stripped modes (by default <code>StrippedBatch</code> is used), response will be stripped also for failing SampleResults, you can revert this to previous behaviour by setting <code>sample_sender_strip_also_on_error=false</code> in <code>user.properties</code>, see <bugzilla>60137</bugzilla></li> |
| <li>Since version 3.1, <code>jmeter.save.saveservice.connect_time</code> property value is <code>true</code>, meaning CSV file for results will contain an additional column containing connection time, see <bugzilla>60106</bugzilla></li> |
| <li>Since version 3.1, Random Timer subclasses (Gaussian Random Timer, Uniform Random Timer and Poisson Random Timer) implement interface <code><a href="./api/org/apache/jmeter/timers/ModifiableTimer.html">org.apache.jmeter.timers.ModifiableTimer</a></code></li> |
| <li>Since version 3.1, if you don't select any language in JSR223 Test Elements, Apache Groovy language will be used. See <bugzilla>59945</bugzilla></li> |
| <li>Since version 3.1, CSV DataSet now trims variable names to avoid issues due to spaces between variables names when configuring CSV DataSet. This should not have any impact for you unless you use space at the beginning or end of your variable names. See <bugzilla>60221</bugzilla></li> |
| <li>Since version 3.1, HTTP Request is able when using HttpClient4 (default) implementation to handle responses bigger than <code>2147483647</code> Bytes, that is 2GB. To allow this two properties have been introduced: |
| <ul> |
| <li><code>httpsampler.max_bytes_to_store_per_request</code> (defaults to 10MB) will control what is held in memory. By default JMeter will only keep in memory the first 10MB of a response. If you have responses larger than this value and use assertions that are after the first 10MB, then you must increase this value</li> |
| <li><code>httpsampler.max_buffer_size</code> will control the buffer used to read the data. Previously JMeter used a buffer equal to Content-Length header which could lead to failures and make JMeter less resistant to faulty applications, but note this may impact response times and give slightly different results |
| than previous versions if your application returned a Content-Length header higher than current default value (65KB) </li> |
| </ul> |
| See <bugzilla>53039</bugzilla></li> |
| </ul> |
| |
| <h3>Deprecated and removed elements or functions</h3> |
| <p><note>These elements do not appear anymore in the menu, if you need them modify <code>not_in_menu</code> property. The JMeter team advises not to use them anymore and migrate to their replacement.</note></p> |
| <ul> |
| <li><bug>60222</bug>Remove deprecated elements Distribution Graph, Spline Visualizer</li> |
| <li><bug>60224</bug>Deprecate <code><a href="./usermanual/component_reference.html#Monitor_Results_(DEPRECATED)">Monitor Results</a></code> listener. It will be dropped in next version.</li> |
| <li><bug>60323</bug>Deprecate BSF Elements (Use JSR223 Elements instead). They will probably be dropped in N+2 version. The following elements are deprecated: |
| <ul> |
| <li><code><a href="./usermanual/component_reference.html#BSF_Sampler_(DEPRECATED)">BSF Sampler</a></code></li> |
| <li><code><a href="./usermanual/component_reference.html#BSF_Listener_(DEPRECATED)">BSF Listener</a></code></li> |
| <li><code><a href="./usermanual/component_reference.html#BSF_Assertion_(DEPRECATED)">BSF Assertion</a></code></li> |
| <li><code><a href="./usermanual/component_reference.html#BSF_Timer_(DEPRECATED)">BSF Timer</a></code></li> |
| <li><code><a href="./usermanual/component_reference.html#BSF_PreProcessor_(DEPRECATED)">BSF PreProcessor</a></code></li> |
| <li><code><a href="./usermanual/component_reference.html#BSF_PostProcessor_(DEPRECATED)">BSF PostProcessor</a></code></li> |
| </ul> |
| </li> |
| <li><bug>60225</bug>Drop deprecated <code>__jexl</code> function, jexl support in BSF and dependency on <code>commons-jexl-1.1.jar</code>. This function can be easily replaced with <code><a href="./usermanual/functions.html#__jexl3">__jexl3</a></code> function</li> |
| <li><bug>60268</bug>Drop org.apache.jmeter.gui.action.Analyze and deprecate org.apache.jmeter.reporters.FileReporter (will be removed in next version)</li> |
| </ul> |
| |
| <!-- =================== Improvements =================== --> |
| |
| <ch_section>Improvements</ch_section> |
| |
| <h3>HTTP Samplers and Test Script Recorder</h3> |
| <ul> |
| <li><bug>59882</bug>Reduce memory allocations for better throughput. Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com) through <pr>217</pr> and <pr>228</pr></li> |
| <li><bug>59885</bug>Optimize css parsing for embedded resources download by introducing a cache. Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com) through <pr>219</pr></li> |
| <li><bug>60092</bug>View Result Tree: Add shortened version of the PUT body to sampler result.</li> |
| <li><bug>60229</bug>Add a new metric : sent_bytes. Implemented by Philippe Mouawad (p.mouawad at ubik-ingenierie.com) and contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>53039</bug>HTTP Request : Be able to handle responses which size exceeds <code>2147483647</code> bytes (that is 2GB)</li> |
| <li><bug>60265</bug>HTTP Request : In Files Upload Tab you cannot resize columns</li> |
| <li><bug>60318</bug>Ignore CSS warnings when parsing with ph-css library.</li> |
| <li><bug>60358</bug>Http Request : Allow sending Body Data for HTTP GET request</li> |
| </ul> |
| |
| <h3>Other samplers</h3> |
| <ul> |
| <li><pr>211</pr>Differentiate the timing for JDBC Sampler. Use latency and connect time. Contributed by Thomas Peyrard (thomas.peyrard at murex.com)</li> |
| <li><bug>59620</bug>Fix button action in "JMS Publisher → Random File from folder specified below" to allow to select a directory</li> |
| <li><bug>60066</bug>Handle CLOBs and BLOBs and limit them if necessary when storing them in result sampler.</li> |
| </ul> |
| |
| <h3>Controllers</h3> |
| <ul> |
| <li><bug>59351</bug>Improve log/error/message for IncludeController. Partly contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)</li> |
| <li><bug>60023</bug>ThroughputController : Make "Percent Executions" and global the default values. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>60082</bug>Validation mode : Be able to force Throughput Controller to run as if it was set to 100%</li> |
| <li><bug>59349</bug>Trim spaces in input filename in IncludeController.</li> |
| <li><bug>60081</bug>Interleave Controller : Add an option to alternate across threads</li> |
| </ul> |
| |
| <h3>Listeners</h3> |
| <ul> |
| <li><bug>59953</bug>GraphiteBackendListener : Add Average metric. Partly contributed by Maxime Chassagneux (maxime.chassagneux at gmail.com)</li> |
| <li><bug>59975</bug>View Results Tree : Text renderer annoyingly scrolls down when content is bulky. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>60109</bug>Summariser : Make it ignore TC generated SampleResult in its summary computations</li> |
| <li><bug>59948</bug>Add a formatted and sane HTML source code render to View Results Tree</li> |
| <li><bug>60252</bug>Add sent kbytes/s to Aggregate Report and Summary report</li> |
| <li><bug>60267</bug>UX : In View Results Tree it should be possible to close the Configure popup by typing escape. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| </ul> |
| |
| <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> |
| <ul> |
| <li><bug>59845</bug>Log messages about JSON Path mismatches at <code>debug</code> level instead of <code>error</code>.</li> |
| <li><pr>212</pr>Allow multiple selection and delete in HTTP Authorization Manager. Based on a patch by Benoit Wiart (b.wiart at ubik-ingenierie.com)</li> |
| <li><bug>59816</bug><pr>213</pr>Allow multiple selection and delete in HTTP Header Manager. Based on a patch by Benoit Wiart (b.wiart at ubik-ingenierie.com)</li> |
| <li><bug>59967</bug>CSS/JQuery Extractor : Allow empty default value. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>59974</bug>Response Assertion : Add button "<code>Add from clipboard</code>". Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>60050</bug>CSV Data Set : Make it clear in the logs when a thread will exit due to this configuration</li> |
| <li><bug>59962</bug>Cache Manager does not update expires date when response code is <code>304</code>.</li> |
| <li><bug>60018</bug>Timer : Add a factor to apply on pauses. Partly based on a patch by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>60203</bug>Use more available space for textarea in XPath Assertion.</li> |
| <li><bug>60220</bug>Rename JSON Path Post Processor to JSON Extractor</li> |
| <li><bug>60221</bug>CSV DataSet : trim variable names</li> |
| <li><bug>59329</bug>Trim spaces in input filename in CSVDataSet.</li> |
| </ul> |
| |
| <h3>Functions</h3> |
| <ul> |
| <li><bug>59963</bug>New function <code>__RandomFromMultipleVars</code>: Ability to compute a random value from values of one or more variables. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>59991</bug>New function <code>__groovy</code> to evaluate Groovy Script. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| </ul> |
| |
| <h3>I18N</h3> |
| <ul> |
| <li><pr>214</pr>Add spanish translation for delayed starting of threads. Contributed by Asier Lostalé (asier.lostale at openbravo.com).</li> |
| <li><bug>60348</bug>Change chinese translation for <code>Save as</code>. Contributed by XMeter (support at xmeter.net).</li> |
| </ul> |
| |
| <h3>Report / Dashboard</h3> |
| <ul> |
| <li><bug>59954</bug>Web Report/Dashboard : Add average metric</li> |
| <li><bug>59956</bug>Web Report / Dashboard : Add ability to generate a graph for a range of data</li> |
| <li><bug>60065</bug>Report / Dashboard : Improve Dashboard Error Summary by adding response message to "Type of error". Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>60079</bug>Report / Dashboard : Add a new "Response Time Overview" graph</li> |
| <li><bug>60080</bug>Report / Dashboard : Add a new "Connect Time Over Time " graph. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>60091</bug>Report / Dashboard : Have a new report containing min/max and percentiles graphs.</li> |
| <li><bug>60108</bug>Report / Dashboard : In Requests Summary rounding is too aggressive</li> |
| <li><bug>60098</bug>Report / Dashboard : Reduce default value for "<code>jmeter.reportgenerator.statistic_window</code>" to reduce memory impact</li> |
| <li><bug>60115</bug>Add date format property for start/end date filter into Report generator</li> |
| <li><bug>60171</bug>Report / Dashboard : Active Threads Over Time should stack lines to give the total amount of threads running</li> |
| <li><bug>60250</bug>Report / Dashboard : Need to Add Sent KB/s in Statistics Report of HTML Dashboard</li> |
| <li><bug>60287</bug>Report / Dashboard : Have a new Top5 Errors by sampler table in Dashboard. Implemented by Philippe Mouawad (p.mouawad at ubik-ingenierie.com) and contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| </ul> |
| <h3>General</h3> |
| <ul> |
| <li><bug>59803</bug>Use <code>isValid()</code> method from JDBC driver, if no <code>validationQuery</code> |
| is given in JDBC Connection Configuration.</li> |
| <li><bug>57493</bug>Create a documentation page for properties</li> |
| <li><bug>59924</bug>The log level of <em>XXX</em> package is set to <code>DEBUG</code> if <code>log_level.<em>XXXX</em></code> property value contains spaces, same for <code>__log</code> function</li> |
| <li><bug>59777</bug>Extract SLF4J binding into its own jar and make it a JMeter lib. |
| <note>If you get a warning about multiple SLF4J bindings on startup. Remove either the Apache JMeter provided binding |
| <code>lib/ApacheJMeter_slf4j_logkit.jar</code>, or all of the other reported bindings. |
| For more information you can have a look at <a href="http://www.slf4j.org/codes.html#multiple_bindings">SLF4Js own info page.</a></note> |
| </li> |
| <li><bug>60085</bug>Remove cache for prepared statements, as it didn't work with the current JDBC pool implementation and current JDBC drivers should support caching of prepared statements themselves.</li> |
| <li><bug>60137</bug>In Distributed testing when using StrippedXXXX modes strip response also on error</li> |
| <li><bug>60106</bug>Settings defaults : Switch "<code>jmeter.save.saveservice.connect_time</code>" to true (after 3.0)</li> |
| <li><pr>229</pr> tiny memory allocation improvements. Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com)</li> |
| <li><bug>59945</bug>For all JSR223 elements, if script language has not been chosen on the UI, the script will be interpreted as a groovy script.</li> |
| <li><bug>60266</bug>Usability/ UX : It should not be possible to close/exit/Revert/Load/Load a recent project or create from template a JMeter plan or open a new one if a test is running</li> |
| <li><bug>57305</bug>Remove dependency of <code>ProxyControl</code> on <code>GuiPackage</code>. Based on patches by jarek102 (jarek102 at gmail.com) and Wyatt Epp (wyatt.epp at gmail.com)</li> |
| </ul> |
| |
| <ch_section>Non-functional changes</ch_section> |
| <ul> |
| <li>Updated to jsoup-1.10.1 (from 1.8.3)</li> |
| <li>Updated to ph-css 4.1.6 (from 4.1.4)</li> |
| <li>Updated to tika-core and tika-parsers 1.14 (from 1.12)</li> |
| <li>Updated to commons-io 2.5 (from 2.4)</li> |
| <li>Updated to commons-lang3 3.5 (from 3.4)</li> |
| <li>Updated to commons-net 3.5 (from 3.4)</li> |
| <li>Updated to groovy 2.4.7 (from 2.4.6)</li> |
| <li>Updated to httpcore 4.4.5 (from 4.4.4)</li> |
| <li>Updated to slf4j-api 1.7.21 (from 1.7.13)</li> |
| <li>Updated to rsyntaxtextarea-2.6.0 (from 2.5.8)</li> |
| <li>Updated to xstream 1.4.9 (from 1.4.8)</li> |
| <li>Updated to jodd 3.7.1 (from 3.6.7.jar)</li> |
| <li>Updated to xmlgraphics-commons 2.1 (from 2.0.1)</li> |
| <li><pr>215</pr>Reduce duplicated code by using the newly added method <code>GuiUtils#cancelEditing</code>. |
| Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com)</li> |
| <li><pr>218</pr>Misc cleanup. Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com)</li> |
| <li><pr>216</pr>Re-use pattern when possible. Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com)</li> |
| <li><bug>60364</bug>Document Test Coverage. Contributed by Thomas Schapitz (ts-nospam12 at online.de)</li> |
| </ul> |
| |
| <!-- =================== Bug fixes =================== --> |
| |
| <ch_section>Bug fixes</ch_section> |
| |
| <h3>HTTP Samplers and Test Script Recorder</h3> |
| <ul> |
| <li><bug>58888</bug>HTTP(S) Test Script Recorder (ProxyControl) does not add TestElement's returned by <code>SamplerCreator#createChildren()</code></li> |
| <li><bug>59902</bug>Https handshake failure when setting <code>httpclient.socket.https.cps</code> property</li> |
| <li><bug>60084</bug>JMeter 3.0 embedded resource URL is silently encoded</li> |
| <li><bug>60376</bug>Http Test Script Recorder : If deflate is used by server then recording may break application</li> |
| </ul> |
| |
| <h3>Other Samplers</h3> |
| <ul> |
| <li><bug>59113</bug>JDBC Connection Configuration : Transaction Isolation level not correctly set if constant used instead of numerical</li> |
| </ul> |
| |
| <h3>Controllers</h3> |
| <ul> |
| <li><bug>60361</bug>ModuleController : If a Test plan contains a Module Controller which references an unexistant Controller, JMeter in GUI mode will not stop</li> |
| </ul> |
| |
| <h3>Listeners</h3> |
| <ul> |
| <li><bug>59712</bug>Display original query in RequestView when decoding fails. Based on a patch by |
| Teemu Vesala (teemu.vesala at qentinel.com)</li> |
| <li><bug>60278</bug>Since 2.13 (and <bugzilla>57514</bugzilla>), Aggregate Graph, Summary Report and Aggregate Report lost precision in the Error, Rate and Bandwidth values saved in the saved file csv</li> |
| <li><bug>60360</bug>View Result Tree : Request Tab does not show body of a DELETE request</li> |
| </ul> |
| |
| <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> |
| <ul> |
| <li><bug>59964</bug>JSR223 Test Element : Cache compiled script if available is not correctly reset. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>59609</bug>Format extracted JSON Objects in JSON Post Processor correctly as JSON.</li> |
| <li><bug>60332</bug>View Results Tree : With Windows LAF, JSON Extractor does not show JSON Path Expression and Result panel</li> |
| </ul> |
| |
| <h3>Functions</h3> |
| <ul> |
| </ul> |
| |
| <h3>I18N</h3> |
| <ul> |
| </ul> |
| |
| <h3>General</h3> |
| <ul> |
| <li><bug>59400</bug>Get rid of UnmarshalException on stopping when <code>-X</code> option is used.</li> |
| <li><bug>59607</bug>JMeter crashes when reading large test plan (greater than 2GB). Based on fix by Felix Draxler (felix.draxler at sap.com)</li> |
| <li><bug>59621</bug>Error count in report dashboard is one off.</li> |
| <li><bug>59657</bug>Only set font in JSyntaxTextArea, when property <code>jsyntaxtextarea.font.family</code> is set.</li> |
| <li><bug>59720</bug>Batch test file comparisons fail on Windows as XML files are generated as EOL=LF</li> |
| <li>Code cleanups. Patches by Graham Russell (graham at ham1.co.uk)</li> |
| <li><bug>59722</bug>Use StandardCharsets to reduce the possibility of misspelling Charset names.</li> |
| <li><bug>59723</bug>Use <code>jmeter.properties</code> for testing whenever possible</li> |
| <li><bug>59726</bug>Unit test to check that CSV header text and sample format don't change unexpectedly</li> |
| <li><bug>59889</bug>Change encoding to UTF-8 in reports for dashboard.</li> |
| <li><bug>60053</bug>In Non GUI mode, a Stacktrace is shown at end of test while report is being generated</li> |
| <li><bug>60049</bug>When using Timers with high delays or Constant Throughput Timer with low throughput, Scheduler may take a lot of time to exit, same for Shutdown test </li> |
| <li><bug>60089</bug>Report / Dashboard : Bytes throughput Over Time has reversed Sent and Received bytes. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> |
| <li><bug>60090</bug>Report / Dashboard : Empty Transaction Controller should not count in metrics</li> |
| <li><bug>60103</bug>Report / Dashboard : Requests summary includes Transaction Controller leading to wrong percentage</li> |
| <li><bug>60105</bug>Report / Dashboard : Report requires Transaction Controller "<code>generate parent sample</code>" option to be checked, fix related issues</li> |
| <li><bug>60107</bug>Report / Dashboard : In StatisticSummary, TransactionController SampleResult makes Total line wrong</li> |
| <li><bug>60110</bug>Report / Dashboard : In Response Time Percentiles, slider is useless</li> |
| <li><bug>60135</bug>Report / Dashboard : Active Threads Over Time should be in OverTime section</li> |
| <li><bug>60125</bug>Report / Dashboard : Dashboard cannot be generated if the default delimiter is <code>\t</code>. Based on a report from Tamas Szabadi (tamas.szabadi at rightside.co)</li> |
| <li><bug>59439</bug>Report / Dashboard : AbstractOverTimeGraphConsumer.createGroupInfos() should be abstract</li> |
| <li><bug>59918</bug>Ant generated HTML report is broken (extras folder)</li> |
| <li><bug>60295</bug>JSON Extractor doesn't index array elements when only one element is found. Based on a patch by Roberto Braga (roberto.braga at sociale.it)</li> |
| <li><bug>60299</bug>Thread Group with Scheduler : Weird behaviour when End-Time is in the past</li> |
| </ul> |
| |
| <!-- =================== Thanks =================== --> |
| |
| <ch_section>Thanks</ch_section> |
| <p>We thank all contributors mentioned in bug and improvement sections above: |
| </p> |
| <ul> |
| <li>Felix Draxler (felix.draxler at sap.com)</li> |
| <li>Antonio Gomes Rodrigues (ra0077 at gmail.com)</li> |
| <li>Graham Russell (graham at ham1.co.uk)</li> |
| <li>Teemu Vesala (teemu.vesala at qentinel.com)</li> |
| <li>Asier Lostalé (asier.lostale at openbravo.com)</li> |
| <li>Thomas Peyrard (thomas.peyrard at murex.com)</li> |
| <li>Benoit Wiart (b.wiart at ubik-ingenierie.com)</li> |
| <li>Maxime Chassagneux (maxime.chassagneux at gmail.com)</li> |
| <li><a href="http://ubikloadpack.com">Ubik Load Pack</a></li> |
| <li>Tamas Szabadi (tamas.szabadi at rightside.co)</li> |
| <li>Roberto Braga (roberto.braga at soziale.it)</li> |
| <li>jarek102 at gmail.com</li> |
| <li>Wyatt Epp (wyatt.epp at gmail.com)</li> |
| <li>Thomas Schapitz (ts-nospam12 at online.de)</li> |
| </ul> |
| <p>We also thank bug reporters who helped us improve JMeter. <br/> |
| For this release we want to give special thanks to the following reporters for the clear reports and tests made after our fixes:</p> |
| <ul> |
| </ul> |
| <p> |
| Apologies if we have omitted anyone else. |
| </p> |
| <!-- =================== Known bugs or issues related to JAVA Bugs =================== --> |
| |
| <ch_section>Known problems and workarounds</ch_section> |
| |
| <ul> |
| <li>The Once Only controller behaves correctly under a Thread Group or Loop Controller, |
| but otherwise its behaviour is not consistent (or clearly specified).</li> |
| |
| <li> |
| The numbers that appear to the left of the green box are the number of active threads / total number of threads, |
| the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>). |
| </li> |
| |
| <li> |
| Note that there is a <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6396599 ">bug in Java</a> |
| on some Linux systems that manifests itself as the following error when running the test cases or JMeter itself: |
| <source> |
| [java] WARNING: Couldn't flush user prefs: |
| java.util.prefs.BackingStoreException: |
| java.lang.IllegalArgumentException: Not supported: indent-number |
| </source> |
| This does not affect JMeter operation. This issue is fixed since Java 7b05. |
| </li> |
| |
| <li> |
| Note that under some windows systems you may have this WARNING: |
| <source> |
| java.util.prefs.WindowsPreferences |
| WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0 |
| x80000002. Windows RegCreateKeyEx(…) returned error code 5. |
| </source> |
| The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore. |
| </li> |
| |
| <li> |
| With Oracle Java 7 and Mac Book Pro Retina Display, the JMeter GUI may look blurry. |
| This is a known Java bug, see Bug <a href="http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8000629" >JDK-8000629</a>. |
| A workaround is to use a Java 7 update 40 runtime which fixes this issue. |
| </li> |
| |
| <li> |
| You may encounter the following error: |
| <source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source> |
| 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 md2WithRSAEncryption) or with a SSL certificate with a size lower than 1024 bits. |
| This error is related to increased security in Java 7 version u16 (MD2) and version u40 (Certificate size lower than 1024 bits), and Java 8 too. |
| <br></br> |
| To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing |
| the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case. |
| <br></br> |
| This property is in this file: |
| <source>JAVA_HOME/jre/lib/security/java.security</source> |
| See <bugzilla>56357</bugzilla> for details. |
| </li> |
| |
| <li> |
| Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers. |
| This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a> |
| The fix is to use JDK7_u79, JDK8_u45 or later. |
| </li> |
| |
| <li> |
| View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>. |
| This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes. |
| See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a> |
| The fix is to use JDK9 b65 or later. |
| </li> |
| |
| <li> |
| JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with JAVA 7 on Mac OSX. |
| This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a> |
| The fix is to use JDK 8 b132 or later. |
| </li> |
| </ul> |
| |
| <!-- =================== 3.0 =================== --> |
| |
| <h1>Version 3.0</h1> |
| <p> |
| Summary |
| </p> |
| <ul> |
| <li><a href="#New and Noteworthy">New and Noteworthy</a></li> |
| <li><a href="#Known bugs">Known bugs</a></li> |
| <li><a href="#Incompatible changes">Incompatible changes</a></li> |
| <li><a href="#Bug fixes">Bug fixes</a></li> |
| <li><a href="#Improvements">Improvements</a></li> |
| <li><a href="#Non-functional changes">Non-functional changes</a></li> |
| <li><a href="#Thanks">Thanks</a></li> |
| |
| </ul> |
| |
| <ch_section>New and Noteworthy</ch_section> |
| |
| <ch_category>Test plan creation and debugging improvements</ch_category> |
| <ch_title>New Search Feature in View Results Tree to allow searching for text / regexp in Request/Responses/Headers/Cookies/… This will ease correlation and Test plans creation</ch_title> |
| <figure width="846" height="613" image="changes/3.0/view_results_tree_search_feature.png"></figure> |
| <ch_title>New JSON Post Processor to better extract data from JSON content using user friendly JSON-PATH syntax</ch_title> |
| <p>JSON is now a first class citizen in JMeter with the introduction of a new <a href="http://goessner.net/articles/JsonPath/" target="_blank">JSONPath</a> post processor. |
| This post processor is very similar to Regular Expression Post Processor but is well suited for JSON code. |
| It is based on <a href="https://github.com/jayway/JsonPath" target="_blank" >Jayway JSON Path library</a> </p> |
| <figure width="829" height="223" image="changes/3.0/json_path_extractor.png" ></figure> |
| <ch_title>New validation feature, in one click run a selection of Thread Groups with <code>1</code> user, no pause and <code>1</code> iteration</ch_title> |
| <figure width="295" height="629" image="changes/3.0/thread_group_validate.png"></figure> |
| <ch_title>JSR223 Test Elements do not require a Cache Compilation Key anymore</ch_title> |
| <p>Just check <code>Cache compiled script if available</code> checkbox and the elements (Pre-Processor, Post-Processor, Assertions, Listeners, …) |
| will pre-compile the script and cache the compiled code if the underlying language supports it</p> |
| <figure width="991" height="606" image="changes/3.0/jsr223_cache_compiled.png"></figure> |
| <ch_title>Nashorn can now be used as Javascript engine providing better performance and easier usage</ch_title> |
| <p> |
| To enable <a target="_blank" href="http://www.oracle.com/technetwork/articles/java/jf14-nashorn-2126515.html" >Nashorn</a>, you need to set in <code>user.properties</code>: |
| </p> |
| <source>javascript.use_rhino=false</source> |
| <p>Nashorn can be used with Java 8 in the following elements: |
| </p> |
| <ul> |
| <li>IfController</li> |
| <li>JSR223 Test elements with <code>javascript</code> language selected</li> |
| <li><code>__javaScript</code> function</li> |
| </ul> |
| <ch_title>Jexl3 has been integrated. It provides new scripting features and much better documentation</ch_title> |
| <p> |
| <a href="http://commons.apache.org/proper/commons-jexl/" target="_blank">JEXL3</a> can now be used thanks to a new function <code>__jexl3</code>. |
| JEXL is a language very similar to JSTL. |
| </p> |
| <ch_title>Simplified HTTP Request UI</ch_title> |
| <p>A new "<code>Advanced</code>" tab has been added to HTTP Request to simplify configuration. The file upload feature has been moved into a dedicated tab. |
| This increases the space available for parameters in UI and simplifies the UX.</p> |
| <figure width="895" height="674" image="changes/3.0/http_request_basic.png"></figure> |
| <figure width="880" height="299" image="changes/3.0/http_request_advanced.png"></figure> |
| |
| <ch_title>HTTP Request Defaults improvements</ch_title> |
| <p>You can now configure Source Address (IP Spoofing like feature) and "<code>Save response as MD5 hash</code>" in Advanced Tab |
| </p> |
| <figure width="893" height="259" image="changes/3.0/http_request_defaults_advanced.png" ></figure> |
| |
| <ch_category>Reporting improvements</ch_category> |
| |
| <ch_title>New Reporting Feature generating dynamic Graphs in HTML pages (APDEX, Summary report and Graphs)</ch_title> |
| <p>A dynamic HTML report can now be generated either at the end of a load test or from a result file whenever you want. |
| See <a href="./usermanual/generating-dashboard.html" target="_blank">Generating dashboard</a> for more details. |
| This report provides the following metrics: |
| </p> |
| <ul> |
| <li><a href="https://en.wikipedia.org/wiki/Apdex" target="_blank">APDEX</a> (Application Performance Index) table that computes the APDEX based on configurable values for tolerated and satisfied thresholds</li> |
| <li>A request summary graph showing the Success and failed transaction percentage: <figure width="1658" height="650" image="changes/3.0/report_apdex_and_summary.png" ></figure></li> |
| <li>A Statistics table providing in one table a summary of all metrics per transaction including 3 configurable percentiles : <figure width="1376" height="433" image="changes/3.0/report_statistics.png" ></figure></li> |
| <li>An error table providing a summary of all errors and their proportion in the total requests : <figure width="1344" height="455" image="changes/3.0/report_errors.png" ></figure></li> |
| <li>Zoomable chart where you can check/uncheck every transaction to show/hide it for: |
| <ul> |
| <li>Response times Over Time : <figure width="1398" height="566" image="changes/3.0/report_response_times_over_time.png" ></figure></li> |
| <li>Bytes throughput Over Time : <figure width="1373" height="543" image="changes/3.0/report_bytes_throughput_over_time.png" ></figure></li> |
| <li>Latencies Over Time : <figure width="1373" height="547" image="changes/3.0/report_latencies_over_time.png" ></figure></li> |
| <li>Hits per second : <figure width="1375" height="552" image="changes/3.0/report_hits_per_second.png" ></figure></li> |
| <li>Response codes per second : <figure width="1380" height="558" image="changes/3.0/report_codes_per_second.png" ></figure></li> |
| <li>Transactions per second : <figure width="1372" height="577" image="changes/3.0/report_transactions_per_second.png" ></figure></li> |
| <li>Response Time vs Request per second : <figure width="1380" height="545" image="changes/3.0/report_response_time_vs_request.png" ></figure></li> |
| <li>Latency vs Request per second : <figure width="1373" height="543" image="changes/3.0/report_latencies_vs_request.png" ></figure></li> |
| <li>Response times percentiles : <figure width="1374" height="551" image="changes/3.0/report_response_time_percentiles.png" ></figure></li> |
| <li>Active Threads Over Time : <figure width="1370" height="542" image="changes/3.0/report_active_threads_over_time.png" ></figure></li> |
| <li>Times vs Threads : <figure width="1373" height="567" image="changes/3.0/report_time_vs_threads.png" ></figure></li> |
| <li>Response Time Distribution : <figure width="1373" height="549" image="changes/3.0/report_response_time_distribution.png" ></figure></li> |
| </ul> |
| </li> |
| </ul> |
| |
| |
| <ch_title>GraphiteBackendListener has a new Server Hits metric</ch_title> |
| <ch_title>Summariser displays a more readable duration</ch_title> |
| <p> |
| Now duration are display in the format <code>hours:minutes:seconds</code> |
| </p> |
| <source> |
| Generate Summary Results + 1 in 00:00:01 = 1.7/s Avg: 1 Min: 1 Max: 1 Err: 0 (0.00%) Active: 1 Started: 1 Finished: 0 |
| Generate Summary Results + 138 in 00:00:09 = 16.2/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%) Active: 9 Started: 9 Finished: 0 |
| Generate Summary Results = 139 in 00:00:09 = 15.3/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%) |
| Generate Summary Results + 467 in 00:00:10 = 47.0/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%) Active: 19 Started: 19 Finished: 0 |
| Generate Summary Results = 606 in 00:00:19 = 31.9/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%) |
| ⋮ |
| Generate Summary Results + 1662 in 00:00:10 = 166.1/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%) Active: 50 Started: 50 Finished: 0 |
| Generate Summary Results = 28932 in 00:03:19 = 145.4/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%) |
| Generate Summary Results + 1664 in 00:00:10 = 166.4/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%) Active: 50 Started: 50 Finished: 0 |
| Generate Summary Results = 30596 in 00:03:29 = 146.4/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%) |
| Generate Summary Results + 1661 in 00:00:10 = 166.1/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%) Active: 50 Started: 50 Finished: 0 |
| Generate Summary Results = 32257 in 00:03:39 = 147.3/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%) |
| </source> |
| <ch_title>BackendListener now allows you to define sampler list as a regular expression</ch_title> |
| <p>You can now use a regular expression to select the samplers you want to filter. |
| Use parameter: <code>useRegexpForSamplersList=true</code> and put a regex in parameter <code>samplersList</code> |
| </p> |
| <figure width="806" height="380" image="changes/3.0/graphite_backend_listener_regex.png" ></figure> |
| <ch_category>Protocols and Load Testing improvements</ch_category> |
| <ch_title>Migration to HttpClient 4.5.2 has been started. Although not completely finished, it improves many areas in JMeter</ch_title> |
| <p>Migration to HttpClient 4.5.2 improves the following fields of JMeter: |
| </p> |
| <ul> |
| <li>Support of recent RFC like <a href="https://tools.ietf.org/html/rfc6265" target="_blank">HTTP State Management Mechanism RFC-6265 for Cookies</a>, you should use now <code>HC4CookieHandler</code> in HTTP Cookie Manager component and select <code>standard</code> Cookie policy</li> |
| <li><a href="https://en.wikipedia.org/wiki/Server_Name_Indication" target="_blank">Server Name Indication (SNI)</a> support for HttpClient4 implementation</li> |
| <li>Improved and better performing validation mechanism for Stale connections and Keep-Alive management, see properties <code>httpclient4.validate_after_inactivity</code> and <code>httpclient4.time_to_live</code></li> |
| <li>Many bug fixes since previous version 4.2.6 used in JMeter 2.13, see <a href="http://www.apache.org/dist/httpcomponents/httpclient/RELEASE_NOTES-4.5.x.txt" target="_blank">HttpClient 4.5.X release notes</a></li> |
| <li>Better support of HTTP RFC 2616 / RFC 7230 and fixes to issues with <code>deflate</code> compression management</li> |
| </ul> |
| <ch_title>Parallel Downloads is now realistic and scales much better:</ch_title> |
| <ul> |
| <li>Parsing of CSS imported files (through <code>@import</code>) or embedded resources (background, images, …)</li> |
| <li>Lazy initialization of SSL context: For 15 Threads 138% more sampling in 5 minutes for HTTP only tests. Gain increases as number of threads increases</li> |
| <li>Rework of Connection management for Parallel Download: This better simulates current browser behaviour and improves throughput. For 15 Threads 135% extra samples in 5 minutes.</li> |
| <li>Reuse of Threads used for Parallel downloads through a ThreadPool: This improves throughput and increases JMeter scalability for such tests</li> |
| <li>Total of 750% more throughput found on test with 15 threads, the more threads you have the more the gain</li> |
| <li>You can now compute and store just the MD5 of embedded resources instead of storing the entire response, this can be done by setting the property <code>httpsampler.embedded_resources_use_md5=true</code></li> |
| </ul> |
| <ch_title>Introduction of Sample Timeout feature</ch_title> |
| <p>This new <complink name="Sample Timeout"/> Pre-Processor allows you to apply a Timeout on the elements that are in its scope. |
| In the screenshot below the 10 second timeout applies to the <code>Debug Sampler</code> and <code>HTTP Request</code> elements. |
| </p> |
| <figure width="828" height="161" |