Apache JMeter Changelog

New in version 2.12

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

New in version 2.11 (January 6th, 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 version 2.10 (October 22nd, 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 version 2.9 (January 31st, 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 version 2.6 (February 9th, 2012)

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

New in version 2.4 (July 4th, 2011)

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

New in version 2.3.4 (September 29th, 2009)

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

New in version 2.3.2 (April 23rd, 2009)

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