Apache JMeter Changelog

What's new in Apache JMeter 5.6.3

Jan 8, 2024
  • Improvements:
  • General:
  • PR#6199 – Enable use of ${...} expressions for TransactionController "generate parent sample", and "include timers" checkboxes
  • PR#6199 – Enable use of ${...} expressions for ThreadGroupGui "scheduler" checkbox
  • PR#6199 – Enable use of ${...} expressions for HTTP Request "retrieve embedded resources", "download resources concurrently", and "store as MD5" checkboxes
  • Bug fixes:
  • General:
  • Issue#6043, PR#6044 – JMeter 5.6 shows 0 as a min response time in summary report
  • Restored binary API compatibility with pre-5.6.2: restore public methods to non-static as they were before 5.6.2 JavaSamplerContext.getJMeterVariables, JavaSamplerContext.getJMeterProperties, BoundaryExtractor.extractAll, AuthManager.setupCredentials, HttpRequestHdr.getMultipartConfig, (regression since 5.6.2)
  • Issue#6165, PR#6192 – The Constant Throughput Timer is throwing a NullPointerException when using variables (vars.get) in "Target Throughput"-field
  • Issue#6162 – The Constant Timer is throwing a NullPointerException when using variables (vars.get) in "delay"-field
  • PR#6193 – Log errors happening while JMeter starts the test (previously, errors from TestStateListener.testStarted were not logged)
  • PR#6216 – Pass JDBCSampler.maxRows to Statement.setMaxRows so the driver does not fetch extra rows from the database
  • Non-functional changes:
  • PR#6166 – Use Gradle to 8.5 for building JMeter
  • Require Java 17 for building JMeter
  • PR#6199 – Improved API for programmatic test plan creation, see default implementations of createTestElement, modifyTestElement, and new makeTestElement and assignDefaultValues methods in JMeterGUIComponent. AbstractJMeterGuiComponent.configureTestElement is now discouraged
  • PR#6212 – Refactor: migrate existing Groovy tests to Kotlin, remove Groovy compiler from the build pipeline
  • PR#6214 – Refactor JUnit 3 and JUnit 4 tests to JUnit 5, remove JUnit 4 test dependency
  • Dependency upgrades:
  • Update com.fasterxml.jackson.core:jackson-annotations to 2.16.1 (was 2.15.2)
  • Update com.fasterxml.jackson.core:jackson-core to 2.16.1 (was 2.15.2)
  • Update com.fasterxml.jackson.core:jackson-databind to 2.16.1 (was 2.15.2)
  • Update com.fifesoft:rsyntaxtextarea to 3.3.4 (was 3.3.3)
  • Update com.google.errorprone:error_prone_annotations to 2.24.0 (was 2.20.0)
  • Update commons-codec:commons-codec to 1.16.0 (was 1.15)
  • Update commons-io:commons-io to 2.15.1 (was 2.12.0)
  • Update commons-logging:commons-logging to 1.3.0 (was 1.2)
  • Update commons-net:commons-net to 3.9.0 (was 3.10.0)
  • Update io.burt:jmespath-core to 0.6.0 (was 0.5.1)
  • Update io.burt:jmespath-jackson to 0.6.0 (was 0.5.1)
  • Update net.minidev:accessors-smart to 2.5.0 (was 2.4.11)
  • Update net.minidev:json-smart to 2.5.0 (was 2.4.11)
  • Update net.sf.saxon:Saxon-HE to 11.6 (was 11.5)
  • Update org.apache.commons:commons-lang3 to 3.14.0 (was 3.12.0)
  • Update org.apache.commons:commons-pool2 to 2.12.0 (was 2.11.1)
  • Update org.apache.commons:commons-text to 1.11.0 (was 1.10.0)
  • Update org.apache.httpcomponents.client5:httpclient5 to 5.3 (was 5.2.1)
  • Update org.apache.httpcomponents.core5:httpcore5-h2 to 5.2.4 (was 5.2)
  • Update org.apache.httpcomponents.core5:httpcore5 to 5.2.4 (was 5.2)
  • Update org.apache.logging.log4j:log4j-1.2-api to 2.22.1 (was 2.20.0)
  • Update org.apache.logging.log4j:log4j-api to 2.22.1 (was 2.20.0)
  • Update org.apache.logging.log4j:log4j-core to 2.22.1 (was 2.20.0)
  • Update org.apache.logging.log4j:log4j-slf4j-impl to 2.22.1 (was 2.20.0)
  • Update org.apache.xmlgraphics:xmlgraphics-commons to 2.9 (was 2.8)
  • Update org.checkerframework:checker-qual to 3.42.0 (was 3.35.0)
  • Update org.codehaus.groovy:groovy-datetime to 3.0.20 (was 3.0.17)
  • Update org.codehaus.groovy:groovy-dateutil to 3.0.20 (was 3.0.17)
  • Update org.codehaus.groovy:groovy-jmx to 3.0.20 (was 3.0.17)
  • Update org.codehaus.groovy:groovy-json to 3.0.20 (was 3.0.17)
  • Update org.codehaus.groovy:groovy-jsr223 to 3.0.20 (was 3.0.17)
  • Update org.codehaus.groovy:groovy-sql to 3.0.20 (was 3.0.17)
  • Update org.codehaus.groovy:groovy-templates to 3.0.20 (was 3.0.17)
  • Update org.codehaus.groovy:groovy-xml to 3.0.20 (was 3.0.17)
  • Update org.codehaus.groovy:groovy to 3.0.20 (was 3.0.17)
  • Remove org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22
  • Update org.jetbrains.kotlin:kotlin-stdlib-jdk7 to 1.9.10 (was 1.8.22)
  • Update org.jetbrains.kotlin:kotlin-stdlib-jdk8 to 1.9.10 (was 1.8.22)
  • Update org.jetbrains.kotlin:kotlin-stdlib to 1.9.22 (was 1.8.22)
  • Update org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm to 1.7.3 (was 1.7.1)
  • Update org.jetbrains.kotlinx:kotlinx-coroutines-swing to 1.7.3 (was 1.7.1)
  • Update org.jetbrains.lets-plot:base-portable-jvm to 4.1.0 (was 3.2.0)
  • Update org.jetbrains.lets-plot:lets-plot-common to 4.1.0 (was 3.2.0)
  • Update org.jetbrains.lets-plot:lets-plot-kotlin-jvm to 4.5.0 (was 4.4.1)
  • Update org.jetbrains.lets-plot:plot-common-portable-jvm to 4.1.0 (was 3.2.0)
  • Update org.jetbrains:annotations to 24.1.0 (was 24.0.1)
  • Update org.jsoup:jsoup to 1.17.1 (was 1.16.1)
  • Update org.mongodb:mongo-java-driver to 2.14.3 (was 2.11.3)
  • Update org.neo4j.driver:neo4j-java-driver to 4.4.13 (was 4.4.11)
  • Update org.ow2.asm:asm to 9.6 (was 9.5)
  • Update org.xmlresolver:xmlresolver to 5.2.1 (was 4.6.4)
  • Update org.xmlresolver:xmlresolver:data to 5.2.1 (was 4.6.4)

New in Apache JMeter 5.6.2 (Jul 12, 2023)

  • Bug fixes:
  • General:
  • PR#6042, Issue#6041 – Fix compatibility with Maven's pom.xml parser by adding explicit versions for com.google.auto.service:auto-service-annotations (regression since 5.6)

New in Apache JMeter 5.6.1 (Jul 10, 2023)

  • New and Noteworthy:
  • Improvements:
  • HTTP Samplers and Test Script Recorder:
  • PR#6010 – Use UTF-8 as a default encoding in HTTP sampler. It enables sending parameter names, and filenames with unicode characters
  • PR#6010 – Test Recorder will use UTF-8 encoding by default, so it will infer human-readable arguments rather than percent-encoded ones
  • Non-functional changes:
  • PR#6000 – Add release-drafter for populating GitHub releases info based on the merged PRs
  • PR#5989 – Use Gradle toolchains for JDK provisioning, enable building and testing with different JDKs, start testing with Java 21
  • PR#5991 – Update jackson-core, jackson-databind, jackson-annotations to 2.15.2 (from 2.15.1)
  • PR#5993 – Update ph-commons to 10.2.5 (from 10.2.4)
  • PR#6017 – Update kotlin-stdlib to 1.8.22 (from 1.8.21)
  • PR#6020 – Update error_prone_annotations to 2.20.0 (from 2.19.1)
  • PR#6023 – Update checker-qual to 3.35.0 (from 3.34.0)
  • Other Samplers:
  • PR#6028, Change default value for sampleresult.default.encoding to UTF-8 (it inherits default HTTP encoding which was modified in PR#6010)
  • Bug fixes:
  • Thread Groups:
  • PR#6011 – Regression since 5.6: ThreadGroups are running endlessly in non-gui mode: use default value for LoopController.continue_forever rather than initializing it in the constructor
  • Other Samplers:
  • PR#6012 – Java Request sampler cannot be enabled again after disabling in UI (regression since 5.6)

New in Apache JMeter 5.6 (Jun 26, 2023)

  • New and Noteworthy:
  • Improvements:
  • Thread Groups:
  • Issue#5682, PR#717 – Open Model Thread Group: avoid skipping rows from CSV Data Set Config
  • Support custom thread group implementations in "Add think time" and "Save as test fragment" actions
  • Open Model Thread Group: interrupt pending HTTP requests and other Interruptible test elements on test stop
  • HTTP Samplers and Test Script Recorder:
  • PR#5911 – Use Caffeine for caching HTTP headers instead of commons-collections4 LRUMap
  • PR#5947 – Fetch resources referenced in elements
  • PR#5869 – Allow more templates to format sampler names in the recorder: #{url}, #{method}, #{scheme}, #{host}, #{port}
  • Other samplers:
  • PR#5909 – Use Caffeine for caching compiled scripts in JSR223 samplers instead of commons-collections4 LRUMap
  • General:
  • PR#5792 – Add KeyStroke for start_no_timers (Start no pauses: CRTL+SHIFT+n)
  • PR#5899 – Speed up CPU-bound tests by skipping recoverRunningVersion for elements that are shared between threads (the ones that implement NoThreadClone)
  • PR#5914 – Use Locale.ROOT instead of default locale for toUpperCase, and toLowerCase to avoid surprises with dotless I in tr_TR locale
  • PR#5885 – Use Java's ServiceLoader for loading plugins instead of classpath scanning. It enables faster startup
  • PR#5788 – FunctionProperty no longer caches the value. Previously it cached the values based on iteration number only which triggered wrong results on concurrent executions. The previous behavior can be temporary restored with function.cache.per.iteration property.
  • PR#5920 – Improve HTTP HeaderManager performance when it contains many headers: skip reinitialization on each iteration
  • PR#5920 – Use AtomicInteger and AtomicLong instead of synchronized primitives for JMeterContextService#numberOfThreads
  • PR#5920 – Cache bean properties in TestBeanHelper and avoid synchronization, so test plans with TestBean-based elements is faster
  • PR#5920 – Improve computation when many threads actively produce samplers by using LongAdder and similar concurrency classes to avoid synchronization in Calculator
  • PR#5920 – Reduce synchronization contention on AbstractTestElement that are shared between threads (the ones that implement NoThreadClone)
  • PR#5934 – Added caching for date formatters for __time function
  • PR#710, Issue#5666 – Added Shortcut key event for Reset search: ctrl + alt + F, cmd + alt + F
  • PR#5959 – TestElement has been migrated to Kotlin, so nullable types are annotated better
  • PR#5944 – Add PI for declaring TestElement schemas so element properties are easier to access in code (see TestElementSchema, TestElement#getSchema(), TestElement#getProps())
  • PR#5944 – Enable usage of ${...} expressions for checkbox controls (see context menus for checkboxes, however, the individual components should be adapted individually)
  • PR#678 – Experimental Kotlin and Java DSL for programmatic test plan generation (see Creating a plan with Kotlin DSL)
  • Non-functional changes:
  • PR#725 – Add Chinese Simplified Translation for Open Model Thread Group
  • PR#5710 – Add GitHub Issue templates
  • PR#5910 – Use Caffeine for caching customizers in TestBeanGUI instead of commons-collections4 LRUMap
  • PR#5713, PR#5931 – Update Spock to 2.3-groovy-3.0 (from 2.1-groovy-3.0)
  • Issue#5718 – Update Apache commons-text to 1.10.0 (from 1.9)
  • PR#5731 – Update docs for changeCase function. UPPER is the default
  • PR#5924 – Update Apache commons-io to 2.12.0 (from 2.11.0)
  • PR#5921 – Update Jackson Core to 2.15.1 (from 2.13.3)
  • PR#5921 – Update Jackson Databind to 2.15.1 (from 2.13.3)
  • PR#5725 – Update Tika Parser to 1.28.5 (from 1.28.3)
  • PR#5725 – Update JSoup to 1.16.1 (from 1.15.1)
  • PR#5725 – Update Apache commons-net to 3.9.0 (from 3.8.0)
  • PR#5725 – Update XStream to 1.4.20 (from 1.4.19)
  • PR#5763, PR#5814 – Updated Gradle to 8.1.1 (from 7.2)
  • PR#5854 – Added Apache Httpclient5 5.1.3
  • PR#5833 – Update Apache Freemarker to 2.3.32 (from 2.3.31)
  • PR#5830 – Update Apache Groovy to 3.0.17 (from 3.0.11)
  • PR#5862 – Update Apache Httpclient to 4.5.14 (from 4.5.13)
  • PR#5880 – Update Apache Xalan to 2.7.3 (from 2.7.2)
  • PR#5854 – Update Saxon-HE to 11.5 (from 11.5)
  • PR#5840, PR#5930 – Update accessors-smart to 2.4.11 (from 2.4.8)
  • PR#5837 – Update asm to 9.5 (from 9.3)
  • PR#5840, PR#5930 – Update json-smart to 2.4.11 (from 2.4.8)
  • PR#5814 – Update kotlin-stdlib to 1.8.21 (from 1.6.21)
  • PR#5889, PR#5918, PR#5814 – Update kotlinx-coroutines-core to 1.8.21 (from 1.6.21)
  • PR#5889, PR#5918, PR#5814 – Update kotlinx-coroutines-swing to 1.8.21 (from 1.6.21)
  • PR#5907 – Update lets-plot-batik to 3.2.0 (from 2.1.1)
  • PR#5907 – Update lets-plot-jvm to 4.3.0 (from 3.1.1)
  • PR#5859 – Update log4j-1.2-api to 2.20.0 (from 2.17.2)
  • PR#5859 – Update log4j-api to 2.20.0 (from 2.17.2)
  • PR#5859 – Update log4j-core to 2.20.0 (from 2.17.2)
  • PR#5859 – Update log4j-slf4j-impl to 2.20.0 (from 2.17.2)
  • PR#5861 – Update neo4j-java-driver to 4.4.11 (from 4.4.6)
  • PR#5853 – Update org.jetbrains:annotations to 24.0.1 (from 23.0.0)
  • PR#5868, PR#5886 – Update ph-commons to 10.2.4 (from 10.1.6)
  • PR#5861 – Update reactive-streams to 1.0.4 (from 1.0.3)
  • PR#5847 – Update rsyntaxtextarea to 3.3.3 (from 3.2.0)
  • PR#5839 – Update svgSalamander to 1.1.4 (from 1.1.2.4)
  • PR#5852 – Update xmlgraphics-commons to 2.8 (from 2.7)
  • PR#5854 – Update xmlresolver to 4.6.4 (from 4.2.0)
  • PR#693 – Added randomized test GitHub Actions matrix for better coverage of locales and time zones
  • PR#5960 – Add OpenJDK JMH for creating microbenchmarks in JMeter code
  • Issue#5961 – Deprecate TestElement.threadName as it is not related to TestElement
  • Bug fixes:
  • HTTP Samplers and Test Script Recorder:
  • PR#5901 – Fix NumberFormatException when counter is empty or not a digit on Proxy Settings panel
  • PR#5987, Issue#4546 – Encode unicode characters in filenames when sending files in HTTP Sampler
  • Other Samplers:
  • PR#5736, Issue#5733 – Allow SampleResult#setEndTime be set in JSR223Sampler
  • Listeners:
  • Issue#5740, PR#5741 – Fix Aggregated Graph component to cope with empty names of samplers
  • Issue#5807 – Fix an ArrayIndexOutOfBoundsException on HTTP parameters line on special case when key and value are empty, i.e.: "k1=v1&=&k2=v2"
  • Issue#5654, PR#5785 – Fix InfluxDBRawBackendListenerClient missing data. Allow InfluxDB to insert multiple entries with the same timestamp but with different threadName. Contributed by Victor Peralta (vperaltac at github)
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • PR#5717 – Add jsonpath string to JSON Path Assertion error message so the error is easier to understand
  • PR#723 – Use correct number format on JSON Path Assertion. Contributed by andreaslind01 (andreaslind01 at gmail.com)
  • Report / Dashboard:
  • Bug 66140 – Guess the delimiter of the CSV source, when configured one seems wrong. This is in line with the behaviour of CSVSaveService.
  • Documentation:
  • Issue#5694 – Document changed formatter for __time(). A warning will be logged, if the code u is found in the format string, as the meaning for that code has changed from day-of-week to year.
  • General:
  • Bug 66157, PR#719 – Correct theme for darklaf on rsyntaxtextarea
  • Issue#5872, PR#5874 – Trim name in Argument objects.
  • PR#693 – Avoid wrong results when Object.hashCode() happen to collide. Use IdentityHashMap instead of HashMap when key is TestElement
  • Refresh UI when dragging JMeter window from one monitor to another, so rich syntax text areas are properly editable after window movement
  • PR#5984 – AbstractTestElement#clone might produce non-identical clones if element constructor adds a non-default property value

