Apache JMeter Changelog

What's new in Apache JMeter 5.6.3

Jan 7, 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.1 (Jul 10, 2023)

  • 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 23, 2023)

  • New and Noteworthy:
  • Improvements:
  • Thread Groups:
  • 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:
  • Use Caffeine for caching HTTP headers instead of commons-collections4 LRUMap
  • Fetch resources referenced in <link "rel"="preload"...> elements
  • Allow more templates to format sampler names in the recorder: #{url}, #{method}, #{scheme}, #{host}, #{port}
  • Other samplers:
  • Use Caffeine for caching compiled scripts in JSR223 samplers instead of commons-collections4 LRUMap
  • Controllers:
  • Listeners:
  • Timers, Assertions, Config, Pre- & Post-Processors
  • Report / Dashboard:
  • General:
  • Add KeyStroke for start_no_timers (Start no pauses: CRTL+SHIFT+n)
  • Speed up CPU-bound tests by skipping recoverRunningVersion for elements that are shared between threads (the ones that implement NoThreadClone)
  • Use Locale.ROOT instead of default locale for toUpperCase, and toLowerCase to avoid surprises with dotless I in tr_TR locale
  • Use Java's ServiceLoader for loading plugins instead of classpath scanning. It enables faster startup
  • FunctionProperty no longer caches the value. Previously it cached the values based on iteration number only which triggered wrong results on concurrent executions. Improve HTTP HeaderManager performance when it contains many headers: skip reinitialization on each iteration
  • Use AtomicInteger and AtomicLong instead of synchronized primitives for JMeterContextService#numberOfThreads
  • Cache bean properties in TestBeanHelper and avoid synchronization, so test plans with TestBean-based elements is faster
  • Improve computation when many threads actively produce samplers by using LongAdder and similar concurrency classes to avoid synchronization in Calculator
  • Reduce synchronization contention on AbstractTestElement that are shared between threads (the ones that implement NoThreadClone)
  • Added caching for date formatters for __time function
  • Added Shortcut key event for Reset search: ctrl + alt + F, cmd + alt + F
  • TestElement has been migrated to Kotlin, so nullable types are annotated better
  • Add PI for declaring TestElement schemas so element properties are easier to access in code (see TestElementSchema, TestElement#getSchema(), TestElement#getProps())
  • Enable usage of ${...} expressions for checkbox controls (see context menus for checkboxes, however, the individual components should be adapted individually)
  • Experimental Kotlin and Java DSL for programmatic test plan generation (see Creating a plan with Kotlin DSL)
  • Non-functional changes:
  • Add Chinese Simplified Translation for Open Model Thread Group
  • Add GitHub Issue templates
  • Use Caffeine for caching customizers in TestBeanGUI instead of commons-collections4 LRUMap
  • Update Spock to 2.3-groovy-3.0 (from 2.1-groovy-3.0)
  • Update Apache commons-text to 1.10.0 (from 1.9)
  • Update docs for changeCase function. UPPER is the default
  • Update Apache commons-io to 2.12.0 (from 2.11.0)
  • Update Jackson Core to 2.15.1 (from 2.13.3)
  • Update Jackson Databind to 2.15.1 (from 2.13.3)
  • Update Tika Parser to 1.28.5 (from 1.28.3)
  • Update JSoup to 1.16.1 (from 1.15.1)
  • Update Apache commons-net to 3.9.0 (from 3.8.0)
  • Update XStream to 1.4.20 (from 1.4.19)
  • Updated Gradle to 8.1.1 (from 7.2)
  • Added Apache Httpclient5 5.1.3
  • Update Apache Freemarker to 2.3.32 (from 2.3.31)
  • Update Apache Groovy to 3.0.17 (from 3.0.11)
  • Update Apache Httpclient to 4.5.14 (from 4.5.13)
  • Update Apache Xalan to 2.7.3 (from 2.7.2)
  • Update Saxon-HE to 11.5 (from 11.5)
  • Update accessors-smart to 2.4.11 (from 2.4.8)
  • Update asm to 9.5 (from 9.3)
  • Update json-smart to 2.4.11 (from 2.4.8)
  • Update kotlin-stdlib to 1.8.21 (from 1.6.21)
  • Update kotlinx-coroutines-core to 1.8.21 (from 1.6.21)
  • Update kotlinx-coroutines-swing to 1.8.21 (from 1.6.21)
  • Update lets-plot-batik to 3.2.0 (from 2.1.1)
  • Update lets-plot-jvm to 4.3.0 (from 3.1.1)
  • Update log4j-1.2-api to 2.20.0 (from 2.17.2)
  • Update log4j-api to 2.20.0 (from 2.17.2)
  • Update log4j-core to 2.20.0 (from 2.17.2)
  • Update log4j-slf4j-impl to 2.20.0 (from 2.17.2)
  • Update neo4j-java-driver to 4.4.11 (from 4.4.6)
  • Update org.jetbrains:annotations to 24.0.1 (from 23.0.0)
  • Update ph-commons to 10.2.4 (from 10.1.6)
  • Update reactive-streams to 1.0.4 (from 1.0.3)
  • Update rsyntaxtextarea to 3.3.3 (from 3.2.0)
  • Update svgSalamander to 1.1.4 (from 1.1.2.4)
  • Update xmlgraphics-commons to 2.8 (from 2.7)
  • Update xmlresolver to 4.6.4 (from 4.2.0)
  • Added randomized test GitHub Actions matrix for better coverage of locales and time zones
  • Add OpenJDK JMH for creating microbenchmarks in JMeter code
  • Deprecate TestElement.threadName as it is not related to TestElement
  • Bug fixes:
  • HTTP Samplers and Test Script Recorder:
  • Fix NumberFormatException when counter is empty or not a digit on Proxy Settings panel
  • Encode unicode characters in filenames when sending files in HTTP Sampler
  • Other Samplers:
  • Allow SampleResult#setEndTime be set in JSR223Sampler
  • Controllers:
  • Listeners:
  • Fix Aggregated Graph component to cope with empty names of samplers
  • Fix an ArrayIndexOutOfBoundsException on HTTP parameters line on special case when key and value are empty, i.e.: "k1=v1&=&k2=v2"
  • 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:
  • Add jsonpath string to JSON Path Assertion error message so the error is easier to understand
  • Use correct number format on JSON Path Assertion. Contributed by andreaslind01 (andreaslind01 at gmail.com)
  • Functions:
  • I18N:
  • Report / Dashboard:
  • Guess the delimiter of the CSV source, when configured one seems wrong. This is in line with the behaviour of CSVSaveService.
  • Documentation:
  • 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:
  • Correct theme for darklaf on rsyntaxtextarea
  • Trim name in Argument objects.
  • 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
  • AbstractTestElement#clone might produce non-identical clones if element constructor adds a non-default property value

New in Apache JMeter 5.5 (Jun 14, 2022)

  • New and Noteworthy:
  • 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.
  • 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)
  • Twitter github
  • Changes
  • This page details the changes made in the current version only.
  • Earlier changes are detailed in the History of Previous Changes.
  • Version 5.5
  • Summary
  • New and Noteworthy
  • Incompatible changes
  • Bug fixes
  • Improvements
  • Non-functional changes
  • Known problems and workarounds
  • Thanks
  • 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.
  • Open Model Thread Group sample
  • Open Model Thread Group sample
  • 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)

