Apache JMeter


Changes

This page details the changes made in the current version only.
Earlier changes are detailed in the History of Previous Changes.

Version 3.3

Summary



New and Noteworthy

JMeter does not yet support JAVA 9, next JMeter version will support it, you can help and follow progress on this item in Bug 61529 .

Using last minor version of JAVA 8 is advised to avoid facing any JDK bug.


Core improvements

HTTP Sampler now supports Brotli decompression.

CacheManager now completely supports Vary header.

InfluxDB BackendListener now supports sending results to InfluxDB through UDP protocol.


It has also been enhanced to send number of errors by response code and message for each transaction

TCP Sampler now computes latency, see Bug 60156

Upgraded dependencies to last available versions bringing performance improvements and bug fixes

Continued to improve the quality of our code and tests coverage. See Quality report


UX improvements

More work has been done to better support HiDPI.

Some bugs, that crept in with the work on lowering the memory usage of View Results Tree, were fixed.

The constant DEFAULT_IMPLEMENTATION was removed from CookieManager, as it lost it purpose with the removal of the alternate HTTP Client implementation in the last release

JDBC Sampler UX has been improved by adding select boxes for drivers and validation queries.



If Controller and While Controller UX have been improved



Report/Dashboard improvements



Documentation improvements

Functions

Function Helper Dialog: a new field that shows execution result has been added.


New functions:

  • __timeShift - return a date in various formats with the specified amount of seconds/minutes/hours/days added.

  • __RandomDate - generate random date within a specific date range.



Incompatible changes

  • In InfluxDbBackendListenerClient, statut property has been renamed to status
  • In CookieManager, DEFAULT_POLICY and DEFAULT_IMPLEMENTATION constants are now private.

    If you're using ignorecookies with HC3CookieHandler (< JMeter 3.1) configuration will be reset, ensure you put it back.

  • JMeter will not truncate anymore by default responses exceeding 10 MB. If you want to enable this truncation, see property httpsampler.max_bytes_to_store_per_request
  • org.apache.jmeter.protocol.tcp.sampler.TCPClient.read(InputStream) 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 Bug 60156

Removed elements or functions



Improvements

HTTP Samplers and Test Script Recorder

  • Bug 61056 - HTTP : Support brotli decoding
  • Bug 61135 - CookieManager : Drop Implementation select box and cleanup class
  • Bug 61492 - HTTP(S) Test Script Recorder : Add the possibility to change the value of proxy.pause in the GUI

Other samplers

  • Bug 61320 - Test Action : Set duration to 0 by default
  • Bug 61504 - JDBC Connection Configuration : Set Max Number of Connections to 0 by default
  • Bug 61505 - JDBC Connection Configuration : Set "Validation Query" to empty by default to use isValid method of JDBC driver
  • Bug 61506 - JDBC Connection Configuration : Add a list for main databases validation queries for "Validation Query" attribute
  • Bug 61507 - JDBC Connection Configuration : Add a list for main databases JDBC driver class name for "JDBC Driver class" attribute
  • Bug 61525 - OS Process Sampler : Add browser button to Command and Working directory fields
  • Bug 60156 - TCPSampler : Latency is not measured for TCP Sampler. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61039 - CSV data set config : Add browser button to Filename field
  • Bug 61527 - CSV data set config : Add a list for main file encoding values for File encoding attribute

Controllers

  • Bug 61131 - IfController and WhileController : Improve UX

Listeners

  • Bug 61167 - InfluxdbBackendListener : add number of errors by response code and message for each transaction
  • Bug 61068 - Introduce property resultcollector.action_if_file_exists to control the popup "File already exists" when starting a test
  • Bug 61457 - InfluxDB backend listener client : Support sending result to InfluxDB through UDP protocol. Partly based on Pull request #302 by Junlong Wu (github id mybreeze77)

Timers, Assertions, Config, Pre- & Post-Processors

Functions

  • Bug 61040 - Add a time shifting function
  • Bug 61126 - Function Helper Dialog : Add a field that shows execution result
  • Bug 61508 - Add a random date within a specific date range function