New in Apache JMeter 5.5 (Jun 16, 2022)

  • New and Noteworthy:
  • JMeter now supports Java 17
  • JMeter 5.5 ships with log4j2 2.17.2
  • Open Model Thread Group:
  • New component: Open Model Thread Group allows creating load profiles with variable load.
  • For example, if you need to gradually increase load from 0/sec to 10/sec during minute you could previously use Thread Group + Timer combinations. However, then you need to compute the expected number of threads, ensure they are created only when needed, and so on.
  • With Open Model Thread Group you can configure the same load profile as rate(0/sec) random_arrivals(1 minute) rate(10/sec). The thread group would spawn threads as needed to drive the configured load. The load profile can use properties, so you can launch the same script with slightly different load levels, however, the profile can't be updated while the test is running.
  • The new thread group is experimental in JMeter 5.5, so please feel free to submit your feedback.
  • Preparing the deprecation of Oro Regex usage:
  • Another experimental feature in JMeter 5.5 is the ability to replace the Oro based Regex implementation by the built-in Java based one. To choose the Java based one, set the JMeter property jmeter.regex.engine to the value java.
  • Core improvements:
  • Kotlin language is now used in some core classes and tests (e.g. Open Model Thread Group). JMeter is compiled with apiTarget=1.5, and it ships with kotlin-stdlib 1.6.
  • lets-plot-kotlin charting library is added, so it will be easier to refine and create new charts in UI in the future.
  • Improvements:
  • Thread Groups:
  • New component: Open Model Thread Group
  • HTTP Samplers and Test Script Recorder:
  • Bug 65027 - Detect mime-type for files automatically when adding files to HTTP Sampler
  • Bug 65020 - HTTP Sampler/Files upload tab – add missing buttons
  • Pull request #650 - HTTP Sampler timestamp fix when exception is caught. Contributed by Konstantin Kalinin (konstantin at kkalinin.pro)
  • Bug 65328 - Pull request #666 - HTTP 308 Permanent Redirect is not supported. Contributed by Baptiste Gaillard (baptiste.gaillard at gmail.com)
  • Other samplers:
  • Bug 65149 - Pull request #644 - Encode the personal part of email addresses in SMTP Sampler
  • Pull request #638 - Various additions to the Bolt Sampler. Added transaction timeout, database option required for Neo4j 4.x (with multi-database support) and access mode option, that allows running against a Neo4j Enterprise Causal Cluster. Contributed by David Pecollet (david.pecollet at gmail.com)
  • Controllers:
  • Pull request #665 - Increase visible lines of code in IfController and WhileController. Based on an idea by David Getzlaff (david.getzlaff at t-systems.com>).
  • Listeners:
  • Bug 64988 - Sort properties and variables in a human expected order for DebugPostProcessor and DebugSampler
  • Bug 63061 - Sort View Results in Table in a human expected order
  • Pull request #706 - Try to keep UI responsive when displaying large text results. Can be configured with the new property view.results.tree.simple_view_limit
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Pull request #638 - Bolt Connection Configuration: added ConnectionPoolMaxSize parameter. Contributed by David Pecollet (david.pecollet at gmail.com)
  • Bug 65515 - Allow pooling of Prepared Statements in JDBC
  • Bug 65299 - JSONPathAssertion attributes are out of order/Compare JSON objects and not their string representations.
  • Report / Dashboard:
  • Bug 65353 - Make the estimator used for calculating percentiles on the dashboard configurable
  • General:
  • Bug 61805 - Pull request #663 - Add simple HTTP request template. Contributed by Ori Marko (orimarko at gmail.com)
  • Bug 65611 - Pull request #673 - Add support for IPv6 addresses when specifying a remote worker node. Based on a patch by Peter Wong (peter.wong at csexperts.com)
  • Reduce memory consumption by the logging panel (disable undo events for it)
  • Bug 63620 - Pull request #694 - Fix GUI freeze when viewing response body with long line breaks
  • Pull request #699 - Add documentation for Graphite Backend Listener. Contributed by Ji Hun (jihunkimkw at gmail.com)
  • Bug 57672 - Pull request #700 - Add a switch (jmeter.regex.engine) to replace Oro Regex implementation by the built-in Java one.
  • Non-functional changes:
  • Added Kotlin 1.6.21 for JMeter engine implementation (apiVersion=1.5). The set of JSR 223 languages is intact.
  • Bug 65128 - Pull request #643 - Add missing documentation about Same user on each iteration for Thread Groups. Contributed by njkuzas.
  • Pull request #648 - Updated xmlgraphics-commons to 2.6 (from 2.3). Contributed by Stefan Seide (stefan at trilobyte-se.de)
  • Pull request #655, Pull request #667, Pull request #675, Pull request #698 - Updated x-stream to 1.4.19 (from 1.4.15). Contributed by Stefan Seide (stefan at trilobyte-se.de)
  • Pull request #656, Pull request #668 - Updated json-smart to 2.4.8 (from 2.3), accessors-smart to 2.4.8 (from 1.2) and asm 9.3 (from 9.0). Contributed by Stefan Seide (stefan at trilobyte-se.de)
  • Bug 64831 - Log truststore entries in debug level for logger org.apache.jmeter.util.keystore.JmeterKeyStore
  • Bug 65232 - Hide splash screen when an error is displayed because the test plan could not be parsed.
  • Updated Groovy to 3.0.11 (from 3.0.7).
  • Updated Darklaf to 2.7.3 (from 2.5.4).
  • Updated Apache ActiveMQ to 15.6.4 (from 15.6.0).
  • Updated Asm to 9.2 (from 9.1).
  • Updated Bouncycastle to 1.70 (from 1.67).
  • Updated Caffeine to 2.9.3 (from 2.8.8).
  • Updated Apache commons-dbcp2 to 2.9.0 (from 2.8.0).
  • Updated Apache commons-io to 2.11.0 (from 2.8.0).
  • Updated Apache commons-lang3 to 3.12.0 (from 3.11).
  • Updated Apache commons-net to 3.8.0 (from 3.7.2).
  • Updated Apache commons-pool2 to 2.11.1 (from 2.9.0).
  • Updated equalsverifier to 3.10 (from 3.4.2).
  • Updated Apache Freemarker to 2.3.31 (from 2.3.30).
  • Updated hsqldb to 2.5.2 (from 2.5.0).
  • Updated Apache HttpClient to 4.5.13 (from 4.5.12).
  • Updated Apache HttpCore to 4.4.15 (from 4.4.13).
  • Updated jacoco to 0.8.7 (from 0.8.5).
  • Updated json-path to 2.7.0 (from 2.4.0).
  • Updated jsoup to 1.15.1 (from 1.13.1).
  • Updated JUnit to 4.13.2 and 5.8.2 (from 4.13.1 and 5.7.0).
  • Updated Apache log4j2 to 2.17.2 (from 2.13.3).
  • Updated Miglayout to 5.3 (from 5.2).
  • Updated Neo4j Java driver to 4.4.6 (from 4.2.0).
  • Updated Objenesis to 3.2 (from 2.6).
  • Updated ktlint to 0.40.0
  • Updated PH CSS and PH commons to 6.5.4 and 10.1.6 (from 6.2.3 and 9.5.1).
  • Updated RSyntaxTextArea to 3.2.0 (from 3.1.1).
  • Updated SLF4J to 1.7.36 (from 1.7.30).
  • Updated SvgSalamander to 1.1.2.4 (from 1.1.2.1).
  • Pull request #698 - Updated Apache Tika to 1.28.3 (from 1.26).
  • Updated WireMock-JRE8 to 2.30.0 (from 2.24.1).
  • Updated com.github.vlsi.vlsi-release-plugins 1.76 (from 1.74).
  • Updated jackson to 2.13.3 (from 2.10.5)
  • Updated jmespath to 0.5.1
  • Updated Saxon-HE to 11.2 (from 9.9.1-8)
  • Updated Apache xmlgraphics commons to 2.7 (from 2.6)
  • Pull request #671 - Move example definition of property jmeter.reportgenerator.statistic_window to user.properties, as it is read from that place. Contributed by Rithvik Patibandla (rithvikp98 at gmail.com)
  • Bug 65456 - Updated commons-jexl 3 to 3.2.1 (from 3.1). Contributed by Ori Marko (orimarko at gmail.com>)
  • Pull request #654 - Try do give better feedback while loading keystores
  • Pull request #672 - Add more details to documentation for timeShift function. Contributed by Mariusz (mawasak at gmail.com)
  • Updated Gradle to 7.3 (from 7.2)
  • Pull request #689 - Code clean up in StringFromFile. Contributed by Sampath Kumar Krishnasamy (sampathkumar.krishnasamykuppusamy at aexp.com)
  • Pull request #690 - Refactor a few unit tests. Contributed by Sampath Kumar Krishnasamy (sampathkumar.krishnasamykuppusamy at aexp.com)
  • Pull request #692> - Fix a few deprecation warnings for Gradle. Contributed by Sampath Kumar Krishnasamy (sampathkumar.krishnasamykuppusamy at aexp.com)
  • Pull request #697> - Junit 5 tests to use asserts from Junit 5 API. Contributed by Sampath Kumar Krishnasamy (sampathkumar.krishnasamykuppusamy at aexp.com)
  • Bug 65983 - Pull request #707 - Use current screenshot for save-to-file listener in documentation. Based on patch by NaveenKumar Namachivayam (catch.nkn at gmail.com)
  • Pull request #708 - Make errorprone happier. Based on patch by Wilson Kurniawan (wilson at visenze.com)>
  • Updated Rhino JavaScript to 1.7.14 (from 1.7.13)
  • Bug fixes:
  • HTTP Samplers and Test Script Recorder:
  • Bug 65310 - Don't let users override multipart/form-data content-type header in HC4 sampler.
  • Bug 65363 - NullPointerException in HTTPHC4Impl$ManagedCredentialsProvider.getAuthorizationForAuthScope when 401 response from remote and httpclient4.auth.preemptive=false
  • Bug 65692 - HTTP(s) Test Script Recorder: Enable setting enabled cipher suite and enabled protocols on SSLContext/ Align SSL properties between Java and HC4 implementation
  • Bug 65108 - Support JMeter variables in GraphQL HTTP Request
  • Bug 65864 - Catch NullPointerException from JSoup when recording a test plan
  • Other Samplers:
  • Bug 65152 - OS Process Sampler – Cannot Add from Clipboard Command parameters
  • Pull request #638 - Bolt Sampler: fixed error displaying results when "Record Query Results" is enabled. Contributed by David Pecollet (david.pecollet at gmail.com)
  • Listeners:
  • Bug 64962 - Save CSV sub-results recursively from View Results Tree
  • Bug 65784 - No Graphs displayed in Aggregate Report/Response Time Graph
  • Bug 65884 - GUI doesn't display response for multipart request manually encoded
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 65257 - JMESPathExtractor writes error log entries if JMESPath filter returns empty result
  • Bug 65259 - JMESPathExtractor Attribute Match No. Required
  • Bug 65269 - JSON Extractor and JSON JMESPath Extractor ignore sub-samples
  • Bug 65352 - Warning logged when Boundary Extractor doesn't find any match
  • Bug 65681 - Use default values for null values when extracting with JSONPostProcessor
  • Allow setters in ConstantThroughputTimer to update the values during run time
  • Bug 65782 - Use correct message format for MessageFormat in HTMLAssertion
  • Bug 65794 - JSON Assertion always successful with indefinite paths
  • Documentation:
  • Pull request #658 - Improve javadoc. Contributed by Ori Marko (orimarko at gmail.com)
  • General:
  • Bug 64318 - DNS Cache Manager – custom DNS resolver does not use system resolver by default
  • Pull request #641, Pull request #698 - Updated xercesImpl to 2.12.2 (from 2.12.0). Based on patch by Stefan Seide (stefan at trilobyte-se.de).
  • Pull request #645 - Add escaping for new lines in AbstractInfluxdbMetricsSender. Contributed by David Getzlaff (david.getzlaff at t-systems.com>)
  • Bug 65198 - Can't copy generated function from FunctionHelper
  • Pull request #661 - Fix wording in doc. Contributed by BugKing (wangzhen at fit2cloud.com)
  • Pull request #664 - Allow whitespace in path. Contributed by Till Neunast (github.com/tilln)
  • Bug 65270 - POST application/x-www-form-urlencoded cURL code generated from Postman is not imported correctly
  • Silence warnings of missing font Arial on startup under Linux
  • Bug 65300 - IllegalAccessError when opening file dialog with Java 16
  • Bug 65336 - Blank labels when different elements had the same name
  • Bug 65522 - Restart doesn't work, when parameters contain spaces
  • Bug 63914 - Simplify :src:dist:clean configuration, ensure /lib/junit/test.jar is removed on clean
  • Pull request #696 - Keep JSyntaxTextArea text value for use in headless mode. Contributed by Peter Paul Bakker (peter.paul.bakker at stokpop.nl)

New in Apache JMeter 5.4.3 (Dec 24, 2021)

  • Updated Apache Log4j2 to 2.17.0 (from 2.16.0).

New in Apache JMeter 5.4.2 (Dec 17, 2021)

  • This version is a fix release against the vulnerability CVE-2021-44228: Apache Log4j2 JNDI features do not protect against attacker controlled LDAP and other JNDI related endpoints.