New in Apache JMeter 5.4.3 (Jun 11, 2022)

  • Updated Apache Log4j2 to 2.17.0 (from 2.16.0).

New in Apache JMeter 5.2.1 (Nov 25, 2019)

  • Other samplers:
  • Bug 63926 - JDBC Connection Configuration: Add ability to set connection properties
  • Listeners:
  • Bug 63906 - NPE for InfluxDB backend listener during failover testing
  • General:
  • Bug 63910 - Broken maven poms in released 5.2 version
  • Bug 63911 - ApacheJMeter_config.jar content has changed (bin moved to run and missing files)

New in Apache JMeter 5.2 (Nov 6, 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
  • I18N
  • 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)
  • Functions
  • I18N:
  • 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 r185 (Mar 15, 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<String,String> 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<String,String> 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
  • KNOWN PROBLEMS AND WORKAROUNDS:
  • The Once Only controller behaves correctly under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).
  • The numbers that appear to the left of the green box are the number of active threads / total number of threads, the total number of threads only applies to a locally run test, otherwise it will show 0 (see Bug 55510).
  • Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers. This is due to a known Java bug, see Bug JDK-8065373 The fix is to use JDK8_u45 or later.
  • View Results Tree may fail to display some HTML code under HTML renderer, see Bug 54586. This is due to a known Java bug which fails to parse "px" units in row/col attributes. See Bug JDK-8031109 The fix is to use JDK9 b65 or later.
  • JTable selection with keyboard (SHIFT + up/down) is totally unusable with Java 7 on Mac OSX. This is due to a known Java bug JDK-8025126 The fix is to use JDK 8 b132 or later.
  • Note that under some windows systems you may have this WARNING:
  • java.util.prefs.WindowsPreferences
  • WARNING: Could not open/create prefs root node SoftwareJavaSoftPrefs at root 0
  • x80000002. Windows RegCreateKeyEx(…) returned error code 5.
  • The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore.
  • You may encounter the following error:
  • java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
  • if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature algorithm using MD2 (like md2WithRSAEncryption) or with a SSL certificate with a size lower than 1024 bits. This error is related to increased security in Java 8+.
  • To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing the Java jdk.certpath.disabledAlgorithms property. Remove the MD2 value or the constraint on size, depending on your case.
  • This property is in this file: JAVA_HOME/jre/lib/security/java.security - See Bug 56357 for details.

