Apache JMeter


Changes

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

Version 2.8

New and Noteworthy

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
  • caching of Compilation when scripts are used as Files
See JMeter Performances across versions

OS Process Sampler

Allow defining files for stdout/stderr/stdin.


HTTP Request: PATCH verb

Add PATCH verb to HTTP sampler


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


Settings for Response Time Graph


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 directly available since JMeter 2.4.


HTTP Proxy Server

Allow URL Filters to be pasted from clipboard


Find in JMeter

CTRL + F for the new Find feature


ESC key now closes popups.

User Interface in GNOME 3

Display 'Apache JMeter' title in app title bar in Gnome 3


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)

Note that there is a bug in Java on some Linux systems that manifests itself as the following error when running the test cases or JMeter itself:


 [java] WARNING: Couldn't flush user prefs:
 java.util.prefs.BackingStoreException:
 java.lang.IllegalArgumentException: Not supported: indent-number

This does not affect JMeter operation.

Incompatible changes

When using CacheManager, JMeter now caches responses for GET queries provided header Cache-Control is different from "no-cache" as described in specification. Furthermore it doesn't put anymore in Cache deprecated entries for "no-cache" responses. See Bug 53521 and Bug 53522

A major change has occured on JSR223 Test Elements, previously variables set up before script execution where stored in ScriptEngineManager which was created once per execution, now ScriptEngineManager is a singleton shared by all JSR223 elements and only ScriptEngine is created once per execution, variables set up before script execution are now stored in Bindings created on each execution, see Bug 53365 .

JSR223 Test Elements using Script file are now Compiled if ScriptEngine supports this feature, see Bug 53520 .

Shortcut for Function Helper Dialog is now CTRL+F1 (CMD + F1 for Mac OS), CTRL+F (CMD+F1 for Mac OS) now opens Search Dialog.

By default, the TestCompiler now stores details of which pairs it has seen in Controller instances rather than in a static Set. [ Bug 53796 ] This gives much better memory behaviour for delayed start test plans, as memory used is proportional to the number of concurrent threads. With the static Set memory usage was proportional to the total thread count. This change is very unlikely to cause a problem. The original behaviour can be restored by setting the property TestCompiler.useStaticSet=true

HTTPS Spoofing options have been removed from Proxy as HTTPS recording is directly available since JMeter 2.4.

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

Functions

I18N

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




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