New in Apache JMeter 5.4.1 (Jan 24, 2021)

  • Incompatible changes:
  • Restart after LAF change has been reinstated, it had been removed in JMeter 5.3
  • General:
  • Bug 65028 - Add documentation for the property client.rmi.localport
  • Bug 65012 - Better handling of displaying long comments in the GUI
  • Non-functional changes:
  • Updated SaxonHE to 9.9.1-8 (from 9.9.1-7)
  • Updated asm to 9.0 (from 7.3.1)
  • Updated bouncycastle to 1.67 (from 1.66)
  • Updated caffeine to 2.8.8 (from 2.8.0)
  • Updated commons-codec to 1.15 (from 1.14)
  • Updated commons-io to 2.8.0 (from 2.7)
  • Updated commons-net to 3.7.2 (from 3.7)
  • Updated jackson to 2.10.5 (from 2.10.3)
  • Updated junit to 4.13.1 (from 4.13)
  • Updated ph-commons to 9.5.1 (from 9.4.1)
  • Updated ph-css to 6.2.3 (from 6.2.1)
  • Updated groovy to 3.0.7 (from 3.0.5)
  • Updated xstream to 1.4.15 (from 1.4.14)
  • Bug fixes:
  • HTTP Samplers and Test Script Recorder:
  • Bug 64955 - Keystore password not reset on reload
  • Bug 65002 - HTTP(S) Test Script recorder creates an invalid Basic authentication URL. Contributed by Ubik Load Pack (https://ubikloadpack.com)
  • Bug 65004 - HTTP(S) Test Script recorder computes wrong HTTP Request breaking the application. Contributed by Ubik Load Pack (https://ubikloadpack.com)
  • Bug 64543 - On MacOSX, Darklaf- IntelliJ Theme throws NPE in javax.swing.ToolTipManager.initiateToolTip
  • Bug 65024 - Sending mime type with parameter throws IllegalArgumentException
  • Bug 65029 - Try harder to correctly guess the URL for applets, when download embedded URLs is enabled
  • Other Samplers:
  • Bug 65034 - Ignore SocketTimeoutException on BinaryTCPClientImpl, when no EOM Byte is set. Regression introduced by commit c190641e4f0474a34a366a72364b0a8dd25bfc81 which fixed Bug 52104 - . That bug was bout handling the case of waiting for an EOM.
  • Listeners:
  • Bug 64821 - When importing XML formatted jtl files, sub samplers will get renamed
  • Bug 65052 - XPath2 Tester and JSON JMESPath Tester are missing in view.results.tree.renderers_order property
  • Documentation:
  • Bug 64960 - Change scheduler reference in Thread Group documentation. Contributed by Ori Marko
  • Bug 65006 - Illustration for completed HTTP Request Defaults element (Figure 4.4) contains misleading info
  • General:
  • Bug 64957 - When importing example test plan JMeter displays an NullPointerException
  • Bug 64961 - Darklaf: On Windows 7, NPE in BasicEditorPaneUI.cleanDisplayProperties with Darklaf Intellij
  • Bug 64963 - Blank comment tooltip is visible
  • Bug 64969 - RemoteJMeterEngineImpl#rexit doesn't unexport RemoteJMeterEngineImpl on exit. Contributed by luo_isaiah at qq.com
  • Bug 64984 - Darklaf LAF: Selecting a Test element does not work under certain screen resolutions on Windows. With the help of Jannis Weis
  • Bug 65008 - SampleResult.setIgnore() called from PostProcessor is not considered
  • Bug 64993 - Daklaf LAF: Menu navigation not working with keyboard shortcuts. With the help of Jannis Weis
  • Bug 65013 - POST multipart/form-data cURL code with quoted arguments is not imported correctly

New in Apache JMeter 5.4 (Dec 6, 2020)

  • New and Noteworthy:
  • UX improvements:
  • Bug 62179 - Bug 64658 - The splash screen is now application-modal rather than system-modal, so it does not block other applications when JMeter is starting up.
  • Incompatible changes:
  • Remove LogKit logger functionality from some classes. This was intended to completely remove LoggingManager class (it has been deprecated since JMeter 3.2), but as jmeter-plugins depended on it, LoggingManager and our LogKit-adapter will remain for this version (but is still deprecated).
  • Improvements:
  • HTTP Samplers and Test Script Recorder:
  • Bug 53848 - Bug 63527 - Implement a new setting to allow the exclusion of embedded URLs
  • Bug 64696 - Pull request #571, Pull request #595 - Freestyle format for names in (Default)SamplerCreater. Based on a patch by Vincent Daburon (vdaburon at gmail.com)
  • Bug 64752 - Add GraphQL/HTTP Request Sampler. Contributed by woonsan.
  • Other samplers:
  • Bug 64555 - Set JMSType header field through JMSProperties. Contributed by Daniel van den Ouden
  • Listeners:
  • Pull request #544 - Add BackendListener that sends "raw" results to InfluxDB. Contributed by Graham Russell (graham at ham1.co.uk)
  • Report / Dashboard:
  • Bug 64824 - Dashboard/HTML Report: Rename KO to FAIL
  • Bug 64936 - Increase generate_report_ui.generation_timeout to 5 minutes to handle large performance test
  • General:
  • Bug 64446 - Better parse curl commands with backslash at line endings and support PUT method with data arguments
  • Pull request #599 - Ensure all buttons added to the toolbar behave/look consistently. Contributed by Jannis Weis
  • Bug 64581 - Allow SampleResult#setIgnore to influence behaviour on Sampler Error
  • Bug 64680 - Fall back to JMETER_HOME on startup to detect JMeter's installation directory
  • Bug 64787 - Pull request #630 - Add Korean translation. Contributed by Woonsan Ko (woonsan at apache.org)
  • Bug 64776 - Add the ability to install additional SecurityProvider. Contributed by Timo (ASF.Software.Timo at Leefers.eu)
  • Non-functional changes:
  • Build system upgraded from Gradle to 6.7 (from 6.6)
  • Pull request #594 - Updated neo4j-java-driver to 4.2.0 (from 1.7.5)
  • Bug 64454 - More precise error message, when no datasource value can be found in JDBC sampler
  • Bug 64440 - Log exeptions reported via JMeterUtils#reportToUser even when in GUI mode
  • Pull request #591 - Remove deprecated sudo flag from travis file. Deng Liming (liming.d.pro at gmail.com)
  • Updated Darklaf to 2.4.10 (from 2.1.1)
  • Updated Groovy to 3.0.5 (from 3.0.3)
  • Pull request #596 - Use neutral words in documentation
  • Bug 63809 - Pull request #557 - Updated commons-collections to 4.4 (from 3.2.2) while keeping the jars for the old commons-collections 3.x for compatibility
  • Pull request #598 - Add another option for creating diffs to the building page. Contributed by jmetertea (github.com/jmetertea)
  • Pull request #609 - Make use of newer API for darklaf installation. Jannis Weis
  • Pull request #612 - Correct typos in README.md. Based on patches by Pooja Chandak (poojachandak002 at gmail.com)
  • Pull request #613 - Add documentation for Darklaf properties. Jannis Weis
  • Update SpotBugs to 4.1.2 (from 4.1.1), upgrade spotbugs-gradle-plugin to 4.5.0 (from 2.0.0)
  • Update org.sonarqube Gradle plugin to 3.0 (from 2.7.1)
  • Update Apache ActiveMQ to 5.16.0 (from 5.15.11)
  • Update Bouncycastle to 1.66 (from 1.64)
  • Update Apache commons-io to 2.7 (from 2.6)
  • Update Apache commons-lang3 to 3.11 (from 3.10)
  • Update Apache commons-net to 3.7 (from 3.6)
  • Update Apache commons-pool2 to 2.9.0 (from 2.8.0)
  • Update Apache commons-text to 1.9 (from 1.8)
  • Update equalsverifier to 3.4.2 (from 3.1.13)
  • Update junit5 to 5.6.2 (from 5.6.0)
  • Update Apache log4j2 to 2.13.3 (from 2.13.1)
  • Update rsyntaxtextarea to 3.1.1 (from 3.1.0)
  • Update JUnit5 to 5.7.0 (from 5.6.2)
  • Update Rhino to 1.7.13 (from 1.7.12)
  • Update XStream to 1.4.14 (from 1.4.14.1)
  • Update Apache commons-dbcp2 to 2.8.0 (from 2.7.0)
  • Pull request #635 - Correct some image ratios in the documentation. Patch provided by Vincent Daburon (vdaburon at gmail.com)
  • Bug fixes:
  • HTTP Samplers and Test Script Recorder:
  • Bug 64479 - Regression: HTTP(s) Script Recorder prevents proper shutdown in non-GUI mode
  • Bug 64653 - Exclude Javascript and JSON from parsing for charsets from forms by proxy
  • Controllers:
  • Bug 64795 - Generate summary report may not output a summary line in the configured interval (summariser.interval): Clarify documentation
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 64638 - JSON JMESPath Assertion / JSON Assertion: Opening GUI shows a horizontal scrollbar that keeps sliding
  • Bug 64915 - JMeter Cache Manager misbehaving when "Use Cache-Control/Expires header" is checked
  • Report / Dashboard:
  • Bug 64547 - Report/Dashboard: Ensure graphs Response codes per second is not broken by empty response code in SampleResult. Contributed by Ubik Load Pack (https://ubikloadpack.com)
  • Bug 64617 - HTML report: In graph Response Time Percentiles Over Time 90,95,99th percentile correspond in reality to 0.90, 0.95 and 0.99 percentiles
  • Bug 64553 - When using Transaction Controller, send Bytes and Received Bytes are displayed as 0 in the influxdb(BackendListener)
  • Bug 64624 - Use less aggressive escaping for JSON Strings in reports error messages
  • Documentation:
  • Pull request #571 - Correct documented name of generated CA when using proxy script recorder. Part of a bigger PR. Vincent Daburon (vdaburon at gmail.com)
  • Change documentation of the special header functionality of the mirror server to reflect the implementation.
  • General:
  • Bug 64448 - User Defined Variable Duplication in Right Click Context Menu
  • Bug 64499 - Exiting JMeter when jmeterengine.stopfail.system.exit=true takes too much time if threads are not stopped
  • Bug 64510 - Darklaf- IntelliJ Theme throws NPE in DarkTreeUI on MacOS
  • Bug 64543 - On MacOSX, Darklaf- IntelliJ Theme throws NPE in javax.swing.ToolTipManager.initiateToolTip
  • Bug 64594 - Unable to enter variable values instead of numeric values in components using PowerTableModel (Impacts 3rd party plugins like Throughput Shaping Timer)
  • Bug 64475 - Menu Generate HTML Report: When report generation fails due to timeout, error message is not explicit. Contributed by Ubik Load Pack (https://ubikloadpack.com)
  • Bug 64627 - Programmatic manipulation of the control flow via API methods of JMeterContext is not working as it used to before 5.0. Contributed by Till Neunast
  • Bug 64647 - groovy-dateutil is missing in distribution
  • Bug 64640 - Darklaf: NPE at com.github.weisj.darklaf.ui.DarkPopupFactory.getPopupType(DarkPopupFactory.java:96)
  • Bug 64641 - Darklaf: NPE at com.github.weisj.darklaf.ui.tree.DarkTreeUI.isChildOfSelectionPath(DarkTreeUI.java:603) ~[darklaf-core-2.4.2-SNAPSHOT.jar:2.4.2-SNAPSHOT]
  • Bug 64453 - Darklaf: Save Test Plan as New Folder failure
  • Bug 64625 - Darklaf: trying to select a folder in Browse leads to an error popup and stacktrace
  • Bug 64711 - Textarea Colors are not good in dark modes. Contributed by Jannis Weis
  • Bug 64935 - A broken plugin class should not prevent JMeter from starting

New in Apache JMeter 5.2.1 (Nov 26, 2019)

  • New and Noteworthy:
  • This release is a major release. Please see the Changes history page to view the last release notes of version 5.1.1.
  • Incompatible changes:
  • HTTP(S) Test Script Recorder now appends number at end of names, while previously it added it at beginning. See Bug 63450
  • When using XPath Assertion with an XPath expression returning a boolean, True if nothing matches had no effect and always returned true, see Bug 63455
  • XML parsing now refuses unsecure XML, this has impacts on the following features:
  • XMLAssertion
  • XMLSchemAssertion
  • XPath function
  • XPath 1 & 2 Extractors
  • XPath 1 & 2 Assertions
  • Improvements:
  • HTTP Samplers and Test Script Recorder:
  • Bug 63450 - HTTP(S) Test Script Recorder: Put number at end instead of beginning
  • Bug 63790 - Embedded Resources download: Optimize CSS parsing by removing source location
  • Other samplers:
  • Bug 63406 - JDBC connection configuration: new option for pre-initialize to initialize the connection pool. Contributed by Franz Schwab (franz.schwab at exasol.com)
  • Bug 63561 - JDBC Request: Allow to only fetch a certain number of rows. Contributed by Franz Schwab (franz.schwab at exasol.com)
  • Bug 63801 - Add Bolt protocol support for Neo4j database. Contributed by GraphAware (www.graphaware.com)
  • Controllers:
  • Bug 63565 - If Controller: GC issue with JMeter during the endurance run when using with "Interpret Condition as Variable Expression?" unchecked => Improve documentation
  • Listeners:
  • Bug 63720 - BackendListener: InfluxDBBackendListenerClient Add support for InfluxDB 2. Contributed by Jakub Bednář (https://github.com/bednar)
  • Bug 63770 - View Results Tree: Add JMESPath Tester. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 62863 - Enable PKCS11 keystores for usage with KeyStore Manager. Based on patch by Clifford Harms (clifford.harms at gmail.com).
  • Pull request #457 - Slight performance improvement in PoissonRandomTimer by using ThreadLocalRandom. Based on a patch by Xia Li.
  • Bug 62787 - New XPath2 Assertion supporting XPath2 with better performances than XPath Assertion. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 63643 - Skip BOM on files opened through FileServer and use the BOM to detect the character encoding, if none is given explicitly. Reported by Havlicek Honza (havlicek.honza at gmail.com)
  • Bug 63727 - New JMESPath Extractor element to ease extraction from JSON using JMESPath technology. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 63763 - New JMESPath Assertion element to ease assertion on JSON using JMESPath technology. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 63775 - Allow Boundary Extractor to accept empty boundaries
  • Functions:
  • Bug 63219 - New function __StringToFile to save/append a string into a file. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Use AtomicInteger for __counter instead of synchronization on our own
  • Report / Dashboard:
  • Bug 63471 - StringConverters used for report generation should ignore white space around numbers.
  • General:
  • Bug 63396 - JSR223 Test Elements: Description of Parameters is misleading, same for Script
  • Bug 63480 - XPathAssertion and XPathAssertion2: Improve test coverage for input coming from variable. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 63452 - Tools / Import from cURL: Complete coverage of all command line options that are valid in JMeter use case. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 63419 - Tools / Import from cURL: Add ability to import a set of cURL commands from a file. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 63760 - JOrphanUtils: add random alphanumeric password generator
  • Bug 63355 - View Results Tree: Browser view option is not Available since Java 11, document how to make it available, see this
  • Bug 62861 - Thread Group: Provide ability to configure whether a new iteration is a new user or same user (Would be applied on Cookie Manager, Cache Manager and httpclient.reset_state_on_thread_group_iteration). Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 63616 - Fix Javadoc:
  • JMeterContext#getThreadNum()
  • starts at 0 and not 1. Contributed by Ori Marko (orimarko at gmail.com)
  • Updated to httpclient/httpmime 4.5.10 (from 4.5.7)
  • Updated to dnsjava 2.1.9 (from 2.1.8)
  • Updated to jsoup 1.12.1 (from 1.11.3)
  • Updated to rsyntaxtextarea 3.0.4 (from 3.0.2)
  • Updated to caffeine 2.8.0 (from 2.6.2)
  • Updated to commons-codec 1.13 (from 1.11)
  • Updated to commons-lang3 3.9 (from 3.8.1)
  • Updated to commons-pool 2.7 (from 2.6)
  • Updated to commons-text 1.8 (from 1.6)
  • Updated to freemarker 2.3.29 (from 2.3.28)
  • Updated to httpcore/httpcore-nio 4.12 (from 4.11)
  • Updated to jodd 5.0.13 (from 5.0.6)
  • Updated to log4j 2.12.1 (from 2.11.1)
  • Updated to ph-commons 9.3.7 (from 9.2.1)
  • Updated to ph-css 6.2.0 (from 6.1.1)
  • Updated to Mozilla Rhino 1.7.11 (from 1.7.10)
  • Updated to Saxon-HE 9.9.1-5 (from 9.9.1-1)
  • Updated to slf4j 1.7.28 (from 1.7.25)
  • Updated to tika-core and tika-parsers 1.22 (from 1.21)
  • Updated jackson-annotations, jackson-core and jackson-databind to 2.9.10 (from 2.9.8)
  • Non-functional changes:
  • Migrated from subversion to Git
  • Bug 63630 - Switch build from Apache Ant to Gradle
  • Bug 63529 - Add more unit tests for org.apache.jorphan.util.JOrphanUtils. Contributed by John Bergqvist(John.Bergqvist at diffblue.com)
  • Updated to latest checkstyle (version 8.22)
  • Clean-up of code in CompareAssertion and other locations. Based on patch by Graham Russell (graham at ham1.co.uk)
  • Pull request #491 - Increase Graphite metrics coverage. Contributed by Graham Russell (graham at ham1.co.uk)
  • Pull request #520 - Replace anonymous classes with lambda expressions. Contributed by Graham Russell (graham at ham1.co.uk).
  • Pull request #524 - Migration from JUnit 4 to JUnit 5. Contributed by Graham Russell (graham at ham1.co.uk).
  • Bug fixes:
  • HTTP Samplers and Test Script Recorder:
  • Bug 63298 - HTTP Requests with encoded URLs are being sent in decoded format
  • Bug 63364 - When setting subresults.disable_renaming=true, sub results are still renamed using their parent SampleLabel while they shouldn't. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 63129 - JMeter can not identify encoding during first time page submission. Based partly on analysis and PR made by Naveen Nandwani (naveen.nandwani at india.nec.com)
  • Bug 62672 - HTTP Request sends double requests when using proxy with authentication. Based on patch by Artem Fedorov (artem.fedorov at blazemeter.com) and contributed by BlazeMeter.
  • Bug 63574 - HTTP Cache Manager does not cache resource if Cache-Control header is missing.
  • Other Samplers:
  • Bug 63442 - Reduce scanning for LogParser implementations in AccessLogSamplerBeanInfo.
  • Bug 63563 - LdapExtSampler: When sampler fails with exception differing from NamingException, no SampleResult is generated
  • Bug 63469 - JMSPublisher: Race condition in jms.client.ClientPool#clearClient
  • Controllers:
  • Listeners:
  • Bug 63319 - ArrayIndexOutOfBoundsException in Aggregate Graph when selecting 90 % or 95 % columns
  • Bug 63423 - Selection of table rows in Aggregate Graph gets lost too often
  • Bug 63347 - View result tree: The search field is so small that even a single character is not visible on Windows 7
  • Bug 63433 - ListenerNotifier: Detected problem in Listener NullPointerException if filename is null. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 63674 - Strip results with subresults deeper in their hierarchy when DataStripping is enabled
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 63455 - XPath Assertion: True if nothing matches does not work if XPath expression returns a boolean. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Report / Dashboard:
  • Documentation:
  • Bug 63513 - Add MariaDB examples to JDBC documentation. Contributed by Ori Marko (orimarko at gmail.com)
  • Bug 63484 - Add notes to use Apache Velocity as JSR223 script language. Based on a patch by Ori Marko (orimarko at gmail.com)
  • Bug 63519 - Pull request #471 - Use correct method getLabelResource() in JMeter tutorial. Contributed by Sun Tao (buzzerrookie at hotmail.com>)
  • General:
  • Bug 63394 - JMeter should fail with non-zero when test execution fails (due to missing test plan or other reason). Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 63464 - image/svg+xml is wrongly considered as binary
  • Bug 63490 - At end of scheduler duration lots of Samplers gets executed at the same time
  • Pull request #480, Pull request #482 - Fix a few typos in comments and log messages. Based on patch by Anass Benomar (anassbenomar at gmail.com)
  • Bug 63751 - Correct a typo in Chinese translations. Reported by Jinliang Wang (wjl31802 at 126.com)
  • Bug 63723 - Distributed testing: JMeter master ends distributed test though some threads still are active
  • Bug 63614 - Distributed testing: Unable to generate Dashboard report at end of load test
  • Bug 63862 - Search Dialog / Search in View Results Tree: Uncaught exception if regex is checked and regex is invalid
  • Bug 63793 - Fix unsecure XML Parsing

New in Apache JMeter 5.1.1 (Mar 15, 2019)

  • Live Reporting and Web Report:
  • A new menu entry has been added to the Tools menu. It's allow to generate a results report from a previous CSV/JTL file.
  • Improvements:
  • HTTP Samplers and Test Script Recorder:
  • Bug 62977 - Allow sending HTTP requests without a default User-Agent header
  • Other samplers:
  • Bug 63185 - LDAP related elements: Add option to implicitly trust SSL/TLS connections/Disable hostname verification. Based on contribution by Brian Wolfe (wolfebrian2120 at gmail.com)
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 63178 - CSS Selector Extractor: Improve performance of JODD (JoddExtractor) based implementation
  • Report / Dashboard:
  • Bug 59896 - 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)
  • General:
  • Pull request #444 - Update to latest Spock v1.2 (was 1.0). Contributed by Graham Russell (graham at ham1.co.uk)
  • Pull request #446 - Improve Unit tests readability and use of Spock. Contributed by Graham Russell (graham at ham1.co.uk)
  • Non-functional changes:
  • Bug 63203 - Unit Tests: Replace use of @Deprecated by @VisibleForTesting for methods/constructors/classes made public for Unit Testing only
  • Pull request #449 - Refactor and Test ResponseTimePercentilesOverTimeGraphConsumer. Contributed by Graham Russell (graham at ham1.co.uk)
  • Pull request #450 - Abstract graph consumer improvements. Contributed by Graham Russell (graham at ham1.co.uk)
  • Pull request #451 - Improve a few unit tests and classes. Contributed by Graham Russell (graham at ham1.co.uk)
  • Bug fixes:
  • Other Samplers:
  • Bug 63202 - JMS Publisher: ObjectMessageRenderer creates XStream instance with uninitialized security
  • Listeners:
  • Bug 63204 - RenderAsJSON#prettyJSON: JSONParser#parse cannot return JSONValue
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 62446 - Counter documentation is wrong in required fieds. Contributed by orimarko at gmail.com
  • Bug 62327 - TestPlan: In library table if path is modified and plan saved, the modification is lost on file reload
  • Functions:
  • Bug 63241 - __threadGroupName causes a NullPointerException if called from non Test threads
  • I18N:
  • Report / Dashboard:
  • Bug 63198 - Response Time Vs Request and Latency Vs Request graphs don't line up with throughput. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • General:
  • Bug 63201 - SearchTreeDialog disappears behind master JFrame. Contributed by Benoit Vatan (benoit.vatan at gmail.com)
  • Bug - Function Helper Dialog, Export transactions for report and Import from cURL disappear being master JFrame. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 63207 - java.lang.NullPointerException: null when run Jmeter 5.1 with proxy options
  • Bug 58183 - Rampup may not be respected if thread take time to start leading to threads continuing to start post ramp up time

New in Apache JMeter 5.1 (Feb 21, 2019)

  • New and Noteworthy:
  • Core improvements:
  • JDBC testing has been improved with ability to set init SQL statements and add compatibility with JDBC drivers that do not support QueryTimeout
  • Various bug fixes have been implemented, like gathering the correct headers when recording requests through the HTTP(S) Test Script Recorder using HTTPS
  • In version 5.0, JMeter was changed to rename Sub results using a custom Naming Policy ( Bug 62550). This change could be annoying for Functional Testing, a new property subresults.disable_renaming=true has been introduced to revert if needed to previous behaviour. An alternative is to check Functional Test Mode in Test Plan, see Bug 63055
  • UX improvements:
  • Templates can provide parameters that are filled in on test plan generation, Recording template uses this feature
  • A new Tools menu has been introduced to collect those entries, that are used for general usage around JMeter, like:
  • Function Helper Dialog
  • Export transactions for report
  • Generate Schematic View which provides an overview as HTML of the Test plan
  • Import from cURL which allows you to create or update your test plan by importing a cURL command
  • Compile JSR223 Test Elements
  • Create a heap dump
  • Create a thread dump
  • Test Plan:
  • Ability to create a Test plan from a cURL command.
  • Scripting / Debugging enhancements:
  • A menu item to compile all JSR223 Elements is now available in Tools menu
  • Live Reporting and Web Report:
  • A JSON file containing summary of a load test statistics is now generated when using -e or -g options.
  • Percentiles computing graphed over time algorithm has been modified to restart for each time slot
  • More user-friendly behaviour when reporting folder does not exist or is not empty through -f commmand line option
  • Incompatible changes:
  • In Response Time Percentiles Over Time (successful responses) 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 Bug 62883
  • ClientJMeterEngine#rsetProperties signature has been changed to use HashMap instead of Properties, see Bug 63034
  • A new Menu item Tools has been introduced, some menu items that were in Help menu are now under this new menu item. See Bug 63094
  • slf4j-ext 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.
  • Improvements:
  • HTTP Samplers and Test Script Recorder:
  • Bug 62840 - HTTP Request: Add option httpclient4.gzip_relax_mode to avoid error when unzipping what seems to be invalid streams
  • Bug 63025 - Enhance Search & Replace functionality for HTTP Request to include port and protocol field. Initial code fix by Mohamed Ibrahim (rollno748 at gmail.com)
  • Other samplers:
  • Bug 62934 - Add compatibility for JDBC drivers that do not support QueryTimeout
  • Bug 62935 - Pass custom mail.* properties to Mail Reader Sampler. Implemented by Artem Fedorov (artem.fedorov at blazemeter.com) and contributed by BlazeMeter.
  • Bug 63055 - Don't rename SampleResult Label when test is running in Functional mode or property subresults.disable_renaming=true. Implemented by Artem Fedorov (artem.fedorov at blazemeter.com) and contributed by BlazeMeter.
  • Controllers:
  • Listeners:
  • Bug 62822 - Pull request #407 - Render uninitialized min and max values in Summary Report as #N/A
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 62766 - Keystore Config: We should load all aliases by default. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62832 - JDBC Connection Configuration: Be able to set init SQL statements. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Functions:
  • Bug 63037 - When using CSVRead search the script base path for files, too.
  • I18N:
  • Report / Dashboard:
  • Bug 62883 - Report / Dashboard: Change the way percentiles are computed for Response Time Percentiles Over Time (successful responses) graph
  • Bug 63060 - Report Generator: A generator should only check for folder/files it generates and only delete those ones
  • Bug 63059 - 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)
  • Bug 63081 - Command line Option -f does not delete report folder when using generation only through command line option -g. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • General:
  • Bug 62959 - Ability to create a Test plan from a cURL command. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Pull request #394 - Allow null values in FieldStringEditor. Based on patch by Mingun (alexander_sergey at mail.ru)
  • Bug 62826 - When changing LAF, make JMeter restart if user clicks yes to popup
  • Bug 62257 - Pull request #401 - Expand/Collapse short key - (minus sign) on numpad doesn't work. Contributed by Ori Marko (orimarko at gmail.com)
  • Bug 62752 - Add to Documentation: ctx.getThreadNum() is zero-based while ${__threadNum} is one-based
  • Pull request #411 - Use SHA-1 instead of SHA1 in org.apache.jmeter.save.SaveService. Contributed by Paco (paco.xu at daocloud.io)
  • Bug 62914 - Add a hint in Thread Group UI about duration of test
  • Bug 62925 - Add support for ThreadDump to the JMeter non-GUI
  • Bug 62870 - Templates: Add ability to provide parameters. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62829 - 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)
  • Bug 59633 - Menus Save Test Plan as, Save as Test Fragment and Save Selection as ... should use a new file name in File Dialog
  • Bug 61486 - Make jmeter-server and non GUI mode run headless
  • Bug 63093 - Add Compile JSR223 Test Elements menu item. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 63094 - Introduce a new Tools menu
  • Bug 63101 - Propose a menu item to generate readable overview of Test Plan
  • Bug 63144 - View listener tree take a long time to open response that has huge text. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Non-functional changes:
  • Pull request #408 - Log an informational message instead of an stack trace, when JavaFX is not found for the RenderInBrowser component.
  • Pull request #412 - Update Chinese translation. Contributed by 刘士 (liushilive at outlook.com).
  • Pull request #406 - Add a short paragraph on how to use a security manager with JMeter.
  • Bug 62893 - Use StringEscapeUtils from commons-text (version 1.6) instead of the deprecated ones from commons-lang3.
  • Bug 62972 - Pull request #435 - Replace calls to deprecated method Class#newInstance.
  • Bug 63034 - ClientJMeterEngine: Make rsetProperties use HashMap instead of Properties
  • Updated to httpclient/httpmime 4.5.7 (from 4.5.6)
  • Updated to httpcore 4.4.11 (from 4.4.10)
  • Updated to httpcore-nio 4.4.11 (from 4.4.10)
  • Updated to tika-core and tika-parsers 1.20 (from 1.18)
  • Updated to commons-dbcp2-2.5.0 (from commons-dbcp2-2.4.0)
  • Updated to commons-lang3-3.8.1 (from commons-lang3-3.8)
  • Updated to groovy-all-2.4.16 (from groovy-all-2.4.15)
  • Updated to httpasyncclient-4.1.4.jar (from 4.1.3)
  • Updated to jsoup-1.11.3 (from 1.11.2)
  • Updated to cglib-nodep-3.2.9 (from cglib-nodep-3.2.7)
  • Updated to ph-commons-9.2.1 (from ph-commons-9.1.2)
  • Updated to log4j-2.11.1 (from log4j-2.11.0)
  • Updated to xmlgraphics-commons 2.3 (from 2.2)
  • Bug 63033 - Updated to Saxon-HE 9.9.1-1 (from 9.8.0-12). Thanks at Saxonica
  • Updated to xstream 1.4.11 (from 1.4.10)
  • Updated to jodd 5.0.6 (from 4.1.4)
  • Updated to asm-7.0 (from 6.1)
  • Update to ActiveMQ 5.15.8 (from 5.5.16)
  • Updated to rsyntaxtextarea-3.0.2 (from 2.6.1)
  • Updated to apache-rat-0.13 (from 0.12)
  • Updated to jacocoant-0.8.3 (from 0.8.2)
  • Updated to hsqldb-2.4.1 (from 2.4.0)
  • Updated to mina-core-2.0.19 (from 2.0.16)
  • Bug 62818 - Updated to xercesImpl to 2.12.0 (from 2.11.0). Reported by Stefan Seide (stefan at trilobyte-se.de)
  • Bug 62744 - Upgrade jquery to version 3.3.1, jquery-ui to 1.12.1, bootstrap to 3.3.7
  • Bug 62821 - Pull request #405 - Use SHA-512 checksums instead of MD5 to verify jar downloads
  • Bug 63053 - Remove referrals to never implemented internals from user documentation. Reported by U. Poblotzki (u.poblotzki at thalia.de)
  • Bug 63082 - Pull request #437 - Use utf-8 for properties files in source
  • Bug 63177 - Rename NON GUI mode into CLI Mode in documentation
  • Bug fixes:
  • HTTP Samplers and Test Script Recorder:
  • Bug 62785 - Pull request #400 - 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.
  • Bug 62842 - HTTP(S) Test Script Recorder: Brotli compression is not supported leading to "Content Encoding Error"
  • Bug 60424 - Hessian Burlap application: JMeter inserts 0x0D before 0x0A automatically (http binary post data)
  • Bug 62940 - Use different cn and type of SAN extension when we are generating certificates based on IP addresses.
  • Bug 62916 - HTTP Test Script Recorder fails with UnsupportedOperationException if recording is started after a distributed test has been run
  • Bug 62987 - A TestBean element under HTTP(S) Test Script recorder does not work. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 63015 - 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)
  • Bug 62852 - HTTP Request Header missing information when using a proxy. Thanks to Oleg Kalnichevski (olegk at apache.org)
  • Bug 63048 - JMeter does not retrieve link resources of type "shortcut icon" or "icon". Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Other Samplers:
  • Bug 62775 - If many jars are in a folder referenced by user.classpath, startup can be extremely slow due to JUnit
  • Bug 63031 - Incorrect JDBC driver class: org.firebirdsql.jdbc.FBDrivery. Contributed by Sonali (arora.sonali99 at gmail.com)
  • Controllers:
  • Bug 62806 - ModuleController cloning by Run behaves differently wether in GUI or Non GUI mode. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62847 - If Controller cannot use variable for index exposed by LoopController/WhileController/ForEachController
  • Bug 63064 - Ignore spaces at the end and beginning of expressions used in IfController
  • Listeners:
  • Bug 62770 - Aggregate Graph throws ArrayIndexOutOfBoundsException
  • Bug 63069 - 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)
  • Bug 63138 - InfluxDB BackendListenerClient: In case of error, log is in debug, it should be in error
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 62774 - XPath2Extractor: Scope variable is broken. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62860 - JSON Extractor: Avoid NPE and noisy error message "Error processing JSON content in" when variable is not found
  • Functions:
  • I18N:
  • Report / Dashboard:
  • Bug 62777 - Web Report / Dashboard: Hide All in Response Time Percentiles Over Time (successful responses) fails.
  • Bug 62780 - Web Report / Dashboard: Display All in Response Time Vs Request fails.
  • Bug 62781 - Web Report / Dashboard: Display All in Response Time Overview fails.
  • Bug 62782 - Web Report / Dashboard: Remove duplicate/unused dependencies
  • Bug 62894 - Report / Dashboard: Throughput is in wrong column which is confusing as unit is millisecond
  • Bug 63016 - Empty HTML report if source csv contains labels with quotes. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Documentation:
  • Change Test Action (old name) to Flow Control Action in Component Reference documentation. Contributed by Ori Marko (orimarko at gmail.com)
  • General:
  • Bug 62745 - Fix undefined disabled icon. Contributed by Till Neunast (https://github.com/tilln)
  • Bug 62743 - Client auth must be enabled on distributed testing
  • Bug 62767 - NPE when searching under certain conditions. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62790 - ArrayIndexOutOfBoundsException when calling replace without selecting the first match
  • Bug 62795 - JMeter master sometimes ends distributed test even though some of the slaves have not finished
  • Bug 62336 - Pull request #396 - Some shortcuts are not working correctly on windows. Contributed by Michael Pavlov (michael.paulau at gmail.com)
  • Bug 62889 - Format JSON Arrays when displayed with JSON Path Tester.
  • Bug 62900 - ObjectProperty#getStringValue() can throw NullPointerException
  • Bug 63099 - Escape commata in function helper dialog only outside of variable replacement structures.
  • Bug 63105 - Export Transactions for Report: fix 2 bugs
  • Bug 63106 - Apply naming policy does not refresh UI
  • Bug 63180 - Apply Naming Policy allows multi selection but only considers first node
  • Bug 63090 - Remove slf4j-ext due to CVE-2018-8088

New in Apache JMeter 5.0 (Sep 19, 2018)

  • New and Noteworthy:
  • Core improvements:
  • Rest support has been improved in many fields:
  • Multipart/form-data requests now work for PUT, DELETE …
  • It is now also possible to send a JSON Body with attached file
  • Parameters entered in Parameters Tab are now used in body instead of being ignored
  • 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
  • XPath 2.0 is supported in a new element called XPath2 extractor providing easier XML namespaces handling, up to date XPath syntax and better performances
  • Upgrade to HTTP Components 4.6 last APIs has been completed and JMeter does not rely anymore on deprecated APIs of this library
  • It is now possible to control in an easier way Loop breaking and Loop switching to next iteration. This is available in Flow Control Action and Result Status Action Handler elements
  • While Controller now exports a variable containing its current index named __jm____idx. So for example, if your While Controller is named WC, then you can access the looping index through ${__jm__WC__idx}
  • Scripting / Debugging enhancements:
  • Search feature has been improved to allow you to iterate in the tree over search results and do necessary replacements through Next/Previous/Replace/Replace/Find buttons
  • 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
  • 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.
  • You can now restart JMeter from menu File → Restart
  • Live Reporting and Web Report:
  • Reporting feature has been enhanced
  • A new Graph Total Transactions per second has been added to the HTML Web Report
  • It is now possible to graph over time custom metrics available as JMeter Variables through sample_variables. Those custom metrics graphs will be available in the HTML Report in Custom Graphs section
  • Hits per second graph now takes into account the embedded resources
  • In Live reporting, the sent and received bytes are now sent to Backends (InfluxDB or Graphite)
  • Functions:
  • A New function __threadGroupName has been introduced to obtain ThreadGroup name.
  • Incompatible changes:
  • 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 httpclient.reset_state_on_thread_group_iteration=false
  • Since JMeter 5.0, in relation to above remark, https.use.cached.ssl.context is deprecated and not used anymore.
  • Since JMeter 5.0, when using CSV output, sub results will now be also output to CSV file. To revert to previous behaviour set jmeter.save.saveservice.subresults=false, see Bug 62470, Bug 60917, Bug 62550.
  • Since JMeter 5.0, CSS/JQuery Extractor has been renamed to CSS Selector Extractor
  • Since JMeter 5.0, Test Action has been renamed to Flow Control Action
  • Improvements:
  • HTTP Samplers and Test Script Recorder:
  • Bug 62260 - Improve Rest support. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 58757 - HTTP Request : Updated deprecated methods of HttpComponents to last APIs of httpclient-4.5.X. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62212 - 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)
  • Bug 62248 - 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.
  • Bug 60015 - Multipart/form-data works only for POST using HTTPClient4 while it should for PUT, DELETE, … Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62317 - HTTP(S) Test Script Recorder: allow to add ResultSaver to created sampler
  • Other samplers:
  • Pull request #376 - JUnitSampler logs exceptions except assertion-failures from test cases as warnings. Contributed by Davide Angelocola (davide.angelocola at fisglobal.com)
  • Bug 62244 - Rename Test Action to Flow Control Action
  • Bug 62302 - Move JSR223 Sampler up the menu. Contributed by orimarko at gmail.com
  • Bug 62595 - SMTPSampler does not allow configuring the SSL/TLS protocols to be used on handshake. Contributed by Felipe Cuozzo (felipe.cuozzo at gmail.com)
  • Controllers:
  • Bug 62237 - While Controller : Export variable containing current index of iteration. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Listeners:
  • Bug 62195 - Save Responses to a file : Improve component and UI. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62209 - InfluxBackendListenerClient: First Assertion Failure Message must be sent if error code and response code are empty or OK
  • Bug 62269 - Bug 62269 - View Results Tree : Response and Request Tabs should contains Header and Body tabs. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62270 - View Results Tree : Allow searching in Request headers, Response Headers, and Request body. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62276 - InfluxDBBackendListenerClient / GraphiteBackendListenerClient : Add sent and received bytes to metrics. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 62320 - Counter : Reference Name property is not clear
  • Bug 60991 - XPath Extractor : Implement XPath 2.0. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62593 - Rename CSS/JQuery Extractor to CSS Selector Extractor. Contributed by orimarko at gmail.com
  • Functions:
  • Bug 62178 - Add default value to __V function. Contributed by orimarko at gmail.com
  • Bug 62178 - Add function __threadGroupName function to obtain ThreadGroup name. Mainly contributed by orimarko at gmail.com
  • Bug 62533 - Allow use epoch time as Date String value in function __dateTimeConvert
  • Bug 62541 - Allow funclink name="__jexl3"/>, __jexl2 functions to support new syntax as var x;. Contributed by orimarko at gmail.com
  • Bug 61834 - Function Helper Dialog : Improve tests by showing variables and keeping them available between evaluations
  • I18N:
  • Report / Dashboard:
  • Bug 62243 - Dashboard : make option "--forceDeleteResultFile"/"-f" option delete folder referenced by "-o" option
  • Bug 62367 - HTML Report Generator: Add Graph Total Transactions per Second. Contributed mainly by Martha Laks (laks.martha at gmail.com)
  • Bug 62166 - Report/Dashboard: Provide ability to register custom graphs and metrics in the JMeter Dashboard. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62542 - Report/Dashboard : Display more information on filters when graph is empty. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62426 - Optimize performance of report generation. Based on feedback by Allen (444104595 at qq.com)
  • Bug 62550 - Modify SubResult Naming Policy
  • Bug 60917 - Load Test with embedded resources download : Hits per seconds does not take into account the downloaded resources
  • General:
  • Bug 62684 - Distributed Testing : Add automatically to thread name a prefix to identify engine. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62155 - Search Feature: Make Search text field get focus
  • Bug 62156 - Search Feature : Distinguish between node that matches search and node that contains a child that matches search
  • Bug 62234 - Search/Replace Feature : Enhance UX and add Replace/Next/Previous/Replace & Find features. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62238 - Add ability to Switch to next iteration of Current Loop. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62239 - Add ability to Break Current Loop
  • Bug 61635 - Add a menu to restart JMeter
  • Bug 62470 - CSV Output : Enable logging of sub results when jmeter.save.saveservice.subresults=true. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62473 - Setting "saveservice_properties" has counter intuitive behaviour
  • Bug 62354 - Correct calculation and usage of units for second per user (reported by jffagot05 at gmail.com)
  • Bug 62700 - Introduce jsr223.init.file to allow calling a JSR-223 script on JMeter startup
  • Bug 62128 - Try to guess JMETER_HOME correctly, when jmeter.bat is called from a batch file in another directory. Contributed by logox01 (logox01 at gmx.at)
  • Pull request #386 - Add parameter support for RMI keystore creation scripts. Contributed by Logan Mauzaize (t524467 at airfrance.fr)
  • Bug 62065 - Use Maven artifact for JAF Module instead of embedded module
  • Bug 61714 - Update Real-time results documentation
  • Pull request #382 - Correct typo in documentation. Reported by Perze Ababa (perze.ababa at gmail.com>)
  • Pull request #392 - Correct typo in documentation. Reported by Aaron Levin
  • Pull request #379 - Improve chinese translations. Contributed by XmeterNet
  • Non-functional changes:
  • Pull request #358, Pull request #365, Pull request #366, Pull request #375Updated to latest checkstyle (v8.8). Expanded Checkstyle to files in src and test; fixed newly checked files. Based on contribution by Graham Russell (graham at ham1.co.uk)
  • Bug 62095 - Correct description for right boundary parameter in Boundary Extractor. Contributed by orimarko (orimarko at gmail.com)
  • Bug 62113 - Updated to latest Bouncycastle (v1.60). Based on contribution by Olaf Flebbe (oflebbe at apache.org)
  • Bug 62171 - Remove .md5 checksums and keep only .sha512 checksums for source and binary archives
  • Updated to groovy-all-2.4.15 (from groovy-all-2.4.13)
  • Updated to asm-6.1 (from 6.1)
  • Updated to tika-core and tika-parsers 1.18 (from 1.17)
  • Bug 62482 - Sync documentation to the implementation of the ForEachController. Based on contribution by orimarko (orimarko at gmail.com)
  • Bug 62529 - 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 orimarko (orimarko at gmail.com)
  • Updated to httpmime-4.5.6 (from httpmime-4.5.5)
  • Updated to caffeine-2.6.2 (from caffeine-2.6.1)
  • Updated to cglib-nodep-3.2.7 (from cglib-nodep-3.2.6)
  • Updated to commons-dbcp2-2.4.0 (from commons-dbcp2-2.2.0)
  • Updated to commons-pool2-2.6.0 (from commons-pool2-2.5.0)
  • Updated to httpcore-4.4.10 (from httpcore-4.4.9)
  • Updated to httpcore-nio-4.4.10 (from httpcore-nio-4.4.9)
  • Updated to log4j-2.11.0 (from log4j-2.10.0)
  • Updated to ph-css-6.1.1 (from ph-css-6.0.0)
  • Updated to ph-commons-9.1.2 (from ph-commons-9.0.0)
  • Updated to rhino-1.7.10 (from +rhino-1.7.7.2)
  • Updated to commons-lang3-3.8 (from commons-lang3-3.7)
  • Bug fixes:
  • HTTP Samplers and Test Script Recorder:
  • Bug 62114 - HTTP(S) Test Script Recorder : Client certificate authentication uses the first SSLManager created. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61058 - HTTP Request : Add option httpclient4.deflate_relax_mode 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)
  • Bug 43612 - HTTP PUT does not honor request parameters. Implemented by Artem Fedorov (artem.fedorov at blazemeter.com) and contributed by BlazeMeter Ltd.
  • Bug 60190 - Content-Type is added for POST unconditionally. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62462 - Pull request #387 - Make delegation of credentials in SPNEGO possible again.
  • Bug 58807 - Reset SSL State on Thread Group iteration only (was https.use.cached.ssl.context=false is broken)
  • Bug 62716 - When Recording, JMeter removes Authorization from generated Header Manager when using Bearer Token
  • Other Samplers:
  • Bug 62235 - Java 9 - illegal reflective access by org.apache.jmeter.util.HostNameSetter
  • Bug 62464 - Set start- and end-time on JMS publisher sampler, even if initialization fails.
  • Bug 62616 - FTPSampler: Upload file-size is not counted in sentBytes
  • Controllers:
  • Bug 62265 - ModuleController behaves strangely
  • Listeners:
  • Bug 62097 - Update JTable in Aggregate Report only when new data has arrived. That way selections of rows will be kept longer around.
  • Bug 62203 - Influxdb BackendListener client: store user tags to annotation and internal transaction. Contributed by Sergey Batalin (sergey_batalin at mail.ru)
  • Bug 62251 - TextGraphiteMetricsSender does not invalidate lost connections in case of network errors
  • Bug 60705 - Fix headers of Aggregate Reports and friends when columns are moved around.
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 61664 - HTTP Authorization Manager : Digest works only with legacy RFC 2069, RFC 2617 is not implemented. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62252 - HTTP header merging logic does not correspond to the documentation
  • Bug 62554 - BoundaryExtractor : Field to check is not reset
  • Bug 62553 - Random element might return same value even if property "Per thread user (User)" is set to TRUE
  • Bug 62637 - Take scheduler into account when calcuting delay for Synchronizing Timer
  • Functions:
  • I18N:
  • Bug 62310 - French translation of Precise Throughput Timer label
  • Report / Dashboard:
  • Bug 62333 - Report Dashboard - When one series contains no value, the graph colors logic is wrong. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62283 - Report Dashboard - Date is not correctly displayed on chart when granularity is