New in Apache JMeter 5.1 r1853635 (Feb 20, 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 r1853059 Nightly (Feb 6, 2019)

  • Fix javadoc issue

New in Apache JMeter 5.0 r1853058 Nightly (Feb 6, 2019)

  • Improvements:
  • Allow updating Test Plan instead of creating a whole one
  • Add a comment on HTTP Request saying it was created from cURL on date
  • Fixes:

New in Apache JMeter 4.0 r1823414 (Feb 13, 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.
  • Best property values are now selected on many Test Elements to ensure best practices are the defaults.
  • These are:
  • 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.
  • Loop controller and ForEach Controller now expose their current iteration as a variable named __jm__<Name of your element>__idx that you can use like this for example for a Loop Controller named MyLoopController.
  • Example:
  • ${__jm__<MyLoopController>__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.
  • 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.
  • 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
  • Functions:
  • New Function __digest provides easy computing of SHA-XXX, MDX hashes: ${__digest(MD5,Apache JMeter 4.0 rocks !,,,)} will return 0e16c3ce9b6c9971c69ad685fd875d2b
  • New Function __dateTimeConvert provides easy conversion between date formats: ${__dateTimeConvert(01 Jan 2017,dd MMM yyyy,dd/MM/yyyy,)}
  • will return 01/01/2017
  • New Function __changeCase provides ability to switch to Upper / Lower / Capitalized cases ${__changeCase(Avaro omnia desunt, inopi pauca, sapienti nihil,UPPER,)} will return AVARO OMNIA DESUNT, INOPI PAUCA, SAPIENTI NIHIL
  • New Functions __isVarDefined and __isPropDefined provide testing of properties and variables availability ${__isPropDefined(START.HMS)} and ${__isVarDefined(JMeterThread.last_sample_ok)} will return true
  • Scripting and Plugin Development:
  • You can now call SampleResult#setIgnore() if you don't want your sampler to be visible in results
  • JavaSamplerContext used by AbstractJavaSamplerClient has been enhanced with new methods to easy plugin development.
  • JMeter now distributes additional Maven sources and javadoc artifacts into Maven repository
  • Plugins can now register listeners to be notified when a Test Plan is opened/closed
  • Twitter github
  • Changes
  • This page details the changes made in the current version only.
  • Earlier changes are detailed in the History of Previous Changes.
  • Version 4.0
  • Summary
  • New and Noteworthy
  • Incompatible changes
  • Bug fixes
  • Improvements
  • Non-functional changes
  • Known problems and workarounds
  • Thanks
  • New and Noteworthy
  • 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.
  • 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.
  • Loop controller and ForEach Controller now expose their current iteration as a variable named __jm__<Name of your element>__idx that you can use like this for example for a Loop Controller named MyLoopController:
  • ${__jm__<MyLoopController>__idx}
  • . See Bug 61802
  • 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.
  • 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
  • Functions
  • New Function __digest provides easy computing of SHA-XXX, MDX hashes:
  • ${__digest(MD5,Apache JMeter 4.0 rocks !,,,)}
  • will return 0e16c3ce9b6c9971c69ad685fd875d2b
  • New Function __dateTimeConvert provides easy conversion between date formats:
  • ${__dateTimeConvert(01 Jan 2017,dd MMM yyyy,dd/MM/yyyy,)}
  • will return 01/01/2017
  • New Function __changeCase provides ability to switch to Upper / Lower / Capitalized cases
  • ${__changeCase(Avaro omnia desunt, inopi pauca, sapienti nihil,UPPER,)}
  • will return AVARO OMNIA DESUNT, INOPI PAUCA, SAPIENTI NIHIL
  • New Functions __isVarDefined and __isPropDefined provide testing of properties and variables availability
  • ${__isPropDefined(START.HMS)}
  • will return true
  • ${__isVarDefined(JMeterThread.last_sample_ok)}
  • will return true
  • Scripting and Plugin Development
  • You can now call SampleResult#setIgnore() if you don't want your sampler to be visible in results
  • JavaSamplerContext used by AbstractJavaSamplerClient has been enhanced with new methods to easy plugin development.
  • JMeter now distributes additional Maven sources and javadoc artifacts into Maven repository
  • Plugins can now register listeners to be notified when a Test Plan is opened/closed
  • Live Reporting and Web Report:
  • InfluxDB backend listener now allows you to add custom tags by adding them with prefix TAG_, see Bug 61794
  • In Web Report responseTime distribution graph is more precise
  • Some bugfixes have been made on report generation, see Bug 61900, Bug 6190061956, Bug 61899. Graphs Latency Vs Request and Response Time Vs Request did not exceed 1000 RPS due to Bug 61962
  • Configuration of JMeter environment:
  • JVM settings for the JMeter start scripts can be placed in a separate file (bin/setenv.sh on Unix and binsetenv.bat on Windows), that gets called on startup. The startup script itself does not have to be edited anymore.
  • Incompatible changes:
  • Start time and End date of Thread Group have been removed, see Bug 61549
  • In distributed testing, mode Hold has been removed. Use alternative and more efficient modes
  • For 3rd party plugins, the following method in org.apache.jmeter.gui.tree.JMeterTreeNode has been dropped for migration to Java 9 ( Bug 61529)
  • public Enumeration<JMeterTreeNode> children()
  • tearDown Thread Group will now run on stop and shutdown of a test by default. If you don't want this behaviour, uncheck Run tearDown Thread Groups after shutdown of main threads on Test Plan element, see Bug 61656
  • Properties sampleresult.getbytes.headers_size and sampleresult.getbytes.body_real_size have been dropped, see Bug 61587
  • JMeter will now save your test plan whenever you run it. This behaviour can be controlled by property save_automatically_before_run, see Bug 61731
  • Workbench element has been dropped, you now directly add Non Test Element as children of Test Plan. When loading a Test Plan that contains the element JMeter will move the Mirror Server, Property Display and HTTP(s) Test Script Recorder elements as direct children of Test Plan. For any other element, it will create a Test Fragment element called Workbench Test Fragment and move the elements in it.
  • Following classes have been dropped (org.apache.jmeter.functions.util.ArgumentEncoder, org.apache.jmeter.functions.util.ArgumentDecoder), see Pull request #335
  • In JMS Point-to-Point sampler, setting timeout to 0 will now mean infinite timeout while previously it would be switched to 2000 ms, see Bug 61829
  • When Assertions are at different scopes, they are executed starting with the most OUTER one to the most INNER one. See Bug 61846
  • JMeter now starts by default using English locale. This change is due to missing translations in many supported languages. You can change locale by modifying in jmeter and jmeter.bat (or preferably setenv.sh/setenv.bat) the JVM_ARGS system property values. We'd also be very grateful if you can contribute translations in supported languages.
  • SwitchController now trims by default the content of switch to avoid issue related to unwanted spaces. See Bug 61771
  • JMeter JVM heap settings have changed from -Xms512m -Xmx512m to -Xms1g -Xmx1g
  • Improvements:
  • HTTP Samplers and Test Script Recorder:
  • Pull request #316 - Warn about empty truststore loading. Contributed by Vincent Herilier (https://github.com/vherilier)
  • Bug 61639 - HTTP(S) Test Script Recorder: In request filtering tab, uncheck by default "Notify Child Listeners of filtered samplers"
  • Bug 61672 - HTTP(S) Test Script Recorder: Have the ability to choose the sampler name while keeping the ability to just add a prefix
  • Bug 53957 - HTTP Request: In Parameters tab, allow pasting of content coming from Firefox and Chrome (unparsed)
  • Bug 61587 - Drop properties sampleresult.getbytes.headers_size and sampleresult.getbytes.body_real_size
  • Bug 61843 - HTTP(S) Test Script Recorder: Add SAN to JMeter generated CA Certificate. Contributed by Matthew Buckett
  • Bug 61901 - Support for https.cipherSuites System property. Contributed by Jeremy Arnold (jeremy at arnoldzoo.org)
  • Other samplers:
  • Bug 61544 - JMS Point-to-Point Sampler: Enhance communication styles with read, browse, clear. Based on a contribution by Benny van Wijngaarden (benny at smaragd-it.nl)
  • Bug 61829 - JMS Point-to-Point: If Receive Queue is empty and a timeout is set, it is not taken into account. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61739 - Java Request / JavaSamplerClient: Improve org.apache.jmeter.protocol.java.sampler.JavaSamplerContext
  • Bug 61762 - Start Next Thread Loop should be used everywhere
  • Controllers:
  • Bug 61675 - If Controller: Use expression by default and add a warning when the other mode is used. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61770 - Module Controller: Inform user in UI that he needs to have at least one Controller in his plan. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61771 - SwitchController: Switch field should be trimmed by safety
  • Listeners:
  • Bug 57760 - View Results Tree: Cookie Header is wrongly shown as empty (no cookies) when viewing a recorder Sample Result. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61769 - View Results Tree: Use syntax highlighter in XPath Tester, JSON Path Tester and CSS/JQuery Tester. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61776 - View Results Tree: Expansion of Add expand/collapse all menu in render XML view. Contributed by Maxime Chassagneux and Graham Russell
  • Bug 61852 - View Results Tree: Add a Boundary Extractor Tester
  • Bug 61794 - Influxdb backend: Add as many custom tags as wanted by just create new lines and prefix theirs name by "TAG_" on the GUI backend listener
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 60213 - New component: Boundary based extractor
  • Bug 61845 - New Component JSON Assertion based on AtlanBH JSON Path Assertion donated to JMeter-Plugins and migrated into JMeter core by Artem Fedorov (artem at blazemeter.com)
  • Bug 61931 - New Component: Precise Throughput Timer, timer that produces Poisson arrivals with given constant throughput. Contributed by Vladimir Sitnikov (sitnikov.vladimir at gmail.com)
  • Bug 61644 - HTTP Cache Manager: "Use Cache-Control/Expires header when processing GET requests" should be checked by default
  • Bug 61645 - Response Assertion: Add ability to assert on Request Data
  • Bug 51140 - Response Assertion: add ability to set a specific error/failure message that is later shown in the Assertion Result. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61534 - Convert AssertionError to a failed assertion, allowing users to use assert in their code. Fixing a regression introduced in 3.2
  • Bug 61756 - Extractors: Improve label name "Reference name" to make it clear what it makes
  • Bug 61758 - Apply to: field in Extractors, Assertions: When entering a value in JMeter Variable Name, the radio box JMeter Variable Name should be selected by default. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61846 - Scoped Assertion should follow same order of evaluation as Post Processors
  • Functions:
  • Bug 61724 - Add __digest function to provide computing of Hashes (SHA-XXX, MDX). Based on a contribution by orimarko at gmail.com
  • Bug 61735 - Add __dateTimeConvert function to provide date formats conversions. Based on a contribution by orimarko at gmail.com
  • Bug 61760 - Add __isPropDefined and __isVarDefined functions to know if property or variable exist. Contributed by orimarko at gmail.com
  • Bug 61759 - Add __changeCase function to change different cases of a string. Based on a contribution by orimarko at gmail.com
  • Bug 61561 - Function helper dialog should display exception in result
  • Bug 61738 - Function Helper Dialog: Add Copy in Generate and clarify labels. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 62027 - Help: Introduce property help.local to allow choosing between local (offline) documentation and online documentation
  • Bug 61593 - Remove Detail, Add, Add from Clipboard, Delete buttons in Function Helper GUI
  • I18N:
  • Bug 61606 - Translate button Browse… in some elements (which use FileEditor class)
  • Bug 61747 - HTTP(S) Test Script Recorder: add the missing doc to "Create transaction after request (ms)"
  • Report / Dashboard:
  • Bug 61871 - Reduce jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity default value from 500ms to 100ms
  • Bug 61879 - Remove useless files in HTML report template
  • General:
  • Bug 61591 - Drop Workbench from test tree. Implemented by Artem Fedorov (artem at blazemeter.com) and contributed by BlazeMeter Ltd.
  • Bug 61549 - Thread Group: Remove start and end date
  • Bug 61529 - Migration to Java 9. Partly contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61709 - SampleResult: Add a method setIgnore() to make JMeter ignore the SampleResult and not send it to listeners
  • Bug 61806 - Allow to use SampleResult#setIgnore() in post-processors and assertions script (JSR223 elements)
  • Bug 61607 - Add browse button in all BeanShell elements to select BeanShell script
  • Bug 61627 - Don't clear LogView anymore when clicking on Warning/Errors Indicator
  • Bug 61629 - Add Think Times to Children menu should not consider disabled elements
  • Bug 61655 - SampleSender: Drop HoldSampleSender implementation
  • Bug 61656 - tearDown Thread Group should run by default at stop or shutdown of test
  • Bug 61659 - JMeterVariables#get() should apply toString() on non string objects
  • Bug 61555 - Metaspace should be restricted as default
  • Bug 61693 - JMeter aware of Docker (-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap)
  • Bug 61694 - Add -server option in jmeter.bat
  • Bug 61697 - Introduce Darcula Look And Feel to make JMeter UI more attractive
  • Bug 61704 - Toolbar: Improve a bit the right part
  • Bug 61731 - Enhance Test plan Backup with option to save before run. Based on a contribution by orimarko at gmail.com
  • Bug 61640 - JSR223 Test Elements: Enable by default caching. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61785 - Add Help → Useful links to create issues and download nightly build
  • Bug 61808 - Fix main frame position. Implemented by Artem Fedorov (artem at blazemeter.com) and contributed by BlazeMeter Ltd.
  • Bug 61802 - Loop / ForEach Controller should expose a variable for current iteration. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Pull request #349 - Add i18n resources(zh_CN). Contributed by Helly Guo (https://github.com/hellyguo)
  • Pull request #351 - Fixed about dialog position on first view. Contributed by Graham Russell (graham at ham1.co.uk)
  • Pull request #352 - Menu bar - added mnemonics to more menu items. Contributed by Graham Russell (graham at ham1.co.uk)
  • Pull request #353 - Re-wrote some existing tests in Spock. Contributed by Graham Russell (graham at ham1.co.uk)
  • Bug 61919 - UX: Reorder Menus. Contributed by Graham Russell (graham at ham1.co.uk)
  • Bug 61920 - Plugins: Add ability to listen to Test Plan loading/closing. Contributed by Peter Doornbosch (https://bitbucket.org/pjtr/)
  • Bug 61935 - Plugins: Let GUI component (dynamically) decide whether it can be added via the menu or not. Contributed by Peter Doornbosch (https://bitbucket.org/pjtr/)
  • Bug 61969 - When changing LAF through GUI, user should be informed that it is better to restart
  • Bug 61970 - JMeter now uses English as default locale to avoid missing translations in some locales make UI look weird
  • Bug 56368 - Create and Deploy source artifacts to Maven central
  • Bug 61973 - Create and Deploy javadoc artifacts to Maven central
  • Pull request #371 - Fix example in documentation for XPath Assertion. Contributed by Konstantin Kalinin (kkalinin at hotmail.com)
  • Bug 62039 - Distributed testing: Provide ability to use SSL
  • Non-functional changes:
  • Updated to bsh-2.0b6 (from bsh-2.0b5)
  • Updated to groovy-all-2.4.13 (from groovy-all-2.4.12)
  • Updated to rhino-1.7.7.2 (from rhino-1.7.7.1)
  • Updated to tika-core and tika-parsers 1.17 (from 1.16)
  • Updated to commons-dbcp2-2.2.0 (from 2.1.1)
  • Updated to caffeine 2.6.1 (from 2.5.5)
  • Updated to commons-codec-1.11 (from 1.10)
  • Updated to commons-io-2.6 (from 2.5)
  • Updated to commons-lang3-3.7 (from 3.6)
  • Updated to commons-pool2-2.5.0 (from 2.4.2)
  • Updated to asm-6.0 (from 5.2)
  • Updated to jsoup-1.11.2 (from 1.10.3)
  • Updated to cglib-nodep-3.2.6 (from 3.2.5)
  • Updated to ph-css 6.0.0 (from 5.0.4)
  • Updated to ph-commons 9.0.0 (from 8.6.6)
  • Updated to log4j2 2.10.0 (from 2.8.2)
  • Updated to httpcore 4.4.9 (from 4.4.7)
  • Updated to httpclient 4.5.5 (from 4.5.3)
  • Updated to jodd 4.1.4 (from 3.8.6)
  • Bug 61642 - Improve FTP test coverage
  • Bug 61641 - Improve JMS test coverage
  • Bug 61651 - Improve TCP test coverage
  • Bug 61651 - Improve OS test coverage. Partly contributed by Aleksei Balan (abalanonline at gmail.com)
  • Pull request #319 - Removed commented out code. Contributed by Graham Russell (graham at ham1.co.uk)
  • Pull request #322 - General JavaDoc cleanup. Contributed by Graham Russell (graham at ham1.co.uk)
  • Pull request #323 - Extracted method and used streams to improve readability. Contributed by Graham Russell (graham at ham1.co.uk)
  • Pull request #324 - Save backup refactor. Contributed by Graham Russell (graham at ham1.co.uk)
  • Pull request #327 - Utilising more modern Java, simplifying code and formatting code and comments. Contributed by Graham Russell (graham at ham1.co.uk)
  • Pull request #332 - Add the spock framework for groovy unit tests. Contributed by Graham Russell (graham at ham1.co.uk)
  • Pull request #334 - Enable running of JUnit tests from within IntelliJ with default config. Contributed by Graham Russell (graham at ham1.co.uk)
  • Pull request #335 - Removed functions.util.* as they don't seem to be used (for many years). Contributed by Graham Russell (graham at ham1.co.uk)
  • Bug 61867 - Pull request #345 - Updated to latest checkstyle (v8.5), Added many more rules to checkstyle, Included checking of test files and more file types. Contributed by Graham Russell (graham at ham1.co.uk)
  • Pull request #350 - Parallelised unit tests. Contributed by Graham Russell (graham at ham1.co.uk)
  • Bug 61966 - Setup Test Results Analyzer in jenkins
  • Pull request #343 - Reduce the size of some images in the documentation. Contributed by Graham Russell (graham at ham1.co.uk)
  • Bug fixes:
  • HTTP Samplers and Test Script Recorder:
  • Bug 61569 - JMS Point-to-Point Test Plan: Synchronization issue when putting reply. Contributed by Igor Panainte (panainte.i at gmail.com)
  • Other Samplers:
  • Bug 61698 - Test Action: It stop is selected, samplers following Test Action can run
  • Bug 61707 - Test Action: Target is ignored when pause is selected, so it should be disabled
  • Bug 61827 - JMSPublisher: Don't add new line at the end of the file. Contributed by Graham Russell (graham at ham1.co.uk)
  • Controllers:
  • Bug 61556 - Clarify in documentation performance impacts of ${} var usage in IfController and groovy. Contributed by Justin McCartney (be_strew at yahoo.co.uk)
  • Bug 61713 - Test Fragment has option to Change Controller and Insert Parent. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61965 - Module and Include Controller should not allow to add meaningless elements in their context.
  • Bug 62062 - ThroughputController: StackOverFlowError triggered when throughput=0 (Total Executions or Percentage Executions) Partly implemented by Artem Fedorov (artem.fedorov at blazemeter.com) and contributed by BlazeMeter Ltd.
  • Listeners:
  • Bug 61742 - BackendListener: fix default value for backend_graphite.send_interval
  • Bug 61878 - BackendListener: NPE if BackendListenerClient#getDefaultParameters returns null
  • Bug 61950 - View Results Tree: Content-Type audio/mpegurl is wrongly considered as binary
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 61716 - Header Manager: When pasting Headers from Firefox or Chrome spaces are introduced as first character of value
  • Functions
  • Bug 61588 - Better log message for __RandomDate() function
  • Bug 61619 - In Function Helper Dialog, the 1st function doesn't display default parameters
  • Bug 61628 - If split string has empty separator default separator is not used
  • Bug 61752 - __RandomDate: Function does not allow missing last parameter used for variable name
  • Report / Dashboard:
  • Bug 61807 - Web Report: fix error in getTop5ErrorMetrics. Contributed by Graham Russell (graham at ham1.co.uk)
  • Bug 61900 - Report Generator: Report generation fails if separator is a regex reserved char like |
  • Bug 61925 - CsvSampleReader does not increment row in nextSample(). Contributed by Graham Russell (graham at ham1.co.uk)
  • Bug 61956 - Report Generation: -f of -forceDeleteResultFile option does not work. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61899 - Report Generation: When jmeter.save.saveservice.print_field_names is false and sample_variables are set report generation fails. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61962 - Latency Vs Request and Response Time Vs Request graphs do not exceed 1000 RPS. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • General:
  • Bug 61661 - Avoid startup/shutdown problems due to 3rd party Thread Listener plugins throwing RuntimeException
  • Bug 61625 - File Editor used in BeanInfo behaves strangely under all LAFs with impact on CSVDataSet, JSR223, BSF, Beanshell Element
  • Bug 61844 - Maven pom.xml: Libraries used in testing should have scope test
  • Bug 61842 - Saving with no changes causes a save and duplicate, identical backup file

New in Apache JMeter 3.3 r1808647 (Oct 6, 2017)

  • New and noteworthy:
  • JMeter does not yet support JAVA 9, next JMeter version will support it, you can help and follow progress on this item in Bug 61529.
  • Using last minor version of JAVA 8 is advised to avoid facing any JDK bug.
  • Core improvements:
  • HTTP Sampler now supports Brotli decompression.
  • CacheManager now completely supports Vary header.
  • InfluxDB BackendListener now supports sending results to InfluxDB through UDP protocol.
  • It has also been enhanced to send number of errors by response code and message for each transaction
  • TCP Sampler now computes latency, see Bug 60156
  • Upgraded dependencies to last available versions bringing performance improvements and bug fixes
  • Continued to improve the quality of our code and tests coverage. See Quality report
  • UX improvements:
  • More work has been done to better support HiDPI.
  • Some bugs, that crept in with the work on lowering the memory usage of View Results Tree, were fixed.
  • The constant DEFAULT_IMPLEMENTATION was removed from CookieManager, as it lost it purpose with the removal of the alternate HTTP Client implementation in the last release
  • JDBC Sampler UX has been improved by adding select boxes for drivers and validation queries.
  • If Controller and While Controller UX have been improved
  • Report/Dashboard improvements:
  • 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
  • IMPROVEMENTS:
  • HTTP Samplers and Test Script Recorder:
  • Bug 61056 - HTTP : Support brotli decoding
  • Bug 61135 - CookieManager : Drop Implementation select box and cleanup class
  • Bug 61492 - HTTP(S) Test Script Recorder : Add the possibility to change the value of proxy.pause in the GUI
  • Other samplers:
  • Bug 61320 - Test Action : Set duration to 0 by default
  • Bug 61504 - JDBC Connection Configuration : Set Max Number of Connections to 0 by default
  • Bug 61505 - JDBC Connection Configuration : Set "Validation Query" to empty by default to use isValid method of JDBC driver
  • Bug 61506 - JDBC Connection Configuration : Add a list for main databases validation queries for "Validation Query" attribute
  • Bug 61507 - JDBC Connection Configuration : Add a list for main databases JDBC driver class name for "JDBC Driver class" attribute
  • Bug 61525 - OS Process Sampler : Add browser button to Command and Working directory fields
  • Bug 60156 - TCPSampler : Latency is not measured for TCP Sampler. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61039 - CSV data set config : Add browser button to Filename field
  • Bug 61527 - CSV data set config : Add a list for main file encoding values for File encoding attribute
  • Controllers:
  • Bug 61131 - IfController and WhileController : Improve UX
  • Listeners:
  • Bug 61167 - InfluxdbBackendListener : add number of errors by response code and message for each transaction
  • Bug 61068 - Introduce property resultcollector.action_if_file_exists to control the popup "File already exists" when starting a test
  • Bug 61457 - InfluxDB backend listener client : Support sending result to InfluxDB through UDP protocol. Partly based on Pull request #302 by Junlong Wu (github id mybreeze77)
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 61176 - Pull request #298 Cache responses that have vary header in the CacheManager.
  • Functions:
  • Bug 61040 - Add a time shifting function
  • Bug 61126 - Function Helper Dialog : Add a field that shows execution result
  • Bug 61508 - Add a random date within a specific date range function
  • I18N
  • Bug 61509 - Better label/translation/documentation for labels start and max for Counter element
  • Report / Dashboard:
  • Bug 61481 - Help Menu Item to export transaction for Web report
  • General:
  • When looking for classes in ActionRouter, fall back to location of the jar, where ActionRouter is loaded from. Provided by Emilian Bold (emi at apache.org)
  • Bug 61510 - Set 'Max Number of Connections' to 0 into 'JDBC Connection Configuration' for the 'JDBC Load Test template'
  • Bug 61399 - Make some bin and extras scripts Shellcheck compatible. Contributed by Wolfgang Wagner (internetwolf2000 at hotmail.com)
  • Non-functional changes:
  • Updated to groovy 2.4.12 (from 2.4.10)
  • Updated to caffeine 2.5.5 (from 2.4.0)
  • Updated to commons-jexl3 3.1 (from 3.0)
  • Updated to ph-css 5.0.4 (from 5.0.3)
  • Updated to ph-commons 8.6.6 (from 8.6.0)
  • Updated to log4j2 2.8.2 (from 2.8.1)
  • Updated to xmlgraphics-commons 2.2 (from 2.1)
  • Updated to jodd 3.8.6 (from 3.8.1)
  • Updated to xstream 1.4.10 (from 1.4.9)
  • Updated to Apache Tika 1.16 (from 1.14)
  • Updated to jsoup-1.10.3 (from 1.10.2)
  • Updated to commons-lang3 3.6 (from 3.5)
  • Updated to json-path 2.4.0 (from 2.2.0)
  • Updated to httpcore 4.4.7 (from 4.4.6)
  • Bug 61438 - Change the cryptographic signature of packages from sha-1 to sha-512
  • BUG FIXES:
  • HTTP Samplers and Test Script Recorder:
  • Bug 61384 - Don't set the charset on enclosing multipart/form-data header. It irritates some servers.
  • The charset was added sometime back while refactoring to use a newer API of http client. See Bug 56141 - for more info.
  • Bug 61456 - java.lang.ArrayIndexOutOfBoundsException when recording with JMeter and weird Basic Auth Authorization header
  • Bug 61395 - Large server response truncation can impact recording
  • Other Samplers:
  • Bug 60889 - JMeter JDBC sample calls SELECT USER() when testing with MySQL JDBC due to Connection#toString call for response headers.
  • Bug 61259 - JDBC Request : since JMeter 3.0, when JDBC auto-commit is false, a rollback statement happens each time a Request is executed. Partly contributed by Liu XP (liu_xp2003 at sina.com)
  • Bug 61319 - Fix regression: SMTP Sampler could not send mails, when no attachments were specified.
  • Controllers:
  • Bug 61375 - Use system DNS resolver as last resort, when resolving entries in the static host table.
  • Listeners:
  • Bug 61005 - View Results Tree - Browser Response Data is not clearing
  • Bug 61121 - InfluxdbBackendListenerClient: Only all percentiles are sent, not KO and OK
  • Bug 60961 - Try to keep status of selected and expanded elements in View Results Tree when new elements are added.
  • Bug 61198 - Backend Listener does not work properly in main script when included scripts also contain Backend Listener
  • Bug 61493 - Max/Min threads are interchanged in Graphite and InfluxDB backend listener
  • Timers, Assertions, Config, Pre- & Post-Processors:
  • Bug 58743 - Pull request #293 TableEditor can't be saved, when using two or more instances. Bugfix provided by Emilian Bold (emi at apache.org)
  • Bug 61314 - HTTP URL Re-writing Modifier doesn't replace existing jsessionid in http sampler, but adds it to the end
  • Bug 61336 - BeanShell Assertion : mistake in Chinese translation
  • Functions:
  • Bug 61258 - StringFromFile function is mentioned twice in the Function helper dialog
  • Bug 61260 - __XPath function returns null despite XPath checker founds matches
  • Bug 58876 - TestPlanName function returns null for a newly saved Test Plan and uses previously opened one for a new one
  • I18N
  • Report / Dashboard:
  • Bug 61129 - Report/Dashboard : If response code is empty but a failureMessage is present, Errors and Top 5 Errors are not accurate. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 61151 - Report/Dashboard : Top 5 Errors by Sampler and Errors : If assertion contains html code, the html part is hidden
  • General:
  • Bug 60743 - Stopping / Shutting down Test might create a deadlock due to HTTPCORE-446, fixed by HttpCore upgrade to 4.4.7
  • Bug 60994 - Fix some typo in comments or log messages. Pull request #289 and Pull request #290
  • Bug 61011 - Replace occurrences count is not correct (Path and Host replacement are counted twice)
  • Bug 61026 - Cannot run program "keytool": CreateProcess error=2 when starting JMeter 3.2 in GUI mode
  • Bug 61054 - Endless loop in JOrphanUtils#replaceAllWithRegex when regex is contained in replacement
  • Bug 60995 - HTTP Test Script Recorder: Port field is very small under some L&F
  • Bug 61073 - HTTP(S) Test Script Recorder panel have some fields with bad size on HiDPI screen or GTK+ L&F on Linux/XWayland
  • Bug 57958 - Fix transaction sample not generated if thread stops/restarts. Implemented by Artem Fedorov (artem at blazemeter.com) and contributed by BlazeMeter Ltd.
  • Bug 61050 - Handle uninitialized RessourceBundle more gracefully, when calling JMeterUtils#getResString.
  • Bug 61100 - Invalid GC Log Filename on Windows
  • Bug 57962 - Allow to use variables ( from User Defined Variables only ) in all listeners in slave mode
  • Bug 61270 - Fixed width fonts too small in text areas to read under HiDPI (user manual bug)
  • Bug 61292 - Make processing of samples in reporter more robust.
  • Bug 61359 - When cutting an element from Tree, Test plan is not marked as dirty
  • Bug 61380 - JMeter shutdown using timers releases thundering herd of interrupted samplers
  • Bug 57055 - CheckDirty.doAction should clear previousGuiItems for SUB_TREE_SAVED
  • THANKS:
  • Anass Benomar (abenomar at umanis.com, Mithrandir0407 at github)
  • Anthony Kearns (anthony.kearns atrightside.co)
  • Emilian Bold (emi at apache.org)
  • Liu XP (liu_xp2003 at sina.com)
  • Ubik Load Pack
  • Wolfgang Wagner (internetwolf2000 at hotmail.com)
  • Junlong Wu (github id mybreeze77)
  • We also thank bug reporters who helped us improve JMeter.
  • For this release we want to give special thanks to the following reporters for the clear reports and tests made after our fixes - Liu XP (liu_xp2003 at sina.com) and Alexander Podelko (apodelko at yahoo.com)
  • Apologies if we have omitted anyone else.
  • Known problems and workarounds:
  • View Results Tree may freeze rendering large response particularly if this response has no spaces, see Bug 60816. This is due to an identified Java Bug UI stuck when calling JEditorPane.setText() or JTextArea.setText() with long text without space.
  • The Once Only controller behaves correctly under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).
  • The numbers that appear to the left of the green box are the number of active threads / total number of threads, the total number of threads only applies to a locally run test, otherwise it will show 0 (see Bug 55510).
  • Note that under some windows systems you may have this WARNING:
  • java.util.prefs.WindowsPreferences
  • WARNING: Could not open/create prefs root node SoftwareJavaSoftPrefs at root 0
  • x80000002. Windows RegCreateKeyEx(…) returned error code 5.
  • The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore.
  • You may encounter the following error:
  • java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
  • if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature algorithm using MD2 (like md2WithRSAEncryption) or with a SSL certificate with a size lower than 1024 bits. This error is related to increased security in Java 8+.
  • To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing the Java jdk.certpath.disabledAlgorithms property. Remove the MD2 value or the constraint on size, depending on your case.
  • This property is in this file:
  • JAVA_HOME/jre/lib/security/java.security
  • See Bug 56357 for details.
  • Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers. This is due to a known Java bug, see Bug JDK-8065373 The fix is to use JDK8_u45 or later.
  • View Results Tree may fail to display some HTML code under HTML renderer, see Bug 54586. This is due to a known Java bug which fails to parse "px" units in row/col attributes. See Bug JDK-8031109 The fix is to use JDK9 b65 or later.
  • JTable selection with keyboard (SHIFT + up/down) is totally unusable with Java 7 on Mac OSX. This is due to a known Java bug JDK-8025126 The fix is to use JDK 8 b132 or later.

New in Apache JMeter 3.0 r1743807 (Aug 2, 2016)

  • NEW AND NOTEWORTHY:
  • 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
  • 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
  • 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.
  • You can now configure Source Address (IP Spoofing like feature) and "Save response as MD5 hash" in Advanced Tab
  • 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 :
  • 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.
  • 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 - HTP 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
  • 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)

New in Apache JMeter 2.13 (Mar 16, 2015)

  • 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.
  • 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.
  • Distributed Testing performance:
  • Since JMeter 2.13, Stripping modes (StrippingBatch being the default mode) now also strip responses from SubResults improving consumed network bandwidth.
  • 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.
  • 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
  • Improvements:
  • HTTP Samplers and Test Script Recorder
  • Bug 25430 - HTTP(S) Test Script Recorder : Make it populate HTTP Authorization Manager.
  • Bug 57381 - HTTP(S) Test Script Recorder should display an error if Target Controller references a Recording Controller and no Recording Controller exists.
  • 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)
  • Bug 48799 - Add time to establish connection to available sample metrics.
  • Bug 57500 - Introduce retry behavior for distributed testing.
  • Other samplers
  • Bug 57322 - JDBC Test elements: add ResultHandler to deal with ResultSets(cursors) returned by callable statements.
  • 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

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 r1437961 (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.8 r1393162 (Oct 19, 2012)

  • Core Improvements:
  • Thread Group: New Option Delay thread creation until needed.
  • New Option "Delay thread creation until needed" that will create and start threads when needed instead of creating them on Test startup.
  • This new feature allows running tests with a huge number of short lived threads.
  • HTTP Cookie Manager (IPv6 support):
  • Add HTTPClient 4 cookie implementation in JMeter.
  • Cookie Manager has now the default HC3.1 implementation and a new choice HC4 implementation (compliant with IPv6 address).
  • Memory and performance improvements:
  • Significant improvements have been done in this version on memory usage of JMeterThread
  • JSR223 Elements (enable using Groovy, scala... as scripting languages) have been improved to enable usage of Compilable interface when available to boost CPU usage and caching of Compilation when scripts are used as Files.
  • HTTP Request: PATCH verb:
  • Add PATCH verb to HTTP sampler.
  • OS Process Sampler:
  • Allow defining files for stdout/stderr/stdin.
  • HTTP Request: HTTPClient 4 is now the default implementation:
  • HTTPClient 4 is now the default HTTP Request implementation (and for Proxy element when generating HTTP requests).
  • Previously the default was the HTTP Java implementation (i.e. the implementation provided by the JVM).
  • HTTP Request:
  • Add Embedded URL Filter to HTTP Request Defaults Control (it was already present for HTTP Requests).
  • Miscellanous:
  • CSV Dataset : Embedded new lines are now supported in quoted data
  • JMX files now contain the version of JMeter that created the file
  • JMeter Version is now available as property "jmeter.version".
  • Reporting Improvements:
  • Response Time Graph:
  • Add a new visualizer Response Time Graph to draw a line graph showing the evolution of response time for a test.
  • View Results in Table:
  • Add latency to View Result in Table listener.
  • Aggregate Graph:
  • Small improvements: legend at left or right is now on 1 column (instead of 1 large line).
  • GUI and ergonomy Improvements:
  • HTTP Proxy Server simplifications.
  • HTTPS Spoofing options have been removed from Proxy as HTTPS recording is available.
  • HTTP Proxy Server:
  • Allow URL Filters to be pasted from clipboard.
  • User Interface in GNOME 3:
  • Display 'Apache JMeter' title in app title bar in Gnome .
  • Known bugs:
  • The Once Only controller behaves correctly under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).
  • Listeners don't show iteration counts when a If Controller has a condition which is always false from the first iteration (see Bug 52496 ). A workaround is to add a sampler at the same level as (or superior to) the If Controller. For example a Test Action sampler with 0 wait time (which doesn't generate a sample), or a Debug Sampler with all fields set to False (to reduce the sample size).
  • Changing language can break part of the configuration of the following elements (see Bug 53679 )
  • CSV Data Set Config (sharing mode will be lost)
  • Constant Throughput Timer (Calculate throughput based on will be lost)
  • Bug fixes:
  • HTTP Samplers and Proxy:
  • Bug 53521 - Cache Manager should cache content with Cache-control=private
  • Bug 53522 - Cache Manager should not store at all response with header "no-cache" and store other types of Cache-Control having max-age value
  • Bug 53838 - Pressing "Stop" does not interrupt the TCP sampler
  • Bug 53911 - JmeterKeystore does not allow for key down the list of certificate
  • Other Samplers:
  • Bug 53348 - JMeter JMS Point-to-Point Request-Response sampler doesn't work when Request-queue and Receive-queue are different
  • Bug 53357 - JMS Point to Point reports too high response times in Request
  • Response Mode:
  • Bug 53440 - SSL connection leads to ArrayStoreException on JDK 6 with some
  • KeyManagerFactory SPI:
  • Bug 53511 - access log sampler SessionFilter throws NullPointerException - cookie manager not initialized properly
  • Bug 53715 - JMeter does not load WSDL
  • Controllers:
  • Listeners:
  • Bug 53742 - When jmeter.save.saveservice.sample_count is set to true, elapsed time read by listener is always equal to 0
  • Bug 53774 - RequestViewRaw does not show headers unless samplerData is non-null
  • Bug 53802 - IdleTime values are not saved to CSV log
  • Bug 53874 - View Results Tree : If some parameter containing special characters like % is not encoded, RequestViewHTTP fails with java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern and Response is not displayed
  • Timers, Assertions, Config, Pre- & Post-Processors
  • Bug 51512 - Cookies aren't inserted into HTTP request with IPv6 Host header
  • General:
  • Bug 53365 - JSR223TestElement should cache ScriptEngineManager
  • Bug 53520 - JSR223 Elements : Use Compilable interface to improve performances on File scripts
  • Bug 53501 - Synchronization timer blocks test end.
  • Bug 53750 - TestCompiler saves unnecessary entries in pairing collection
  • Bug 52266 - Code:Inconsistent synchronization
  • Bug 53841 - CSVSaveService reads file using JVM default file encoding instead of using the one configured in saveservice.properties
  • Bug 53953 New: Typo in monitor test plan documentation
  • Improvements:
  • HTTP Samplers
  • Bug 53675 - Add PATCH verb to HTTP sampler
  • Bug 53931 - Define HTTPClient 4 for the default HTTP Request (and Proxy element to generate the HTTP requests). Before the default, it was the HTTP Java Sampler
  • Bug 53934 - Removes HTTPS spoofing options in JMeter HTTP Proxy Server. Since JMeter 2.4, the HTTPS protocol is directly supported by the proxy
  • Other samplers:
  • Bug 55310 - TestAction should implement Interruptible
  • Bug 53318 - Add Embedded URL Filter to HTTP Request Defaults Control
  • Bug 53782 - Enhance JavaSampler handling of JavaSamplerClient cleanup to use less memory
  • Bug 53168 - OS Process - allow specification of stdout/stderr/stdin
  • Bug 53844 - JDBC related elements should check class of Variable Name supposed to contain JDBC Connection Configuration to avoid
  • ClassCastException:
  • Controllers:
  • Bug 53671 - tearDown thread group to run even if shutdown test happens
  • Listeners
  • Bug 53566 - Don't log partial responses to the jmeter log
  • Bug 53716 - Small improvements in aggregate graph: legend at left or right is now on 1 column (instead of 1 large line), no border to the reference's square color, reduce width on some fields
  • Bug 53718 - Add a new visualizer 'Response Time Graph' to draw a line graph showing the evolution of response time for a test
  • Bug 53738 - Keep track of number of threads started and finished
  • Bug 53753 - Summariser: no point displaying fractional time in most cases
  • Bug 53749 - TestListener interface could perhaps be split up. This should reduce per-thread memory requirements and processing, as only test elements that actually use testIterationStart functionality now need to be handled.
  • Bug 53941 - Add latency to View Result table listener
  • Timers, Assertions, Config, Pre- & Post-Processors
  • Bug 53755 - Adding a HttpClient 4 cookie implementation in JMeter. Cookie Manager has now the default HC3.1 implementation and a new choice HC4 implementation (compliant with IPv6 address)
  • Functions:
  • Bug 51527 - __time() function : add another option to __time() to provide *seconds* since epoch
  • I18N
  • General:
  • Bug 53364 - Sort list of Functions in Function Helper Dialog
  • Bug 53418 - New Option "Delay thread creation until needed" that will create and start threads when needed instead of creating them on Test startup
  • Bug 42245 - Show clear passwords in HTTP Authorization Manager
  • Bug 53616 - Display 'Apache JMeter' title in app title bar in Gnome 3
  • Bug 53759 - ClientJMeterEngine perfoms unnecessary traverse using SearchByClass(TestListener)
  • Bug 52601 - CTRL + F for the new Find feature
  • Bug 53796 - TestCompiler uses static Set which can grow huge
  • Bug 53673 - Add JMeter version in the jmx file
  • Add support for HeapDump to the JMeter non-GUI and GUI client
  • Bug 53862 - Would be nice to have the JMeter Version available as a property
  • Bug 53806 - FileServer should provide thread-safe parsing
  • Bug 53807 - CSV Dataset does not handle embedded new lines in quoted data
  • Bug 53879 - GUI : Allow Popups to be closed with ESC key
  • Bug 53876 - Allow URL Filters (HTTP Proxy) to be pasted from clipboard
  • Non-functional changes
  • Bug 53311 - JMeterUtils#runSafe should not throw Error when interrupted
  • Updated to commons-net-3.1 (from 3.0.1)
  • Updated to HttpComponents Core 4.2.2 (from 4.1.4) and HttpComponents Client 4.2.1 (from 4.1.3)
  • Bug 53765 - Switch to commons-lang3-3.1
  • Bug 53884 - wrong Maven groupId for commons-lang

New in Apache JMeter 2.6 r1237317 (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