I18N

  • Bug 61509 - Better label/translation/documentation for labels start and max for Counter element

Report / Dashboard

  • Bug 61481 - Help Menu Item to export transaction for Web report

General

  • When looking for classes in ActionRouter, fall back to location of the jar, where ActionRouter is loaded from. Provided by Emilian Bold (emi at apache.org)
  • Bug 61510 - Set 'Max Number of Connections' to 0 into 'JDBC Connection Configuration' for the 'JDBC Load Test template'
  • Bug 61399 - Make some bin and extras scripts Shellcheck compatible. Contributed by Wolfgang Wagner (internetwolf2000 at hotmail.com)


Non-functional changes

  • Updated to groovy 2.4.12 (from 2.4.10)
  • Updated to caffeine 2.5.5 (from 2.4.0)
  • Updated to commons-jexl3 3.1 (from 3.0)
  • Updated to ph-css 5.0.4 (from 5.0.3)
  • Updated to ph-commons 8.6.6 (from 8.6.0)
  • Updated to log4j2 2.8.2 (from 2.8.1)
  • Updated to xmlgraphics-commons 2.2 (from 2.1)
  • Updated to jodd 3.8.6 (from 3.8.1)
  • Updated to xstream 1.4.10 (from 1.4.9)
  • Updated to Apache Tika 1.16 (from 1.14)
  • Updated to jsoup-1.10.3 (from 1.10.2)
  • Updated to commons-lang3 3.6 (from 3.5)
  • Updated to json-path 2.4.0 (from 2.2.0)
  • Updated to httpcore 4.4.7 (from 4.4.6)
  • Bug 61438 - Change the cryptographic signature of packages from sha-1 to sha-512


Bug fixes

HTTP Samplers and Test Script Recorder

  • Bug 61384 - Don't set the charset on enclosing multipart/form-data header. It irritates some servers.
    The charset was added sometime back while refactoring to use a newer API of http client. See Bug 56141 - for more info.
  • Bug 61456 - java.lang.ArrayIndexOutOfBoundsException when recording with JMeter and weird Basic Auth Authorization header
  • Bug 61395 - Large server response truncation can impact recording

Other Samplers

  • Bug 60889 - JMeter JDBC sample calls SELECT USER() when testing with MySQL JDBC due to Connection#toString call for response headers.
  • Bug 61259 - JDBC Request : since JMeter 3.0, when JDBC auto-commit is false, a rollback statement happens each time a Request is executed. Partly contributed by Liu XP (liu_xp2003 at sina.com)
  • Bug 61319 - Fix regression: SMTP Sampler could not send mails, when no attachments were specified.

Controllers

  • Bug 61375 - Use system DNS resolver as last resort, when resolving entries in the static host table.

Listeners

  • Bug 61005 - View Results Tree - Browser Response Data is not clearing
  • Bug 61121 - InfluxdbBackendListenerClient: Only all percentiles are sent, not KO and OK
  • Bug 60961 - Try to keep status of selected and expanded elements in View Results Tree when new elements are added.
  • Bug 61198 - Backend Listener does not work properly in main script when included scripts also contain Backend Listener
  • Bug 61493 - Max/Min threads are interchanged in Graphite and InfluxDB backend listener

Timers, Assertions, Config, Pre- & Post-Processors

  • Bug 58743 - Pull request #293 TableEditor can't be saved, when using two or more instances. Bugfix provided by Emilian Bold (emi at apache.org)
  • Bug 61314 - HTTP URL Re-writing Modifier doesn't replace existing jsessionid in http sampler, but adds it to the end
  • Bug 61336 - BeanShell Assertion : mistake in Chinese translation

Functions

  • Bug 61258 - StringFromFile function is mentioned twice in the Function helper dialog
  • Bug 61260 - __XPath function returns null despite XPath checker founds matches
  • Bug 58876 - TestPlanName function returns null for a newly saved Test Plan and uses previously opened one for a new one

I18N