New in Apache JMeter 4.0 (Feb 11, 2018)

  • CORE IMPROVEMENTS
  • JMeter now supports JAVA 9.
  • New Boundary Extractor element available which provides easy extraction with better performances
  • New JSON Assertion element available to assert on JSON responses.
  • New Precise Throughput Timer element available which produces Poisson arrivals with given constant throughput.
  • JMS Point-to-Point sampler has been enhanced with read, browse, clear options.
  • Loop controller and ForEach Controller now expose their current iteration as a variable named __jm____idx that you can use like this for example for a Loop Controller named MyLoopController: ${__jm____idx}
  • Cookies are now shown in View Results Tree during recording. They were previously always shown as empty.
  • Response Assertion now allows you to customize assertion message and assert on Request Data.
  • Best property values are now selected on many Test Elements to ensure best practices are the defaults:
  • Newly added If Controller now uses by default Expression which is the most performing option.
  • Newly added JSR223 Test Element now cache compiled script by default if language used provides this feature.
  • UX IMPROVEMENTS:
  • JMeter now uses Darcula LAF by default
  • Workbench has been dropped from UI, you can now use Non Test Elements as immediate children of Test Plan.
  • Menu UX have been improved to make most used elements available more rapidly.
  • HTTP(S) Test Script Recorder now allows you to name your transactions while recording in a more human readable way.
  • UX improvements made on, among the most notable:
  • Module Controller informs user at least one Controller is required
  • Function Helper Dialog (The wizard that helps using and testing functions) has been improved in many fields.
  • Switch Controller trims text to avoid issues when a space is introduced before/after name
  • Test Plan is now saved before running the test plan

New in Apache JMeter 3.3 (Dec 11, 2017)

  • 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.
  • Upgraded dependencies to last available versions bringing performance improvements and bug fixes.
  • Continued to improve the quality of our code and tests coverage.
  • 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:
  • A new Help menu item has been added to simplify configuration of report generation.
  • Documentation improvements:
  • Incorporated feedback about unclear documentation.
  • 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:
  • _StringFromFile function has been dropped, use __StringFromFile instead

New in Apache JMeter 3.0 (May 18, 2016)

  • New and Noteworthy:
  • Test plan creation and debugging improvements
  • 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
  • New JSON Post Processor to better extract data from JSON content using user friendly JSON-PATH syntax
  • JSON is now a first class citizen in JMeter with the introduction of a new JSONPath post processor. This post processor is very similar to Regular Expression Post Processor but is well suited for JSON code. It is based on Jayway JSON Path library
  • New validation feature, in one click run a selection of Thread Groups with 1 user, no pause and 1 iteration
  • JSR223 Test Elements do not require a Cache Compilation Key anymore
  • Just check Cache compiled script if available 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
  • Nashorn can now be used as Javascript engine providing better performance and easier usage
  • To enable Nashorn, you need to set in user.properties:
  • Nashorn can be used with Java 8 in the following elements:
  • IfController
  • JSR223 Test elements with javascript language selected
  • __javaScript function
  • Jexl3 has been integrated. It provides new scripting features and much better documentation
  • JEXL3 can now be used thanks to a new function __jexl3. JEXL is a language very similar to JSTL.
  • Simplified HTTP Request UI:
  • A new "Advanced" 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.
  • HTTP Request Defaults improvements:
  • You can now configure Source Address (IP Spoofing like feature) and "Save response as MD5 hash" in Advanced Tab
  • Reporting improvements
  • New Reporting Feature generating dynamic Graphs in HTML pages (APDEX, Summary report and Graphs)
  • 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 Generating dashboard for more details. This report provides the following metrics:
  • APDEX (Application Performance Index) table that computes the APDEX based on configurable values for tolerated and satisfied thresholds
  • A request summary graph showing the Success and failed transaction percentage:
  • A Statistics table providing in one table a summary of all metrics per transaction including 3 configurable percentiles :
  • An error table providing a summary of all errors and their proportion in the total requests :
  • Zoomable chart where you can check/uncheck every transaction to show/hide it for:
  • Response times Over Time :
  • Bytes throughput Over Time :
  • Latencies Over Time :
  • Hits per second :
  • Response codes per second :
  • Transactions per second :
  • Response Time vs Request per second :
  • Latency vs Request per second :
  • Response times percentiles :
  • Active Threads Over Time :
  • Times vs Threads :
  • Response Time Distribution :
  • GraphiteBackendListener has a new Server Hits metric
  • Summariser displays a more readable duration
  • Now duration are display in the format hours:minutes:seconds
  • BackendListener now allows you to define sampler list as a regular expression
  • You can now use a regular expression to select the samplers you want to filter. Use parameter: useRegexpForSamplersList=true and put a regex in pararameter samplersList
  • Protocols and Load Testing improvements
  • Migration to HttpClient 4.5.2 has been started. Although not completely finished, it improves many areas in JMeter
  • Migration to HttpClient 4.5.2 improves the following fields of JMeter:
  • Support of recent RFC like HTTP State Management Mechanism RFC-6265 for Cookies, you should use now HC4CookieHandler in HTTP Cookie Manager component and select standard Cookie policy
  • Server Name Indication (SNI) support for HttpClient4 implementation
  • Improved and better performing validation mechanism for Stale connections and Keep-Alive management, see properties httpclient4.validate_after_inactivity and httpclient4.time_to_live
  • Many bug fixes since previous version 4.2.6 used in JMeter 2.13, see HttpClient 4.5.X release notes
  • Better support of HTTP RFC 2616 / RFC 7230 and fixes to issues with deflate compression management
  • Parallel Downloads is now realistic and scales much better:
  • Parsing of CSS imported files (through @import) or embedded resources (background, images, …)
  • 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
  • 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.
  • Reuse of Threads used for Parallel downloads through a ThreadPool: This improves throughput and increases JMeter scalability for such tests
  • Total of 750% more throughput found on test with 15 threads, the more threads you have the more the gain
  • 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 httpsampler.embedded_resources_use_md5=true
  • Introduction of Sample Timeout feature:
  • This new 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 Debug Sampler and HTTP Request elements.
  • JDBC request now uses DBCP2 pool
  • JDBC Request and JDBC Connection Configuration have been updated to replace old Excalibur Pool by Apache Commons DBCP2 pool. As a consequence properties have been migrated to equivalent when available and UI has been updated. Note that unlike Excalibur, Commons DBCP uses the validation query when creating the pool. So make sure the query is valid. The default query suits many databases, but not all - for example Oracle requires 'SELECT 1 FROM DUAL' or similar.
  • UX Improvements:
  • Better display in HiDPI screens
  • New Icon look and Logo:
  • JMeter has a new Logo created by Felix Schumacher.
  • Icons have also been refreshed to give a more modern style and make them more meaningful
  • Lots of fixes of annoying little bugs:
  • Around 40 UI fixes have been made to either fix buggy, confusing behaviour or simplify usage by not allowing incompatible options to be selected
  • Improved Thread Group UI and related actions (Start, Start No Timers, Validate)
  • Creating and testing a Test Plan before Load Test has been much simplified by allowing you to only start a selection of Thread Group, start them without applying Timers (thus gaining time) or start them using a new Validation mode. This validation mode allows you to start a Thread Group (without modifying it) with 1 thread, 1 iteration and without applying timers. This validation mode can be customized.
  • New shortcuts:
  • Add most used elements (Ctrl + 0 … Ctrl + 9), configurable through gui.quick_XXX properties
  • Shortcuts to expand nodes
  • Core improvements:
  • Configuration simplification with better defaults
  • Default values for many properties have been modified to make JMeter configuration optimal Out of the box. Read "Incompatible changes" section for more details.
  • Apache Groovy bundled with JMeter
  • Apache Groovy, the well-known JVM scripting language, is now bundled with Apache JMeter in lib folder. This allows you to use it immediately through JSR223 Elements by selecting the Groovy language.
  • Superflous and old properties removed:
  • Old properties that existed to maintain backward compatibility or to offer some superflous customization have been removed. Read "Incompatible changes" section to see which properties have been removed.
  • Code and documentation improvements:
  • Migration to Java7 source code and use of its syntactic sugar
  • Major code cleanups
  • Full review of documentation and improvement both in content and presentation
  • Improvements to unit tests:
  • Migration of many tests to JUnit 4
  • Better management of Headless tests
  • More Unit Tests
  • Dependencies refresh:
  • Deprecated Libraries dropped or replaced by up to date ones:
  • Excalibur replaced by commons-dbcp
  • htmllexer, htmlparser removed
  • soap removed
  • jdom removed
  • Slf4j can now be used within Plugins and core code
  • You can now use SLF4J logging wrapper in your custom plugins or org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient subclasses.
  • Incompatible changes:
  • Since version 3.0, Groovy-2.4.6 is bundled with JMeter (lib folder), ensure you remove old version or referenced versions through properties search_paths or user.classpath
  • Since version 3.0, jmeter.save.saveservice.assertion_results_failure_message property value is true, meaning CSV file for results will contain an additional column containing assertion result response message, see Bug 58978
  • Since version 3.0, jmeter.save.saveservice.print_field_names property value is true, meaning CSV file for results will contain field names as first line in CSV, see Bug 58991
  • Since version 3.0, jmeter.save.saveservice.idle_time property value is true, meaning CSV/XML result files will contain an additional column containing idle time between samplers, see Bug 57182
  • In RandomTimer class, protected instance timer field has been replaced by getTimer() protected method, this is related to Bug 58100. This may impact 3rd party plugins.
  • Since version 3.0, you can use Nashorn Engine (default javascript engine is Rhino) under Java8 for Elements that use Javascript Engine (__javaScript, IfController). If you want to use it, use property javascript.use_rhino=false, see Bug 58406.
  • Note: in a future version, we will switch to Nashorn by default. Users are encouraged to report any issue related to using Nashorn instead of Rhino.
  • Since version 3.0, JMS Publisher will reload contents of file if Message source is "From File" and the "Filename" field changes (e.g. if it uses a variable that has changed)
  • org.apache.jmeter.gui.util.ButtonPanel has been removed, if you use it in your 3rd party plugin or custom development ensure you update your code. See Bug 58687
  • Property jmeterthread.startearlier has been removed. See Bug 58726
  • Property jmeterengine.startlistenerslater has been removed. See Bug 58728
  • Property jmeterthread.reversePostProcessors has been removed. See Bug 58728
  • Property jmeter.toolbar.display has been removed, the toolbar is now always displayed. See Bug 59236
  • Property jmeter.errorscounter.display has been removed, the errors/warnings counter is now always displayed. See Bug 59236
  • Property xml.parser has been removed, it is not used anymore as org.apache.jmeter.util.JMeterUtils#getXMLParser has been deprecated and is not used either. See Bug 59236
  • Summariser listener now shows the duration in the format HH:mm:ss (Hour:Minute:Second), it previously showed the duration in seconds. See Bug 58776
  • org.apache.jmeter.protocol.http.visualizers.RequestViewHTTP.getQueryMap signature has changed, if you use it ensure you update your code. See Bug 58845
  • JMS Subscriber will consider a sample to be an error if the number of received messages is not equal to expected number of messages. It previously considered a sample OK if at least 1 message was received. See Bug 58980
  • Since version 3.0, HTTP(S) Test Script recorder defaults to using port 8888 (as configured when using Recording Template). See Bug 59006
  • Since version 3.0, the parser for embedded resources (replaced since 2.10 by Lagarto based implementation) which relied on the htmlparser library (HtmlParserHTMLParser) has been dropped along with its dependencies.
  • Since version 3.0, support for reading old Avalon format JTL (result) files has been removed, see Bug 59064
  • Since version 3.0, the default property value for http.java.sampler.retries has been changed to 0 (no retry by default) to align it with the behaviour of HttpClient4.
  • Note also that its meaning has changed: before 3.0, http.java.sampler.retries=1 meant No Retry (i.e. total tries = 1), since 3.0 http.java.sampler.retries=1 means 1 retry. (Note: this only applies to the Java HTTP Sampler)
  • See Bug 59103
  • Since 3.0, the following deprecated classes have been dropped
  • org.apache.jmeter.protocol.http.modifier.UserParameterXMLContentHandler
  • org.apache.jmeter.protocol.http.modifier.UserParameterXMLErrorHandler
  • org.apache.jmeter.protocol.http.modifier.UserParameterXMLParser
  • httpsampler.await_termination_timeout has been replaced by httpsampler.parallel_download_thread_keepalive_inseconds which is now the keep alive time for the parallel download threads (in seconds).
  • JDBC Request has been updated to use commons-dbcp2, since then the behaviour is slightly different, ensure you have a correct "Validation Query" for your database. See Bug 58786
  • The following jars have been removed:
  • excalibur-datasource-2.1.jar (see Bug 59156)
  • excalibur-instrument-1.0.jar (see Bug 58786)
  • excalibur-pool-api-2.1.jar (see Bug 58786)
  • excalibur-pool-impl-2.1.jar (see Bug 58786)
  • excalibur-pool-instrumented-2.1.jar (see Bug 58786)
  • htmllexer-2.1.jar (see Bug 59037)
  • htmlparser-2.1.jar (see Bug 59037)
  • soap-2.3.1.jar
  • jdom-1.1.3.jar (see Bug 59156)
  • Maximum number of redirects allowed by JMeter is now 20, it was previously 5. This can be changed with the property httpsampler.max_redirects. See Bug 59382
  • Deprecated and removed elements:
  • MongoDB elements (MongoDB Source Config, MongoDB Script) have been deprecated and will be removed in the next version of JMeter. They do not appear anymore in the menu, if you need them modify not_in_menu property. The JMeter team advises not to use them anymore. See Bug 58772
  • WebService(SOAP) Request and HTML Parameter Mask which were deprecated in 2.13 version, have now been removed following our deprecation strategy. Classes and properties which were only used by those elements have been dropped:
  • org.apache.jmeter.protocol.http.util.DOMPool
  • org.apache.jmeter.protocol.http.util.WSDLException
  • org.apache.jmeter.protocol.http.util.WSDLHelper
  • Property soap.document_cache
  • JAR soap-2.3.1 has been also removed
  • __jexl function (i.e. JEXL 1) has been deprecated and will be removed in next version. See Bug 58903
  • Spline Visualizer listener and Distribution Graph listener have been deprecated and will be removed in the next version of JMeter. They do not appear anymore in the menu, if you need them modify not_in_menu property. JMeter team advises not to use them anymore. See Bug 58791
  • Improvements:
  • HTTP Samplers and Test Script Recorder:
  • Bug 57696 - HTTP Request : Improve responseMessage when resource download fails. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 57995 - Use FileServer for HTTP Request files. Implemented by Andrey Pokhilko (andrey at blazemeter.com) and contributed by BlazeMeter Ltd.
  • Bug 58843 - Improve the usable space in the HTTP sampler GUI. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58852 - Use less memory for PUT requests. The uploaded data will no longer be stored in the Sampler. This is the same behaviour as with POST requests.
  • Bug 58860 - HTTP Request : Add automatic variable generation in HTTP parameters table by right click. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58923 - normalize URIs when downloading embedded resources.
  • Bug 59005 - HTTP Sampler : Added WebDAV verb (SEARCH).
  • Bug 59006 - Change Default proxy recording port to 8888 to align it with Recording Template. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug 58099 - Performance : Lazily initialize HttpClient SSL Context to avoid its initialization even for HTTP only scenarios
  • Bug 57577 - HttpSampler : Retrieve All Embedded Resources, add property "httpsampler.embedded_resources_use_md5" to only compute md5 and not keep response data. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 59023 - HttpSampler UI : rework the embedded resources labels and change default number of parallel downloads to 6. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 59028 - Use SystemDefaultDnsResolver singleton. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 59036 - FormCharSetFinder : Use JSoup instead of deprecated HTMLParser
  • Bug 59034 - Parallel downloads connection management is not realistic. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) and Philippe Mouawad
  • Bug 59060 - HTTP Request GUI : Move File Upload to a new Tab to have more space for parameters and prevent incompatible configuration. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 59103 - HTTP Request Java Implementation: Change default "http.java.sampler.retries" to align it on HttpClient behaviour and make the name meaningful
  • Bug 59083 - HTTP Request : Make Method field editable so that additional methods (WebDAV) can be added easily
  • Bug 59118 - Add comment in recorded think time by proxy recorder. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug 59116 - Add the possibility to setup a prefix to sampler name recorded by proxy. Partly based on a patch by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug 59129 - HTTP Request : Simplify GUI with simple/advanced Tabs
  • Bug 59033 - Parallel Download : Rework Parser classes hierarchy to allow plug-in parsers for different mime types
  • Bug 52073 - Embedded Resources Parallel download : Improve performances by avoiding shutdown of ThreadPoolExecutor at each sample. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 59190 - HTTP(S) Test Script Recorder : Suggested excludes should ignore case. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug 59140 - Parallel Download : Add CSS Parsing to extract links from CSS files
  • Bug 59249 - Http Request Defaults : Add "Source address" and "Save responses as MD5"
  • Bug 59382 - More realistic default value for httpsampler.max_redirects
  • Other samplers:
  • Bug 57928 - Add ability to define protocol (http/https) to AccessLogSampler GUI. Contributed by Jérémie Lesage (jeremie.lesage at jeci.fr)
  • Bug 58300 - Make existing Java Samplers implement Interruptible
  • Bug 58160 - JMS Publisher : reload file content if file name changes. Based partly on a patch contributed by Maxime Chassagneux (maxime.chassagneux at gmail.com)
  • Bug 58786 - JDBC Sampler : Replace Excalibur DataSource by more up to date library commons-dbcp2
  • Bug 59205 - TCP Sampler: Set connect time in sampler when connection is established.
  • Bug 59381 - JMSPublisher : FileChooserDialog filter does not work for browser buttons. Based partly on a patch contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Controllers:
  • Bug 58406 - IfController : Allow use of Nashorn Engine if available for JavaScript evaluation
  • Bug 58281 - RandomOrderController : Improve randomization algorithm performance. Contributed by Graham Russell (jmeter at ham1.co.uk)
  • Bug 58675 - Module controller : error message can easily be missed. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58673 - Module controller : when the target element is disabled the default jtree icons are displayed. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58674 - Module controller : it should not be possible to select more than one node in the tree. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58680 - Module Controller : ui enhancement. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58989 - Record controller gui : add a button to clear all the recorded samples. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Listeners:
  • Bug 58041 - Tree View Listener should show sample data type
  • Bug 58122 - GraphiteBackendListener : Add Server Hits metric. Partly based on a patch from Amol Moye (amol.moye at thomsonreuters.com)
  • Bug 58681 - GraphiteBackendListener : Don't send data if no sampling occurred
  • Bug 58776 - Summariser should display a more readable duration
  • Bug 58791 - Deprecate listeners: Distribution Graph (alpha) and Spline Visualizer
  • Bug 58849 - View Results Tree : Add a search panel to the request http view to be able to search in the parameters table. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58857 - View Results Tree : the request view http does not allow to resize the parameters table first column. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58955 - Request view http does not correctly display http parameters in multipart/form-data. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 55597 - View Results Tree: Add a search feature to search in recorded samplers
  • Bug 59102 - View Results Tree: Better default value for "view.results.tree.max_size"
  • Bug 59099 - Backend listener : Add the possibility to consider samplersList as a Regular Expression. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug 59424 - Visualizer : Add "Clear" in popup menu
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 58303 - Change usage of bouncycastle api in SMIMEAssertion to get rid of deprecation warnings.
  • Bug 58515 - New JSON related components : JSON-PATH Extractor and JSON-PATH Renderer in View Results Tree. Donated by Ubik Load Pack (support at ubikloadpack.com).
  • Bug 58698 - Correct parsing of auth-files in HTTP Authorization Manager.
  • Bug 58756 - CookieManager : Cookie Policy select box content must depend on Cookie implementation.
  • Bug 56358 - Cookie manager supports cross port cookies and RFC6265. Thanks to Oleg Kalnichevski (olegk at apache.org)
  • Bug 58773 - TestCacheManager : Add tests for CacheManager that use HttpClient 4
  • Bug 58742 - CompareAssertion : Reset data in TableEditor when switching between different CompareAssertions in gui. Based on a patch by Vincent Herilier (vherilier at gmail.com)
  • Bug 59108 - TableEditor: Allow rows to be moved up and down. Contributed by Vincent Herilier (vherilier at gmail.com)
  • Bug 58848 - Argument Panel : when adding an argument (add button or from clipboard) scroll the table to the new line. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58865 - Allow empty default value in the Regular Expression Extractor. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 59156 - XMLAssertion : drop jdom dependency by using XMLReader
  • Bug 59328 - Better tooltip for Variable Names in CSVDataSet. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Functions:
  • Bug 58477 - __javaScript function : Allow use of Nashorn engine for Java8 and later versions
  • Bug 58903 - Provide __jexl3 function that uses commons-jexl3 and deprecated __jexl (1.1) function
  • I18N:
  • General:
  • Bug 58736 - Add Sample Timeout support
  • Bug 57913 - Automated backups of last saved JMX files. Contributed by Benoit Vatan (benoit.vatan at gmail.com)
  • Bug 57988 - Shortcuts (Ctrl + 1 … Ctrl + 9) to quickly add elements into test plan. Implemented by Andrey Pokhilko (andrey at blazemeter.com) and contributed by BlazeMeter Ltd.
  • Bug 58100 - Performance enhancements : Replace Random by ThreadLocalRandom.
  • Bug 58677 - TestSaveService#testLoadAndSave use the wrong set of files. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58689 - Add shortcuts to expand / collapse a part of the tree. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58696 - Create Ant task to setup Eclipse project
  • Bug 58653 - New JMeter Dashboard/Report with Dynamic Graphs, Tables to help analyzing load test results. Developed by Ubik-Ingenierie and contributed by Decathlon S.A. and Ubik-Ingenierie / UbikLoadPack
  • Bug 58699 - Workbench changes neither saved nor prompted for saving upon close. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58728 - Drop old behavioural properties
  • Bug 57319 - Upgrade to HttpClient 4.5.2. With the big help from Oleg Kalnichevski (olegk at apache.org) and Gary Gregory (ggregory at apache.org).
  • Bug 58772 - Deprecate MongoDB related elements
  • Bug 58782 - ThreadGroup : Improve ergonomy
  • Bug 58165 - Show the time elapsed since the start of the load test in GUI mode. Partly based on a contribution from Maxime Chassagneux (maxime.chassagneux at gmail.com)
  • Bug 58814 - JVM no longer recognizes option MaxLiveObjectEvacuationRatio; remove from comments
  • Bug 58810 - Config Element Counter (and others): Check Boxes Toggle Area Too Big
  • Bug 56554 - JSR223 Test Element : Generate compilation cache key automatically. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58911 - Header Manager : it should be possible to copy/paste between Header Managers. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58864 - Arguments Panel : when moving parameter with up / down, ensure that the selection remains visible. Based on a contribution by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58968 - Add a new template to allow to record script with think time included. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug 58978 - Settings defaults : Switch "jmeter.save.saveservice.assertion_results_failure_message" to true (after 2.13)
  • Bug 58991 - Settings defaults : Switch "jmeter.save.saveservice.print_field_names" to true (after 2.13)
  • Bug 57182 - Settings defaults : Switch "jmeter.save.saveservice.idle_time" to true (after 2.13)
  • Bug 58870 - TableEditor: minimum size is too small. Contributed by Vincent Herilier (vherilier at gmail.com)
  • Bug 58933 - JSyntaxTextArea : Ability to set font. Contributed by Denis Kirpichenkov (denis.kirpichenkov at gmail.com)
  • Bug 58793 - Create developers page explaining how to build and contribute
  • Bug 59046 - JMeter Gui Replace controller should keep the name and the selection. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 59038 - Deprecate HTTPClient 3.1 related elements
  • Bug 59094 - Drop support of old JMX file format
  • Bug 59082 - Remove the "TestCompiler.useStaticSet" parameter. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 59093 - Option parsing error message can be 'lost'
  • Bug 58715 - Feature request: Bundle groovy-all with JMeter
  • Bug 58426 - Improve display of JMeter on high resolution devices (HiDPI) (part 1 of enhancement)
  • Bug 59105 - TableEditor : Add ability to paste rows from clipboard and delete multiple selection. Contributed by Vincent Herilier (vherilier at gmail.com)
  • Bug 59197 - Thread Group : it should be possible to only run a single threadgroup or a selection of threadgroups with a popup menu. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 59207 - Change the font color of errorsOrFatalsLabel to red when an error occurs. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug 58941 - Create a new Starter that runs thread groups in validation mode (1 thread only, 1 iteration, no pause all customizable)
  • Bug 59236 - JMeter Properties : Make some cleanup
  • Bug 59240 - Introduce a slf4j adapter for Logkit (this allows using slf4j within plugins and core code)
  • Bug 59153 - Stop test if CSVDataSet is accessing non-existing file. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug 59320 - Better tooltip in GUI with GenericTestBeanCustomizer (CSV Data Set Config, JDBC Connection Configuration, Keystore Configuration, …) . Based on a patch by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug 59171 - Sample Result SaveConfig Dialog is generated in random order
  • Bug 59425 - Display error about missing help page inside the help pane
  • Non-functional changes:
  • Updated to httpclient, httpmime 4.5.2 (from 4.2.6)
  • Updated to tika-core and tika-parsers 1.12 (from 1.7)
  • Updated to commons-math3 3.6.1 (from 3.4.1)
  • Updated to commons-pool2 2.4.2 (from 2.3)
  • Updated to commons-lang 3.4 (from 3.3.2)
  • Updated to rhino-1.7.7.1 (from 1.7R5)
  • Updated to jodd-3.6.7.jar (from 3.6.4)
  • Updated to jsoup-1.8.3 (from 1.8.1)
  • Updated to rsyntaxtextarea-2.5.8 (from 2.5.6)
  • Updated to slf4j-1.7.12 (from 1.7.10)
  • Updated to xmlgraphics-commons-2.0.1 (from 1.5)
  • Updated to commons-collections-3.2.2 (from 3.2.1)
  • Updated to commons-net 3.4 (from 3.3)
  • Updated to slf4j 1.7.13 (from 1.7.12)
  • Bug 57981 - Require a minimum of Java 7. Partly contributed by Graham Russell (jmeter at ham1.co.uk)
  • Bug 58684 - JMeterColor does not need to extend java.awt.Color. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58687 - ButtonPanel should die. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58705 - Make org.apache.jmeter.testelement.property.MultiProperty iterable. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58729 - Cleanup extras folder for maintainability
  • Bug 57110 - Fixed spelling+grammar, formatting, removed commented out code etc. Contributed by Graham Russell (jmeter at ham1.co.uk)
  • Correct instructions on running JMeter in help.txt. Contributed by Pascal Schumacher (pascalschumacher at gmx.net)
  • Bug 58704 - Non regression testing : Ant task batchtest fails if tests and run in a non en_EN locale and use a JMX file that uses a CSV DataSet
  • Bug 58897 - Improve JUnit Test code. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58949 - Cleanup of LDAP code. Based on a patch by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58897 - Improve JUnit Test code. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58967 - Use JUnit categories to exclude tests that need a gui. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 59003 - ClutilTestCase testSingleArg8 and testSingleArg9 are identical
  • Bug 59064 - Remove OldSaveService which supported very old Avalon format JTL (result) files
  • Bug 59165 - RSyntaxTextArea not compatible with headless testing
  • Bug 59021 - Use Double#compare instead of reimplementing it in NumberProperty#compareTo
  • Bug 59037 - Drop HtmlParserHTMLParser and dependencies on htmlparser and htmllexer
  • Bug 58465 - JMS Read response field is badly named and documented
  • Bug 58601 - Change check for modification of saveservice.properties from SVN Revision ID to sha1 sum of the file itself.
  • Bug 58726 - Remove the jmeterthread.startearlier parameter. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58784 - Make JMeterUtils#runSafe sync/async awt invocation configurable and change the visualizers to use the async version.
  • Bug 58790 - Issue in CheckDirty and its relation to ActionRouter
  • Bug 59095 - Remove UserParameterXMLParser that was deprecated eight years ago. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 59262 - Add list of binary jars to LICENSE; use that for unit tests
  • Bug 59353 - Add "Deprecated and removed elements" in "Incompatible changes" part in changes.xml. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug fixes:
  • HTTP Samplers and Test Script Recorder:
  • Bug 57806 - "audio/x-mpegurl" mime type is erroneously considered as binary by ViewResultsTree. Contributed by Ubik Load Pack (support at ubikloadpack.com).
  • Bug 57858 - Don't call sampleEnd twice in HTTPHC4Impl when a RuntimeException or an IOException occurs in the sample method.
  • Bug 57921 - HTTP/1.1 without keep-alive "Connection" response header no longer uses infinite keep-alive.
  • Bug 57956 - The hc.parameters reference in jmeter.properties doesn't work when JMeter is not started in bin.
  • Bug 58137 - JMeter fails to download embedded URLs that contain illegal characters in URL (it does not escape them).
  • Bug 58201 - Make usage of port in the host header more consistent across the different http samplers.
  • Bug 58453 - HTTP Test Script Recorder : NullPointerException when disabling Capture HTTP Headers
  • Bug 57804 - HTTP Request doesn't reuse cached SSL context when using Client Certificates in HTTPS (only fixed for HttpClient4 implementation)
  • Bug 58800 - proxy.pause default value: fix documentation
  • Bug 58844 - Buttons enable / disable is broken in the arguments panel. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58861 - When clicking on up, down or detail while in a cell of the argument panel, newly added content is lost. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 57935 - SSL SNI extension not supported by HttpClient 4.2.6
  • Bug 59044 - Http Sampler : It should not be possible to select the multipart encoding if the method is not POST. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 59008 - Http Sampler: Infinite recursion SampleResult on frame depth limit reached
  • Bug 58881 - HTTP Request : HTTPHC4Impl shows exception when server uses "deflate" compression
  • Bug 58583 - HTTP client fails to close connection if server misbehaves by not sending "connection: close", violating HTTP RFC 2616 / RFC 7230
  • Bug 58950 - NoHttpResponseException when Pause between samplers exceeds keepalive sent by server
  • Bug 59085 - Http file panel : data lost on browse cancellation. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 56141 - Application does not behave correctly when using HTTP Recorder. With the help of Dan (java.junkee at yahoo.com)
  • Bug 59079 - "httpsampler.max_redirects" property is not enforced when "Redirect Automatically" is used
  • Bug 58811 - When pasting arguments between http samplers the column "Encode" and "Include Equals" are lost. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Other Samplers:
  • Bug 58013 - Enable all protocols that are enabled on the default SSLContext for usage with the SMTP Sampler.
  • Bug 58209 - JMeter hang when testing javasampler because HashMap.put() is called from multiple threads without sync.
  • Bug 58301 - Use typed methods such as setInt, setDouble, setDate, … for prepared statement #27
  • Bug 58851 - Add a dependency on hamcrest-core to allow JUnit tests with annotations to work
  • Bug 58947 - Connect metric is wrong when ConnectException occurs
  • Bug 58980 - JMS Subscriber will return successful as long as 1 message is received. Contributed by Harrison Termotto (harrison dot termotto at stonybrook.edu)
  • Bug 59075 - JMS Publisher: NumberFormatException is thrown if priority or expiration field is empty
  • Bug 59345 - SMTPSampler connection leak. Based on a patch by Luca Maragnani (luca dot maragnani at gmail dot com)
  • Controllers:
  • Bug 58600 - Display correct filenames, when they are searched by IncludeController
  • Bug 58678 - Module Controller : limit target element selection. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58714 - Module controller : it should not be possible to add a timer as child. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 59067 - JMeter fails to iterate over Controllers that are children of a TransactionController having "Generate parent sample" checked after an assertion error occurs on a Thread Group with "Start Next Thread Loop". Contributed by Benoit Wiart(benoit dot wiart at gmail.com)
  • Bug 59076 - Test should fail if a module controller cannot find its replacement subtree
  • Listeners:
  • Bug 58033 - SampleResultConverter should note that it cannot record non-TEXT data
  • Bug 58845 - Request http view doesn't display all the parameters. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58413 - ViewResultsTree : Request HTTP Renderer does not show correctly parameters that contain ampersand (&). Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 59172 - SampleResult SaveConfig does not allow some fields to be disabled
  • Bug 58329 - Response Time Graph and Aggregate Graph : Save graph to file does not take into account the settings changed since last click on Graph. Contributed by David Coppens (d.l.coppens at gmail.com)
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 58079 - Do not cache HTTP samples that have a Vary header when using a HTTP CacheManager.
  • Bug 58912 - Response assertion gui : Deleting more than 1 selected row deletes only one row. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Functions:
  • Bug 57825 - __Random function fails if min value is equal to max value (regression related to Bug 54453)
  • I18N:
  • General:
  • Bug 54826 - Don't fail on long strings in JSON responses when displaying them as JSON in View Results Tree.
  • Bug 57734 - Maven transient dependencies are incorrect for 2.13 (Fixed group ids for Commons Pool and Math)
  • Bug 57731 - TESTSTART.MS has always the value of the first Test started in Server mode in NON GUI Distributed testing
  • Bug 58016 - Error type casting using external SSL Provider. Contributed by Kirill Yankov (myworkpostbox at gmail.com)
  • Bug 58293 - SOAP/XML-RPC Sampler file browser generates NullPointerException
  • Bug 58685 - JDatefield : Make the modification of the date with up/down arrow work. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 58693 - Fix "Cannot nest output folder 'jmeter/build/components' inside output folder 'jmeter/build'" when setting up eclipse
  • Bug 58781 - Command line option "-?" shows Unknown option
  • Bug 57821 - Command-line option "-X --remoteexit" doesn't work since 2.13 (regression related to Bug 57500)
  • Bug 58795 - NPE may occur in GuiPackage#getTestElementCheckSum with some 3rd party plugins
  • Bug 58913 - When closing JMeter should not interpret cancel as "destroy my test plan". Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug 59096 - Search Feature : Case insensitive search is not really case insensitive
  • Bug 59193 - ant run_gui fails with ClassNotFoundException or IllegalAccessError when accessing classes from dependencies not loaded through Thread.currentThread().getContextClassLoader()
  • Bug 59225 - Bad display of running indicator icon. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug 56927 - Disable language change during a test
  • Bug 59391 - In Distributed mode, the client exits abnormally at the end of test
  • Bug 59397 - build.xml does not make dist.executables executable on Unix systems