Report / Dashboard

  • Bug 61129 - Report/Dashboard : If response code is empty but a failureMessage is present, Errors and Top 5 Errors are not accurate. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61151 - Report/Dashboard : Top 5 Errors by Sampler and Errors : If assertion contains html code, the html part is hidden

General

  • Bug 60743 - Stopping / Shutting down Test might create a deadlock due to HTTPCORE-446, fixed by HttpCore upgrade to 4.4.7
  • Bug 60994 - Fix some typo in comments or log messages. Pull request #289 and Pull request #290
  • Bug 61011 - Replace occurrences count is not correct (Path and Host replacement are counted twice)
  • Bug 61026 - Cannot run program "keytool": CreateProcess error=2 when starting JMeter 3.2 in GUI mode
  • Bug 61054 - Endless loop in JOrphanUtils#replaceAllWithRegex when regex is contained in replacement
  • Bug 60995 - HTTP Test Script Recorder: Port field is very small under some L&F
  • Bug 61073 - HTTP(S) Test Script Recorder panel have some fields with bad size on HiDPI screen or GTK+ L&F on Linux/XWayland
  • Bug 57958 - Fix transaction sample not generated if thread stops/restarts. Implemented by Artem Fedorov (artem at blazemeter.com) and contributed by BlazeMeter Ltd.
  • Bug 61050 - Handle uninitialized RessourceBundle more gracefully, when calling JMeterUtils#getResString.
  • Bug 61100 - Invalid GC Log Filename on Windows
  • Bug 57962 - Allow to use variables ( from User Defined Variables only ) in all listeners in slave mode
  • Bug 61270 - Fixed width fonts too small in text areas to read under HiDPI (user manual bug)
  • Bug 61292 - Make processing of samples in reporter more robust.
  • Bug 61359 - When cutting an element from Tree, Test plan is not marked as dirty
  • Bug 61380 - JMeter shutdown using timers releases thundering herd of interrupted samplers
  • Bug 57055 - CheckDirty.doAction should clear previousGuiItems for SUB_TREE_SAVED


Thanks

We thank all contributors mentioned in bug and improvement sections above:

  • Anass Benomar (abenomar at umanis.com, Mithrandir0407 at github)
  • Anthony Kearns (anthony.kearns atrightside.co)
  • Emilian Bold (emi at apache.org)
  • Liu XP (liu_xp2003 at sina.com)
  • Ubik Load Pack
  • Wolfgang Wagner (internetwolf2000 at hotmail.com)
  • Junlong Wu (github id mybreeze77)

We also thank bug reporters who helped us improve JMeter.
For this release we want to give special thanks to the following reporters for the clear reports and tests made after our fixes:

  • Liu XP (liu_xp2003 at sina.com)
  • Alexander Podelko (apodelko at yahoo.com)

Apologies if we have omitted anyone else.



Known problems and workarounds

  • The Once Only controller behaves correctly under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).
  • 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 0 (see Bug 55510 ).
  • Note that under some windows systems you may have this WARNING:
    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.
    
    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.
  • You may encounter the following error:
    java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
    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+.
    To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing the Java jdk.certpath.disabledAlgorithms property. Remove the MD2 value or the constraint on size, depending on your case.
    This property is in this file:
    JAVA_HOME/jre/lib/security/java.security
    See Bug 56357 for details.
  • 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 JDK-8065373 The fix is to use JDK8_u45 or later.
  • View Results Tree may fail to display some HTML code under HTML renderer, see Bug 54586 . This is due to a known Java bug which fails to parse "px" units in row/col attributes. See Bug JDK-8031109 The fix is to use JDK9 b65 or later.
  • JTable selection with keyboard (SHIFT + up/down) is totally unusable with Java 7 on Mac OSX. This is due to a known Java bug JDK-8025126 The fix is to use JDK 8 b132 or later.




Copyright © 1999-2017, Apache Software Foundation
Apache, Apache JMeter, JMeter, the Apache feather, and the Apache JMeter logo are trademarks of the Apache Software Foundation.