New in Apache JMeter 2.13 (Mar 16, 2015)

  • New and Noteworthy:
  • New Elements:
  • New Async BackendListener with Graphite implementation
  • A new Async BackendListener has been added to allow sending result data to a backend listener. JMeter ships with a GraphiteBackendListenerClient that allows sending results to a Graphite server using Pickle ot Plaintext protocols. You can implement your own backend by extending AbstractBackendListenerClient. This backend could be a database (JDBC), a Message Oriented Middleware (JMS), a Webservice or anything you want.
  • Core Improvements:
  • New connect time metric:
  • Starting with this version a new metric called connectTime has been added. It represents the time to establish connection. By default it is not saved to CSV or XML, to have it saved add to user.properties:
  • jmeter.save.saveservice.connect_time=true
  • Aggregate Graph and Report:
  • The listeners Aggregate Graph and Aggregate Report previously showed only the 90 percentile (historical behavior), the 95 percentile and the 99 percentile have been added and are customizable. To setup the percentiles value you want, add to user.properties:
  • aggregate_rpt_pct1=90
  • aggregate_rpt_pct2=95
  • aggregate_rpt_pct3=99
  • HTTP(S) Test Script Recorder: Now component is able to detect authentication schemes and automatically adds a pre-configured HTTP Authorization Manager with the correct Mechanism.
  • HTTP Request: The CalDAV verbs (Calendar extensions to WebDAV) REPORT and MKCALENDAR have been added in the HTTP Request sampler.
  • JDBC Request: The ResultSet can be get as a object, this allows to handle more easily the results after in BeanShell, JSR223 scripts...
  • Distributed Testing: To allow better usage of Distributed Testing in the cloud, retry behaviour has been added when starting test on servers. Read this for more details.
  • Distributed Testing performance: Since JMeter 2.13, Stripping modes (StrippingBatch being the default mode) now also strip responses from SubResults improving consumed network bandwidth.
  • Documentation refresh:
  • A new style for website (responsive and more up to date) has been created by Felix Schumacher. Documentations have been refreshed particularly:
  • Building a Webservice Test Plan
  • Best Practices
  • Help! My boss wants me to load test our application!
  • GUI Improvements:
  • Module Controller: The Module Controller now shows the target controller in a tree view (instead of combo list).
  • Toolbar:
  • JMeter's toolbar has been refreshed for some icons (start, toogle, etc.). Three sizes are now avialable for the icons: 22x22, 32x32 and 48x48.
  • The property to define your prefered size is:
  • jmeter.toolbar.icons.size=value
  • HTTP(S) Test Script Recorder:
  • If your Test Plan does not contains a Recording Controller, a new warning message will appear if the HTTP(S) Test Script Recorder is configured to send the samples into a Recording Controller.
  • Incompatible changes:
  • Since 2.13, Aggregate Graph, Summary Report and Aggregate Report now export percentages to %, before they exported the decimal value which differed from what was shown in GUI
  • Third party plugins may be impacted by fix of Bug 57586, ensure that your subclass of HttpTestSampleGui implements ItemListener if you relied on parent class doing so.
  • Report package has been removed, ApacheJMeter_report.jar is not generated anymore as a consequence, see Bug 57269
  • Improvements:
  • HTTP Samplers and Test Script Recorder:
  • Bug 25430 - HTTP(S) Test Script Recorder : Make it populate HTTP Authorization Manager. Partly based on a patch from Dzmitry Kashlach (dzmitrykashlach at gmail.com)
  • Bug 57381 - HTTP(S) Test Script Recorder should display an error if Target Controller references a Recording Controller and no Recording Controller exists. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 57488 - Performance : Improve SSLContext reset for Two-way SSL Authentication
  • Bug 57565 - SamplerCreator : Add method to allow implementations to add children to created sampler
  • Bug 57606 - HTTPSamplerBase#errorResult changes the sample label on exception
  • Bug 57613 - HTTP Sampler : Added CalDAV verbs (REPORT, MKCALENDAR). Contributed by Richard Brigham (richard.brigham at teamaol.com)
  • Bug 48799 - Add time to establish connection to available sample metrics. Implemented by Andrey Pokhilko (andrey at blazemeter.com) and contributed by BlazeMeter Ltd. and Pieter Ennes (apache.org at spam.ennes.nl)
  • Bug 57500 - Introduce retry behavior for distributed testing. Implemented by Andrey Pokhilko and Dzimitry Kashlach and contributed by BlazeMeter Ltd.
  • Other samplers:
  • Bug 57322 - JDBC Test elements: add ResultHandler to deal with ResultSets(cursors) returned by callable statements. Contributed by Yngvi Þór Sigurjónsson (blitzkopf at gmail.com)
  • Controllers:
  • Bug 57561 - Module controller UI : Replace combobox by tree. Contributed by Maciej Franek (maciej.franek at gmail.com)
  • Bug 57648 - TestFragment should be disabled when created. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Listeners:
  • Bug 55932 - Create a Async BackendListener to allow easy plug of new listener (Graphite, JDBC, Console,...)
  • Bug 57246 - BackendListener : Create a Graphite implementation
  • Bug 57217 - Aggregate graph and Aggregate report improvements (3 configurable percentiles, same data in both, factor out code). Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 57537 - BackendListener : Allow implementations to drop samples
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Functions:
  • Bug 54453 - Performance enhancements : Replace Random by ThreadLocalRandom in __Random function
  • I18N:
  • General:
  • Bug 57518 - Icons for toolbar with several sizes
  • Bug 57605 - When there is an error loading Test Plan, SaveService.loadTree returns null leading to NPE in callers
  • Bug 57269 - Drop org.apache.jmeter.reports package
  • Bug 53764 - Website : Create a new style for website
  • Non-functional changes:
  • Updated to jsoup-1.8.1.jar (from 1.7.3)
  • Updated to tika-core and tika-parsers 1.7 (from 1.6)
  • Updated to commons-codec-1.10.jar (from 1.9)
  • Updated to dnsjava-2.1.7.jar (from 2.1.6)
  • Updated to jodd-3.6.4.jar (from 3.6.1)
  • Updated to junit-4.12.jar (from 4.11)
  • Updated to rhino-1.7R5 (from 1.7R4)
  • Updated to rsyntaxtextarea-2.5.6 (from 2.5.3)
  • Updated to slf4j-1.7.10 (from 1.7.5)
  • Bug 57276 - RMIC no longer needed since Java 5
  • Bug 57310 - Replace System.getProperty("file.separator") with File.separator throughout (Also "path.separator" with File.pathSeparator)
  • Bug 57389 - Fix potential NPE in converters
  • Bug 57417 - Remove unused method isTemporary from NullProperty. This was a leftover from a refactoring done in 2003.
  • Bug 57418 - Remove unused constructor from Workbench
  • Bug 57419 - Remove unused interface ModelListener.
  • Bug 57466 - IncludeController : Remove an unneeded set creation. Contributed by Benoit Wiart (benoit.wiart at gmail.com)
  • Added property loggerpanel.usejsyntaxtext to disable the use of JSyntaxTextArea for the Console Logger (in case of memory or other issues)
  • Bug 57586 - HttpTestSampleGui: Remove interface ItemListener implementation
  • Bug fixes:
  • HTTP Samplers and Test Script Recorder:
  • Bug 57385 - Getting empty thread name in xml result for HTTP requests with "Follow Redirects" set. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 57579 - NullPointerException error is raised on main sample if "RETURN_NO_SAMPLE" is used (default) and "Use Cache-Control / Expires header..." is checked in HTTP Cache Manager
  • Other Samplers:
  • Controllers:
  • Bug 57447 - Use only the user listed DNS Servers, when "use custom DNS resolver" option is enabled.
  • Listeners:
  • Bug 57262 - Aggregate Report, Aggregate Graph and Summary Report export : headers use keys instead of labels
  • Bug 57346 - Summariser : The + (difference) reports show wrong elapsed time and throughput
  • Bug 57449 - Distributed Testing: Stripped modes do not strip responses from SubResults (affects load tests that use Download of embedded resources). Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 57562 - View Results Tree CSS/JQuery Tester : Nothing happens when there is an error in syntax and an exception occurs in jmeter.log
  • Bug 57514 - Aggregate Graph, Summary Report and Aggregate Report show wrong percentage reporting in saved file
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 57607 - Constant Throughput Timer : Wrong throughput computed in shared modes due to rounding error
  • General:
  • Bug 57365 - Selected LAF is not correctly setup due to call of UIManager.setLookAndFeel too late. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 57364 - Options < Look And Feel does not update all windows LAF. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 57394 - When constructing an instance with ClassTools#construct(String, int) the integer was ignored and the default constructor was used instead.
  • Bug 57440 - OutOfMemoryError after introduction of JSyntaxTextArea in LoggerPanel due to disableUndo not being taken into account.
  • Bug 57569 - FileServer.reserveFile - inconsistent behaviour when hasHeader is true
  • Bug 57555 - Cannot use JMeter 2.12 as a maven dependency. Contributed by Pascal Schumacher (pascal.schumacher at t-systems.com)
  • Bug 57608 - Fix start script compatibility with old Unix shells, e.g. on Solaris

New in Apache JMeter 2.12 (Nov 11, 2014)

  • New and Noteworthy:
  • Java 8 support
  • Now, JMeter 2.12 is compliant with Java 8.
  • New Elements:
  • Critical Section Controller - The Critical Section Controller allow to serialize the execution of a section in your tree. Only one instance of the section will be executed at the same time during the test.
  • DNS Cache Manager - The new configuration element DNS Cache Manager (see Bug 56841 ) improves the testing of:
  • CDN (Content Delivery Network)
  • DNS load balancing.
  • Load Balancers like Amazon Elastic Load Balancer
  • Core Improvements:
  • Smarter Recording of Http Test Plans
  • Test Script Recorder has been improved in many ways
  • Better matching of Variables in Requests, making Test Script Recorder variabilize your sampler during recording more versatile
  • Ability to filter from View Results Tree the Samples that are excluded from recording, this lets you concentrate on recorded Samplers analysis and not bother with useless Sample Results
  • Better defaults for recording, since this version Recorder will number created Samplers letting you find them much easily in View Results Tree. Grouping of Samplers under Transaction Controller will be smarter making all requests emitted by a web page be children as new Transaction Controller
  • Support of Webdav requests:
  • You can now test against WebDav server using HttpClient4 Implementation of Http Request
  • Better handling of embedded resources:
  • When download embedded resources is checked, JMeter now uses User Agent header to download or not resources embedded within conditionnal comments as per About conditional comments .
  • Ability to customize Cache Manager (Browser cache simulation) handling of cached resources
  • You can now configure the behaviour of JMeter when a resource is found in Cache, this can be controlled with cache_manager.cached_resource_mode property
  • JMS Publisher / JMS Point-to-Point:
  • Add JMSPriority and JMSExpiration fields for these samplers.
  • Mail Reader Sampler:
  • You can now specify the number of messages that want you retrieve (before all messages were retrieved). In addition, you can fetch only the message header now.
  • SMTP Sampler:
  • Adding the Connection timeout and the Read timeout to the SMTP Sampler.
  • Synchronizing Timer:
  • Adding a timeout to define the maximum time to waiting of the group of virtual users.
  • Performance improvements:
  • A big improvement in performances of Functions has been made by lifting useless synchronization. It concerns all functions except __StringFromFile, __XPath and __BeanShell, see Bug 57114
  • __jexl2 performances have been improved to avoid contention point, see Bug 56708
  • GUI Improvements:
  • Undo/Redo support - Undo / Redo has been introduced and allows user to undo/redo changes made on Test Plan Tree. This feature (ALPHA MODE) is disabled by default, to enable it set property undo.history.size=25
  • View Results Tree:
  • Improve the ergonomics of View Results Tree by changing placement of Renderers and allowing custom ordering (with the property view.results.tree.renderers_order ).
  • Response Time Graph:
  • Adding the ability for the Response Time Graph listener to save/restore format its settings in/from the jmx file.
  • Log Viewer:
  • Starting with this version, the last lines of JMeter's log file (jmeter.log) can be viewed directly in GUI by clicking on Warning icon in the upper right corner. This will unfold the Log Viewer panel and show logs.
  • File Opening:
  • Now, "Open File dialog" uses last opened file folder as start folder, see Bug 52707
  • Incompatible changes:
  • Since JMeter 2.12, active threads in all thread groups and active threads in current thread group are saved by default to CSV or XML results, see Bug 57025 . This is usually the expected behaviour as you want to have the number of running threads during the test. But if you want to revert to previous behaviour, set property jmeter.save.saveservice.thread_counts=false
  • Since JMeter 2.12, Mail Reader Sampler will show 1 for number of samples instead of number of messages retrieved, see Bug 56539
  • Since JMeter 2.12, when using Cache Manager, if resource is found in cache no SampleResult will be created, in previous version a SampleResult with empty content and 204 return code was returned, see Bug 54778 . You can choose between different ways to handle this case, see cache_manager.cached_resource_mode in jmeter.properties.
  • Since JMeter 2.12, Log Viewer will no more clear logs when closed and will have logs available even if closed. See Bug 56920 . Read Hints and Tips > Enabling Debug logging for details on configuring this component.
  • Bug fixes:
  • HTTP Samplers and Test Script Recorder
  • Bug 55998 - HTTP recording ? Replacing port value by user defined variable does not work
  • Bug 56178 - keytool error: Invalid escaped character in AVA: - some characters must be escaped
  • Bug 56222 - NPE if jmeter.httpclient.strict_rfc2616=true and location is not absolute
  • Bug 56263 - DefaultSamplerCreator should set BrowserCompatible Multipart true
  • Bug 56231 - Move redirect location processing from HC3/HC4 samplers to HTTPSamplerBase#followRedirects()
  • Bug 56207 - URLs get encoded on redirects in HC3.1 & HC4 samplers
  • Bug 56303 - The width of target controller's combo list should be set to the current panel size, not on label size of the controllers
  • Bug 54778 - HTTP Sampler should not return 204 when resource is found in Cache, make it configurable with new property cache_manager.cached_resource_mode
  • Other Samplers:
  • Bug 55977 - JDBC pool keepalive flooding
  • Bug 55999 - Scroll bar on jms point-to-point sampler does not work when content exceeds display
  • Bug 56198 - JMSSampler : NullPointerException is thrown when JNDI underlying implementation of JMS provider does not comply with Context.getEnvironment contract
  • Bug 56428 - MailReaderSampler - should it use mail.pop3s.* properties?
  • Bug 46932 - Alias given in select statement is not used as column header in response data for a JDBC request.Based on report and analysis of Nicola Ambrosetti
  • Bug 56539 - Mail reader sampler: When Number of messages to retrieve is superior to 1, Number of samples should only show 1 not the number of messages retrieved
  • Bug 56809 - JMSSampler closes InitialContext too early. Contributed by Bradford Hovinen (hovinen at gmail.com)
  • Bug 56761 - JMeter tries to stop already stopped JMS connection and displays "The connection is closed"
  • Bug 57068 - No error thrown when negative duration is entered in Test Action
  • Bug 57078 - LagartoBasedHTMLParser fails to parse page that contains input with no type
  • Bug 57183 - JMSSampler: For input string: "" java.lang.NumberFormatException (for Expiration or Priority fields)
  • Controllers:
  • Bug 56243 - Foreach works incorrectly with indexes on subsequent iterations
  • Bug 56276 - Loop controller becomes broken once loop count evaluates to zero
  • Bug 56160 - StackOverflowError when using WhileController within IfController
  • Bug 56811 - "Start Next Thread Loop" in Result Status Action Handler or on Thread Group and "Go to next Loop iteration" in Test Action behave incorrectly with TransactionController that has "Generate Parent Sampler" checked
  • Listeners:
  • Bug 56706 - SampleResult#getResponseDataAsString() does not use encoding in response body impacting PostProcessors and ViewResultsTree. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 57052 - ArithmeticException: / by zero when sampleCount is equal to 0
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 56162 - HTTP Cache Manager should not cache PUT/POST etc.
  • Bug 56227 - AssertionGUI : NPE in assertion on mouse selection
  • Bug 41319 - URLRewritingModifier : Allow Parameter value to be url encoded
  • Functions:
  • I18N:
  • Bug 56111 - "comments" in german translation is not correct
  • General:
  • Bug 56059 - Older TestBeans incompatible with 2.11 when using TextAreaEditor
  • Bug 56080 - Conversion error com.thoughtworks.xstream.converters.ConversionException with Java 8 Early Access Build
  • Bug 56182 - Can't trigger bsh script using bshclient.jar; socket is closed unexpectedly
  • Bug 56360 - HashTree and ListedHashTree fail to compile with Java 8
  • Bug 56419 - JMeter silently fails to save results
  • Bug 56662 - Save as xml in a listener is not remembered
  • Bug 56367 - JMeter 2.11 on maven central triggers a not existing dependency rsyntaxtextarea 2.5.1, upgrade to 2.5.3
  • Bug 56743 - Wrong mailing list archives on mail2.xml. Contributed by Felix Schumacher (felix.schumacher at internetallee.de)
  • Bug 56763 - Removing the Oracle icons, not used by JMeter (and missing license)
  • Bug 54100 - Switching languages fails to preserve toolbar button states (enabled/disabled)
  • Bug 54648 - JMeter GUI on OS X crashes when using CMD+C (keyboard shortcut or UI menu entry) on an element from the tree
  • Bug 56962 - JMS GUIs should disable all fields affected by jndi.properties checkbox
  • Bug 57061 - Save as Test Fragment fails to clone deeply selected node. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 57075 - BeanInfoSupport.MULTILINE attribute is not processed
  • Bug 57076 - BooleanPropertyEditor#getAsText() must return a value that is in getTags()
  • Bug 57088 - NPE in ResultCollector.testEnded
  • Improvements:
  • HTTP Samplers and Test Script Recorder
  • Bug 55959 - Improve error message when Test Script Recorder fails due to I/O problem
  • Bug 52013 - Test Script Recorder's Child View Results Tree does not take into account Test Script Recorder excluded/included URLs. Based on report and analysis of James Liang
  • Bug 56119 - File uploads fail every other attempt using timers. Enable idle timeouts for servers that don't send Keep-Alive headers.
  • Bug 56272 - MirrorServer should support query parameters for status and redirects
  • Bug 56772 - Handle IE Conditional comments when parsing embedded resources
  • Bug 57026 - HTTP(S) Test Script Recorder : Better default settings. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 57107 - Patch proposal: Add DAV verbs to HTTP Sampler. Contributed by Philippe Jung (apache at famille-jung.fr)
  • Bug 56357 - Certificates does not conform to algorithm constraints: Adding a note to indicate how to remove of the Java installation these new security constraints
  • Other samplers:
  • Bug 56033 - Add Connection timeout and Read timeout to SMTP Sampler
  • Bug 56429 - MailReaderSampler - no need to fetch all Messages if not all wanted
  • Bug 56427 - MailReaderSampler enhancement: read message header only
  • Bug 56510 - JMS Publisher/Point to Point: Add JMSPriority and JMSExpiration
  • Controllers:
  • Bug 56728 - New Critical Section Controller to serialize blocks of a Test. Based partly on a patch contributed by Mikhail Epikhin(epihin-m at yandex.ru)
  • Bug 57145 - RandomController : Use ThreadLocalRandom instead of Random for better performances
  • Listeners:
  • Bug 56228 - View Results Tree : Improve ergonomy by changing placement of Renderers and allowing custom ordering
  • Bug 56349 - "summary" is a bad name for a Generate Summary Results component, documentation clarified
  • Bug 56769 - Adds the ability for the Response Time Graph listener to save/restore format settings in/from the jmx file
  • Bug 57025 - SaveService : Better defaults, save thread counts by default
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 56691 - Synchronizing Timer : Add timeout on waiting
  • Bug 56701 - HTTP Authorization Manager/ Kerberos Authentication: add port to SPN when server port is neither 80 nor 443. Based on patches from Dan Haughey (dan.haughey at swinton.co.uk) and Felix Schumacher (felix.schumacher at internetallee.de)
  • Bug 56841 - New configuration element: DNS Cache Manager to improve the testing of CDN. Based on patch from Dzmitry Kashlach (dzmitrykashlach at gmail.com), and contributed by BlazeMeter Ltd.
  • Bug 52061 - Allow access to Request Headers in Regex Extractor. Based on patch from Dzmitry Kashlach (dzmitrykashlach at gmail.com), and contributed by BlazeMeter Ltd.
  • Functions:
  • Bug 56708 - __jexl2 doesn't scale with multiple CPU cores. Based on analysis and patch contributed by Mikhail Epikhin(epihin-m at yandex.ru)
  • Bug 57114 - Performance : Functions that only have values as instance variable should not synchronize execute. Based on analysis by Ubik Load Pack support and Vladimir Sitnikov, patch contributed by Vladimir Sitnikov (sitnikov.vladimir at gmail.com)
  • I18N:
  • General
  • Bug 21695 - Unix jmeter start script assumes it is on PATH, not a link
  • Bug 56292 - Add the check of the Java's version in startup files and disable some options when is Java v8 engine
  • Bug 56298 - JSR223 language display does not show which engine will be used
  • Bug 56455 - Batch files: drop support for non-NT Windows shell scripts
  • Bug 52707 - Make Open File dialog use last opened file folder as start folder. Based on patch from Dzmitry Kashlach (dzmitrykashlach at gmail.com), and contributed by BlazeMeter Ltd.
  • Bug 56807 - Ability to force flush of ResultCollector file. Contributed by Andrey Pohilko (apc4 at ya.ru)
  • Bug 56921 - Templates : Improve Recording template to ignore embedded resources case and URL parameters. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 42248 - Undo-redo support on Test Plan tree modification. Developed by Andrey Pohilko (apc4 at ya.ru) and contributed by BlazeMeter Ltd. Additional contribution by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 56920 - LogViewer : Make it receive all log events even when it is closed. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 57083 - simplified the CachedResourceMode enum. Contributed by Graham Russel (graham at ham1.co.uk)
  • Bug 57082 - ComboStringEditor : Added hashCode to an inner class which overwrote equals. Contributed by Graham Russel (graham at ham1.co.uk)
  • Bug 57081 - Updating checkstyle to only check for tabs in java, xml, xsd, dtd, htm, html and txt files (not images!). Contributed by Graham Russell (graham at ham1.co.uk)
  • Bug 56178 - Really replace backslashes in user name before generating proxy certificate. Contributed by Graham Russel (graham at ham1.co.uk)
  • Bug 57084 - Close socket after usage in BeanShellClient. Contributed by Graham Russel (graham at ham1.co.uk)
  • Non-functional changes:
  • Bug 57117 - Increase the default cipher for HTTPS Test Script Recorder from SSLv3 to TLS
  • Updated to commons-lang3 3.3.2 (from 3.1)
  • Updated to commons-codec 1.9 (from 1.8)
  • Updated to commons-logging 1.2 (from 1.1.3)
  • Updated to tika 1.6 (from 1.4)
  • Updated to xercesImpl 2.11.0 (from 2.9.1)
  • Updated to xml-apis 1.4.01 (from 1.3.04)
  • Updated to xstream 1.4.7 (from 1.4.4)
  • Updated to jodd 3.6.1 (from 3.4.10)
  • Updated to rsyntaxtextarea 2.5.3 (from 2.5.1)
  • Updated xalan and serializer to 2.7.2 (from 2.7.1)
  • Updated to jsoup-1.8.1.jar (from 1.7.3)

New in Apache JMeter 2.11 (Jan 6, 2014)

  • NEW AND NOTEWORTHY:
  • HTTP(S) Test Script Recorder improvements:
  • Better detection of missing or invalid configuration of keytool utility
  • New system property keytool.directory (see system.properties) lets you configure directory containing keytool in case on non-standard installation
  • JMS Publisher/Point to Point:
  • Add ability to set typed values in JMS header properties
  • View Results Tree:
  • Add an XPath Tester
  • Ability to choose the client alias for the cert key in JsseSslManager such that Mutual SSL auth testing can be made more flexible
  • Add a "Save as Test Fragment" option
  • Summariser is be enabled by default in Non GUI mode
  • Transaction Controller:
  • Change default property "Include duration of timer..." for newly created element
  • BUG FIXES:
  • HTTP Samplers and Test Script Recorder:
  • Bug 55815 - Proxy#getDomainMatch does not handle wildcards correctly
  • Bug 55717 - Bad handling of Redirect when URLs are in relative format by HttpClient4 and HttpClient3.1
  • Other Samplers:
  • Bug 55685 - OS Sampler: timeout option don't save and restore correctly value and don't init correctly timeout
  • Controllers:
  • Bug 55816 - Transaction Controller with "Include duration of timer..." unchecked does not ignore processing time of last child sampler
  • Listeners:
  • Bug 55826 - Unsynchronised concurrent accesses to list in field RespTimeGraphVisualizer.internalList
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 55694 - Assertions and Extractors : Avoid NullPointerException when scope is variable and variable is missing
  • Bug 55721 - HTTP Cache Manager - no-store directive is wrongly interpreted
  • Functions:
  • Bug 55871 - Wrong result with intSum() function when a space character is present before/after the number. Contributed by Milamber based on a proposal by James Liang.
  • General:
  • Bug 55739 - Remote Test : Total threads in GUI mode shows invalid total number of threads
  • IMPROVEMENTS:
  • Other samplers:
  • Bug 55589 - JMS Publisher/Point to Point : Add ability to set typed values in JMS header properties.
  • Controllers:
  • Bug 55854 - Transaction Controller:Change default property "Include duration of timer..." for newly created element
  • Listeners:
  • Bug 55610 - View Results Tree : Add an XPath Tester
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 55908 - Response assertion : Change Pattern Matching Rules default to Substring on creation for better performances
  • Bug 54977 - Ability to choose the client alias for the cert key in JsseSslManager such that Mutual SSL auth testing can be made more flexible. Contributed by UBIK Load Pack (support at ubikloadpack.com)
  • General:
  • Bug 55693 - Add a "Save as Test Fragment" option
  • Bug 55753 - Improve FilePanel behaviour to start from the value set in Filename field if any. Contributed by UBIK Load Pack (support at ubikloadpack.com)
  • Bug 55756 - HTTP Mirror Server : Add ability to set Headers
  • Bug 55852 - Be more lenient in parsing when charset value is surrounded with single quotes
  • Bug 55857 - Performance : AbstractProperty should test for emptiness to avoid Exception throwing
  • Bug 55858 - Startup Performance : On Startup, BeanInfoSupport should test for key availability instead of throwing
  • Bug 55865 - Performance :Disable stale check by default in HttpClient 4 and 3.1
  • Bug 55512 - Summariser should be enabled by default in Non GUI mode

New in Apache JMeter 2.10 (Oct 22, 2013)

  • A Huge performance improvement has been made on High Throughput Tests (no pause), see Bug 54777
  • An issue with unnecessary SSL Context reset has been fixed which improves performances of pure HTTP tests, see Bug 55023
  • Important performance improvement in parsing of Embedded resource in HTML pages thanks to a switch to JODD/Lagarto HTML Parser, see Bug 55632
  • Better recording of HTTPS sites, embedded resources using subdomains will more easily be recorded when using JDK 7. See Bug 55507 . See updated documentation: HTTP(S) Test Script Recorder
  • Redirection are now more smartly detected by HTTP Proxy Server, see Bug 55531
  • Many fixes on edge cases with HTTPS have been made, see Bug 55502 , Bug 55504 , Bug 55506
  • Many encoding fixes have been made, see Bug 54482 , Bug 54142 , Bug 54293
  • HTTP Samplers and Proxy:
  • Bug 54627 - JMeter Proxy GUI: Type of sampler setting takes the whole screen when there are samplers with long names.
  • Bug 54629 - HTMLParser does not extract tag urls.
  • Bug 55023 - SSL Context reuse feature (51380) adversely affects non-ssl request performance/throughput. based on analysis by Brent Cromarty (brent.cromarty at yahoo.ca)
  • Bug 55092 - Log message "WARN - jmeter.protocol.http.sampler.HTTPSamplerBase: Null URL detected (should not happen)" displayed when embedded resource URL is malformed.
  • Bug 55161 - Useless processing in SoapSampler.setPostHeaders.
  • Bug 54482 - HC fails to follow redirects with non-encoded chars.
  • Bug 54142 - HTTP Proxy Server throws an exception when path contains "|" character.
  • Bug 55388 - HC3 does not allow IP Source field to override httpclient.localaddress.
  • Bug 55450 - HEAD redirects should remain as HEAD
  • Bug 55455 - HTTPS with HTTPClient4 ignores cps setting
  • Bug 55502 - Proxy generates empty http:/ entries when recording
  • Bug 55504 - Proxy incorrectly issues CONNECT requests when browser prompts for certificate override
  • Bug 55506 - Proxy should deliver failed requests to any configured Listeners
  • Bug 55545 - HTTP Proxy Server GUI should not allow both Follow and Auto redirect to be selected
  • Other Samplers:
  • Bug 54913 - JMSPublisherGui incorrectly restores its state.
  • Bug 55027 - Test Action regression, duration value is not recorded (nightly build).
  • Bug 55163 - BeanShellTestElement fails to quote string when calling testStarted(String)/testEnded(String).
  • Bug 55349 - NativeCommand hangs if no input file is specified and the application requests input.
  • Bug 55462 - System Sampler should not change the sampler label if a sample fails
  • Controllers:
  • Bug 54467 - Loop Controller: compute loop value only once per parent iteration.
  • Bug 54985 - Make Transaction Controller set Response Code of Generated Parent Sampler to response code of first failing child in case of failure of one of its children.)
  • Bug 54950 - ModuleController : Changes to referenced Module are not taken into account if changes occur after first run and referenced node is disabled.
  • Bug 55201 - ForEach controller excludes start index and includes end index (clarified documentation).
  • Bug 55334 - Adding Include Controller to test plan (made of Include Controllers) without saving TestPlan leads to included code not being taken into account until save.
  • Bug 55375 - StackOverflowError with ModuleController in Non-GUI mode if its name is the same as the target node.
  • Bug 55464 - Include Controller running included thread group
  • Listeners:
  • Bug 54589 - View Results Tree have a lot of Garbage characters if html page uses double-byte charset.
  • Bug 54753 - StringIndexOutOfBoundsException at SampleResult.getSampleLabel() if key_on_threadname=false when using Statistical mode.
  • Bug 54685 - ArrayIndexOutOfBoundsException if "sample_variable" is set in client but not server.
  • Bug 55111 - ViewResultsTree: text not refitted if vertical scrollbar is required.Milamber
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 54540 - "HTML Parameter Mask" are not marked deprecated in the IHM.
  • Bug 54575 - CSS/JQuery Extractor : Choosing JODD Implementation always uses JSOUP.
  • Bug 54901 - Response Assertion GUI behaves weirdly.
  • Bug 54924 - XMLAssertion uses JMeter JVM file.encoding instead of response encoding and does not clean threadlocal variable.
  • Bug 53679 - Constant Throughput Timer bug with localization.
  • Functions:
  • Bug 55328 - __escapeOroRegexpChars trims spaces.
  • I18N:
  • Bug 55437 - ComboStringEditor does not translate EDIT and UNDEFINED strings on language change
  • Bug 55501 - Incorrect encoding for French description of __char function.
  • General:
  • Bug 54504 - Resource string not found: [clipboard_node_read_error].
  • Bug 54538 - GUI: context menu is too big.
  • Bug 54847 - Cut & Paste is broken with tree multi-selection.
  • Bug 54870 - Tree drag and drop may lose leaf nodes (affected nightly build).
  • Bug 55056 - wasted work in Data.append().
  • Bug 55129 - Change Javadoc generation per CVE-2013-1571, VU#225657.
  • Bug 55187 - Integer overflow when computing ONE_YEAR_MS in HTTP CacheManager.
  • Bug 55208 - JSR223 language entries are duplicated; fold to lower case.
  • Bug 55203 - TestBeanGUI - wrong language settings found.
  • Bug 55065 - Useless processing in Spline3.converge().
  • Bug 55064 - Useless processing in ReportTreeListener.isValidDragAction().
  • Bug 55242 - BeanShell Client jar throws exceptions after upgrading to 2.8.
  • Bug 55288 - JMeter should default to 0 retries for HTTP requests.
  • Bug 55405 - ant download_jars task fails if lib/api or lib/doc are missing.
  • Bug 55427 - TestBeanHelper should ignore properties not supported by GenericTestBeanCustomizer
  • Bug 55459 - Elements using ComboStringEditor lose the input value if user selects another Test Element
  • Bug 54152 - In distributed testing : activeThreads always show 0 in GUI and Summariser
  • Bug 55509 - Allow Plugins to be notified of remote thread number progression
  • Bug 55572 - Detail popup of parameter does not show a Scrollbar when content exceeds display
  • Bug 55580 - Help pane does not scroll to start for links
  • Bug 55600 - JSyntaxTextArea : Strange behaviour on first undo
  • Bug 55655 - NullPointerException when Remote stopping /shutdown all if one engine did not start correctly.
  • Bug 55657 - Remote and Local Stop/Shutdown buttons state does not take into account local / remote status
  • Improvements:
  • HTTP Samplers and Proxy:
  • HTTP Request: Small user interaction improvements in Row parameter Detail Box.
  • Bug 55255 - Allow Body in HTTP DELETE method to support API that use it (like ElasticSearch).
  • Bug 53480 - Add Kerberos support to Http Sampler (HttpClient4).
  • Bug 54874 - Support device in addition to source IP address
  • Bug 55488 - Add .ico and .woff file extension to default suggested exclusions in proxy recorder.
  • Bug 55525 - Proxy should support alias for keyserver entry
  • Bug 55531 - Proxy recording and redirects. Added code to disable redirected samples.
  • Bug 55507 - Proxy SSL recording does not handle external embedded resources well
  • Bug 55632 - Have a new implementation of htmlParser for embedded resources parsing with better performances
  • Bug 55653 - HTTP(S) Test Script Recorder should set TransactionController property "Include duration of timer and pre-post processors in generated sample" to false
  • Other samplers:
  • Bug 54788 - JMS Point-to-Point Sampler - GUI enhancements to increase readability and ease of use.
  • Bug 54798 - Using subject from EML-file for SMTP Sampler.)
  • Bug 54759 - SSLPeerUnverifiedException using HTTPS , property documented.
  • Bug 54896 - JUnit sampler gives only "failed to create an instance of the class" message with constructor problems.
  • Bug 55084 - Add timeout support for JDBC Request.)
  • Bug 55403 - Enhancement to OS sampler: Support for timeout
  • Bug 55518 - Add ability to limit number of cached PreparedStatements per connection when "Prepared Select Statement", "Prepared Update Statement" or "Callable Statement" query type is selected
  • Controllers:
  • Bug 54271 - Module Controller breaks if test plan is renamed.
  • Listeners:
  • Bug 54532 - Improve Response Time Graph Y axis scale with huge values or small values (< 1000ms). Add a new field to define increment scale.
  • Bug 54576 - View Results Tree : Add a CSS/JQuery Tester.
  • Bug 54777 - Improve Performance of default ResultCollector.
  • Bug 55389 - Show IP source address in request data
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 54789 - XPath Assertion - GUI enhancements to increase readability and ease of use.
  • Functions:
  • Bug 54991 - Add functions to encode/decode URL encoded chars (__urlencode and __urldecode).Milamber.
  • I18N:
  • Bug 55241 - Need GUI Editor to process fields which are based on Enums with localised display strings
  • Bug 55440 - ComboStringEditor should allow tags to be language dependent
  • Bug 55432 - CSV Dataset Config loses sharing mode when switching languages
  • General:
  • Bug 54584 - MongoDB plugin. Based on patch
  • Bug 54669 - Add flag forcing non-GUI JVM to exit after test.Scott Emmons
  • Bug 42428 - Workbench not saved with Test Plan.
  • Bug 54825 - Add shortcuts to move elements in the tree.
  • Bug 54834 - Improve Drag & Drop in the jmeter tree.
  • Bug 54839 - Set the application name on Mac.
  • Bug 54841 - Correctly handle the quit shortcut on Mac Os (CMD-Q).
  • Bug 54844 - Set the application icon on Mac Os.
  • Bug 54864 - Enable multi selection drag & drop in the tree without having to start dragging before releasing Shift or Control.
  • Bug 54945 - Add Shutdown Hook to enable trapping kill or CTRL+C signals.
  • Bug 54990 - Download large files avoiding outOfMemory.
  • Bug 55085 - UX Improvement : Ability to create New Test Plan from Templates.
  • Bug 55172 - Provide plugins a way to add Top Menu and menu items.
  • Bug 55202 - Add syntax color for scripts elements (BeanShell, BSF, and JSR223) and JDBC elements with RSyntaxTextArea.
  • Bug 55175 - HTTPHC4Impl refactoring to allow better inheritance.
  • Bug 55236 - Templates - provide button to reload template details.
  • Bug 55237 - Template system should support relative fileName entries.
  • Bug 55423 - BatchSampleSender: Reduce locking granularity by moving listener.processBatch outside of synchronized block
  • Bug 55424 - Add Stripping to existing SampleSenders
  • Bug 55451 - Test Element GUI with JSyntaxTextArea scroll down when text content is long enough to add a Scrollbar
  • Bug 55513 - StreamCopier cannot be used with System.err or System.out as it closes the output stream
  • Bug 55514 - SystemCommand should support arbitrary input and output streams
  • Bug 55515 - SystemCommand should support chaining of commands
  • Bug 55606 - Use JSyntaxtTextArea for Http Request, JMS Test Elements
  • Bug 55651 - Change JMeter application icon to Apache plume icon
  • Non-functional changes:
  • Updated to jsoup-1.7.2
  • Bug 54776 - Update the dependency on Bouncy Castle to 1.48.
  • Updated to HttpComponents Client 4.2.6 (from 4.2.3)
  • Updated to HttpComponents Core 4.2.5 (from 4.2.3)
  • Updated to commons-codec 1.8 (from 1.6)
  • Updated to commons-io 2.4 (from 2.2)
  • Updated to commons-logging 1.1.3 (from 1.1.1)
  • Updated to commons-net 3.3 (from 3.1)
  • Updated to jdom-1.1.3 (from 1.1.2)
  • Updated to jodd-lagarto and jodd-core 3.4.8 (from 3.4.1)
  • Updated to junit 4.11 (from 4.10)
  • Updated to slf4j-api 1.7.5 (from 1.7.2)
  • Updated to tika 1.4 (from 1.3)
  • Updated to xmlgraphics-commons 1.5 (from 1.3.1)
  • Updated to xstream 1.4.4 (from 1.4.2)
  • Updated to BouncyCastle 1.49 (from 1.48)
  • Bug 54912 - JMeterTreeListener should use constants.
  • Bug 54903 - Remove the dependency on the Activation Framework.
  • Moved commons-lang (2.6) to lib/doc as it's only needed by Velocity.
  • Re-organised and simplified NOTICE and LICENSE files.
  • Bug 55411 - NativeCommand could be useful elsewhere. Copied code to o.a.jorphan.exec.
  • Bug 55435 - ComboStringEditor could be simplified to make most settings final
  • Bug 55436 - ComboStringEditor should implement ClearGui
  • Bug 55463 - Component.requestFocus() is discouraged; use requestFocusInWindow() instead
  • Bug 55486 - New JMeter Logo.
  • Bug 55548 - Tidy up use of TestElement.ENABLED; use TestElement.isEnabled()/setEnabled() throughout
  • Bug 55617 - Improvements to jorphan collection.
  • Bug 55623 - Invalid/unexpected configuration values should not be silently ignored
  • Bug 55626 - Rename HTTP Proxy Server as HTTP(S) Test Script Recorder

New in Apache JMeter 2.9 (Jan 31, 2013)

  • Core Improvements:
  • A new Extractor that uses CSS or jquery-like selector syntax has been introduced, it allows using either JODD or JSOUP implementations
  • JMeter can now handle different types of documents (PDF, MsOffice files, Apache OpenOffice's files...) within different elements
  • A new Regex User Parameters Pre-Processor that enables injecting input parameter names and values using a reference extracted by Regular Expression Extractor from a previous response
  • TCP Sampler has been enhanced with new options to allow setting Close Connection , SO_LINGER and End of line(EOL) byte value
  • n __escapeOroRegexpChars(,) has been introduced quote ORO regexp meta characters
  • ForEach Controller has now 2 new fields to control start and end of loop
  • Result Status Action Handler now has a new option to "Start next thread loop"
  • JMS Publisher can now send Bytes Messages
  • Memory and performance improvements: significant improvements have been done in this version on memory usage per Thread and CPU when more than one Post Processor is used as child of a Sampler
  • XPath Assertion now enables using a JMeter variable as input
  • GUI and ergonomy Improvements:
  • Search feature has been improved to search within more internal fields of elements and expand search results
  • Copy/paste is now possible between 2 JMeter instances >= 2.9 version
  • HTTP Header Manager: allow copy from clipboard to HeaderPanel, headers are supposed to be separated by new line and have the following form name:value
  • Module Controller has been improved to better render referenced controller and expand it by clicking on a new button
  • HTTP Proxy Server now has a button to add a set of default exclusions for URL patterns, this list can be configured through property : proxy.excludes.suggested
  • Rendering of target controller has been improved in HTTP Proxy Server
  • HTTP Proxy Server recording:
  • HTTP Proxy Server now automatically uses HTTP Request with Raw Post Body mode for samples that only have one unnamed argument (JSON, XML, GWT...)
  • HTTP Proxy Server does not force user to select the type of Sampler in HTTP Sampler Settings, this allows easier switch between implementations as Sampler do not have this information set anymore
  • SamplerCreator interface has been enriched to meet new requirements for plug-in providers
  • It is now possible to create binary sampler for x-www-form-urlencoded POST request by modifying proxy.binary.types property to add application/x-www-form-urlencoded
  • Improved timestamp format auto-detection when reading CSV files

New in Apache JMeter 2.6 (Feb 9, 2012)

  • NEW AND NOTEWORTHY:
  • Toolbar:
  • A new toolbar on JMeter's main window
  • JMeter start test button:
  • A new menu option and button allow to start a test ignoring the Pause Timers
  • JMeter GUI Look and Feel:
  • Allow System or CrossPlatform LAF to be set from options menu
  • JMeter GUI - duplicate node:
  • Add "duplicate node" in context menu
  • JMeter tree view - search facility:
  • Functionality to search by keyword in Samplers Tree View
  • HTTP Request - raw request pane:
  • Improve HTTP Request GUI to better show parameters without name (GWT RPC request or SOAP request for example)
  • HTTP Request - other changes:
  • Allow multiple selection in arguments panel
  • Allow to add (paste) entries from the clipboard to an arguments list
  • Ability to move variables up or down in HTTP Request
  • HTTP Request - file protocol:
  • Better support for file: protocol in HTTP sampler
  • Retrieve embedded resources with file: protocol
  • HTTP Request - Ignore embedded resources failed:
  • Enable "ignore failed" for embedded resources
  • Parent success with a embedded resource failed
  • View Results in Table - child sample display:
  • Add option to TableVisualiser to display child samples instead of parent
  • Key Store - multiple certificates:
  • Allowing multiple certificates (JKS)
  • AGGREGATE GRAPH IMPROVEMENTS:
  • Some improvements on Aggregate Graph Listener:
  • new GUI for settings
  • dynamic graph size
  • allow to change fonts for title graph and legend
  • allow to change bar color (background and text values)
  • allow to draw or not bars outlines
  • allow to select only some samplers by a regexp filter
  • allow to define Y axis maximum scale
  • Aggregate Graph bar:
  • Counter - new reset option
  • Add an option to reset counter on each Thread Group iteration
  • Functions:
  • Add a new function __RandomString to generate random Strings
  • Add a new function __TestPlanName returning the name of the current "Test Plan"
  • Add a new function __machineIP returning IP address
  • Add a new function __jexl2 to support Jexl2
  • User Defined Variable improvements:
  • Add a comment field in User Defined Variables
  • Allow to add (paste) entries from the clipboard to an arguments list
  • Ability to move up or down variables in User Defined Variables
  • View Results Tree:
  • In View Results Tree rather than showing just a message if the results are to big, show as much of the result as are configured
  • Controllers - change elements:
  • Add ability to Change Controller elements
  • JDBC pre- and post-processor:
  • Add JDBC pre- and post-processor
  • JDBC transaction isolation option:
  • Allow to set the transaction isolation in the JDBC Connection Configuration
  • Poisson Timer:
  • Add a Poisson based timer
  • GUI and OS interaction:
  • Support for file Drag and Drop.
  • Confirm Remove Dialog box:
  • Add a dialog box to confirm removing the element(s) when Remove action is called
  • The dialogue can be skipped by setting the JMeter property confirm.delete.skip=true
  • Remote batching support:
  • Use external store to hold samples during distributed testing, Added DiskStore remote sample sender: like Hold, but saves samples to disk until end of test
  • JMS Subscriber sampler:
  • With JMS Subscriber, ability to use Selectors
  • New Logger Panel:
  • A new Log Viewer has been added to the GUI and can be enabled from menu Options > Log Viewer
  • This Log Viewer shows the jmeter.log file, and useful (for example) to debug BeanShell/BSF scripts:
  • The menu item Options / Choose Language is now fully functional:
  • The menu item Options / Choose Language now changes all the displayed text to the new language provided all messages are translated. You can help on this by translating into your language.
  • Legacy JMX and JTL Avalon format support restored:
  • Support for reading/writing the original Avalon XML format of JMX (script) and JTL (sample result) files was dropped in JMeter version 2.4. JMeter can now read the Avalon format files again, however there is no support for saving files in the old format.
  • JMeter jars available from Maven repository:
  • JMeter jars are now available from Maven repository.
  • BUG FIXES:
  • HTTP Samplers and Proxy:
  • Bug 51932 - CacheManager does not handle cache-control header with any attributes after max-age
  • Bug 51918 - GZIP compressed traffic produces errors, when multiple connections allowed
  • Bug 51939 - Should generate new parent sample if necessary when retrieving embedded resources
  • Bug 51942 - Synchronisation issue on CacheManager when Concurrent Download is used
  • Bug 51957 - Concurrent get can hang if a task does not complete
  • Bug 51925 - Calling Stop on Test leaks executor threads when concurrent download of resources is on
  • Bug 51980 - HtmlParserHTMLParser double-counts images used in links
  • Bug 52064 - OutOfMemory Risk in CacheManager
  • Bug 51919 - Random ConcurrentModificationException or NoSuchElementException in CookieManager#removeMatchingCookies when using Concurrent Download
  • Bug 52126 - HttpClient4 does not clear cookies between iterations
  • Bug 52129 - Reported Body Size is wrong when using HTTP Client 4 and Keep Alive connection
  • Bug 52137 - Problems with HTTP Cache Manager
  • Bug 52221 - Nullpointer Exception with use Retrieve Embedded Resource without HTTP Cache Manager
  • Bug 52310 - variable in IPSource failed HTTP request if "Concurrent Pool Size" is enabled
  • Bug 52371 - API Incompatibility - Methods in HTTPSampler2 now require PostMethod instead of HttpMethod[Base]. Reverted to original types.
  • Bug 49950 - Proxy : IndexOutOfBoundsException when recording with Proxy server
  • Bug 52409 - HttpSamplerBase#errorResult modifies sampleResult passed as parameter; fix code which assumes that a new instance is created (i.e. when adding a sub-sample)
  • Bug 52507 - Delete Http User Parameters modifier (deprecated, obsolete)
  • Other Samplers:
  • Bug 51996 - JMS Initial Context leak newly created Context when Multiple Thread enter InitialContextFactory#lookupContext at the same time
  • Bug 51691 - Authorization does not work for JMS Publisher and JMS Subscriber
  • Bug 52036 - Durable Subscription fails with ActiveMQ due to missing clientId field
  • Bug 52044 - JMS Subscriber used with many threads leads to javax.naming.NamingException: Something already bound with ActiveMQ
  • Bug 52072 - LengthPrefixedBinaryTcpClientImpl may end a sample prematurely
  • Bug 52390 - AbstractJDBCTestElement:Memory leak and synchronization issue in perConnCache
  • Controllers:
  • Bug 51865 - Infinite loop inside thread group does not work properly if "Start next loop after a Sample error" option set
  • Bug 51868 - A lot of exceptions in jmeter.log while using option "Start next loop" for thread
  • Bug 51866 - Counter under loop doesn't work properly if "Start next loop on error" option set for thread group
  • Bug 52296 - TransactionController + Children ThrouputController or InterleaveController leads to ERROR sampleEnd called twice java.lang.Throwable: Invalid call sequence when TPC does not run sample
  • Bug 52330 - With next-Loop-On-Error after error samples are not executed in next loop
  • Listeners:
  • Bug 52357 - View results in Table does not allow for multiple result samples
  • Bug 52491 - Incorrect parsing of Post data parameters in Tree Listener / Http Request view
  • Assertions:
  • Bug 52519 - XMLSchemaAssertion uses JMeter JVM file.encoding instead of response encoding
  • Functions:
  • The CRLF example for the char function was wrong; CRLF=(0xD,0xA), not (0xC,0xA)
  • I18N:
  • General:
  • Bug 51937 - JMeter does not handle missing TestPlan entry well
  • Bug 51988 - CSV Data Set Configuration does not resolve default delimiter for header parsing when variables field is empty
  • Bug 52003 - View Results Tree "Scroll automatically" does not scroll properly in case nodes are expanded
  • Bug 27112 - User Parameters should use scrollbars
  • Bug 52029 - Command-line shutdown only gets sent to last engine that was started
  • Bug 52093 - Toolbar ToolTips don't switch language
  • Bug 51733 - SyncTimer is messed up if you a interrupt a test plan
  • Bug 52118 - New toolbar : shutdown and stop buttons not disabled when no test is running
  • Bug 52125 - StatCalculator.addAll(StatCalculator calc) joins incorrect if there are more samples with the same response time in one of the TreeMap
  • Bug 52339 - JMeter Statistical mode in distributed testing shows wrong response time
  • Bug 52215 - Confusing synchronization in StatVisualizer, SummaryReport ,Summariser and issue in StatGraphVisualizer
  • Bug 52216 - TableVisualizer : currentData field is badly synchronized
  • Bug 52217 - ViewResultsFullVisualizer : Synchronization issues on root and treeModel
  • Bug 43294 - XPath Extractor namespace problems
  • Bug 52224 - TestBeanHelper does not support NOT_UNDEFINED == Boolean.FALSE
  • Bug 52279 - Switching to another language loses icons in Tree and logs error Can't obtain GUI class from ...
  • Bug 52280 - The menu item Options / Choose Language does not change all the displayed text to the new language
  • Bug 52376 - StatCalculator#addValue(T val, int sampleCount) should use long, not int
  • Bug 49374 - Encoding of embedded element URLs depend on the file.encoding property
  • Bug 52399 - URLRewritingModifier uses default file.encoding to match text content
  • Bug 50438 - code calculates average with integer math, expecting double value
  • Bug 52469 - Changes in Support of SSH-Tunneling of RMI traffic for Remote Testing
  • Bug 52466 - Upgrade Test Plan feature : NameUpdater does not upgrade properties
  • Bug 52503 - Unify File->Close and Window close file saving behaviour
  • Bug 52537 - Help does not scroll to correct anchor when file is first loaded
  • Improvements:
  • HTTP Samplers:
  • Bug 51981 - Better support for file: protocol in HTTP sampler
  • Bug 52033 - Allowing multiple certificates (JKS)
  • Bug 52352 - Proxy : Support IPv6 URLs capture
  • Bug 44301 - Enable "ignore failed" for embedded resources
  • Other samplers:
  • Bug 51419 - JMS Subscriber: ability to use Selectors
  • Bug 52088 - JMS Sampler : Add a selector when REQUEST / RESPONSE is chosen
  • Bug 52104 - TCP Sampler handles badly errors
  • Bug 52087 - TCPClient interface does not allow for partial reads
  • Bug 52115 - SOAP/XML-RPC should not send a POST request when file to send is not found
  • Bug 40750 - TCPSampler : Behaviour when sockets are closed by remote host
  • Bug 52396 - TCP Sampler in "reuse connection mode" reuses previous sampler's connection even if it's configured with other host, port, user or password
  • Bug 52048 - BSFSampler, BSFPreProcessor and BSFPostProcessor should share the same GUI
  • Controllers:
  • Listeners:
  • Bug 52022 - In View Results Tree rather than showing just a message if the results are to big, show as much of the result as are configured
  • Bug 52201 - Add option to TableVisualiser to display child samples instead of parent
  • Bug 52214 - Save Responses to a file - improve naming algorithm
  • Bug 52340 - Allow remote sampling mode to be changed at run-time
  • Bug 52452 - Improvements on Aggregate Graph Listener (GUI and settings)
  • Resurrected OldSaveService to allow reading Avalon format JTL (result) files
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 52128 - Add JDBC pre- and post-processor
  • Bug 52183 - SyncTimer could be improved (performance+reliability)
  • Bug 52317 - Counter : Add option to reset counter on each Thread Group iteration
  • Bug 37073 - Add a Poisson based timer
  • Bug 52497 - Improve DebugSampler and DebugPostProcessor
  • Functions:
  • Bug 52006 - Create a function RandomString to generate random Strings
  • Bug 52016 - It would be useful to support Jexl2
  • __char() function now supports octal values
  • New function __machineIP returning IP address
  • Bug 51091 - New function returning the name of the current "Test Plan"
  • I18N:
  • General:
  • Bug 51892 - Default mirror port should be different from default proxy port
  • Bug 51817 - Moving variables up and down in User Defined Variables control
  • Bug 51876 - Functionality to search in Samplers TreeView
  • Bug 52019 - Add menu option to Start a test ignoring Pause Timers
  • Bug 52027 - Allow System or CrossPlatform LAF to be set from options menu
  • Bug 52037 - Remember user-set LaF over restarts.
  • Bug 51861 - Improve HTTP Request GUI to better show parameters without name (GWT RPC requests for example) (UNDER DEVELOPMENT)
  • Bug 52040 - Add a toolbar in JMeter main window
  • Bug 51816 - Comment Field in User Defined Variables control.
  • Bug 52052 - Using a delimiter to separate result-messages for JMS Subscriber
  • Bug 52103 - Add automatic scrolling option to table visualizer
  • Bug 52097 - Save As should point to same folder that was used to open a file if MRU list is used
  • Bug 52085 - Allow multiple selection in arguments panel
  • Bug 52099 - Allow to set the transaction isolation in the JDBC Connection Configuration
  • Bug 52116 - Allow to add (paste) entries from the clipboard to an arguments list
  • Bug 52160 - Don't display TestBeanGui items which are flagged as hidden
  • Bug 51886 - SampleSender configuration resolved partly on client and partly on server
  • Bug 52161 - Enable plugins to add own translation rules in addition to upgrade.properties. Loads any additional properties found in META-INF/resources/org.apache.jmeter.nameupdater.properties files
  • Bug 42538 - Add "duplicate node" in context menu
  • Bug 46921 - Add Ability to Change Controller elements
  • Bug 52240 - TestBeans should support Boolean, Integer and Long
  • Bug 52241 - GenericTestBeanCustomizer assumes that the default value is the empty string
  • Bug 52242 - FileEditor does not allow output to be saved in a File
  • Bug 51093 - when loading a selection previously stored by "Save Selection As", show the file name in the blue window bar
  • Bug 50086 - Password fields not Hidden in JMS Publisher, JMS Subscriber, Mail Reader sampler, SMTP sampler and Database Configuration
  • Bug 29352 - Use external store to hold samples during distributed testing, Added DiskStore remote sample sender: like Hold, but saves samples to disk until end of test.
  • Bug 52333 - Reduce overhead in calculating SampleResult#nanoTimeOffset
  • Bug 52346 - Shutdown detects if there are any non-daemon threads left which prevent JVM exit.
  • Bug 52281 - Support for file Drag and Drop
  • Bug 52471 - Improve Mirror Server performance by Using Pool of threads instead of launching a Thread for each request
  • Resurrected OldSaveService to allow reading Avalon format JMX files (removed in 2.4)
  • Add a dialog box to confirm removing the element(s) when Remove action is called
  • Bug 41788 - Log viewer (console window) needed as an option
  • Add option to change the pause time (default 2000ms) in the daemon thread which checks for successful JVM exit. The thread is not now started unless the pause time is greater than 0.
  • Non-functional changes:
  • fixes to build.xml: support scripts; localise re-usable property names
  • Bug 51923 - Counter function bug or documentation issue ? (fixed docs)
  • Update velocity.jar to 1.7 (from 1.6.2)
  • Update js.jar to 1.7R3 (from 1.6R5)
  • Update commons-codec 1.5 => 1.6
  • Update commons-io 2.0.1 => 2.1
  • Update commons-jexl 2.0.1 => 2.1.1
  • Update jdom 1.1 => 1.1.2
  • Update junit 4.9 => 4.10
  • Bug 51954 - Generated documents include entries which cause extra blank lines
  • Bug 52075 - JMeterProperty.clone() currently returns Object; it should return JMeterProperty
  • Updated httpcore to 4.1.4
  • Bug 49753 - Please publish jMeter artifacts on Maven central repository

New in Apache JMeter 2.4 (Jul 4, 2011)

  • JMeter now requires at least Java 1.5.
  • HTTP Proxy can now record HTTPS sessions.
  • JUnit sampler now supports JUnit4 annotations.
  • Added JSR223 (javax.script) test elements.
  • MailReader Sampler can now use any protocol supported by the underlying implementation.
  • An SMTP Sampler has been added.
  • JMeter now allows users to provide their own Thread Group implementations.
  • View Results Tree now supports more display options, including search and Regex Testing.
  • StatCalculator performance is much improved; Aggregate Report etc. need far less memory.
  • JMS samplers have been extensively reworked, and should no longer lose messages. Correlation processing is improved. JMS Publisher and Subscriber now support both Topics and Queues.
  • Many other improvements have been made, please see below and in the manual.

New in Apache JMeter 2.3.4 (Sep 29, 2009)

  • Bug 47321 - HTTPSampler2 response timeout not honored
  • Bug 47290 - Infinite loop on connection factory lookup (JMS)
  • JDBC Sampler should not close Prepared or Callable statements as these are cached
  • Bug 39509 - Once-only controller running twice
  • Change ResultCollector to only warn if the directory was not created
  • Fix some synchronisation issues in ResultCollector and SampleResult (wrong locks were being used)
  • Fixed bug introduced in 2.3.3: JMeter does not start up if there is no messages.properties file for the default Locale.
  • Fix problems with remote clients - bug introduced in 2.3.3
  • Bug 47377 - Make ClassFinder more robust and close zipfile resources
  • Fix some errors in generating the documentation (latent bug revealed in 2.3.3 when Velocity was upgraded).

New in Apache JMeter 2.3.2 (Apr 23, 2009)

  • Incompatible changes:
  • To reduce the number of classes loaded in non-GUI mode, Functions will only be found if their classname contains the string '.functions.' and does not contain the string '.gui.'. All existing JMeter functions conform to this restriction. To revert to earlier behaviour, comment or change the properties classfinder.functions.* in jmeter.properties.
  • The reference value parameter for intSum() is now optional. As a consequence, if a variable name is used, it must not be a valid integer.
  • The supplied TCPClient implementation no longer treats tcp.eolByte=0 as special. To skip EOL checking, set tcp.eolByte=1000 (or some other value which is not a valid byte)
  • Leading and trailing spaces are trimmed from variable names in function calls. For example, ${__Random(1,63, LOTTERY )} will use the variable 'LOTTERY' rather than ' LOTTERY '.
  • Synchronization has been removed from the RunningSample class (it was not fully threadsafe anyway). Developers of 3rd party add-ons that use the class may need to synchronize access.
  • Bug fixes:
  • Check that the CSV delimiter is reasonable.
  • Fix Switch Controller to work properly with functions and variables
  • Bug 44011 - application/soap+xml not treated as a text type
  • Bug 43427 - Simple Controller is only partly executed in While loop
  • Bug 33954 - Stack Overflow in If/While controllers (may have been fixed previously)
  • Bug 44022 - Memory Leak when closing test plan
  • Bug 44042 - Regression in Cookie Manager (Bug introduced in 2.3.1)
  • Bug 41028 - JMeter server doesn't alert the user when the host is defined as a loopback address
  • Bug 44142 - Function __machineName causes NPE if parameters are omitted.
  • Bug 44144 - JMS point-to-point: request response test does not work
  • Bug 44314 - Not possible to add more than one SyncTimer
  • Capture Tidy console error output and log it
  • Fix problems using Tidy(tolerant parser) in XPath Assertion and XPath Extractor
  • Bug 44374 - improve timer calculation
  • Regular Expression Extractor now deletes all stale variables from previous matches.
  • Bug 44707 - Running remote test changes internal test plan
  • Bug 44625 - Cannot have two or more FTP samplers with different "put" and "get" actions
  • Bug 40850 - BeanShell memory leak
  • Ensure ResponseCode and ResponseMessage are set for successful JDBC samples
  • FTPSampler now detects and reports failure to open the remote file
  • Class directories defined in search_paths and user.classpath no longer need trailing "/"
  • Bug 44852 SOAP/ XML-RPC Request does not show Request details in View Results Tree
  • WebService(SOAP) Sampler ResponseData now includes the EOLs sent by server
  • Bug 44910 - close previous socket (if any) in TCP Sampler
  • Bug 44912 - Filter not working in Log Parser
  • The BeanShell and BSF component documentation made some incorrect references to the "SampleResponse" object; this has been corrected to "SampleResult"
  • BSF Sampler now works properly with Javascript
  • Test Action "Stop Test" now works
  • Bug 42833 - Argument class uses LinkedHashMap in getArgumentsAsMap() to preserve ordering
  • Bug 45093 - SizeAssertion did not call getBytes()
  • Bug 45007 - Rewrite Location headers when using Proxy HTTPS spoofing
  • Use CRLF rather than LF in Proxy when returning headers to the client
  • Bug 45007 - fix content length header if content may have been changed
  • Improvements:
  • CSV files can now handle fields with embedded delimiters.
  • longSum() function added
  • Bug 43382 - configure Tidy output (warnings, errors) for XPath Assertion and Post-Processor
  • Bug 43984 - trim spaces from port field
  • Add optional comment to __log() function
  • Make Random function variable name optional
  • Reduce class loading in non-GUI mode by only looking for Functions in class names that contain '.functions.' and don't contain '.gui.'
  • Bug 43379 - Switch Controller now supports selection by name as well as number
  • Can specify list of variable names to be written to JTL files (CSV and XML format)
  • Now checks that the remoteStart options -r and -R are only used with non_GUI -n option
  • Bug 44184 - Allow header to be saved with Aggregate Graph data
  • Added "Save Table Data" buttons to Aggregate and Summary Reports - save table as CSV format with header
  • Allow most functions to be used on the Test Plan. Note __evalVar(), __split() and __regex() cannot be used on the Test Plan.
  • Allow Global properties to be loaded from a file, e.g. -Gglobal.properties
  • Add "Substring" option to Response Assertion
  • Bug 44378 - Turkish localisation
  • Add optional output variable name to Jexl function
  • Add application/vnd.wap.xhtml+xml as a text type
  • Add means to override maximum display size in View Results Tree - set the property: view.results.tree.max_size
  • Use Tidy to display XML in View Results Tree Listener (avoids fetching DTDs)
  • Bug 44487 - German translation
  • As a special case, if the HTTP Sampler path starts with "http://" or "https://" then this is used as the full URL.
  • Bug 44575 - Result Saver can now save only successful results
  • Bug 44650 - CSV Dataset now handles quoted column values
  • Bug 44600 - 1-ms resolution timer when running with Java 1.5+
  • Bug 44632 - Text input enhancement to FTP Sampler
  • Bug 42204 - add thread group name to Aggregate and Summary reports
  • FTP Sampler sets latency = time to login
  • FTP Sampler sets a URL if it can
  • Bug 41921 - add option for samplers to store MD5 of response; done for HTTP Samplers.
  • Regex Function can now also be applied to a variable rather than just the previous sample result.
  • Remove HTML Parameter Mask,HTTP User Parameter Modifier from menus as they are deprecated
  • Bug 44807 - allow session ids to be terminated by backslash
  • Bug 44784 - allow for broken server returning additional charset
  • Added TESTSTART.MS property / variable = test start time in milliseconds
  • Add POP3S and IMAPS protocols to Mail Reader Sampler.
  • Mail Reader Sampler now creates a sub-sample for each mail.
  • The supplied TCPClient implementation no longer treats tcp.eolByte=0 as special. To skip EOL checking, set tcp.eolByte=1000 (or some other value which is not a valid byte)
  • JUnit sampler GUI now also finds Test classes defined in user.classpath
  • Leading and trailing spaces are trimmed from variable names in function calls. For example, ${__Random(1,63, LOTTERY )} will use the variable 'LOTTERY' rather than ' LOTTERY '
  • Webservice(SOAP) Sampler can now load local WSDL files using the file: protocol
  • Bug 44872 - Add "All Files" filter to Open File dialogs
  • Mirror server can now be run independently (mirror-server.cmd and mirror-server.sh)
  • Bug 19128 - Added multiple file POST support to HTTP Samplers
  • Allow use of special name LAST to mean the last test run; applies to -t, -l, -j flags
  • Bug 44418/42178 - CSV Dataset file handling improvements
  • Give BeanShell, Javascript and Jexl functions access to JMeter properties via the "props" object
  • Give BSF Sampler access to JMeter Properties via "props" object
  • Add Jexl as a supported BSF Sampler language
  • Give Beanshell test elements access to JMeter Properties via "props" object
  • Added BSF PreProcessor, PostProcessor and Assertion test elements
  • All BSF elements now have access to System.out via the variable "OUT"
  • Summariser updated to handle variable names
  • Synchronisation added to Summary and Aggregate Report to try to prevent occasional lost samples
  • Bugs 44808, 39641 - Proxy support for binary requests
  • Bug 28502 - HTTP Resource Cache
  • Non-functional changes:
  • Better handling of MirrorServer startup problems and improved unit test.
  • Build process now detects missing 3rd party libraries and reports need for both binary and source archives
  • Skip BeanShell tests if jar is not present
  • Update to Xerces 2.9.1, Xalan 2.7.1, Commons IO 1.4, Commons Lang 2.4, Commons-Logging 1.1.1, XStream 1.3, XPP3 1.1.4c
  • Use properties for log/logn function descriptions
  • Check that all jmx files in the demos directory can be loaded OK
  • Update copyright to 2008; use copy tag instead of numeric character in HTML output
  • Methods called from constructors must not be overridable: make GUI init methods private
  • Make static variables final if possible
  • Split changes into current and previous