<?xml version="1.0"?> 
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at
 
       http://www.apache.org/licenses/LICENSE-2.0
 
   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<document>   
<properties>     
    <author email="dev AT jmeter.apache.org">JMeter developers</author>     
    <title>History of Previous Changes</title>   
</properties> 
<body> 
<section name="History of Previous Changes"> 
<note>
<b>This page details the changes made in previous versions only.</b>
<br></br>
Current changes are detailed in <a href="changes.html">Changes</a>.
</note>
<p><b>Changes sections are chronologically ordered from top (most recent) to bottom 
(least recent)</b></p>  

<!--  =================== 2.12 =================== -->

<h1>Version 2.12</h1>

Summary
<ul>
<li><a href="#New and Noteworthy">New and Noteworthy</a></li>
<li><a href="#Known bugs">Known bugs</a></li>
<li><a href="#Incompatible changes">Incompatible changes</a></li>
<li><a href="#Bug fixes">Bug fixes</a></li>
<li><a href="#Improvements">Improvements</a></li>
<li><a href="#Non-functional changes">Non-functional changes</a></li>
<li><a href="#Thanks">Thanks</a></li>

</ul>

<ch_section>New and Noteworthy</ch_section>

<!-- <ch_category>Improvements</ch_category> -->
<!-- <ch_title>Sample title</ch_title>
<p>
<ul>
<li>Sample text</li>
</ul>
</p>

<ch_title>Sample title</ch_title>
<p>Sample text</p>
<figure width="691" height="215" image="changes/2.10/18_https_test_script_recorder.png"></figure>
 -->

<ch_title>Java 8 support</ch_title>
<p>Now, JMeter 2.12 is compliant with Java 8.</p>

<ch_category>New Elements</ch_category>
<ch_title>Critical Section Controller</ch_title>
<p>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.</p>
<figure width="683" height="240" image="changes/2.12/01_critical_section_controller.png"></figure>

<ch_title>DNS Cache Manager</ch_title>
<p>The new configuration element <b>DNS Cache Manager</b>(see <bugzilla>56841</bugzilla>) improves the testing of:
<ul>
<li>CDN (Content Delivery Network)</li> 
<li>DNS load balancing.</li>
<li>Load Balancers like Amazon Elastic Load Balancer</li>
</ul>
</p>
<figure width="573" height="359" image="changes/2.12/02_dns_cache_manager.png"></figure>
<ch_category>Core Improvements</ch_category>

<ch_title>Smarter Recording of Http Test Plans</ch_title>
<p>Test Script Recorder has been improved in many ways</p>
<ul>
    <li>Better matching of Variables in Requests, making Test Script Recorder variabilize your sampler during recording more versatile</li>
    <li>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
    <figure width="1094" height="647" image="changes/2.12/14_recorder_filter.png"></figure>
    </li>
    <li>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</li>
</ul>

<ch_title>Support of Webdav requests</ch_title>
<p>You can now test against WebDav server using HttpClient4 Implementation of Http Request</p>
<figure width="989" height="406" image="changes/2.12/13_webdav.png"></figure>

<ch_title>Better handling of embedded resources</ch_title>
<p>When download embedded resources is checked, JMeter now uses User Agent header to download or not resources embedded within conditionnal comments as per <a href="http://msdn.microsoft.com/en-us/library/ms537512%28v=vs.85%29.aspx" target="_blank">About conditional comments</a>.</p>

<ch_title>Ability to customize Cache Manager (Browser cache simulation) handling of cached resources</ch_title>
<p>You can now configure the behaviour of JMeter when a resource is found in Cache, this can be controlled with <i>cache_manager.cached_resource_mode</i> property</p>
<figure width="1024" height="314" image="changes/2.12/12_cache_resource_mode.png"></figure>


<ch_title>JMS Publisher / JMS Point-to-Point</ch_title>
<p> Add JMSPriority and JMSExpiration fields for these samplers.</p>
<figure width="877" height="314" image="changes/2.12/04_jms_publisher.png"></figure>

<figure width="877" height="293" image="changes/2.12/05_jms_point_to_point.png"></figure>

<ch_title>Mail Reader Sampler</ch_title>
<p>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.</p>
<figure width="814" height="416" image="changes/2.12/03_mail_reader_sampler.png"></figure>

<ch_title>SMTP Sampler</ch_title>
<p>Adding the Connection timeout and the Read timeout to the <b>SMTP Sampler.</b></p>
<figure width="796" height="192" image="changes/2.12/06_smtp_sampler.png"></figure>

<ch_title>Synchronizing Timer </ch_title>
<p>Adding a timeout to define the maximum time to waiting of the group of virtual users.</p>
<figure width="546" height="144" image="changes/2.12/09_synchronizing_timer.png"></figure>

<ch_title>Performance improvements</ch_title>
<p>A big improvement in performances of Functions has been made by lifting useless synchronization. It concerns all functions except __StringFromFile, __XPath and __BeanShell, see <bugzilla>57114</bugzilla></p>
<p>__jexl2 performances have been improved to avoid contention point, see <bugzilla>56708</bugzilla></p>

<ch_category>GUI Improvements</ch_category>

<ch_title>Undo/Redo support</ch_title>
<p>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 <b>undo.history.size=25</b> </p>
<figure width="1024" height="56" image="changes/2.12/10_undo_redo.png"></figure>

<ch_title>View Results Tree</ch_title>
<p>Improve the ergonomics of View Results Tree by changing placement of Renderers and allowing custom ordering 
(with the property <i>view.results.tree.renderers_order</i>).</p>
<figure width="900" height="329" image="changes/2.12/07_view_results_tree.png"></figure>

<ch_title>Response Time Graph</ch_title>
<p>Adding the ability for the <b>Response Time Graph</b> listener to save/restore format its settings in/from the jmx file.</p>
<figure width="997" height="574" image="changes/2.12/08_response_time_graph.png"></figure>

<ch_title>Log Viewer</ch_title>
<p>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.</p>
<figure width="1024" height="437" image="changes/2.12/11_log_viewer.png"></figure>

<ch_title>File Opening</ch_title>
<p>Now, "Open File dialog" uses last opened file folder as start folder, see <bugzilla>52707</bugzilla></p>
<!--  =================== Known bugs =================== -->


<ch_section>Known bugs</ch_section>

<ul>
<li>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</li>

<li>
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 <bugzilla>55510</bugzilla>).
</li>

<li>
Note that there is a <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6396599 ">bug in Java</a>
on some Linux systems that manifests itself as the following error when running the test cases or JMeter itself:
<pre>
 [java] WARNING: Couldn't flush user prefs:
 java.util.prefs.BackingStoreException:
 java.lang.IllegalArgumentException: Not supported: indent-number
</pre>
This does not affect JMeter operation. This issue is fixed since Java 7b05.
</li>

<li>
Note that under some windows systems you may have this WARNING:
<pre>
java.util.prefs.WindowsPreferences 
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(...) returned error code 5.
</pre>
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.
</li>

<li>
With Java 1.6 and Gnome 3 on Linux systems, the JMeter menu may not work correctly (shift between mouse's click and the menu). 
This is a known Java bug (see  <bugzilla>54477 </bugzilla>). 
A workaround is to use a Java 7 runtime (OpenJDK or Oracle JDK).
</li>

<li>
With Oracle Java 7 and Mac Book Pro Retina Display, the JMeter GUI may look blurry. 
This is a known Java bug, see Bug <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8000629" >JDK-8000629</a>.
A workaround is to use a Java 7 update 40 runtime which fixes this issue.
</li>

<li>
You may encounter the following error: <i>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</i>
 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 7 version u16 (MD2) and version u40 (Certificate size lower than 1024 bits), and Java 8 too.
<br></br>
To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing 
the Java <b>jdk.certpath.disabledAlgorithms</b> property. Remove the MD2 value or the constraint on size, depending on your case.
<br></br>
This property is in this file:
<pre>JAVA_HOME/jre/lib/security/java.security</pre>
See  <bugzilla>56357</bugzilla> for details.
</li>

</ul>

<!-- =================== Incompatible changes =================== -->

<ch_section>Incompatible changes</ch_section>

<ul>
<li>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 <bugzilla>57025</bugzilla>. 
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 <b>jmeter.save.saveservice.thread_counts=false</b></li>
<li>Since JMeter 2.12, Mail Reader Sampler will show 1 for number of samples instead of number of messages retrieved, see <bugzilla>56539</bugzilla></li>
<li>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 <bugzilla>54778</bugzilla>.
You can choose between different ways to handle this case, see cache_manager.cached_resource_mode in jmeter.properties.</li>
<li>Since JMeter 2.12, Log Viewer will no more clear logs when closed and will have logs available even if closed. See <bugzilla>56920</bugzilla>. Read <a href="./usermanual/hints_and_tips.html#debug_logging">Hints and Tips &gt; Enabling Debug logging</a>
for details on configuring this component.</li>
</ul>

<!-- =================== Bug fixes =================== -->

<ch_section>Bug fixes</ch_section>

<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bugzilla>55998</bugzilla> - HTTP recording – Replacing port value by user defined variable does not work</li>
<li><bugzilla>56178</bugzilla> - keytool error: Invalid escaped character in AVA: - some characters must be escaped</li>
<li><bugzilla>56222</bugzilla> - NPE if jmeter.httpclient.strict_rfc2616=true and location is not absolute</li>
<li><bugzilla>56263</bugzilla> - DefaultSamplerCreator should set BrowserCompatible Multipart true</li>
<li><bugzilla>56231</bugzilla> - Move redirect location processing from HC3/HC4 samplers to HTTPSamplerBase#followRedirects()</li>
<li><bugzilla>56207</bugzilla> - URLs get encoded on redirects in HC3.1 &amp; HC4 samplers</li>
<li><bugzilla>56303</bugzilla> - The width of target controller's combo list should be set to the current panel size, not on label size of the controllers</li>
<li><bugzilla>54778</bugzilla> - HTTP Sampler should not return 204 when resource is found in Cache, make it configurable with new property cache_manager.cached_resource_mode</li> 
</ul>

<h3>Other Samplers</h3>
<ul>
<li><bugzilla>55977</bugzilla> - JDBC pool keepalive flooding</li>
<li><bugzilla>55999</bugzilla> - Scroll bar on jms point-to-point sampler does not work when content exceeds display</li>
<li><bugzilla>56198</bugzilla> - JMSSampler : NullPointerException is thrown when JNDI underlying implementation of JMS provider does not comply with Context.getEnvironment contract</li>
<li><bugzilla>56428</bugzilla> - MailReaderSampler - should it use mail.pop3s.* properties?</li>
<li><bugzilla>46932</bugzilla> - 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</li>
<li><bugzilla>56539</bugzilla> - 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</li>
<li><bugzilla>56809</bugzilla> - JMSSampler closes InitialContext too early. Contributed by Bradford Hovinen (hovinen at gmail.com)</li>
<li><bugzilla>56761</bugzilla> - JMeter tries to stop already stopped JMS connection and displays "The connection is closed"</li>
<li><bugzilla>57068</bugzilla> - No error thrown when negative duration is entered in Test Action</li>
<li><bugzilla>57078</bugzilla> - LagartoBasedHTMLParser fails to parse page that contains input with no type</li>
<li><bugzilla>57183</bugzilla> - JMSSampler: For input string: "" java.lang.NumberFormatException (for Expiration or Priority fields)</li>
</ul>

<h3>Controllers</h3>
<ul>
<li><bugzilla>56243</bugzilla> - Foreach works incorrectly with indexes on subsequent iterations </li>
<li><bugzilla>56276</bugzilla> - Loop controller becomes broken once loop count evaluates to zero </li>
<li><bugzilla>56160</bugzilla> - StackOverflowError when using WhileController within IfController</li>
<li><bugzilla>56811</bugzilla> - "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</li>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>56706</bugzilla> - SampleResult#getResponseDataAsString() does not use encoding in response body impacting PostProcessors and ViewResultsTree. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bugzilla>57052</bugzilla> - ArithmeticException: / by zero when sampleCount is equal to 0</li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bugzilla>56162</bugzilla> -  HTTP Cache Manager should not cache PUT/POST etc.</li>
<li><bugzilla>56227</bugzilla> - AssertionGUI : NPE in assertion on mouse selection</li>
<li><bugzilla>41319</bugzilla> - URLRewritingModifier : Allow Parameter value to be url encoded</li>
</ul>

<h3>Functions</h3>
<ul>
</ul>

<h3>I18N</h3>
<ul>
<li><bugzilla>56111</bugzilla> - "comments" in german translation is not correct</li>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>56059</bugzilla> - Older TestBeans incompatible with 2.11 when using TextAreaEditor</li>
<li><bugzilla>56080</bugzilla> - Conversion error com.thoughtworks.xstream.converters.ConversionException with Java 8 Early Access Build</li>
<li><bugzilla>56182</bugzilla> - Can't trigger bsh script using bshclient.jar; socket is closed unexpectedly </li>
<li><bugzilla>56360</bugzilla> - HashTree and ListedHashTree fail to compile with Java 8</li>
<li><bugzilla>56419</bugzilla> - JMeter silently fails to save results</li>
<li><bugzilla>56662</bugzilla> - Save as xml in a listener is not remembered</li>
<li><bugzilla>56367</bugzilla> - JMeter 2.11 on maven central triggers a not existing dependency rsyntaxtextarea 2.5.1, upgrade to 2.5.3</li>
<li><bugzilla>56743</bugzilla> - Wrong mailing list archives on mail2.xml. Contributed by Felix Schumacher (felix.schumacher at internetallee.de)</li>
<li><bugzilla>56763</bugzilla> - Removing the Oracle icons, not used by JMeter (and missing license)</li>
<li><bugzilla>54100</bugzilla> - Switching languages fails to preserve toolbar button states (enabled/disabled)</li>
<li><bugzilla>54648</bugzilla> - JMeter GUI on OS X crashes when using CMD+C (keyboard shortcut or UI menu entry) on an element from the tree</li>
<li><bugzilla>56962</bugzilla> - JMS GUIs should disable all fields affected by jndi.properties checkbox</li>
<li><bugzilla>57061</bugzilla> - Save as Test Fragment fails to clone deeply selected node. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bugzilla>57075</bugzilla> - BeanInfoSupport.MULTILINE attribute is not processed</li>
<li><bugzilla>57076</bugzilla> - BooleanPropertyEditor#getAsText() must return a value that is in getTags()</li>
<li><bugzilla>57088</bugzilla> - NPE in ResultCollector.testEnded</li>
</ul>

<!-- =================== Improvements =================== -->

<ch_section>Improvements</ch_section>

<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bugzilla>55959</bugzilla> - Improve error message when Test Script Recorder fails due to I/O problem</li>
<li><bugzilla>52013</bugzilla> - 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</li>
<li><bugzilla>56119</bugzilla> - File uploads fail every other attempt using timers. Enable idle timeouts for servers that don't send Keep-Alive headers.</li>
<li><bugzilla>56272</bugzilla> - MirrorServer should support query parameters for status and redirects</li>
<li><bugzilla>56772</bugzilla> - Handle IE Conditional comments when parsing embedded resources</li>
<li><bugzilla>57026</bugzilla> - HTTP(S) Test Script Recorder : Better default settings. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bugzilla>57107</bugzilla> - Patch proposal: Add DAV verbs to HTTP Sampler. Contributed by Philippe Jung (apache at famille-jung.fr)</li>
<li><bugzilla>56357</bugzilla> - Certificates does not conform to algorithm constraints: Adding a note to indicate how to remove of the Java installation these new security constraints</li>
</ul>

<h3>Other samplers</h3>
<ul>
<li><bugzilla>56033</bugzilla> - Add Connection timeout and Read timeout to SMTP Sampler</li>
<li><bugzilla>56429</bugzilla> - MailReaderSampler - no need to fetch all Messages if not all wanted</li>
<li><bugzilla>56427</bugzilla> - MailReaderSampler enhancement: read message header only</li>
<li><bugzilla>56510</bugzilla> - JMS Publisher/Point to Point: Add JMSPriority and JMSExpiration</li>
</ul>

<h3>Controllers</h3>
<ul>
<li><bugzilla>56728</bugzilla> - New Critical Section Controller to serialize blocks of a Test. Based partly on a patch contributed by Mikhail Epikhin(epihin-m at yandex.ru)</li>
<li><bugzilla>57145</bugzilla> - RandomController : Use ThreadLocalRandom instead of Random for better performances</li>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>56228</bugzilla> - View Results Tree : Improve ergonomy by changing placement of Renderers and allowing custom ordering</li>
<li><bugzilla>56349</bugzilla> - "summary" is a bad name for a Generate Summary Results component, documentation clarified</li>
<li><bugzilla>56769</bugzilla> - Adds the ability for the Response Time Graph listener to save/restore format settings in/from the jmx file</li>
<li><bugzilla>57025</bugzilla> - SaveService : Better defaults, save thread counts by default</li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bugzilla>56691</bugzilla> - Synchronizing Timer : Add timeout on waiting</li>
<li><bugzilla>56701</bugzilla> - 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)</li>
<li><bugzilla>56841</bugzilla> - 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.</li>
<li><bugzilla>52061</bugzilla> - Allow access to Request Headers in Regex Extractor. Based on patch from Dzmitry Kashlach (dzmitrykashlach at gmail.com), and contributed by BlazeMeter Ltd.</li>
</ul>

<h3>Functions</h3>
<ul>
<li><bugzilla>56708</bugzilla> - __jexl2 doesn't scale with multiple CPU cores. Based on analysis and patch contributed by Mikhail Epikhin(epihin-m at yandex.ru)</li>
<li><bugzilla>57114</bugzilla> - 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)</li>
</ul>

<h3>I18N</h3>
<ul>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>21695</bugzilla> - Unix jmeter start script assumes it is on PATH, not a link</li>
<li><bugzilla>56292</bugzilla> - Add the check of the Java's version in startup files and disable some options when is Java v8 engine</li>
<li><bugzilla>56298</bugzilla> - JSR223 language display does not show which engine will be used</li>
<li><bugzilla>56455</bugzilla> - Batch files: drop support for non-NT Windows shell scripts</li>
<li><bugzilla>52707</bugzilla> - 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.</li>
<li><bugzilla>56807</bugzilla> - Ability to force flush of ResultCollector file. Contributed by Andrey Pohilko (apc4 at ya.ru)</li>
<li><bugzilla>56921</bugzilla> - Templates : Improve Recording template to ignore embedded resources case and URL parameters. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bugzilla>42248</bugzilla> - 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)</li>
<li><bugzilla>56920</bugzilla> - LogViewer : Make it receive all log events even when it is closed. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bugzilla>57083</bugzilla> - simplified the CachedResourceMode enum. Contributed by Graham Russel (graham at ham1.co.uk)</li>
<li><bugzilla>57082</bugzilla> - ComboStringEditor : Added hashCode to an inner class which overwrote equals. Contributed by Graham Russel (graham at ham1.co.uk)</li>
<li><bugzilla>57081</bugzilla> - 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)</li>
<li><bugzilla>56178</bugzilla> - Really replace backslashes in user name before generating proxy certificate. Contributed by Graham Russel (graham at ham1.co.uk)</li>
<li><bugzilla>57084</bugzilla> - Close socket after usage in BeanShellClient. Contributed by Graham Russel (graham at ham1.co.uk)</li>
</ul>
<ch_section>Non-functional changes</ch_section>
<ul>
<li><bugzilla>57117</bugzilla> - Increase the default cipher for HTTPS Test Script Recorder from SSLv3 to TLS</li>
<li>Updated to commons-lang3 3.3.2 (from 3.1)</li>
<li>Updated to commons-codec 1.9 (from 1.8)</li>
<li>Updated to commons-logging 1.2 (from 1.1.3)</li>
<li>Updated to tika 1.6 (from 1.4)</li>
<li>Updated to xercesImpl 2.11.0 (from 2.9.1)</li>
<li>Updated to xml-apis 1.4.01 (from 1.3.04)</li>
<li>Updated to xstream 1.4.8 (from 1.4.4)</li>
<li>Updated to jodd 3.6.1 (from 3.4.10)</li>
<li>Updated to rsyntaxtextarea 2.5.3 (from 2.5.1)</li>
<li>Updated xalan and serializer to 2.7.2 (from 2.7.1)</li>
<li>Updated to jsoup-1.8.1.jar (from 1.7.3)</li>
</ul>

<ch_section>Thanks</ch_section>
<p>We thank all contributors mentioned in bug and improvement sections above:
<ul>
<li>James Liang (jliang at andera.com)</li>
<li>Emmanuel Bourg (ebourg at apache.org)</li>
<li>Nicola Ambrosetti (ambrosetti.nicola at gmail.com)</li>
<li><a href="http://ubikloadpack.com">Ubik Load Pack</a></li>
<li>Mikhail Epikhin (epihin-m at yandex.ru)</li>
<li>Dan Haughey (dan.haughey at swinton.co.uk)</li>
<li>Felix Schumacher (felix.schumacher at internetallee.de)</li>
<li>Dzmitry Kashlach (dzmitrykashlach at gmail.com)</li>
<li>Andrey Pohilko (apc4 at ya.ru)</li>
<li>Bradford Hovinen (hovinen at gmail.com)</li>
<li><a href="http://blazemeter.com">BlazeMeter Ltd.</a></li>
<li>Graham Russell (graham at ham1.co.uk)</li>
<li>Philippe Jung (apache at famille-jung.fr)</li>
<li>Vladimir Sitnikov (sitnikov.vladimir at gmail.com)</li>
</ul>

<br/>
We also thank bug reporters who helped us improve JMeter. <br/>
For this release we want to give special thanks to the following reporters for the clear reports and tests made after our fixes:
<ul>
<li>Oliver LLoyd (email at oliverlloyd.com) for his help on <bugzilla>56119</bugzilla></li>
<li>Vladimir Ryabtsev (greatvovan at gmail.com) for his help on <bugzilla>56243</bugzilla> and <bugzilla>56276</bugzilla></li>
<li>Adrian Speteanu (asp.adieu at gmail.com) and Matt Kilbride (matt.kilbride at gmail.com) for their feedback and tests on <bugzilla>54648</bugzilla></li>
<li>Shmuel Krakower (shmulikk at gmail.com) for his tests and reports on Undo/Redo feature</li>
</ul>

Apologies if we have omitted anyone else.
 </p>
 
<!--  =================== 2.11 =================== -->

<h1>Version 2.11</h1>

Summary
<ul>
<li><a href="#New and Noteworthy">New and Noteworthy</a></li>
<li><a href="#Known bugs">Known bugs</a></li>
<li><a href="#Incompatible changes">Incompatible changes</a></li>
<li><a href="#Bug fixes">Bug fixes</a></li>
<li><a href="#Improvements">Improvements</a></li>
<li><a href="#Non-functional changes">Non-functional changes</a></li>
<li><a href="#Thanks">Thanks</a></li>

</ul>

<ch_section>New and Noteworthy</ch_section>

<!-- <ch_category>Improvements</ch_category> -->
<ch_title>HTTP(S) Test Script Recorder improvements</ch_title>
<p>
Following improvements have been made since major changes introduced in JMeter 2.10 on HTTP(S) Test Script Recorder:
<ul>
<li>Better detection of missing or invalid configuration of keytool utility</li>
<li>New system property keytool.directory (see system.properties) lets you configure directory containing keytool in case on non-standard installation</li>
</ul>
</p>

<ch_title>JMS Publisher/Point to Point : Add ability to set typed values in JMS header properties</ch_title>
<p>In the samplers JMS Publisher and JMS Point-to-Point, you can now set up the class of values for the JMS header properties. Previously only String was possible.</p>
<p>
<figure width="928" height="796" image="changes/2.11/01_jms_properties_typed_values.png"></figure>
</p>

<ch_title>View Results Tree : Add an XPath Tester </ch_title>
<p>In View Results Tree listener, a new XPath tester can be used to test XPATH expressions.</p>
<p>
<figure width="990" height="765" image="changes/2.11/03_xpath_tester.png"></figure>
</p>

<ch_title>Ability to choose the client alias for the cert key in JsseSslManager such that Mutual SSL auth testing can be made more flexible</ch_title>
<p>When testing client based certificate authentications you have now better control on certificate you use through a new field "Variable name holding certificate alias", this 
field lets you select the certificate you want to send to server to authenticate. You can use a CSV Data Set as a holder for the variable value.</p>
<p>
<figure width="471" height="189" image="changes/2.11/07_keystore_config.png"></figure>
</p>

<ch_title>Add a "Save as Test Fragment" option </ch_title>
<p>In the file menu, a new option allow to save a group of elements as a Test fragment.</p>
<p>
<figure width="295" height="242" image="changes/2.11/05_save_as_fragement.png"></figure>
</p>

<ch_title>Summariser is be enabled by default in Non GUI mode</ch_title>
<p>When you run JMeter from command line, now JMeter displays some statistics from the Summariser mode.</p>
<p>
<figure width="1287" height="386" image="changes/2.11/06_summariser.png"></figure>
</p>

<ch_title>Transaction Controller:Change default property "Include duration of timer..." for newly created element</ch_title>
<p>Starting from 2.11, Transaction Controller is configured by default to exclude processing time of pre/post processors as long as timers pause.</p>
<p>
<figure width="628" height="140" image="changes/2.11/02_transaction_controller.png"></figure>
</p>

<!-- <ch_title>Sample title</ch_title>
<p>
<ul>
<li>Sample text</li>
</ul>
</p>

<ch_title>Sample title</ch_title>
<p>Sample text</p>
<figure width="691" height="215" image="changes/2.10/18_https_test_script_recorder.png"></figure>
 -->


<!--  =================== Known bugs =================== -->


<ch_section>Known bugs</ch_section>

<ul>
<li>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</li>

<li>Listeners don't show iteration counts when a If Controller has a condition which is always false from the first iteration (see <bugzilla>52496</bugzilla>).  
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).
</li>

<li>
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 <bugzilla>55510</bugzilla>).
</li>

<li>
Note that there is a <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6396599 ">bug in Java</a>
on some Linux systems that manifests itself as the following error when running the test cases or JMeter itself:
<pre>
 [java] WARNING: Couldn't flush user prefs:
 java.util.prefs.BackingStoreException:
 java.lang.IllegalArgumentException: Not supported: indent-number
</pre>
This does not affect JMeter operation. This issue is fixed since Java 7b05.
</li>

<li>
With Java 1.6 and Gnome 3 on Linux systems, the JMeter menu may not work correctly (shift between mouse's click and the menu). 
This is a known Java bug (see  <bugzilla>54477 </bugzilla>). 
A workaround is to use a Java 7 runtime (OpenJDK or Oracle JDK).
</li>

<li>
With Oracle Java 7 and Mac Book Pro Retina Display, the JMeter GUI may look blurry. 
This is a known Java bug, see Bug <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8000629" >JDK-8000629</a>.
A workaround is to use a Java 7 update 40 runtime which fixes this issue.
</li>
</ul>

<!-- =================== Incompatible changes =================== -->

<ch_section>Incompatible changes</ch_section>

<ul>
<li>When creating a new Transaction Controller, property "Include duration of timer and pre-post processors in generated sample" will be unchecked starting from version 2.11</li>
<li>In Non GUI mode, since 2.11 summariser is enabled with a 30 seconds frequency</li>
<li>JMeter is more lenient with redirect handling and relaxes on RFC2616 by allowing relative locations. See property "jmeter.httpclient.strict_rfc2616" in jmeter.properties to change this behaviour, see <bugzilla>55717</bugzilla></li>
<li>When creating a new Response Assertion, property "Pattern Matching Rules" now defaults to Substring starting from version 2.11</li>
</ul>

<!-- =================== Bug fixes =================== -->

<ch_section>Bug fixes</ch_section>

<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bugzilla>55815</bugzilla> - Proxy#getDomainMatch does not handle wildcards correctly</li>
<li><bugzilla>55717</bugzilla> - Bad handling of Redirect when URLs are in relative format by HttpClient4 and HttpClient3.1</li>
</ul>

<h3>Other Samplers</h3>
<ul>
<li><bugzilla>55685</bugzilla> - OS Sampler: timeout option don't save and restore correctly value and don't init correctly timeout</li>
</ul>

<h3>Controllers</h3>
<ul>
<li><bugzilla>55816</bugzilla> - Transaction Controller with "Include duration of timer..." unchecked does not ignore processing time of last child sampler</li>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>55826</bugzilla> - Unsynchronised concurrent accesses to list in field RespTimeGraphVisualizer.internalList </li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bugzilla>55694</bugzilla> - Assertions and Extractors : Avoid NullPointerException when scope is variable and variable is missing</li>
<li><bugzilla>55721</bugzilla> - HTTP Cache Manager - no-store directive is wrongly interpreted</li>
</ul>

<h3>Functions</h3>
<ul>
<li><bugzilla>55871</bugzilla> - 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.</li>
</ul>

<h3>I18N</h3>
<ul>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>55739</bugzilla> - Remote Test : Total threads in GUI mode shows invalid total number of threads</li>
</ul>

<!-- =================== Improvements =================== -->

<ch_section>Improvements</ch_section>

<h3>HTTP Samplers and Proxy</h3>
<ul>
</ul>

<h3>Other samplers</h3>
<ul>
<li><bugzilla>55589</bugzilla> - JMS Publisher/Point to Point : Add ability to set typed values in JMS header properties.</li>
</ul>

<h3>Controllers</h3>
<ul>
<li><bugzilla>55854</bugzilla> - Transaction Controller:Change default property "Include duration of timer..." for newly created element</li>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>55610</bugzilla> - View Results Tree : Add an XPath Tester</li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bugzilla>55908</bugzilla> - Response assertion : Change Pattern Matching Rules default to Substring on creation for better performances</li>
<li><bugzilla>54977</bugzilla> - 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)</li>
</ul>

<h3>Functions</h3>
<ul>
</ul>

<h3>I18N</h3>
<ul>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>55693</bugzilla> - Add a "Save as Test Fragment" option</li>
<li><bugzilla>55753</bugzilla> - Improve FilePanel behaviour to start from the value set in Filename field if any. Contributed by UBIK Load Pack (support at ubikloadpack.com)</li>
<li><bugzilla>55756</bugzilla> - HTTP Mirror Server : Add ability to set Headers</li>
<li><bugzilla>55852</bugzilla> - Be more lenient in parsing when charset value is surrounded with single quotes</li>
<li><bugzilla>55857</bugzilla> - Performance : AbstractProperty should test for emptiness to avoid Exception throwing</li>
<li><bugzilla>55858</bugzilla> - Startup Performance : On Startup, BeanInfoSupport should test for key availability instead of throwing</li>
<li><bugzilla>55865</bugzilla> - Performance :Disable stale check by default in HttpClient 4 and 3.1</li>
<li><bugzilla>55512</bugzilla> - Summariser should be enabled by default in Non GUI mode</li>
</ul>

<ch_section>Non-functional changes</ch_section>
<ul>
<li>Updated to rsyntaxtextarea-2.5.1.jar (from 2.5.0)</li>
<li>Updated to jodd-core-3.4.9.jar from (3.4.8) and jodd-lagarto-3.4.9.jar (from 3.4.9)</li>
<li>Updated to jsoup-1.7.3.jar (from 1.7.2)</li>
<li>Updated to mail-1.5.0-b01 (from 1.4.4)</li>
<li>Updated to mongo-java-driver-2.11.3 (from 2.11.2)</li>
</ul>

<ch_section>Thanks</ch_section>
<p>We thank all contributors mentioned in bug and improvement sections above:
<ul>
<li>James Liang (jliang at andera.com)</li>
<li>UBIK Load Pack (support at ubikloadpack.com)</li>
</ul>
<br/>
We also thank bug reporters who helped us improve JMeter. <br/>
For this release we want to give special thanks to the following reporters for the clear reports and tests made after our fixes:
<ul>
<li>John Natsioulas (john_natsioulas at yahoo.com.au)</li>
<li>Antonio Gomes Rodrigues (ra0077 at gmail.com)</li>
</ul>

Apologies if we have omitted anyone else.
 </p>


<!--  =================== 2.10 =================== -->

<h1>Version 2.10</h1>

Summary
<ul>
<li><a href="#New and Noteworthy">New and Noteworthy</a></li>
<li><a href="#Known bugs">Known bugs</a></li>
<li><a href="#Incompatible changes">Incompatible changes</a></li>
<li><a href="#Bug fixes">Bug fixes</a></li>
<li><a href="#Improvements">Improvements</a></li>
<li><a href="#Non-functional changes">Non-functional changes</a></li>
<li><a href="#Thanks">Thanks</a></li>

</ul>

<ch_section>New and Noteworthy</ch_section>

<ch_category>Core Improvements</ch_category>

<ch_title>New Performance improvements</ch_title>
<p>
<ul>
<li>A Huge performance improvement has been made on High Throughput Tests (no pause), see <bugzilla>54777</bugzilla></li>
<li>An issue with unnecessary SSL Context reset has been fixed which improves performances of pure HTTP tests, see <bugzilla>55023</bugzilla></li>
<li>Important performance improvement in parsing of Embedded resource in HTML pages thanks to a switch to JODD/Lagarto HTML Parser, see <bugzilla>55632</bugzilla></li>
</ul>
</p>

<ch_title>New CSS/JQuery Tester in View Tree Results</ch_title>
<p>A new CSS/JQuery Tester in View Tree Results that makes CSS/JQuery Extractor a first class
citizen in JMeter, you can now test your expressions very easily</p>
<p>
<figure width="1144" height="638" image="changes/2.10/01_css_jquery_tester.png"></figure>
</p>

<ch_title>Many improvements in HTTP(S) Recording have been made</ch_title>
<p>
<figure width="691" height="215" image="changes/2.10/18_https_test_script_recorder.png"></figure>
<note>
The "HTTP Proxy Server" test element has been renamed as "HTTP(S) Test Script Recorder".
</note>
<ul>
<li>Better recording of HTTPS sites, embedded resources using subdomains will more easily be recorded when using JDK 7. See <bugzilla>55507</bugzilla>.
See updated documentation: <complink name="HTTP(S) Test Script Recorder"/>
</li>
<li>Redirection are now more smartly detected by HTTP Proxy Server, see <bugzilla>55531</bugzilla></li>
<li>Many fixes on edge cases with HTTPS have been made, see <bugzilla>55502</bugzilla>, <bugzilla>55504</bugzilla>, <bugzilla>55506</bugzilla></li>
<li>Many encoding fixes have been made, see <bugzilla>54482</bugzilla>, <bugzilla>54142</bugzilla>, <bugzilla>54293</bugzilla></li>
</ul>
</p>

<ch_title>You can now load test MongoDB through new MongoDB Source Config</ch_title>
<p>
<figure width="912" height="486" image="changes/2.10/02_mongodb_source_config.png"></figure>
</p>
<p>
<figure width="850" height="687" image="changes/2.10/14_mongodb_jsr223.png"></figure>
</p>

<ch_title>Kerberos authentication has been added to Auth Manager</ch_title>
<p>
<figure width="1005" height="364" image="changes/2.10/15_kerberos.png"></figure>
</p>

<ch_title>Device can now be used in addition to source IP address</ch_title>

<p>
<figure width="1087" height="699" image="changes/2.10/16_device.png"></figure>
</p>

<ch_title>You can now do functional testing of MongoDB scripts through new MongoDB Script</ch_title>
<p>
<figure width="906" height="313" image="changes/2.10/03_mongodb_script_alpha.png"></figure>
</p>

<ch_title>Timeout has been added to OS Process Sampler</ch_title>
<p>
<figure width="684" height="586" image="changes/2.10/17_os_process_timeout.png"></figure>
</p>

<ch_title>Query timeout has been added to JDBC Request</ch_title>
<p>
<figure width="540" height="600" image="changes/2.10/04_jdbc_request_timeout.png"></figure>
</p>

<ch_title>New functions (__urlencode and __urldecode) are now available to encode/decode URL encoded chars</ch_title>
<p>
<figure width="512" height="240" image="changes/2.10/05_urlencode_function.png"></figure>
</p>

<ch_title>Continuous Integration is now eased by addition of a new flag that forces NON-GUI JVM to exit after test end</ch_title>
<p>See jmeter property:</p>
<code>jmeterengine.force.system.exit</code>
<p></p>

<ch_title>HttpSampler now allows DELETE Http Method to have a body (works for HC4 and HC31 implementations). This allows for example to test Elastic Search APIs</ch_title>
<p>
<figure width="573" height="444" image="changes/2.10/06_http_request_delete_method.png"></figure>
</p>

<ch_title>2 implementations of HtmlParser have been added to improve Embedded resources parsing</ch_title>
<p>
You can choose the implementation to use for parsing Embedded resources in HTML pages:
See jmeter.properties and look at property "htmlParser.className".
<ul>
<li>org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser for optimal performances</li>
<li>org.apache.jmeter.protocol.http.parser.JSoupBasedHtmlParser for most accurate parsing and functional testing</li>
</ul>
</p>

<ch_title>Distributed testing has been improved</ch_title>
<p>
<ul>
<li>
Number of threads on each node are now reported to controller.
<p>
<figure width="988" height="355" image="changes/2.10/17_threads_summariser.png"></figure>
</p>
<p>
<figure width="125" height="33" image="changes/2.10/17_threads_gui.png"></figure>
</p>

</li>
<li>Performance improvement on BatchSampleSender(<bugzilla>55423</bugzilla>)</li>
<li>Addition of 2 SampleSender modes (StrippedAsynch and StrippedDiskStore), see jmeter.properties</li>
</ul>
</p>

<ch_title>ModuleController has been improved to better handle changes to referenced controllers</ch_title>

<ch_title>Improved class loader configuration, see <bugzilla>55503</bugzilla></ch_title>
<p>
<ul>
<li>New property "plugin_dependency_paths" for plugin dependencies</li>
<li>Properties "search_paths", "user.classpath" and "plugin_dependency_paths"
    now automatically add all jars from configured directories</li>
</ul>
</p>

<ch_title>Best-practices section has been improved, ensure you read it to get the most out of JMeter</ch_title>
<p>See <a href="usermanual/best-practices.html">Best Practices</a>
</p>
<ch_category>GUI and ergonomy Improvements</ch_category>


<ch_title>New Templates feature that allows you to create test plan from existing template or merge
template into your Test Plan</ch_title>
<p>
<figure width="428" height="130" image="changes/2.10/07_jmeter_templates_icon.png"></figure>
</p>
<p>
<figure width="781" height="472" image="changes/2.10/08_jmeter_templates_box.png"></figure>
</p>

<ch_title>Workbench can now be saved</ch_title>
<p>
<figure width="489" height="198" image="changes/2.10/09_save_workbench.png"></figure>
</p>

<ch_title>Syntax color has been added to scripts elements (BeanShell, BSF, and JSR223), MongoDB and JDBC elements making code much more readable and allowing UNDO/REDO through CTRL+Z/CTRL+Y</ch_title>
<p>BSF Sampler with syntax color
<figure width="915" height="620" image="changes/2.10/10_color_syntax_bsf_sampler.png"></figure>
</p>
<p>JSR223 Pre Processor with syntax color
<figure width="911" height="614" image="changes/2.10/11_color_syntax_jsr223_preprocessor.png"></figure>
</p>

<ch_title>Better editors are now available for Test Elements with large text content, like HTTP Sampler, and JMS related Test Element providing line numbering and allowing UNDO/REDO through CTRL+Z/CTRL+Y</ch_title>

<ch_title>JMeter GUI can now be fully Internationalized, all remaining issues have been fixed</ch_title>
<h5>Currently French has all its labels translated. Other languages are partly translated, feel free to 
contribute translations by reading <a href="localising/index.html">Localisation (Translator's Guide)</a></h5>

<ch_title>Moving elements in Test plan has been improved in many ways</ch_title>
<h5>Drag and drop of elements in Test Plan tree is now much easier and possible on multiple nodes</h5>
<p>
<figure width="894" height="236" image="changes/2.10/12_drap_n-drop_multiple.png"></figure>
</p>
<p>
<b>Note that due to this <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6560955">bug in Java</a>,
you cannot drop a node after last node. The workaround is to drop it before this last node and then Drag and Drop the last node 
before the one you just dropped.</b>
</p>
<h5>New shortcuts have been added to move elements in the tree. </h5>
<p>(alt + Arrow Up) and (alt + Arrow Down) move the element within the parent node<br/>
(alt + Arrow Left) and (alt + Arrow Right) move the element up and down in the tree depth</p>

<ch_title>Response Time Graph Y axis can now be scaled</ch_title>
<p>
<figure width="947" height="596" image="changes/2.10/13_response_time_graph_y_scale.png"></figure>
</p>

<ch_title>JUnit Sampler gives now more details on configuration errors</ch_title>

<!--  =================== Known bugs =================== -->


<ch_section>Known bugs</ch_section>

<ul>
<li>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</li>

<li>Listeners don't show iteration counts when a If Controller has a condition which is always false from the first iteration (see <bugzilla>52496</bugzilla>).  
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).
</li>

<li>Webservice sampler does not consider the HTTP response status to compute the status of a response, thus a response 500 containing a non empty body will be considered as successful, see <bugzilla>54006</bugzilla>.
To workaround this issue, ensure you always read the response and add a Response Assertion checking text inside the response.
</li>

<li>
The numbers that appear to the left of the green box are the number of active threads / total number of threads, 
these only apply to a locally run test; they do not include any threads started on remote systems when using client-server mode, (see <bugzilla>54152</bugzilla>).
</li>

<li>
Note that there is a <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6396599 ">bug in Java</a>
on some Linux systems that manifests itself as the following error when running the test cases or JMeter itself:
<pre>
 [java] WARNING: Couldn't flush user prefs:
 java.util.prefs.BackingStoreException:
 java.lang.IllegalArgumentException: Not supported: indent-number
</pre>
This does not affect JMeter operation. This issue is fixed since Java 7b05.
</li>

<li>
With Java 1.6 and Gnome 3 on Linux systems, the JMeter menu may not work correctly (shift between mouse's click and the menu). 
This is a known Java bug (see  <bugzilla>54477 </bugzilla>). 
A workaround is to use a Java 7 runtime (OpenJDK or Oracle JDK).
</li>

<li>
With Oracle Java 7 and Mac Book Pro Retina Display, the JMeter GUI may look blurry. 
This is a known Java bug, see Bug <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8000629" >JDK-8000629</a>.
A workaround is to use a Java 7 update 40 runtime which fixes this issue.
</li>
</ul>

<!-- =================== Incompatible changes =================== -->

<ch_section>Incompatible changes</ch_section>

<ul>
<li><b>SMTP Sampler</b> now uses eml file subject if subject field is empty</li>

<li>With this version autoFlush has been turned off on PrintWriter in charge of writing test results. 
This results in improved throughput for intensive tests but can result in more test data loss in case
of JMeter crash (extremely rare). To revert to previous behaviour set <code>jmeter.save.saveservice.autoflush</code> property to <code>true</code>.</li>

<li>
Shortcut for <b>Function Helper Dialog</b> is now <i>CTRL+SHIFT+F1 (CMD + SHIFT + F1 for Mac OS)</i>.
The original key sequence <i>(Ctrl+F1)</i> did not work in some locations (it is consumed by the Java Swing ToolTipManager).
It was therefore necessary to change the shortcut.
</li>

<li>
<b>Webservice (SOAP) Request</b> has been removed by default from GUI as Element is deprecated. (Use <b>HTTP Request</b> 
with <i>Body Data</i>, see also the Template <i>Building a SOAP Webservice Test Plan</i>), if you need to show it, see property <code>not_in_menu</code> in <i>jmeter.properties</i>
</li>

<li>
<b>Transaction Controller</b> now sets <i>Response Code</i> of <i>Generated Parent Sampler</i> 
(if <i>Generated Parent Sampler</i> is checked) to response code of first failing child in case of failure of one of the children, in previous versions <i>Response Code</i> was empty.
</li>

<li>
In previous versions, <b>IncludeController</b> could run Test Elements located inside a <b>Thread Group</b>, this behaviour (<i>which was not documented</i>) 
ould result in weird behaviour, it has been removed in this version (see <bugzilla>55464</bugzilla>). 
The correct way to include Test Elements is to use <b>Test Fragment</b> as stated in documentation of <b>Include Controller</b>.
</li>

<li>
The retry count for the HttpClient 3.1 and HttpClient 4.x samplers has been changed to <b>0</b>.
Previously the default was 1, which could cause unexpected additional traffic.
</li>

<li>Starting with this version, the <b>HTTP(S) Test Script Recorder</b> tries to detect when a sample is the result of a previous
redirect. If the current response is a redirect, JMeter will save the redirect URL. When the next request is received, 
it is compared with the saved redirect URL and if there is a match, JMeter will disable the generated sample.
To revert to previous behaviour, set the property <code>proxy.redirect.disabling=false</code>
</li>

<li>Starting with this version, in <b>HTTP(S) Test Script Recorder</b> if Grouping is set to <i>Put each group in a new Transaction Controller</i>, 
the Recorder will create <b>Transaction Controller</b> instances with <i>Include duration of timer and pre-post processors in generated sample</i> set 
to false. This default value reflect more accurately response time.
</li>

<li><code>__escapeOroRegexpChars</code> function (which escapes ORO reserved characters) no longer trims the value (see <bugzilla>55328</bugzilla>)
</li>

<li>The <i>commons-lang-2.6.jar</i> has been removed from embedded libraries in <code>jmeter/lib</code> folder as it is not needed by JMeter at run-time
(it is only used by Apache Velocity for generating documentation).
If you use any plugin or third-party code that depends on it, you need to add it in <code>jmeter/lib</code> folder
</li>
</ul>

<!-- =================== Bug fixes =================== -->

<ch_section>Bug fixes</ch_section>

<h3>HTTP Samplers and Proxy</h3>
<ul>
<li><bugzilla>54627</bugzilla> - JMeter Proxy GUI: Type of sampler setting takes the whole screen when there are samplers with long names.</li>
<li><bugzilla>54629</bugzilla> - HTMLParser does not extract &amp;lt;object&amp;gt; tag urls.</li>
<li><bugzilla>55023</bugzilla> - SSL Context reuse feature (51380) adversely affects non-ssl request performance/throughput. based on analysis by Brent Cromarty (brent.cromarty at yahoo.ca)</li>
<li><bugzilla>55092</bugzilla> - Log message "WARN - jmeter.protocol.http.sampler.HTTPSamplerBase: Null URL detected (should not happen)" displayed when embedded resource URL is malformed.</li>
<li><bugzilla>55161</bugzilla> - Useless processing in SoapSampler.setPostHeaders. Contributed by Adrian Nistor (nistor1 at illinois.edu)</li>
<li><bugzilla>54482</bugzilla> - HC fails to follow redirects with non-encoded chars.</li>
<li><bugzilla>54142</bugzilla> - HTTP Proxy Server throws an exception when path contains "|" character.</li>
<li><bugzilla>55388</bugzilla> - HC3 does not allow IP Source field to override httpclient.localaddress.</li>
<li><bugzilla>55450</bugzilla> - HEAD redirects should remain as HEAD</li>
<li><bugzilla>55455</bugzilla> - HTTPS with HTTPClient4 ignores cps setting</li>
<li><bugzilla>55502</bugzilla> - Proxy generates empty http:/ entries when recording</li>
<li><bugzilla>55504</bugzilla> - Proxy incorrectly issues CONNECT requests when browser prompts for certificate override</li>
<li><bugzilla>55506</bugzilla> - Proxy should deliver failed requests to any configured Listeners</li>
<li><bugzilla>55545</bugzilla> - HTTP Proxy Server GUI should not allow both Follow and Auto redirect to be selected</li>
</ul>

<h3>Other Samplers</h3>
<ul>
<li><bugzilla>54913</bugzilla> - JMSPublisherGui incorrectly restores its state. Contributed by Benoit Wiart (benoit.wiart at gmail.com)</li>
<li><bugzilla>55027</bugzilla> - Test Action regression, duration value is not recorded (nightly build).</li>
<li><bugzilla>55163</bugzilla> - BeanShellTestElement fails to quote string when calling testStarted(String)/testEnded(String).</li>
<li><bugzilla>55349</bugzilla> - NativeCommand hangs if no input file is specified and the application requests input.</li>
<li><bugzilla>55462</bugzilla> - System Sampler should not change the sampler label if a sample fails</li>
</ul>

<h3>Controllers</h3>
<ul>
<li><bugzilla>54467</bugzilla> - Loop Controller: compute loop value only once per parent iteration.</li>
<li><bugzilla>54985</bugzilla> - 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. Contributed by Mikhail Epikhin (epihin-m at yandex.ru)</li>
<li><bugzilla>54950</bugzilla> - ModuleController : Changes to referenced Module are not taken into account if changes occur after first run and referenced node is disabled.</li>
<li><bugzilla>55201</bugzilla> - ForEach controller excludes start index and includes end index (clarified documentation).</li>
<li><bugzilla>55334</bugzilla> - Adding Include Controller to test plan (made of Include Controllers) without saving TestPlan leads to included code not being taken into account until save.</li>
<li><bugzilla>55375</bugzilla> -  StackOverflowError with ModuleController in Non-GUI mode if its name is the same as the target node.</li>
<li><bugzilla>55464</bugzilla> - Include Controller running included thread group</li>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>54589</bugzilla> - View Results Tree have a lot of Garbage characters if html page uses double-byte charset.</li>
<li><bugzilla>54753</bugzilla> - StringIndexOutOfBoundsException at SampleResult.getSampleLabel() if key_on_threadname=false when using Statistical mode.</li>
<li><bugzilla>54685</bugzilla> - ArrayIndexOutOfBoundsException if "sample_variable" is set in client but not server.</li>
<li><bugzilla>55111</bugzilla> - ViewResultsTree: text not refitted if vertical scrollbar is required. Contributed by Milamber</li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bugzilla>54540</bugzilla> - "HTML Parameter Mask" are not marked deprecated in the IHM.</li>
<li><bugzilla>54575</bugzilla> - CSS/JQuery Extractor : Choosing JODD Implementation always uses JSOUP.</li>
<li><bugzilla>54901</bugzilla> - Response Assertion GUI behaves weirdly.</li>
<li><bugzilla>54924</bugzilla> - XMLAssertion uses JMeter JVM file.encoding instead of response encoding and does not clean threadlocal variable.</li>
<li><bugzilla>53679</bugzilla> -  Constant Throughput Timer bug with localization. Reported by Ludovic Garcia</li>
</ul>

<h3>Functions</h3>
<ul>
<li><bugzilla>55328</bugzilla> - __escapeOroRegexpChars trims spaces.</li>
</ul>

<h3>I18N</h3>
<ul>
<li><bugzilla>55437</bugzilla> - ComboStringEditor does not translate EDIT and UNDEFINED strings on language change</li>
<li><bugzilla>55501</bugzilla> - Incorrect encoding for French description of __char function. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)</li>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>54504</bugzilla> - Resource string not found: [clipboard_node_read_error].</li>
<li><bugzilla>54538</bugzilla> - GUI: context menu is too big.</li>
<li><bugzilla>54847</bugzilla> - Cut &amp; Paste is broken with tree multi-selection. Contributed by Benoit Wiart (benoit.wiart at gmail.com)</li>
<li><bugzilla>54870</bugzilla> - Tree drag and drop may lose leaf nodes (affected nightly build). Contributed by Benoit Wiart (benoit.wiart at gmail.com)</li>
<li><bugzilla>55056</bugzilla> - wasted work in Data.append(). Contributed by Adrian Nistor (nistor1 at illinois.edu)</li>
<li><bugzilla>55129</bugzilla> -  Change Javadoc generation per CVE-2013-1571, VU#225657.</li>
<li><bugzilla>55187</bugzilla> - Integer overflow when computing ONE_YEAR_MS in HTTP CacheManager.</li>
<li><bugzilla>55208</bugzilla> - JSR223 language entries are duplicated; fold to lower case.</li>
<li><bugzilla>55203</bugzilla> - TestBeanGUI - wrong language settings found.</li>
<li><bugzilla>55065</bugzilla> - Useless processing in Spline3.converge(). Contributed by Adrian Nistor (nistor1 at illinois.edu)</li>
<li><bugzilla>55064</bugzilla> - Useless processing in ReportTreeListener.isValidDragAction(). Contributed by Adrian Nistor (nistor1 at illinois.edu)</li>
<li><bugzilla>55242</bugzilla> - BeanShell Client jar throws exceptions after upgrading to 2.8.</li>
<li><bugzilla>55288</bugzilla> - JMeter should default to 0 retries for HTTP requests.</li>
<li><bugzilla>55405</bugzilla> - ant download_jars task fails if lib/api or lib/doc are missing. Contributed by Antonio Gomes Rodrigues.</li>
<li><bugzilla>55427</bugzilla> - TestBeanHelper should ignore properties not supported by GenericTestBeanCustomizer</li>
<li><bugzilla>55459</bugzilla> - Elements using ComboStringEditor lose the input value if user selects another Test Element</li>
<li><bugzilla>54152</bugzilla> - In distributed testing : activeThreads always show 0 in GUI and Summariser</li>
<li><bugzilla>55509</bugzilla> - Allow Plugins to be notified of remote thread number progression</li>
<li><bugzilla>55572</bugzilla> - Detail popup of parameter does not show a Scrollbar when content exceeds display</li>
<li><bugzilla>55580</bugzilla> -  Help pane does not scroll to start for &lt;a href="#"&gt; links</li>
<li><bugzilla>55600</bugzilla> - JSyntaxTextArea : Strange behaviour on first undo</li>
<li><bugzilla>55655</bugzilla> - NullPointerException when Remote stopping /shutdown all if one engine did not start correctly. Contributed by UBIK Load Pack (support at ubikloadpack.com)</li>
<li><bugzilla>55657</bugzilla> - Remote and Local Stop/Shutdown buttons state does not take into account local / remote status </li>
</ul>

<!-- =================== Improvements =================== -->

<ch_section>Improvements</ch_section>

<h3>HTTP Samplers and Proxy</h3>
<ul>
<li>HTTP Request: Small user interaction improvements in Row parameter Detail Box. Contributed by Milamber</li>
<li><bugzilla>55255</bugzilla> - Allow Body in HTTP DELETE method to support API that use it (like ElasticSearch).</li>
<li><bugzilla>53480</bugzilla> - Add Kerberos support to Http Sampler (HttpClient4). Based on patch by Felix Schumacher (felix.schumacher at internetallee.de)</li>
<li><bugzilla>54874</bugzilla> - Support device in addition to source IP address. Based on patch by Dan Fruehauf (malkodan at gmail.com)</li>
<li><bugzilla>55488</bugzilla> - Add .ico and .woff file extension to default suggested exclusions in proxy recorder. Contributed by Antonio Gomes Rodrigues</li>
<li><bugzilla>55525</bugzilla> - Proxy should support alias for keyserver entry</li>
<li><bugzilla>55531</bugzilla> - Proxy recording and redirects. Added code to disable redirected samples.</li>
<li><bugzilla>55507</bugzilla> - Proxy SSL recording does not handle external embedded resources well</li>
<li><bugzilla>55632</bugzilla> - Have a new implementation of htmlParser for embedded resources parsing with better performances</li>
<li><bugzilla>55653</bugzilla> - HTTP(S) Test Script Recorder should set TransactionController property "Include duration of timer and pre-post processors in generated sample" to false</li>
</ul>

<h3>Other samplers</h3>
<ul>
<li><bugzilla>54788</bugzilla> - JMS Point-to-Point Sampler - GUI enhancements to increase readability and ease of use. Contributed by Bruno Antunes (b.m.antunes at gmail.com)</li>
<li><bugzilla>54798</bugzilla> - Using subject from EML-file for SMTP Sampler. Contributed by Mikhail Epikhin (epihin-m at yandex.ru)</li>
<li><bugzilla>54759</bugzilla> - SSLPeerUnverifiedException using HTTPS , property documented.</li>
<li><bugzilla>54896</bugzilla> - JUnit sampler gives only "failed to create an instance of the class" message with constructor problems.</li>
<li><bugzilla>55084</bugzilla> - Add timeout support for JDBC Request. Contributed by Mikhail Epikhin (epihin-m at yandex.ru)</li>
<li><bugzilla>55403</bugzilla> - Enhancement to OS sampler: Support for timeout</li>
<li><bugzilla>55518</bugzilla> - Add ability to limit number of cached PreparedStatements per connection when "Prepared Select Statement", "Prepared Update Statement" or "Callable Statement" query type is selected</li>
</ul>

<h3>Controllers</h3>
<ul>
<li><bugzilla>54271</bugzilla> - Module Controller breaks if test plan is renamed.</li>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>54532</bugzilla> - Improve Response Time Graph Y axis scale with huge values or small values (&amp;lt; 1000ms). Add a new field to define increment scale. Contributed by Milamber based on patch by Luca Maragnani (luca.maragnani at gmail.com)</li>
<li><bugzilla>54576</bugzilla> - View Results Tree : Add a CSS/JQuery Tester.</li>
<li><bugzilla>54777</bugzilla> - Improve Performance of default ResultCollector. Based on patch by Mikhail Epikhin (epihin-m at yandex.ru)</li>
<li><bugzilla>55389</bugzilla> - Show IP source address in request data</li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bugzilla>54789</bugzilla> - XPath Assertion - GUI enhancements to increase readability and ease of use.</li>
</ul>

<h3>Functions</h3>
<ul>
<li><bugzilla>54991</bugzilla> - Add functions to encode/decode URL encoded chars (__urlencode and __urldecode). Contributed by Milamber.</li>
</ul>

<h3>I18N</h3>
<ul>
<li><bugzilla>55241</bugzilla> - Need GUI Editor to process fields which are based on Enums with localised display strings</li>
<li><bugzilla>55440</bugzilla> - ComboStringEditor should allow tags to be language dependent</li>
<li><bugzilla>55432</bugzilla> - CSV Dataset Config loses sharing mode when switching languages</li>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>54584</bugzilla> - MongoDB plugin. Based on patch by Jan Paul Ettles (janpaulettles at gmail.com)</li>
<li><bugzilla>54669</bugzilla> - Add flag forcing non-GUI JVM to exit after test. Contributed by Scott Emmons</li>
<li><bugzilla>42428</bugzilla> - Workbench not saved with Test Plan. Contributed by Dzmitry Kashlach (dzmitrykashlach at gmail.com)</li>
<li><bugzilla>54825</bugzilla> - Add shortcuts to move elements in the tree. Contributed by Benoit Wiart (benoit.wiart at gmail.com)</li>
<li><bugzilla>54834</bugzilla> - Improve Drag &amp; Drop in the jmeter tree. Contributed by Benoit Wiart (benoit.wiart at gmail.com)</li>
<li><bugzilla>54839</bugzilla> - Set the application name on Mac. Contributed by Benoit Wiart (benoit.wiart at gmail.com)</li>
<li><bugzilla>54841</bugzilla> - Correctly handle the quit shortcut on Mac Os (CMD-Q). Contributed by Benoit Wiart (benoit.wiart at gmail.com)</li>
<li><bugzilla>54844</bugzilla> - Set the application icon on Mac Os. Contributed by Benoit Wiart (benoit.wiart at gmail.com)</li>
<li><bugzilla>54864</bugzilla> - Enable multi selection drag &amp; drop in the tree without having to start dragging before releasing Shift or Control. Contributed by Benoit Wiart (benoit.wiart at gmail.com)</li>
<li><bugzilla>54945</bugzilla> - Add Shutdown Hook to enable trapping kill or CTRL+C signals.</li>
<li><bugzilla>54990</bugzilla> - Download large files avoiding outOfMemory.</li>
<li><bugzilla>55085</bugzilla> - UX Improvement : Ability to create New Test Plan from Templates. Contributed by UBIK Load Pack (support at ubikloadpack.com)</li>
<li><bugzilla>55172</bugzilla> - Provide plugins a way to add Top Menu and menu items.</li>
<li><bugzilla>55202</bugzilla> - Add syntax color for scripts elements (BeanShell, BSF, and JSR223) and JDBC elements with RSyntaxTextArea. Contributed by Milamber based on patch by Marko Vlahovic (vlahovic74 at gmail.com)</li>
<li><bugzilla>55175</bugzilla> - HTTPHC4Impl refactoring to allow better inheritance.</li>
<li><bugzilla>55236</bugzilla> - Templates - provide button to reload template details.</li>
<li><bugzilla>55237</bugzilla> - Template system should support relative fileName entries.</li>
<li><bugzilla>55423</bugzilla> - BatchSampleSender: Reduce locking granularity by moving listener.processBatch outside of synchronized block</li>
<li><bugzilla>55424</bugzilla> - Add Stripping to existing SampleSenders</li>
<li><bugzilla>55451</bugzilla> - Test Element GUI with JSyntaxTextArea scroll down when text content is long enough to add a Scrollbar</li>
<li><bugzilla>55513</bugzilla> - StreamCopier cannot be used with System.err or System.out as it closes the output stream</li>
<li><bugzilla>55514</bugzilla> - SystemCommand should support arbitrary input and output streams</li>
<li><bugzilla>55515</bugzilla> - SystemCommand should support chaining of commands</li>
<li><bugzilla>55606</bugzilla> - Use JSyntaxtTextArea for Http Request, JMS Test Elements</li>
<li><bugzilla>55651</bugzilla> - Change JMeter application icon to Apache plume icon</li>
</ul>

<ch_section>Non-functional changes</ch_section>
<ul>
<li>Updated to jsoup-1.7.2</li>
<li><bugzilla>54776</bugzilla> - Update the dependency on Bouncy Castle to 1.48. Contributed by Emmanuel Bourg (ebourg at apache.org)</li>
<li>Updated to HttpComponents Client 4.2.6 (from 4.2.3)</li>
<li>Updated to HttpComponents Core 4.2.5 (from 4.2.3)</li>
<li>Updated to commons-codec 1.8 (from 1.6)</li>
<li>Updated to commons-io 2.4 (from 2.2)</li>
<li>Updated to commons-logging 1.1.3 (from 1.1.1)</li>
<li>Updated to commons-net 3.3 (from 3.1)</li>
<li>Updated to jdom-1.1.3 (from 1.1.2)</li>
<li>Updated to jodd-lagarto and jodd-core 3.4.8 (from 3.4.1)</li>
<li>Updated to junit 4.11 (from 4.10)</li>
<li>Updated to slf4j-api 1.7.5 (from 1.7.2)</li>
<li>Updated to tika 1.4 (from 1.3)</li>
<li>Updated to xmlgraphics-commons 1.5 (from 1.3.1)</li>
<li>Updated to xstream 1.4.4 (from 1.4.2)</li>
<li>Updated to BouncyCastle 1.49 (from 1.48)</li>
<li><bugzilla>54912</bugzilla> - JMeterTreeListener should use constants. Contributed by Benoit Wiart (benoit.wiart at gmail.com)</li>
<li><bugzilla>54903</bugzilla> - Remove the dependency on the Activation Framework. Contributed by Emmanuel Bourg (ebourg at apache.org)</li>
<li>Moved commons-lang (2.6) to lib/doc as it's only needed by Velocity.</li>
<li>Re-organised and simplified NOTICE and LICENSE files.</li>
<li><bugzilla>55411</bugzilla> -  NativeCommand could be useful elsewhere. Copied code to o.a.jorphan.exec.</li>
<li><bugzilla>55435</bugzilla> - ComboStringEditor could be simplified to make most settings final</li>
<li><bugzilla>55436</bugzilla> - ComboStringEditor should implement ClearGui</li>
<li><bugzilla>55463</bugzilla> - Component.requestFocus() is discouraged; use requestFocusInWindow() instead</li>
<li><bugzilla>55486</bugzilla> - New JMeter Logo. Contributed by UBIK Load Pack (support at ubikloadpack.com)</li>
<li><bugzilla>55548</bugzilla> - Tidy up use of TestElement.ENABLED; use TestElement.isEnabled()/setEnabled() throughout</li>
<li><bugzilla>55617</bugzilla> - Improvements to jorphan collection. Contributed by Benoit Wiart (benoit.wiart at gmail.com)</li>
<li><bugzilla>55623</bugzilla> - Invalid/unexpected configuration values should not be silently ignored</li>
<li><bugzilla>55626</bugzilla> - Rename HTTP Proxy Server as HTTP(S) Test Script Recorder</li>
</ul>

<ch_section>Thanks</ch_section>
<p>We thank all contributors mentioned in bug and improvement sections above:
<ul>
<li>Bruno Antunes (b.m.antunes at gmail.com)</li>
<li>Emmanuel Bourg (ebourg at apache.org)</li>
<li>Scott Emmons</li>
<li>Mikhail Epikhin (epihin-m at yandex.ru)</li>
<li>Dzmitry Kashlach (dzmitrykashlach at gmail.com)</li>
<li>Luca Maragnani (luca.maragnani at gmail.com)</li>
<li>Milamber</li>
<li>Adrian Nistor (nistor1 at illinois.edu)</li>
<li>Antonio Gomes Rodrigues (ra0077 at gmail.com)</li>
<li>UBIK Load Pack (support at ubikloadpack.com)</li>
<li>Benoit Wiart (benoit.wiart at gmail.com)</li>
</ul>
<br/>
We also thank bug reporters who helped us improve JMeter. <br/>
For this release we want to give special thanks to the following reporters for the clear reports and tests made after our fixes:
<ul>
<li>Immanuel Hayden (immanuel.hayden at gmail.com)</li>
<li>Danny Lade (dlade at web.de)</li>
<li>Brent Cromarty (brent.cromarty at yahoo.ca)</li>
<li>Wolfgang Heider (wolfgang.heider at racon.at)</li>
<li>Shmuel Krakower (shmulikk at gmail.com)</li>
</ul>


Apologies if we have omitted anyone else.
 </p>
 
<!--  =================== 2.9 =================== -->

<h1>Version 2.9</h1>

<h2>New and Noteworthy</h2>

<h3><u>Core Improvements:</u></h3>

<h4>* A new Extractor that uses CSS or jquery-like selector syntax has been introduced, 
it allows using either JODD or JSOUP implementations</h4>
<p>
<figure width="762" height="277" image="changes/2.9/01_css_jquery_extractor.png"></figure>
</p>
<p>Result: the title of the page in a JMeter variable
<figure width="719" height="171" image="changes/2.9/01_css_jquery_extractor_resul.png"></figure>
</p>
<h4>* JMeter can now handle different types of documents (PDF, MsOffice files, Apache OpenOffice's files...)
 within different elements </h4>
<ul>
    <li>Regular Expression Extractor, extract text from documents</li>
    <li>Assertion Response, check text in documents</li>
    <li>View Results Tree, view as a text the documents</li>
</ul>
<p>
<figure width="761" height="345" image="changes/2.9/02_document_render_view_results_tree.png"></figure>
</p>

<h4>* 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</h4>
<p>
<figure width="727" height="138" image="changes/2.9/13_regex_user_params.png"></figure>
</p>

<h4>* TCP Sampler: new options</h4>
<p>TCP Sampler has been enhanced with new options to allow setting <b>Close Connection</b>, 
 <b>SO_LINGER</b> and  <b>End of line(EOL) byte value</b>
<figure width="1147" height="302" image="changes/2.9/03_new_options_tcp_sampler.png"></figure>
</p>
<h4>* A new function <i>__escapeOroRegexpChars(,)</i> has been introduced quote ORO regexp meta characters</h4>
<h4>* ForEach Controller: new fields</h4>
<p>ForEach Controller has now 2 new fields to control start and end of loop
<figure width="320" height="203" image="changes/2.9/04_for_each_new_fields.png"></figure>
</p>
<h4>* Result Status Action Handler now has a new option to "Start next thread loop"</h4>
<p>
<figure width="722" height="132" image="changes/2.9/05_result_status_action_handler.png"></figure>
</p>

<h4>* JMS Publisher: new option</h4>
<p>JMS Publisher can now send Bytes Messages</p>
<figure width="833" height="701" image="changes/2.9/11_jms_publisher_bytes.png"></figure>

<h4>* Memory and performance improvements</h4>
<p>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</p>
<p>JSR223 Elements (enable using Groovy, Scala... as scripting languages) have been improved to enable caching 
of Compilation results when scripts are passed in Text area</p>
<figure width="841" height="470" image="changes/2.9/12_jsr223_sampler.png"></figure>

<p>Some configuration defaults have changed to improve performances by default(see <bugzilla>54412</bugzilla>), 
see description in New and Noteworthy section.
<ul>
    <li>Distributed testing now uses MODE_STRIPPED_BATCH, which returns samples in batch mode (every 100 samples
     or every minute by default). Note also that MODE_STRIPPED_BATCH strips response data from SampleResult, 
     so if you need it change to another mode (mode property in jmeter.properties)</li>
    <li>Result data are now saved to CSV by default (jmeter.save.saveservice.output_format in jmeter.properties)</li>
</ul>
</p>

<h4>* XPath Assertion now enables using a JMeter variable as input</h4>
<p>
<figure width="800" height="317" image="changes/2.9/14_xpath_assertion.png"></figure>
</p>

<h3><u>GUI and ergonomy Improvements:</u></h3>
<h4>* Search feature has been improved to search within more internal fields of elements and expand search results</h4>
<h4>* Copy/paste is now possible between 2 JMeter instances &gt;= 2.9 version</h4>
<p>Copy element(s) from one JMeter instance:
<figure width="618" height="262" image="changes/2.9/06_copy_paste_between_2_jmeter1.png"></figure>
</p>
<p>Paste element(s) into a second JMeter instance:
<figure width="617" height="278" image="changes/2.9/06_copy_paste_between_2_jmeter2.png"></figure>
</p>
<h4>* HTTP Header Manager</h4>
<p>Allow copy from clipboard to HeaderPanel, headers are supposed to be separated by new line
 and have the following form <i>name:value</i>
<figure width="661" height="263" image="changes/2.9/07_header_panel_add_from_clipboard.png"></figure>
</p>
<h4>* Module Controller</h4>
<p>Module Controller has been improved to better render referenced controller and expand it by clicking on a new button
<figure width="832" height="274" image="changes/2.9/08_module_controller_improvements.png"></figure>
</p>
<h4>* HTTP Proxy Server</h4>
<p>HTTP Proxy Server now has a button to add a set of default exclusions for URL patterns, 
this list can be configured through property : <i>proxy.excludes.suggested</i>
<figure width="811" height="214" image="changes/2.9/09_proxy_excludes_suggested.png"></figure>
</p>
<h4>* Rendering of target controller has been improved in HTTP Proxy Server</h4>

<h3><u>HTTP Proxy Server recording:</u></h3>
<p>* HTTP Proxy Server now automatically uses HTTP Request with Raw Post Body mode for 
samples that only have one unnamed argument (JSON, XML, GWT...)</p>
<p>* 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</p>
 <p>
<figure width="484" height="307" image="changes/2.9/10_http_proxy_dont_force_http_type.png"></figure>
</p>
<p>* SamplerCreator interface has been enriched to meet new requirements for plug-in providers</p>
<p>* It is now possible to create binary sampler for x-www-form-urlencoded POST request by 
modifying <i>proxy.binary.types</i> property to add application/x-www-form-urlencoded </p>
<p>* Improved timestamp format auto-detection when reading CSV files</p>

<!--  =================== Known bugs =================== -->

<h2>Known bugs</h2>

<p>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</p>

<p>Listeners don't show iteration counts when a If Controller has a condition which is always false from the first iteration (see <bugzilla>52496</bugzilla>).  
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).
</p>

<p>Webservice sampler does not consider the HTTP response status to compute the status of a response, thus a response 500 containing a non empty body will be considered as successful, see <bugzilla>54006</bugzilla>.
To workaround this issue, ensure you always read the response and add a Response Assertion checking text inside the response.
</p>

<p>
Changing language can break part of the configuration of the following elements (see <bugzilla>53679</bugzilla>):
<ul>
    <li>CSV Data Set Config (sharing mode will be lost)</li>
    <li>Constant Throughput Timer (Calculate throughput based on will be lost)</li>
</ul>
</p>

<p>
The numbers that appear to the left of the green box are the number of active threads / total number of threads, 
these only apply to a locally run test; they do not include any threads started on remote systems when using client-server mode, (see <bugzilla>54152</bugzilla>).
</p>

<p>
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:
<pre>
 [java] WARNING: Couldn't flush user prefs:
 java.util.prefs.BackingStoreException:
 java.lang.IllegalArgumentException: Not supported: indent-number
</pre>
This does not affect JMeter operation.
</p>

<!-- =================== Incompatible changes =================== -->

<h2>Incompatible changes</h2>

<p><b>JMeter requires now a Java 6 runtime or higher.</b></p>

<p>Some configuration defaults have changed to improve performances by default (see <bugzilla>54412</bugzilla>), 
see description in New and Noteworthy section.</p>

<p>Webservice sampler now adds to request the headers that are set through Header Manager, these were previously ignored</p>

<p><i>jdbcsampler.cachesize</i> property has been removed, it previously limited the size of a per connection cache of Map &lt; String, 
PreparedStatement &gt; , it also limited the size of this
map which held the PreparedStatement for SQL queries. This limitation provoked a bug <bugzilla>53995</bugzilla>. 
It has been removed so now size of these 2 maps is not limited anymore. This change changes behaviour as starting from 
this version no PreparedStatement will be closed during the test.</p>

<p>Starting with this version, there are some important changes on JSR223 Test Elements:
<ul>
    <li>JSR223 Test Elements that have an invalid filename (not existing or unreadable) will make test fail instead of 
    making the element silently work</li>
    <li>In JSR223 Test Elements: responseCodeOk, responseMessageOK and successful are set before
     script is executed, if responseData is set it will not be overriden anymore by a toString() on script return value</li>
</ul>
</p>

<p>View Results Tree now considers response with missing content type as text.</p>

<p>In remote Test mode, JMeter now exits in error if one of the remote engines cannot be configured, 
previously it started the test with available engines.</p>

<!-- =================== Bug fixes =================== -->

<h2>Bug fixes</h2>

<h3>HTTP Samplers and Proxy</h3>
<ul>
<li>Don't log spurious warning messages when using concurrent pool embedded downloads with Cache Manager or CookieManager</li>
<li><bugzilla>54057</bugzilla>- Proxy option to set user and password at startup (-u and -a) not working with HTTPClient 4</li>
<li><bugzilla>54187</bugzilla> - Request tab does not show headers if request fails</li>
<li><bugzilla>53840</bugzilla> - Proxy Recording : Response message: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "" "</li>
<li><bugzilla>54351</bugzilla> - HC4 and URI fragments is failing</li>
</ul>

<h3>Other Samplers</h3>
<ul>
<li><bugzilla>53997</bugzilla> - LDAP Extended Request: Escape ampersand (&amp;), left angle bracket (&lt;) 
and right angle bracket (&gt;) in search filter tag in XML response data</li>
<li><bugzilla>53995</bugzilla> - AbstractJDBCTestElement shares PreparedStatement between multi-threads</li>
<li><bugzilla>54119</bugzilla> - HTTP 307 response is not redirected</li>
<li><bugzilla>54326</bugzilla> - AjpSampler send file in post throws FileNotFoundException</li>
<li><bugzilla>54331</bugzilla> - AjpSampler throws null pointer on GET request that are protected</li>
</ul>

<h3>Controllers</h3>
<ul>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>54088</bugzilla> - The type video/f4m is text, not binary</li>
<li><bugzilla>54166</bugzilla> - ViewResultsTree could not render the HTML response: handle failure to parse HTML</li>
<li><bugzilla>54287</bugzilla> - Incorrect Timestamp in Response Time Graph when using a date with time in Date format field</li>
<li><bugzilla>54451</bugzilla> - Response Time Graph reports wrong times when the are many samples for same time</li>
<li><bugzilla>54459</bugzilla> - CSVSaveService does not handle date parsing very well</li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bugzilla>54058</bugzilla> - In HTTP Request Defaults, the value of field "Embedded URLs must match: is not saved if the check box "Retrieve All  Embedded Resources" is not checked.</li>
<li><bugzilla>54375</bugzilla> - Regular Expression Extractor : When regex syntax is wrong, post processing is stopped</li>
</ul>

<h3>Functions</h3>
<ul>
</ul>

<h3>I18N</h3>
<ul>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>53975</bugzilla> - Variables replacement doesn't work with option "Delay thread creation until needed"</li>
<li><bugzilla>54055</bugzilla> - View Results tree: = signs are stripped from parameter values at HTTP tab</li>
<li><bugzilla>54129</bugzilla> - Search Feature does not find text although existing in elements </li>
<li><bugzilla>54023</bugzilla> - Unable to start JMeter from a root directory and if the full path of JMeter installation contains one or more spaces (Unix/linux)</li>
<li><bugzilla>54172</bugzilla> - Duplicate shortcut key not working and CTRL+C / CTRL+V / CTRL+V do not cancel default event</li>
<li><bugzilla>54057</bugzilla> - Proxy option to set user and password at startup (-u and -a) not working with HTTPClient 4</li>
<li><bugzilla>54267</bugzilla> - Start Next Thread Loop setting doesn't work in custom thread groups</li>
<li><bugzilla>54413</bugzilla> - DataStrippingSampleSender returns 0 for number of bytes of any response</li>
</ul>

<!-- =================== Improvements =================== -->

<h2>Improvements</h2>

<h3>HTTP Samplers</h3>
<ul>
<li><bugzilla>54185</bugzilla> - Allow query strings in paths that start with HTTP or HTTPS</li>
</ul>

<h3>Other samplers</h3>
<ul>
<li><bugzilla>54004</bugzilla> - Webservice Sampler : Allow adding headers to request with Header Manager</li>
<li><bugzilla>54106</bugzilla> - JSR223TestElement should check for file existence when a filename is set instead of using Text Area content </li>
<li><bugzilla>54107</bugzilla> - JSR223TestElement : Enable compilation and caching of Script Text</li>
<li><bugzilla>54109</bugzilla> - JSR223TestElement : SampleResult properties should be set before entering script to allow user setting different code</li>
<li><bugzilla>54230</bugzilla> - TCP Sampler, additions of "Close Connection", "SO_LINGER" and "End of line(EOL) byte value" options</li>
<li><bugzilla>54182</bugzilla> - Support sending of ByteMessage for JMS Publisher.</li>
</ul>

<h3>Controllers</h3>
<ul>
<li><bugzilla>54131</bugzilla> - ForEach Controller : Add start and end index for looping over variables</li>
<li><bugzilla>54132</bugzilla> - Module Controller GUI : Improve rendering of referenced controller</li>
<li><bugzilla>54155</bugzilla> - ModuleController : Add a shortcut button to unfold the tree up to referenced controller and highlight it</li>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>54200</bugzilla> - Add support of several document types (like Apache OpenOffice's files, MS Office's files, PDF's files, etc.) 
to the elements View Results Tree, Assertion Response and Regular Expression Extractor (using Apache Tika)</li>
<li><bugzilla>54226</bugzilla> - View Results Tree : Show response even when server does not return ContentType header</li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bugzilla>54259</bugzilla> - Introduce a new Extractor that uses CSS or jquery-like selector syntax</li>
<li><bugzilla>45772</bugzilla> - RegEx User Parameters Post Processor</li>
<li><bugzilla>54160</bugzilla> - Add support for xpath assertion to apply to a JMeter variable.</li>
</ul>

<h3>Functions</h3>
<ul>
<li><bugzilla>54189</bugzilla> - Add a function to quote ORO regexp meta characters</li>
<li><bugzilla>54418</bugzilla> - UUID Function</li>
</ul>

<h3>I18N</h3>
<ul>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>54005</bugzilla> - HTTP Mirror Server : Add special headers "X-" to control Response status and response content</li>
<li><bugzilla>53875</bugzilla> - Include suggested defaults for URL filters on HTTP Proxy</li>
<li><bugzilla>54031</bugzilla> - Add tooltip to running/total threads indicator </li>
<li>Webservice (SOAP) Request has been deprecated</li>
<li><bugzilla>54161</bugzilla> - Proxy : be able to create binary sampler for x-www-form-urlencoded POST request</li>
<li><bugzilla>54154</bugzilla> - HTTP Proxy Server should not force user to select the type of Sampler in HTTP Sampler Settings</li>
<li><bugzilla>54165</bugzilla> - Proxy Server: Improve rendering of target controller</li>
<li><bugzilla>46677</bugzilla> - Copying Test Elements between test plans</li>
<li><bugzilla>54204</bugzilla> - Result Status Action Handler : Add start next thread loop option</li>
<li><bugzilla>54232</bugzilla> - Search Feature : Add a button to search and expand results</li>
<li><bugzilla>54251</bugzilla> - Add tristate checkbox implementation</li>
<li><bugzilla>54257</bugzilla> - Enhance SamplerCreator interface to meet new requirements</li>
<li><bugzilla>54258</bugzilla> - Proxy : Use Raw Post Body when Sampler has one unnamed argument, useful for Samplers using POST method by of type JSON, XML, GWT body</li>
<li><bugzilla>54268</bugzilla> - Improve CPU and memory usage</li>
<li><bugzilla>54376</bugzilla> - ScopePanel : Allow configuring more precisely scopes</li>
<li><bugzilla>54412</bugzilla> - Changing JMeter defaults to ensure better performances by default</li>
<li><bugzilla>54414</bugzilla> - Remote Test should not start if one of the engines fails to start correctly</li>
</ul>

<h2>Non-functional changes</h2>
<ul>
<li><bugzilla>53956</bugzilla> - Add ability to paste (a list of values) from clipboard for Header Manager</li>
<li>Updated to HttpComponents Client 4.2.3 (from 4.2.1)</li>
<li>Updated to HttpComponents Core 4.2.3 (from 4.2.2)</li>
<li><bugzilla>54110</bugzilla> - BSFTestElement and JSR223TestElement should use shared super-class for common fields</li>
<li><bugzilla>54199</bugzilla> - Move to Java 6</li>
<li>Upgraded to rhino 1.7R4</li>
</ul>

<!--  =================== 2.8 =================== -->

<h1>Version 2.8</h1>

<h2>New and Noteworthy</h2>

<h3>Core Improvements:</h3>

<h4>Thread Group: New Option <i>Delay thread creation until needed</i></h4>
<p>New Option "Delay thread creation until needed" that will create and start threads when needed instead of creating them on Test startup<br></br>
<b>This new feature allows running tests with a huge number of short lived threads.</b>
<figure width="817" height="296" image="changes/2.8/12_delay_thread_creation.png"></figure>
</p>

<h4>HTTP Cookie Manager (IPv6 support)</h4>
<p>Add HTTPClient 4 cookie implementation in JMeter. <br/>
Cookie Manager has now the default HC3.1 implementation and a new choice HC4 implementation (compliant with IPv6 address) 
<figure width="635" height="239" image="changes/2.8/11_hc4_cookie.png"></figure>
</p>

<h4>Memory and performance improvements</h4>
<p>Significant improvements have been done in this version on memory usage of JMeterThread</p>
<p>JSR223 Elements (enable using Groovy, scala... as scripting languages) have been improved to enable:
<ul>
    <li>usage of Compilable interface when available to boost CPU usage</li>
    <li>caching of Compilation when scripts are used as Files</li>
</ul>
See <a href="http://wiki.apache.org/jmeter/JMeterPerformance">JMeter Performances across versions</a>
</p>

<h4>OS Process Sampler</h4>
<p>Allow defining files for stdout/stderr/stdin. 
<figure width="820" height="531" image="changes/2.8/06_os_sampler_stdout-err-in.png"></figure>
</p>

<h4>HTTP Request: PATCH verb</h4>
<p>Add PATCH verb to HTTP sampler
<figure width="615" height="340" image="changes/2.8/01_http_patch_verb.png"></figure>
</p>

<h4>HTTP Request: HTTPClient 4 is now the default implementation</h4>
<p>HTTPClient 4 is now the default HTTP Request implementation (and for Proxy element when generating HTTP requests).<br/>
Previously the default was the HTTP Java implementation (i.e. the implementation provided by the JVM) 
<figure width="558" height="288" image="changes/2.8/02_http_default_hc4.png"></figure>
</p>

<h4>HTTP Request</h4>
<p>Add Embedded URL Filter to HTTP Request Defaults Control (it was already present for HTTP Requests)
<figure width="586" height="682" image="changes/2.8/05_http_defaults_url_filter.png"></figure>
</p>

<h4>Miscellanous</h4>
<ul>
    <li>CSV Dataset : Embedded new lines are now supported in quoted data</li> 
    <li>JMX files now contain the version of JMeter that created the file</li> 
    <li>JMeter Version is now available as property "jmeter.version"</li> 
</ul>
<h3>Reporting Improvements:</h3>

<h4>Response Time Graph</h4>
<p>Add a new visualizer Response Time Graph to draw a line graph showing the evolution of response time for a test
<figure width="993" height="549" image="changes/2.8/09_resp_time_graph.png"></figure>
</p>
<p>Settings for Response Time Graph
<figure width="989" height="602" image="changes/2.8/08_resp_time_graph_settings.png"></figure>
</p>

<h4>View Results in Table</h4>
<p>Add latency to View Result in Table listener
<figure width="998" height="324" image="changes/2.8/10_latency_view_results_table.png"></figure>
</p>

<h4>Aggregate Graph</h4>
<p>Small improvements: legend at left or right is now on 1 column (instead of 1 large line), ...
<figure width="989" height="418" image="changes/2.8/07_aggregate_graph_legend_left_right.png"></figure>
</p>

<h3>GUI and ergonomy Improvements:</h3>
<h4>HTTP Proxy Server simplifications</h4>
<p>HTTPS Spoofing options have been removed from Proxy as HTTPS recording is directly available since JMeter 2.4.
<figure width="940" height="277" image="changes/2.8/03_remove_https_spoofing1.png"></figure>
</p>

<h4>HTTP Proxy Server</h4>
<p>Allow URL Filters to be pasted from clipboard 
<figure width="707" height="614" image="changes/2.8/15_add_from_clipboard_filter.png"></figure>
</p>

<h4>Find in JMeter</h4>
<p>CTRL + F for the new Find feature 
<figure width="477" height="157" image="changes/2.8/14_ctrl_F_shortcut.png"></figure>

ESC key now closes popups.
</p>

<h4>User Interface in GNOME 3</h4>
<p>Display 'Apache JMeter' title in app title bar in Gnome 3
<figure width="441" height="253" image="changes/2.8/13_gnome3_title.png"></figure>
</p>

<!--  =================== Known bugs =================== -->

<h2>Known bugs</h2>

<p>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</p>

<p>Listeners don't show iteration counts when a If Controller has a condition which is always false from the first iteration (see <bugzilla>52496</bugzilla>).  
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).
</p>

<p>
Changing language can break part of the configuration of the following elements (see <bugzilla>53679</bugzilla>):
<ul>
    <li>CSV Data Set Config (sharing mode will be lost)</li>
    <li>Constant Throughput Timer (Calculate throughput based on will be lost)</li>
</ul>
</p>

<p>
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:
<pre>
 [java] WARNING: Couldn't flush user prefs:
 java.util.prefs.BackingStoreException:
 java.lang.IllegalArgumentException: Not supported: indent-number
</pre>
This does not affect JMeter operation.
</p>

<!-- =================== Incompatible changes =================== -->

<h2>Incompatible changes</h2>

<p>
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 <bugzilla>53521</bugzilla> and <bugzilla>53522</bugzilla> 
</p>

<p>
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 <bugzilla>53365</bugzilla>.
</p>

<p>
JSR223 Test Elements using Script file are now Compiled if ScriptEngine supports this feature, see <bugzilla>53520</bugzilla>.
</p>

<p>
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.
</p>

<p>
By default, the TestCompiler now stores details of which pairs it has seen in Controller instances rather than in a static Set.
[<bugzilla>53796</bugzilla>]
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 <code>TestCompiler.useStaticSet=true</code>
</p>

<p>
HTTPS Spoofing options have been removed from Proxy as HTTPS recording is directly available since JMeter 2.4.
</p>
<!-- =================== Bug fixes =================== -->

<h2>Bug fixes</h2>

<h3>HTTP Samplers and Proxy</h3>
<ul>
<li><bugzilla>53521</bugzilla> - Cache Manager should cache content with Cache-control=private</li>
<li><bugzilla>53522</bugzilla> - Cache Manager should not store at all response with header "no-cache" and store other types of Cache-Control having max-age value</li>
<li><bugzilla>53838</bugzilla> - Pressing "Stop" does not interrupt the TCP sampler</li>
<li><bugzilla>53911</bugzilla> - JmeterKeystore does not allow for key down the list of certificate</li>
</ul>

<h3>Other Samplers</h3>
<ul>
<li><bugzilla>53348</bugzilla> - JMeter JMS Point-to-Point Request-Response sampler doesn't work when Request-queue and Receive-queue are different</li>
<li><bugzilla>53357</bugzilla> - JMS Point to Point reports too high response times in Request Response Mode</li>
<li><bugzilla>53440</bugzilla> - SSL connection leads to ArrayStoreException on JDK 6 with some KeyManagerFactory SPI</li>
<li><bugzilla>53511</bugzilla> - access log sampler SessionFilter throws NullPointerException - cookie manager not initialized properly</li>
<li><bugzilla>53715</bugzilla> - JMeter does not load WSDL</li>
</ul>

<h3>Controllers</h3>
<ul>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>53742</bugzilla> - When jmeter.save.saveservice.sample_count is set to true, elapsed time read by listener is always equal to 0</li>
<li><bugzilla>53774</bugzilla> - RequestViewRaw does not show headers unless samplerData is non-null</li>
<li><bugzilla>53802</bugzilla> - IdleTime values are not saved to CSV log</li>
<li><bugzilla>53874</bugzilla> - 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</li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bugzilla>51512</bugzilla> - Cookies aren't inserted into HTTP request with IPv6 Host header</li>
</ul>

<h3>Functions</h3>
<ul>
</ul>

<h3>I18N</h3>
<ul>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>53365</bugzilla> - JSR223TestElement should cache ScriptEngineManager</li>
<li><bugzilla>53520</bugzilla> - JSR223 Elements : Use Compilable interface to improve performances on File scripts</li>
<li><bugzilla>53501</bugzilla> - Synchronization timer blocks test end.</li>
<li><bugzilla>53750</bugzilla> - TestCompiler saves unnecessary entries in pairing collection</li>
<li><bugzilla>52266</bugzilla> - Code:Inconsistent synchronization</li>
<li><bugzilla>53841</bugzilla> - CSVSaveService reads file using JVM default file encoding instead of using the one configured in saveservice.properties</li>
<li><bugzilla>53953</bugzilla> New: Typo in monitor test plan documentation</li>
</ul>

<!-- =================== Improvements =================== -->

<h2>Improvements</h2>

<h3>HTTP Samplers</h3>
<ul>
<li><bugzilla>53675</bugzilla> - Add PATCH verb to HTTP sampler</li>
<li><bugzilla>53931</bugzilla> - 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</li>
<li><bugzilla>53934</bugzilla> - Removes HTTPS spoofing options in JMeter HTTP Proxy Server. Since JMeter 2.4, the HTTPS protocol is directly supported by the proxy</li>
</ul>

<h3>Other samplers</h3>
<ul>
<li><bugzilla>55310</bugzilla> - TestAction should implement Interruptible</li>
<li><bugzilla>53318</bugzilla> - Add Embedded URL Filter to HTTP Request Defaults Control </li>
<li><bugzilla>53782</bugzilla> - Enhance JavaSampler handling of JavaSamplerClient cleanup to use less memory</li>
<li><bugzilla>53168</bugzilla> - OS Process - allow specification of stdout/stderr/stdin</li>
<li><bugzilla>53844</bugzilla> - JDBC related elements should check class of Variable Name supposed to contain JDBC Connection Configuration to avoid ClassCastException </li>
</ul>

<h3>Controllers</h3>
<ul>
<li><bugzilla>53671</bugzilla> - tearDown thread group to run even if shutdown test happens</li>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>53566</bugzilla> - Don't log partial responses to the jmeter log</li>
<li><bugzilla>53716</bugzilla> - 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</li>
<li><bugzilla>53718</bugzilla> - Add a new visualizer 'Response Time Graph' to draw a line graph showing the evolution of response time for a test</li>
<li><bugzilla>53738</bugzilla> - Keep track of number of threads started and finished</li>
<li><bugzilla>53753</bugzilla> -  Summariser: no point displaying fractional time in most cases</li>
<li><bugzilla>53749</bugzilla> - 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.</li>
<li><bugzilla>53941</bugzilla> - Add latency to View Result table listener</li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bugzilla>53755</bugzilla> - 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)</li>
</ul>

<h3>Functions</h3>
<ul>
<li><bugzilla>51527</bugzilla> - __time() function : add another option to __time() to provide *seconds* since epoch</li>
</ul>

<h3>I18N</h3>
<ul>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>53364</bugzilla> - Sort list of Functions in Function Helper Dialog</li>
<li><bugzilla>53418</bugzilla> - New Option "Delay thread creation until needed" that will create and start threads when needed instead of creating them on Test startup</li>
<li><bugzilla>42245</bugzilla> - Show clear passwords in HTTP Authorization Manager</li>
<li><bugzilla>53616</bugzilla> - Display 'Apache JMeter' title in app title bar in Gnome 3</li>
<li><bugzilla>53759</bugzilla> - ClientJMeterEngine perfoms unnecessary traverse using SearchByClass(TestListener)</li>
<li><bugzilla>52601</bugzilla> - CTRL + F for the new Find feature</li>
<li><bugzilla>53796</bugzilla> - TestCompiler uses static Set which can grow huge</li>
<li><bugzilla>53673</bugzilla> - Add JMeter version in the jmx file</li>
<li>Add support for HeapDump to the JMeter non-GUI and GUI client</li>
<li><bugzilla>53862</bugzilla> - Would be nice to have the JMeter Version available as a property</li>
<li><bugzilla>53806</bugzilla> -  FileServer should provide thread-safe parsing</li>
<li><bugzilla>53807</bugzilla> - CSV Dataset does not handle embedded new lines in quoted data</li>
<li><bugzilla>53879</bugzilla> - GUI : Allow Popups to be closed with ESC key</li>
<li><bugzilla>53876</bugzilla> - Allow URL Filters (HTTP Proxy) to be pasted from clipboard</li>
</ul>

<h2>Non-functional changes</h2>
<ul>
<li><bugzilla>53311</bugzilla> - JMeterUtils#runSafe should not throw Error when interrupted</li>
<li>Updated to commons-net-3.1 (from 3.0.1)</li>
<li>Updated to HttpComponents Core 4.2.2 (from 4.1.4) and HttpComponents Client 4.2.1 (from 4.1.3)</li>
<li><bugzilla>53765</bugzilla> - Switch to commons-lang3-3.1</li>
<li><bugzilla>53884</bugzilla> - wrong Maven groupId for commons-lang</li>
</ul>

<!--  =================== 2.7 =================== -->

<h1>Version 2.7</h1>

<h2>New and Noteworthy</h2>

<h3>OS Process Sampler</h3>
<p>A new System Sampler that can be used to execute commands on the local machine.
<figure width="629" height="497" image="changes/2.7/01_os_process_sampler.png"></figure>
</p>

<p>OS Process Sampler results example with DNS lookup command 'dig'
<figure width="877" height="470" image="changes/2.7/02_os_process_example_results.png"></figure>
</p>

<h3>JMS Samplers improvements</h3>
<p>Addition of a "Non Persistent Delivery" option to send "Non-Persistent" (Guaranteed to be delivered at most once. Message loss is not a concern.) JMS messages
<figure width="953" height="336" image="changes/2.7/11_jms_non_persistent_delivery_mode.png"></figure>
</p>

<p>Support sending of JMS Object Messages to enable sending Objects unmarshalled from XML by XStream
<figure width="808" height="726" image="changes/2.7/12_jms_sending_objects.png"></figure>
</p>

<p>Enable setting JMS Properties through JMS Publisher sampler
<figure width="1029" height="470" image="changes/2.7/13_jms_properties.png"></figure>
</p>

<h3>Test Action sampler</h3>
<p>Allow premature exit from a loop
<figure width="862" height="167" image="changes/2.7/07_test_action_next_iter.png"></figure>
</p>

<h3>Webservice Sampler improvements</h3>
<p>Add a jmeter property soap.document_cache to control size of Document Cache
<figure width="270" height="59" image="changes/2.7/14_ws_document_cache.png"></figure>
</p>

<p>Make Maintain HTTP Session configurable
<figure width="833" height="505" image="changes/2.7/15_ws_maintain_session.png"></figure>
</p>

<h3>Aggregate graph: Clustered Bar char with average, median, 90% line, min and max columns</h3>
<p>Aggregate graph changes to Clustered Bar chart, add more columns (median, 90% line, min, max) and options, fixed some bugs 
<figure width="1177" height="503" image="changes/2.7/03_aggregate_graph_with_new_cols.png"></figure>
</p>

<p>New settings for aggregate graph
<figure width="1173" height="433" image="changes/2.7/04_aggregate_graph_parameters.png"></figure>
</p>

<h3>Improvements of HTML report design generated by JMeter Ant task in extras folder</h3>
<p>HTML report example 
<figure width="1264" height="506" image="changes/2.7/05_jmeter_ant_task_report_success.png"></figure>
</p>

<p>HTML report example with some assertion errors
<figure width="1267" height="550" image="changes/2.7/06_jmeter_ant_task_report_errors.png"></figure>
</p>

<h3>Mailer Visualizer</h3>
<p><ul>
<li>Enable authentication, and connection security with SSL or TLS</li>
<li>Improve GUI design</li>
<li>Add internationalisation (i18n) support</li>
</ul>
<figure width="860" height="403" image="changes/2.7/10_mailer_visualizer_gui.png"></figure>
</p>

<h3>New Visual Indicator of number of ERROR/FATAL messages in logs</h3>
<p>Indicator shows number of ERROR/FATAL messsages in logs, it can be clicked to toggle Log Viewer panel
<figure width="815" height="633" image="changes/2.7/16_log_errors_counter.png"></figure>
</p>

<h3>Dialog box to show detail of a parameter row</h3>
<p>Add a detail button on parameters table to show detail of a Row 
<figure width="824" height="165" image="changes/2.7/08_param_button_detail.png"></figure>
</p>

<p>Detail box example
<figure width="702" height="454" image="changes/2.7/09_detail_box.png"></figure>
</p>

<h3>Plugin writers</h3>
<p>
New interface org.apache.jmeter.engine.util.ConfigMergabilityIndicator has been introduced to tell whether a ConfigTestElement can be merged in Sampler (see <bugzilla>53042</bugzilla>):<br/>
<pre>public boolean applies(ConfigTestElement configElement);</pre>
</p>

<p>New interface org.apache.jmeter.protocol.http.proxy.SamplerCreator to allow plugging HTTP based samplers that differ from default HTTP Samplers through Proxy during Recording Phase (see <bugzilla>52674</bugzilla>):<br/> 
<pre>public String[] getManagedContentTypes();</pre>
<pre>public HTTPSamplerBase createSampler(HttpRequestHdr request, Map&lt;String, String&gt; pageEncodings, Map&lt;String, String&gt; formEncodings);</pre>
<pre>public void populateSampler(HTTPSamplerBase sampler, HttpRequestHdr request, Map&lt;String, String&gt; pageEncodings, Map&lt;String, String&gt; formEncodings) throws Exception;</pre>
</p>


<!--  =================== Known bugs =================== -->

<h2>Known bugs</h2>

<p>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</p>

<p>Listeners don't show iteration counts when a If Controller has a condition which is always false from the first iteration (see <bugzilla>52496</bugzilla>).  
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).
</p>

<!-- =================== Incompatible changes =================== -->

<h2>Incompatible changes</h2>

<p>
When doing replacement of User Defined Variables, Proxy will not substitute partial values anymore when "Regexp matching" is used. It will use Perl 5 word matching ("\b")
</p>

<p>
In User Defined Variables, Test Plan, HTTP Sampler Arguments Table, Java Request Defaults, JMS Sampler and Publisher, LDAP Request Defaults and LDAP Extended Request Defaults, rows with
empty Name and Value are no more saved.
</p>

<p>
JMeter now expands the Test Plan tree to the testplan level and no further and selects the root of the tree. Furthermore default value of onload.expandtree is false.
</p>

<p>
Graph Full Results Listener has been removed.
</p>

<p>
When calling "Clear All" command, if Log Viewer is displayed its content will be cleared.
</p>
<!-- =================== Bug fixes =================== -->

<h2>Bug fixes</h2>

<h3>HTTP Samplers and Proxy</h3>
<ul>
<li><bugzilla>52613</bugzilla> - Using Raw Post Body option, text gets encoded</li>
<li><bugzilla>52781</bugzilla> - Content-Disposition header garbled even if browser compatible headers is checked (HC4) </li>
<li><bugzilla>52796</bugzilla> - MonitorHandler fails to clear variables when starting a new parse</li>
<li><bugzilla>52871</bugzilla> - Multiple Certificates not working with HTTP Client 4</li>
<li><bugzilla>52885</bugzilla> - Proxy : Recording issues with HTTPS, cookies starting with secure are partly truncated</li>
<li><bugzilla>52886</bugzilla> - Proxy : Recording issues with HTTPS when spoofing is on, secure cookies are not always changed</li>
<li><bugzilla>52897</bugzilla> - HTTPSampler : Using PUT method with HTTPClient4 and empty Content Encoding and sending files leads to NullPointerException</li>
<li><bugzilla>53145</bugzilla> - HTTP Sampler - function in path evaluated too early</li>
</ul>

<h3>Other Samplers</h3>
<ul>
<li><bugzilla>51737</bugzilla> - TCPSampler : Packet gets converted/corrupted</li>
<li><bugzilla>52868</bugzilla> - BSF language list should be sorted</li>
<li><bugzilla>52869</bugzilla> - JSR223 language list currently uses BSF list which is wrong</li>
<li><bugzilla>52932</bugzilla> - JDBC Sampler : Sampler is not marked in error in an Exception which is not of class IOException, SQLException, IOException occurs</li>
<li><bugzilla>52916</bugzilla> - JDBC Exception if there is an empty user defined variable</li>
<li><bugzilla>52937</bugzilla> - Webservice Sampler : Clear Soap Documents Cache at end of Test </li>
<li><bugzilla>53027</bugzilla> - Jmeter starts throwing exceptions while using SMTP Sample in a test plan with HTTP Cookie Mngr or HTTP Request Defaults</li>
<li><bugzilla>53072</bugzilla> - JDBC PREPARED SELECT statements should return results in variables like non prepared SELECT</li>
</ul>

<h3>Controllers</h3>
<ul>
<li><bugzilla>52968</bugzilla> - Option Start Next Loop in Thread Group does not mark parent Transaction Sampler in error when an error occurs</li>
<li><bugzilla>50898</bugzilla> - IncludeController : NullPointerException loading script in non-GUI mode if Includers use same element name</li>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>43450</bugzilla> - Listeners/Savers assume SampleResult count is always 1; fixed Generate Summary Results</li>
</ul>

<h3>Assertions</h3>
<ul>
<li><bugzilla>52848</bugzilla> - NullPointer in "XPath Assertion"</li>
</ul>

<h3>Functions</h3>
<ul>
</ul>

<h3>I18N</h3>
<ul>
<li><bugzilla>52551</bugzilla> - Function Helper Dialog does not switch language correctly</li>
<li><bugzilla>52552</bugzilla> - Help reference only works in English</li>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>52639</bugzilla> - JSplitPane divider for log panel should be hidden if log is not activated</li>
<li><bugzilla>52672</bugzilla> - Change Controller action deletes all but one child samplers</li>
<li><bugzilla>52694</bugzilla> - Deadlock in GUI related to non AWT Threads updating GUI</li>
<li><bugzilla>52678</bugzilla> - Proxy : When doing replacement of UserDefinedVariables, partial values should not be substituted</li>
<li><bugzilla>52728</bugzilla> - CSV Data Set Config element cannot coexist with BSF Sampler in same Thread Plan</li>
<li><bugzilla>52762</bugzilla> - Problem with multiples certificates: first index not used until indexes are restarted</li>
<li><bugzilla>52741</bugzilla> - TestBeanGUI default values do not work at second time or later</li>
<li><bugzilla>52783</bugzilla> - oro.patterncache.size property never used due to early init</li>
<li><bugzilla>52789</bugzilla> - Proxy with Regexp Matching can fail with NullPointerException in Value Replacement if value is null</li>
<li><bugzilla>52645</bugzilla> - Recording with Proxy leads to OutOfMemory</li>
<li><bugzilla>52679</bugzilla> - User Parameters columns narrow</li>
<li><bugzilla>52843</bugzilla> - Sample headerSize and bodySize not being accumulated for subsamples</li>
<li><bugzilla>52967</bugzilla> - The function __P() couldn't use default value when running with remote server in GUI mode.</li>
<li><bugzilla>50799</bugzilla> - Having a non-HTTP sampler in a http test plan prevents multiple header managers from working</li>
<li><bugzilla>52997</bugzilla> - Jmeter should not exit without saving Test Plan if saving before exit fails</li>
<li><bugzilla>53136</bugzilla> - Catching Throwable needs to be carefully handled</li>
</ul>

<!-- =================== Improvements =================== -->

<h2>Improvements</h2>

<h3>HTTP Samplers</h3>
<ul>
</ul>

<h3>Other samplers</h3>
<ul>
<li><bugzilla>52775</bugzilla> - JMS Publisher : Add Non Persistent Delivery option</li>
<li><bugzilla>52810</bugzilla> - Enable setting JMS Properties through JMS Publisher sampler</li>
<li><bugzilla>52938</bugzilla> - Webservice Sampler : Add a jmeter property soap.document_cache to control size of Document Cache</li>
<li><bugzilla>52939</bugzilla> - Webservice Sampler : Make MaintainSession configurable</li>
<li><bugzilla>53073</bugzilla> - Allow to assign the OUT result of a JDBC CALLABLE to JMeter variables</li>
<li><bugzilla>53164</bugzilla> - New System Sampler</li>
<li><bugzilla>53172</bugzilla> - OS Process Sampler - allow specification of Environment Variables</li>
<li><bugzilla>52936</bugzilla> - JMS Publisher : Support sending of JMS Object Messages</li>
</ul>

<h3>Controllers</h3>
<ul>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>52603</bugzilla> - MailerVisualizer : Enable SSL , TLS and Authentication</li>
<li><bugzilla>52698</bugzilla> - Remove Graph Full Results Listener</li>
<li><bugzilla>53070</bugzilla> - Change Aggregate graph to Clustered Bar chart, add more columns (median, 90% line, min, max) and options, fixed some bugs</li>
<li><bugzilla>53246</bugzilla> - Mailer Visualizer: improve GUI design and I18N</li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
</ul>

<h3>Functions</h3>
<ul>
</ul>

<h3>I18N</h3>
<ul>
<li>Mailer Visualizer has been internationalized. French translation added. (see <bugzilla>53246</bugzilla>)</li>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>45839</bugzilla> - Test Action : Allow premature exit from a loop</li>
<li><bugzilla>52614</bugzilla> - MailerModel.sendMail has strange way to calculate debug setting</li>
<li><bugzilla>52782</bugzilla> - Add a detail button on parameters table to show detail of a Row</li>
<li><bugzilla>52674</bugzilla> - Proxy : Add a Sampler Creator to allow plugging HTTP based samplers using potentially non textual POST Body (AMF, Silverlight...) and customizing them for others</li>
<li><bugzilla>52934</bugzilla> - GUI : Open Test plan with the tree expanded to the testplan level and no further and select the root of the tree</li>
<li><bugzilla>52941</bugzilla> - Improvements of HTML report design generated by JMeter Ant task extra</li>
<li><bugzilla>53042</bugzilla> - Introduce a new method in Sampler interface to allow Sampler to decide wether a config element applies to Sampler</li>
<li><bugzilla>52771</bugzilla> - Documentation : Added RSS feed on JMeter Home page under link "Subscribe to What's New"</li>
<li><bugzilla>42784</bugzilla> - Show the number of errors logged in the GUI</li>
<li><bugzilla>53256</bugzilla> - Make Clear All command clean LogViewer content</li>
<li><bugzilla>53261</bugzilla> - Make "Error/fatal" counter added in <bugzilla>42784</bugzilla> open Log Viewer panel when Warn Indicator is clicked</li>
</ul>

<h2>Non-functional changes</h2>
<ul>
<li>Upgraded to rhino 1.7R3 (was js-1.7R2.jar). 
Note: the Maven coordinates for the jar were changed from rhino:js to org.mozilla:rhino.
This does not affect JMeter directly, but might cause problems if using JMeter in a Maven project
with other code that depends on an earlier version of the Rhino Javascript jar.
</li>
<li><bugzilla>52675</bugzilla> - Refactor Proxy and HttpRequestHdr to allow Sampler Creation by Proxy</li>
<li><bugzilla>52680</bugzilla> - Mention version in which function was introduced</li>
<li><bugzilla>52788</bugzilla> - HttpRequestHdr : Optimize code to avoid useless work</li>
<li>JMeter Ant (ant-jmeter-1.1.1.jar) task was upgraded from 1.0.9 to 1.1.1</li>
<li>Updated to commons-io 2.2 (from 2.1)</li>
<li><bugzilla>53129</bugzilla> - Upgrade XStream from 1.3.1 to 1.4.2</li>
<li>Updated to httpcomponents-client 4.1.3 (from 4.1.2)</li>
<li>Updated JMeter distributed testing guide (jmeter_distributed_testing_step_by_step.pdf). Changes source format to OpenOffice odt (from sxw)</li>
</ul>

<!--  =================== 2.6 =================== -->

<h1>Version 2.6</h1>

<h2>New and Noteworthy</h2>

<h3>Toolbar</h3>
<p>A new toolbar on JMeter's main window
<figure width="986" height="91" image="changes/2.6/01_toolbar.png"></figure>
</p>

<h3>JMeter start test button</h3>
<p>A new menu option and button allow to start a test ignoring the Pause Timers
<figure width="201" height="58" image="changes/2.6/02_ignore_pause_timers.png"></figure>
</p>

<h3>JMeter GUI Look and Feel</h3>
<p>Allow System or CrossPlatform LAF to be set from options menu
<figure width="373" height="162" image="changes/2.6/03_look_and_feel.png"></figure>
</p>

<h3>JMeter GUI - duplicate node</h3>
<p>Add "duplicate node" in context menu
<figure width="323" height="136" image="changes/2.6/04_duplicate_context_menu.png"></figure>
</p>

<h3>JMeter tree view - search facility</h3>
<p>Functionality to search by keyword in Samplers Tree View
<figure width="554" height="219" image="changes/2.6/05_search_tree.png"></figure>
</p>

<h3>HTTP Request - raw request pane</h3>
<p>Improve HTTP Request GUI to better show parameters without name (GWT RPC request or SOAP request for example)
<figure width="759" height="461" image="changes/2.6/06_post_data.png"></figure>
</p>

<h3>HTTP Request - other changes</h3>
<p><ul>
<li>Allow multiple selection in arguments panel</li>
<li>Allow to add (paste) entries from the clipboard to an arguments list</li>
<li>Ability to move variables up or down in HTTP Request</li>
</ul>
<figure width="875" height="218" image="changes/2.6/07_multiple_selection_params.png"></figure>
</p>

<h3>HTTP Request - file protocol</h3>
<p>Better support for file: protocol in HTTP sampler
<figure width="489" height="662" image="changes/2.6/08_file_protocol.png"></figure>
</p>
<p>Retrieve embedded resources with file: protocol
<figure width="700" height="138" image="changes/2.6/09_file_protocol_embedded.png"></figure>
</p>

<h3>HTTP Request - Ignore embedded resources failed</h3>
<p>Enable "ignore failed" for embedded resources
<figure width="820" height="246" image="changes/2.6/26_ignore_child_failed.png"></figure>
</p>
<p>Parent success with a embedded resource failed
<figure width="590" height="214" image="changes/2.6/27_succes_with_child_failed.png"></figure>
</p>

<h3>View Results in Table - child sample display</h3>
<p>Add option to TableVisualiser to display child samples instead of parent
<figure width="911" height="619" image="changes/2.6/10_child_sampler.png"></figure>
</p>

<h3>Key Store - multiple certificates</h3>
<p>Allowing multiple certificates (JKS)
<figure width="324" height="166" image="changes/2.6/11_jks_keystore.png"></figure>
</p>

<h3>Aggregate graph improvements</h3>
<p>Some improvements on Aggregate Graph Listener: 
<ul><li>new GUI for settings</li>
<li>dynamic graph size</li>
<li>allow to change fonts for title graph and legend</li>
<li>allow to change bar color (background and text values)</li>
<li>allow to draw or not bars outlines</li>
<li>allow to select only some samplers by a regexp filter</li>
<li>allow to define Y axis maximum scale</li>
</ul>
<figure width="850" height="411" image="changes/2.6/12_aggregate_graph_settings.png"></figure>
</p>

<p>Aggregate Graph bar
<figure width="851" height="506" image="changes/2.6/13_aggregate_graph_bar.png"></figure>
</p>

<h3>Counter - new reset option</h3>
<p>Add an option to reset counter on each Thread Group iteration
<figure width="345" height="257" image="changes/2.6/14_reset_counter.png"></figure>
</p>

<h3>Functions</h3>
<p><ul>
<li>Add a new function __RandomString to generate random Strings</li>
<li>Add a new function __TestPlanName returning the name of the current "Test Plan"</li>
<li>Add a new function __machineIP returning IP address</li>
<li>Add a new function  __jexl2 to support Jexl2</li>
</ul>
<figure width="697" height="236" image="changes/2.6/15_random_string.png"></figure>
</p>

<h3>User Defined Variable improvements</h3>
<p><ul><li>Add a comment field in User Defined Variables</li>
<li>Allow to add (paste) entries from the clipboard to an arguments list</li>
<li>Ability to move up or down variables in User Defined Variables</li>
</ul>
<figure width="543" height="237" image="changes/2.6/16_udv_comments.png"></figure>
</p>

<h3>View Results Tree</h3>
<p>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
<figure width="953" height="98" image="changes/2.6/17_vrt_max_size_display.png"></figure>
</p>

<h3>Controllers - change elements</h3>
<p>Add ability to Change Controller elements
<figure width="643" height="112" image="changes/2.6/18_change_ctl_type.png"></figure>
</p>

<h3>JDBC pre- and post-processor</h3>
<p>Add JDBC pre- and post-processor
<figure width="535" height="217" image="changes/2.6/19_jdbc_pre_post_proc.png"></figure>
</p>

<h3>JDBC transaction isolation option</h3>
<p>Allow to set the transaction isolation in the JDBC Connection Configuration
<figure width="437" height="351" image="changes/2.6/20_jdbc_trans_isolation.png"></figure>
</p>

<h3>Poisson Timer</h3>
<p>Add a Poisson based timer
<figure width="358" height="156" image="changes/2.6/21_poisson_timer.png"></figure>
</p>

<h3>GUI and OS interaction</h3>
<p>Support for file Drag and Drop. 
<figure width="776" height="508" image="changes/2.6/22_drag_and_drop.png"></figure>
</p>

<h3>Confirm Remove Dialog box</h3>
<p>Add a dialog box to confirm removing the element(s) when Remove action is called
<figure width="583" height="210" image="changes/2.6/23_confirm_remove.png"></figure>
The dialogue can be skipped by setting the JMeter property <code>confirm.delete.skip=true</code> 
</p>

<h3>Remote batching support</h3>
<p>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
<figure width="998" height="273" image="changes/2.6/24_diskstore.png"></figure>
</p>

<h3>JMS Subscriber sampler</h3>
<p>With JMS Subscriber, ability to use Selectors
<figure width="705" height="297" image="changes/2.6/25_selector.png"></figure>
</p>

<h3>New Logger Panel</h3>
<p>A new Log Viewer  has been added to the GUI and can be enabled from menu Options > Log Viewer:
<figure width="326" height="147" image="changes/2.6/28_loggerpanel_option.png"></figure>
</p>
<p>This Log Viewer shows the jmeter.log file, and useful (for example) to debug BeanShell/BSF scripts:
<figure width="953" height="466" image="changes/2.6/28_loggerpanel.png"></figure>
</p>

<h3>The menu item Options / Choose Language is now fully functional</h3>
<p>
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.
</p>

<h3>Legacy JMX and JTL Avalon format support restored</h3>
<p>
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.
</p>

<h3>JMeter jars available from Maven repository</h3>
<p>
JMeter jars are now available from Maven repository.
</p>

<!--  =================== Known bugs =================== -->

<h2>Known bugs</h2>

<p>
The Include Controller has some problems in non-GUI mode (see Bugs 40671, 41286, 44973, 50898). 
In particular, it can cause a NullPointerException if there are two include controllers with the same name.
</p>

<p>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</p>

<p>Listeners don't show iteration counts when a If Controller has a condition which is always false from the first iteration (see <bugzilla>52496</bugzilla>).  
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).
</p>

<!-- =================== Incompatible changes =================== -->

<h2>Incompatible changes</h2>

<p>
JMeter versions since 2.1 failed to create a container sample when loading embedded resources.
This has been corrected; can still revert to the <bugzilla>51939</bugzilla> behaviour by setting the following property:
<code>httpsampler.separate.container=false</code>
</p>
<p>
Mirror server now uses default port 8081, was 8080 before 2.5.1.
</p>
<p>
TCP Sampler handles SocketTimeoutException, SocketException and InterruptedIOException differently since 2.6, when
these occurs, Sampler is marked as failed.
</p>
<p>
Sample Sender implementations now resolve their configuration on Client side since 2.6.
This behaviour can be changed with property sample_sender_client_configured (set it to false).
</p>

<p>
The HTTP User Parameter Modifier test element has been removed; it has been deprecated for a long time.
</p>

<!-- =================== Bug fixes =================== -->

<h2>Bug fixes</h2>

<h3>HTTP Samplers and Proxy</h3>
<ul>
<li><bugzilla>51932</bugzilla> - CacheManager does not handle cache-control header with any attributes after max-age</li>
<li><bugzilla>51918</bugzilla> - GZIP compressed traffic produces errors, when multiple connections allowed</li>
<li><bugzilla>51939</bugzilla> - Should generate new parent sample if necessary when retrieving embedded resources</li>
<li><bugzilla>51942</bugzilla> - Synchronisation issue on CacheManager when Concurrent Download is used</li>
<li><bugzilla>51957</bugzilla> - Concurrent get can hang if a task does not complete</li>
<li><bugzilla>51925</bugzilla> - Calling Stop on Test leaks executor threads when concurrent download of resources is on</li>
<li><bugzilla>51980</bugzilla> - HtmlParserHTMLParser double-counts images used in links</li>
<li><bugzilla>52064</bugzilla> - OutOfMemory Risk in CacheManager</li>
<li><bugzilla>51919</bugzilla> - Random ConcurrentModificationException or NoSuchElementException in CookieManager#removeMatchingCookies when using Concurrent Download</li>
<li><bugzilla>52126</bugzilla> - HttpClient4 does not clear cookies between iterations</li>
<li><bugzilla>52129</bugzilla> - Reported Body Size is wrong when using HTTP Client 4 and Keep Alive connection</li>
<li><bugzilla>52137</bugzilla> - Problems with HTTP Cache Manager</li>
<li><bugzilla>52221</bugzilla> - Nullpointer Exception with use Retrieve Embedded Resource without HTTP Cache Manager</li>
<li><bugzilla>52310</bugzilla> - variable in IPSource failed HTTP request if "Concurrent Pool Size" is enabled</li>
<li><bugzilla>52371</bugzilla> - API Incompatibility - Methods in HTTPSampler2 now require PostMethod instead of HttpMethod[Base]. Reverted to original types.</li>
<li><bugzilla>49950</bugzilla> - Proxy : IndexOutOfBoundsException when recording with Proxy server</li>
<li><bugzilla>52409</bugzilla> - HttpSamplerBase#errorResult modifies sampleResult passed as parameter;
fix code which assumes that a new instance is created (i.e. when adding a sub-sample)
</li>
<li><bugzilla>52507</bugzilla> - Delete Http User Parameters modifier (deprecated, obsolete)</li>
</ul>

<h3>Other Samplers</h3>
<ul>
<li><bugzilla>51996</bugzilla> - JMS Initial Context leak newly created Context when Multiple Thread enter InitialContextFactory#lookupContext at the same time</li>
<li><bugzilla>51691</bugzilla> - Authorization does not work for JMS Publisher and JMS Subscriber</li>
<li><bugzilla>52036</bugzilla> - Durable Subscription fails with ActiveMQ due to missing clientId field</li>
<li><bugzilla>52044</bugzilla> - JMS Subscriber used with many threads leads to javax.naming.NamingException: Something already bound with ActiveMQ</li>
<li><bugzilla>52072</bugzilla> - LengthPrefixedBinaryTcpClientImpl may end a sample prematurely</li>
<li><bugzilla>52390</bugzilla> - AbstractJDBCTestElement:Memory leak and synchronization issue in perConnCache</li>
</ul>

<h3>Controllers</h3>
<ul>
<li><bugzilla>51865</bugzilla> - Infinite loop inside thread group does not work properly if "Start next loop after a Sample error" option set</li>
<li><bugzilla>51868</bugzilla> - A lot of exceptions in jmeter.log while using option "Start next loop" for thread</li>
<li><bugzilla>51866</bugzilla> - Counter under loop doesn't work properly if "Start next loop on error" option set for thread group</li>
<li><bugzilla>52296</bugzilla> - TransactionController + Children ThrouputController or InterleaveController leads to ERROR sampleEnd called twice java.lang.Throwable: Invalid call sequence when TPC does not run sample</li>
<li><bugzilla>52330</bugzilla> - With next-Loop-On-Error after error samples are not executed in next loop</li>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>52357</bugzilla> - View results in Table does not allow for multiple result samples</li>
<li><bugzilla>52491</bugzilla> - Incorrect parsing of Post data parameters in Tree Listener / Http Request view</li>
</ul>

<h3>Assertions</h3>
<ul>
<li><bugzilla>52519</bugzilla> - XMLSchemaAssertion uses JMeter JVM file.encoding instead of response encoding</li>
</ul>

<h3>Functions</h3>
<ul>
<li>The CRLF example for the char function was wrong; CRLF=(0xD,0xA), not (0xC,0xA)</li>
</ul>

<h3>I18N</h3>
<ul>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>51937</bugzilla> - JMeter does not handle missing TestPlan entry well</li>
<li><bugzilla>51988</bugzilla> - CSV Data Set Configuration does not resolve default delimiter for header parsing when variables field is empty</li>
<li><bugzilla>52003</bugzilla> - View Results Tree "Scroll automatically" does not scroll properly in case nodes are expanded</li>
<li><bugzilla>27112</bugzilla> - User Parameters should use scrollbars</li>
<li><bugzilla>52029</bugzilla> - Command-line shutdown only gets sent to last engine that was started</li>
<li><bugzilla>52093</bugzilla> - Toolbar ToolTips don't switch language</li>
<li><bugzilla>51733</bugzilla> - SyncTimer is messed up if you a interrupt a test plan</li>
<li><bugzilla>52118</bugzilla> - New toolbar : shutdown and stop buttons not disabled when no test is running</li>
<li><bugzilla>52125</bugzilla> - StatCalculator.addAll(StatCalculator calc) joins incorrect if there are more samples with the same response time in one of the TreeMap</li>
<li><bugzilla>52339</bugzilla> - JMeter Statistical mode in distributed testing shows wrong response time</li>
<li><bugzilla>52215</bugzilla> - Confusing synchronization in StatVisualizer, SummaryReport ,Summariser and issue in StatGraphVisualizer</li>
<li><bugzilla>52216</bugzilla> - TableVisualizer : currentData field is badly synchronized</li>
<li><bugzilla>52217</bugzilla> - ViewResultsFullVisualizer : Synchronization issues on root and treeModel</li>
<li><bugzilla>43294</bugzilla> - XPath Extractor namespace problems</li>
<li><bugzilla>52224</bugzilla> - TestBeanHelper does not support NOT_UNDEFINED == Boolean.FALSE</li>
<li><bugzilla>52279</bugzilla> - Switching to another language loses icons in Tree and logs error Can't obtain GUI class from ...</li>
<li><bugzilla>52280</bugzilla> - The menu item Options / Choose Language does not change all the displayed text to the new language</li>
<li><bugzilla>52376</bugzilla> - StatCalculator#addValue(T val, int sampleCount) should use long, not int</li>
<li><bugzilla>49374</bugzilla> - Encoding of embedded element URLs depend on the file.encoding property</li>
<li><bugzilla>52399</bugzilla> - URLRewritingModifier uses default file.encoding to match text content</li>
<li><bugzilla>50438</bugzilla> - code calculates average with integer math, expecting double value</li>
<li><bugzilla>52469</bugzilla> - Changes in Support of SSH-Tunneling of RMI traffic for Remote Testing</li>
<li><bugzilla>52466</bugzilla> - Upgrade Test Plan feature : NameUpdater does not upgrade properties</li>
<li><bugzilla>52503</bugzilla> - Unify File->Close and Window close file saving behaviour</li>
<li><bugzilla>52537</bugzilla> - Help does not scroll to correct anchor when file is first loaded</li>
</ul>

<!-- =================== Improvements =================== -->

<h2>Improvements</h2>

<h3>HTTP Samplers</h3>
<ul>
<li><bugzilla>51981</bugzilla> - Better support for file: protocol in HTTP sampler</li>
<li><bugzilla>52033</bugzilla> - Allowing multiple certificates (JKS)</li>
<li><bugzilla>52352</bugzilla> - Proxy : Support IPv6 URLs capture</li>
<li><bugzilla>44301</bugzilla> - Enable "ignore failed" for embedded resources</li>
</ul>

<h3>Other samplers</h3>
<ul>
<li><bugzilla>51419</bugzilla> - JMS Subscriber: ability to use Selectors</li>
<li><bugzilla>52088</bugzilla> - JMS Sampler : Add a selector when REQUEST / RESPONSE is chosen</li>
<li><bugzilla>52104</bugzilla> - TCP Sampler handles badly errors</li>
<li><bugzilla>52087</bugzilla> - TCPClient interface does not allow for partial reads</li>
<li><bugzilla>52115</bugzilla> - SOAP/XML-RPC should not send a POST request when file to send is not found</li>
<li><bugzilla>40750</bugzilla> - TCPSampler : Behaviour when sockets are closed by remote host</li>
<li><bugzilla>52396</bugzilla> - TCP Sampler in "reuse connection mode" reuses previous sampler's connection even if it's configured with other host, port, user or password</li>
<li><bugzilla>52048</bugzilla> - BSFSampler, BSFPreProcessor and BSFPostProcessor should share the same GUI</li>
</ul>

<h3>Controllers</h3>
<ul>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>52022</bugzilla> - 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</li>
<li><bugzilla>52201</bugzilla> - Add option to TableVisualiser to display child samples instead of parent </li>
<li><bugzilla>52214</bugzilla> - Save Responses to a file - improve naming algorithm</li>
<li><bugzilla>52340</bugzilla> - Allow remote sampling mode to be changed at run-time</li>
<li><bugzilla>52452</bugzilla> - Improvements on Aggregate Graph Listener (GUI and settings)</li>
<li>Resurrected OldSaveService to allow reading Avalon format JTL (result) files</li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bugzilla>52128</bugzilla> - Add JDBC pre- and post-processor</li>
<li><bugzilla>52183</bugzilla> - SyncTimer could be improved (performance+reliability)</li>
<li><bugzilla>52317</bugzilla> - Counter : Add option to reset counter on each Thread Group iteration</li>
<li><bugzilla>37073</bugzilla> - Add a Poisson based timer</li>
<li><bugzilla>52497</bugzilla> - Improve DebugSampler and DebugPostProcessor</li>
</ul>

<h3>Functions</h3>
<ul>
<li><bugzilla>52006</bugzilla> - Create a function RandomString to generate random Strings</li>
<li><bugzilla>52016</bugzilla> - It would be useful to support Jexl2</li>
<li>__char() function now supports octal values</li>
<li>New function __machineIP returning IP address</li>
<li><bugzilla>51091</bugzilla> - New function returning the name of the current "Test Plan"</li>
</ul>

<h3>I18N</h3>
<ul>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>51892</bugzilla> - Default mirror port should be different from default proxy port</li>
<li><bugzilla>51817</bugzilla> - Moving variables up and down in User Defined Variables control</li>
<li><bugzilla>51876</bugzilla> - Functionality to search in Samplers TreeView</li>
<li><bugzilla>52019</bugzilla> - Add menu option to Start a test ignoring Pause Timers</li>
<li><bugzilla>52027</bugzilla> - Allow System or CrossPlatform LAF to be set from options menu</li>
<li><bugzilla>52037</bugzilla> - Remember user-set LaF over restarts.</li>
<li><bugzilla>51861</bugzilla> - Improve HTTP Request GUI to better show parameters without name (GWT RPC requests for example) (UNDER DEVELOPMENT)</li>
<li><bugzilla>52040</bugzilla> - Add a toolbar in JMeter main window</li>
<li><bugzilla>51816</bugzilla> - Comment Field in User Defined Variables control.</li>
<li><bugzilla>52052</bugzilla> - Using a delimiter to separate result-messages for JMS Subscriber</li>
<li><bugzilla>52103</bugzilla> - Add automatic scrolling option to table visualizer</li>
<li><bugzilla>52097</bugzilla> - Save As should point to same folder that was used to open a file if MRU list is used</li>
<li><bugzilla>52085</bugzilla> - Allow multiple selection in arguments panel</li>
<li><bugzilla>52099</bugzilla> - Allow to set the transaction isolation in the JDBC Connection Configuration</li>
<li><bugzilla>52116</bugzilla> - Allow to add (paste) entries from the clipboard to an arguments list</li>
<li><bugzilla>52160</bugzilla> - Don't display TestBeanGui items which are flagged as hidden</li>
<li><bugzilla>51886</bugzilla> - SampleSender configuration resolved partly on client and partly on server</li>
<li><bugzilla>52161</bugzilla> - 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</li>
<li><bugzilla>42538</bugzilla> - Add "duplicate node" in context menu</li>
<li><bugzilla>46921</bugzilla> - Add Ability to Change Controller elements</li>
<li><bugzilla>52240</bugzilla> - TestBeans should support Boolean, Integer and Long</li>
<li><bugzilla>52241</bugzilla> - GenericTestBeanCustomizer assumes that the default value is the empty string</li>
<li><bugzilla>52242</bugzilla> - FileEditor does not allow output to be saved in a File </li>
<li><bugzilla>51093</bugzilla> - when loading a selection previously stored by "Save Selection As", show the file name in the blue window bar</li>
<li><bugzilla>50086</bugzilla> - Password fields not Hidden in JMS Publisher, JMS Subscriber, Mail Reader sampler, SMTP sampler and Database Configuration</li>
<li><bugzilla>29352</bugzilla> - 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.</li>
<li><bugzilla>52333</bugzilla> - Reduce overhead in calculating SampleResult#nanoTimeOffset</li>
<li><bugzilla>52346</bugzilla> - Shutdown detects if there are any non-daemon threads left which prevent JVM exit.</li>
<li><bugzilla>52281</bugzilla> - Support for file Drag and Drop</li>
<li><bugzilla>52471</bugzilla> - Improve Mirror Server performance by Using Pool of threads instead of launching a Thread for each request</li>
<li>Resurrected OldSaveService to allow reading Avalon format JMX files (removed in 2.4)</li>
<li>Add a dialog box to confirm removing the element(s) when Remove action is called</li>
<li><bugzilla>41788</bugzilla> - Log viewer (console window) needed as an option</li>
<li>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.
</li>
</ul>

<h2>Non-functional changes</h2>
<ul>
<li>fixes to build.xml: support scripts; localise re-usable property names</li>
<li><bugzilla>51923</bugzilla> - Counter function bug or documentation issue ? (fixed docs)</li>
<li>Update velocity.jar to 1.7 (from 1.6.2)</li>
<li>Update js.jar to 1.7R3 (from 1.6R5)</li>
<li>Update commons-codec 1.5 => 1.6</li>
<li>Update commons-io 2.0.1 => 2.1</li>
<li>Update commons-jexl 2.0.1 => 2.1.1</li>
<li>Update jdom 1.1 => 1.1.2</li>
<li>Update junit 4.9 => 4.10</li>
<li><bugzilla>51954</bugzilla> - Generated documents include &lt;/br&gt; entries which cause extra blank lines </li>
<li><bugzilla>52075</bugzilla> - JMeterProperty.clone() currently returns Object; it should return JMeterProperty</li>
<li>Updated httpcore to 4.1.4</li>
<li><bugzilla>49753</bugzilla> - Please publish jMeter artifacts on Maven central repository</li>
</ul>

<!--  ========== 2.5.1 ===========  -->

<h1>Version 2.5.1</h1>

<h2>Summary of main changes</h2>

<ul>
<li>HttpClient4 sampler now re-uses connections properly (previously it would use one per sample, which could quickly cause resource exhaustion).</li>
<li>Various fixes to JMS samplers</li>
<li>Functions are no longer spuriously invoked when used with a Configuration element</li>
<li>WebService sampler GUI has been re-organized for better design and more user-friendliness. Some improments on WSDL configuration assistant</li>
<li>Better handling of test shutdown. System.exit now only called if there is no other option; even this can be disabled.</li>
</ul>


<h2>Known bugs</h2>

<p>
The Include Controller has some problems in non-GUI mode. 
In particular, it can cause a NullPointerException if there are two include controllers with the same name.
</p>

<p>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</p>

<p>The If Controller may cause an infinite loop if the condition is always false from the first iteration. 
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).
</p>

<p>
The menu item Options / Choose Language does not change all the displayed text to the new language.
[The behaviour has improved, but language change is still not fully working]
To override the default local language fully, set the JMeter property "language" before starting JMeter. 
</p>

<h2>Incompatible changes</h2>

<p>
The HttpClient4 and Commons HttpClient 3.1 samplers previously used a retry count of 3.
This has been changed to default to 1, to be compatible with the Java implementation.
The retry count can be overridden by setting the relevant JMeter property, for example:
<pre>
httpclient4.retrycount=3
httpclient3.retrycount=3
</pre>
</p>

<h2>Bug fixes</h2>

<h3>HTTP Samplers and Proxy</h3>
<ul>
<li>Fix HttpClient 4 sampler so it reuses HttpClient instances and connections where possible.</li>
<li>Temporary fix to HC4 sampler to work round HTTPCLIENT-1120.</li>
<li><bugzilla>51863</bugzilla> - Lots of ESTABLISHED connections with HttpClient 4 implementation (vs HttpClient 3.1 impl)</li>
<li><bugzilla>51750</bugzilla> - Retrieve all embedded resources doesn't follow IFRAME</li>
<li><bugzilla>51752</bugzilla> - HTTP Cache is broken when using "Retrieve all embedded resources" with concurrent pool</li>
<li><bugzilla>39219</bugzilla> - HTTP Server: You can't stop it after File->Open</li>
<li><bugzilla>51775</bugzilla> - Port number duplicates in Host header when capturing by HttpClient (3.1 and 4.x)</li>
<li><bugzilla>50617</bugzilla> - Monitor Results legend show "dead" server although values from the server are retrieved</li>
</ul>

<h3>Other Samplers</h3>
<ul>
<li><bugzilla>50424</bugzilla> - Web Methods drop down list box inconsistent</li>
<li><bugzilla>43293</bugzilla> - Java Request fields not cleared when creating new sampler</li>
<li><bugzilla>51830</bugzilla> - Webservice Soap Request triggers too many popups when Webservice WSDL URL is down</li>
<li>WebService(SOAP) request - add a connect timeout to get the wsdl used to populate Web Methods when server doesn't response</li>
<li><bugzilla>51841</bugzilla> - JMS : If an error occurs in ReceiveSubscriber constructor or Publisher, then Connections will stay open</li>
<li><bugzilla>51691</bugzilla> - Authorization does not work for JMS Publisher and JMS Subscriber</li>
<li><bugzilla>51840</bugzilla> - JMS : Cache of InitialContext has some issues</li>
<li><bugzilla>47888</bugzilla> - JUnit Sampler re-uses test object</li>
</ul>

<h3>Controllers</h3>
<ul>
<li>If Controller - Fixed two regressions introduced by <bugzilla>50032</bugzilla> (see <bugzilla>50618</bugzilla> too)</li>
<li>If Controller - Catches a StackOverflowError when a condition returns always false (after at least one iteration with return true) See <bugzilla>50618</bugzilla></li>
<li><bugzilla>51869</bugzilla> - NullPointer Exception when using Include Controller</li>
</ul>

<h3>Listeners</h3>
<ul>
</ul>

<h3>Assertions</h3>
<ul>
</ul>

<h3>Functions</h3>
<ul>
<li><bugzilla>48943</bugzilla> - Functions are invoked additional times when used in combination with a Config Element</li>
</ul>

<h3>I18N</h3>
<ul>
<li>WebService(SOAP) request - add I18N for some labels</li>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>51831</bugzilla> - Cannot disable UDP server or change the maximum UDP port</li>
<li><bugzilla>51821</bugzilla> - Add short-cut for Enabling / Disabling (sub)tree or branches in test plan.</li>
<li><bugzilla>47921</bugzilla> - Variables not released for GC after JMeterThread exits.</li>
<li><bugzilla>51839</bugzilla> - "... end of run" printed prematurely</li>
<li><bugzilla>51847</bugzilla> - Some Junit tests are Locale sensitive and fail if Locale is different from US</li>
<li><bugzilla>51855</bugzilla> - Parent samples may have slightly inaccurate elapsed times</li>
<li><bugzilla>51880</bugzilla> - The shutdown command is not working if I invoke it before all the thread are started</li>
<li>Remote Shut host menu item was not being enabled.</li>
<li><bugzilla>51888</bugzilla> - Occasional deadlock when stopping a testplan</li>
</ul>

<!-- ==================================================== -->

<h2>Improvements</h2>

<h3>HTTP Samplers</h3>
<ul>
<li><bugzilla>51380</bugzilla> - Control reuse of cached SSL Context from iteration to iteration</li>
<li><bugzilla>51882</bugzilla> - HTTPHC3Client uses a default retry count of 3, make it configurable; default is now 1</li>
<li>Change the default HttpClient 4 sampler retry count to 1</li>
</ul>

<h3>Other samplers</h3>
<ul>
<li>Beanshell Sampler now supports Interruptible interface</li>
<li><bugzilla>51605</bugzilla> - WebService(SOAP) Request - WebMethod field value changes surreptitiously for all the requests when a value is selected in a request</li>
<li>WebService(SOAP) Request - Reorganized GUI for better design and more user-friendliness</li>
</ul>

<h3>Controllers</h3>
<ul>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>42246</bugzilla> - Need for a 'auto-scroll' option in "View Results Tree" and "Assertion Results"</li>
<li>View Results Tree: Regexp Tester - little improvements on user interface</li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bugzilla>51885</bugzilla> - Allow a JMeter Variable as input to XPathExtractor</li>
</ul>

<h3>Functions</h3>
<ul>
</ul>

<h3>I18N</h3>
<ul>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>51822</bugzilla> - (part 1) save 1 invocation of GuiPackage#getCurrentGui</li>
<li>Added AsynchSampleSender which sends samples from server to client asynchronously.</li>
<li>Upgraded to htmlparser 2.1; JavaMail 1.4.4; JUnit 4.9</li>
</ul>

<h2>Non-functional changes</h2>
<ul>
<li><bugzilla>49976</bugzilla> - FormCharSetFinder visibility is default instead of public. </li>
<li><bugzilla>50917</bugzilla> - Property CookieManager.save.cookies not honored when set from test plan</li>
<li>Improve error logging when Javascript errors are detected.</li>
<li>Updated documentation footer</li>
</ul>

<!--  ========== 2.5 ===========  -->

<h1>Version 2.5</h1>

<h2>Summary of main changes</h2>

<ul>
<li>The HTTP implementation can now be selected at run-time, and JMeter now also supports Apache HttpComponents HttpClient 4.x.
Note that Commons HttpClient 3.1 is no longer actively developed, and support may be removed from JMeter in a future release.
</li>
<li>The HTTP sampler now allows concurrent downloads of embedded resources in an HTML page</li>
<li>The HTTP Sampler can now report the size of a request before decompression.</li>
<li>The JMS and Mail samplers have been improved.</li>
<li>The new Test Fragment Test Element makes using Include Controllers easier</li>
<li>There are various improvements to the View Results Tree Listener</li>
<li><bugzilla>30563</bugzilla> - Thread Group should have a start next loop option on Sample Error</li>
<li>There are two new Thread Group types - setUp and tearDown - which are run before and after the main Thread groups.</li>
<li>Client-Server mode now supports external stop/shutdown via UDP<br></br> 
multiple JMeter server instances can be started on the same host without needing to change the port property.</li>
<li><bugzilla>50516</bugzilla> - "Host" header in HTTP Header Manager is not included in generated HTTP request</li>
</ul>

<p>
<ul>
</ul>
</p>


<!--  ========================= End of summary ===================================== -->

<h2>Known bugs</h2>

<p>
The Include Controller has some problems in non-GUI mode. 
In particular, it can cause a NullPointerException if there are two include controllers with the same name.
</p>

<p>Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</p>

<p>
The menu item Options / Choose Language does not change all the displayed text to the new language.
[The behaviour has improved, but language change is still not fully working]
To override the default local language fully, set the JMeter property "language" before starting JMeter. 
</p>

<h2>Incompatible changes</h2>

<p>
Unsupported methods are no longer converted to GET by the Commons HttpClient sampler.
</p>

<p>
Removed method public static long currentTimeInMs().
This has been replaced by the instance method public long currentTimeInMillis().
</p>

<p>
ProxyControl.getSamplerTypeName() now returns a String rather than an int.
This is internal to the workings of the JMeter Proxy &amp; its GUI, so should not affect any user code.
</p>

<h2>Bug fixes</h2>

<h3>HTTP Samplers and Proxy</h3>
<ul>
<li><bugzilla>50178</bugzilla> - HeaderManager added as child of Thread Group can create concatenated HeaderManager names and OutOfMemoryException</li>
<li><bugzilla>50392</bugzilla> - value is trimmed when sending the request in Multipart</li>
<li><bugzilla>50686</bugzilla> - HeaderManager logging too verbose when merging instances</li>
<li><bugzilla>50963</bugzilla> - AjpSampler throws java.lang.StringIndexOutOfBoundsException</li>
<li><bugzilla>50516</bugzilla> - "Host" header in HTTP Header Manager is not included in generated HTTP request</li>
<li><bugzilla>50544</bugzilla> - In Apache Common Log the HEAD requests cause problems.</li>
<li><bugzilla>51268</bugzilla> - HTTPS request through an invalid proxy causes NullPointerException and does not show in result tree.
Rather than delegating to the JMeter thread handler for "unexpected" failures, ensure all Exceptions generate a sample error.
</li>
<li><bugzilla>51275</bugzilla> - Cookie Panel clearGui() sets incorrect default policy in Java 1.6</li>
</ul>

<h3>Other Samplers</h3>
<ul>
<li><bugzilla>50173</bugzilla> - JDBCSampler discards ResultSet from a PreparedStatement</li>
<li>Ensure JSR223 Sampler has access to the current SampleResult</li>
<li><bugzilla>50977</bugzilla> - Unable to set TCP Sampler for individual samples</li>
</ul>

<h3>Controllers</h3>
<ul>
<li><bugzilla>50032</bugzilla> - Last_Sample_Ok along with other controllers doesnt work correctly when the threadgroup has multiple loops</li>
<li><bugzilla>50080</bugzilla> - Transaction controller incorrectly creates samples including timer duration</li>
<li><bugzilla>50134</bugzilla> - TransactionController : Reports bad response time when it contains other TransactionControllers</li>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>50367</bugzilla> - Clear / Clear all in View results tree does not clear selected element</li>
</ul>

<h3>Assertions</h3>
<ul>
<li><bugzilla>51488</bugzilla> - Assertion: Variable name scope is shared among all assertions (and <bugzilla>51255</bugzilla>)</li>
</ul>

<h3>Functions</h3>
<ul>
<li><bugzilla>50568</bugzilla> - Function __FileToString(): Could not read file when encoding option is blank/empty</li>
</ul>

<h3>I18N</h3>
<ul>
<li><bugzilla>50811</bugzilla> - Incomplete Spanish translation</li>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>49734</bugzilla> - Null pointer exception on stop Threads command (Run>Stop)</li>
<li><bugzilla>49666</bugzilla> - CSV Header read as data after EOF</li>
<li><bugzilla>45703</bugzilla> - Synchronizing Timer</li>
<li><bugzilla>50088</bugzilla> - fix getAvgPageBytes in SamplingStatCalculator so it returns what it should</li>
<li><bugzilla>50203</bugzilla> Cannot set property "jmeter.save.saveservice.default_delimiter=\t"</li>
<li>mirror-server.sh - fix classpath to use : separator (not ;)</li>
<li><bugzilla>50286</bugzilla> - URL Re-writing Modifier: extracted jsessionid value is incorrect when is between XML tags</li>
<li>
System.nanoTime() tends to drift relative to System.currentTimeMillis().
Change SampleResult to recalculate offset each time.
Also enable reversion to using System.currentTimeMillis() only.
</li>
<li><bugzilla>50425</bugzilla> - Remove thread groups from Controller add menu</li>
<li>
<bugzilla>50675</bugzilla> - CVS Data Set Config incompatible with Remote Start
Fixed RMI startup to provide location of JMX file relative to user.dir.
</li>
<li><bugzilla>50221</bugzilla> - Renaming elements in the tree does not resize label</li>
<li><bugzilla>51002</bugzilla> - Stop Thread if CSV file is not available. JMeter now treats IOError as EOF.</li>
<li>Define sun.net.http.allowRestrictedHeaders=true by default. This fixes <bugzilla>51238</bugzilla>.</li>
<li><bugzilla>51645</bugzilla> - CSVDataSet does not read UTF-8 files when file.encoding is UTF-8</li>
</ul>

<!-- ==================================================== -->

<h2>Improvements</h2>

<h3>HTTP Samplers</h3>
<ul>
<li>AJP Sampler now implements Interruptible</li>
<li>Allow HTTP implementation to be selected at run-time</li>
<li><bugzilla>50684</bugzilla> - Optionally disable Content-Type and Transfer-Encoding in Multipart POST</li>
<li><bugzilla>50943</bugzilla> - Allowing concurrent downloads of embedded resources in html page</li>
<li><bugzilla>50170</bugzilla> - Bytes reported by http sampler is after GUnZip<br></br>Add optional properties to allow change the method to get response size</li>
<li>Hiding the proxy password on HTTP Sampler (just on GUI, not in JMX file)</li>
</ul>

<h3>Other samplers</h3>
<ul>
<li><bugzilla>49622</bugzilla> - Allow sending messages without a subject (SMTP Sampler)</li>
<li><bugzilla>49603</bugzilla> - Allow accepting expired certificates on Mail Reader Sampler</li>
<li><bugzilla>49775</bugzilla> - Allow sending messages without a body</li>
<li><bugzilla>49862</bugzilla> - Improve SMTPSampler Request output.</li>
<li><bugzilla>50268</bugzilla> - Adds static and dynamic destinations to JMS Publisher</li>
<li>JMS Subscriber - Add dynamic destination</li>
<li><bugzilla>50666</bugzilla> - JMSSubscriber: support for durable subscriptions</li>
<li><bugzilla>50937</bugzilla> - TCP Sampler does not provide for / honor connect timeout</li>
<li><bugzilla>50569</bugzilla> - Jdbc Request Sampler to optionally store result set object data</li>
<li><bugzilla>51011</bugzilla> - Mail Reader: upon authentication failure, tell what you tried</li>
</ul>

<h3>Controllers</h3>
<ul>
<li><bugzilla>50475</bugzilla> - Introduction of a Test Fragment Test Element for a better Include flow</li>
</ul>

<h3>Listeners</h3>
<ul>
<li>View Results Tree - Add a dialog's text box on "Sampler result tab > Parsed" to display the long value with a double click on cell</li>
<li><bugzilla>37156</bugzilla> - Formatted view of Request in Results Tree</li>
<li><bugzilla>49365</bugzilla> - Allow result set to be written to file in a path relative to the loaded script</li>
<li><bugzilla>50579</bugzilla> - Error count is long, sample count is int. Changed sample count to long.</li>
<li>View Results Tree - Add new size fields: response headers and response body (in bytes) - derived from <bugzilla>43363</bugzilla></li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bugzilla>48015</bugzilla> - Proposal new icons for pre-processor, post-processor and assertion elements</li>
<li><bugzilla>50962</bugzilla> - SizeAssertionGui validation prevents the use of variables for the size</li>
<li>Size Assertion - Add response size scope (full, headers, body, code, message) - derived from <bugzilla>43363</bugzilla></li>
</ul>

<h3>Functions</h3>
<ul>
<li><bugzilla>49975</bugzilla> - New function returning the name of the current sampler</li>
</ul>

<h3>I18N</h3>
<ul>
<li>Add French translation for the new labels and reduce size for some labels (by abbreviation) on HTTP Sample</li>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>30563</bugzilla> - Thread Group should have a start next loop option on Sample Error</li>
<li><bugzilla>50347</bugzilla> - Eclipse setup instructions should remind user to download dependent jars</li>
<li><bugzilla>50490</bugzilla> - Setup and Post Thread Group enhancements for better test flow.</li>
<li>All BeansShell test elements now have the script variables "prev" and "Label" defined.</li>
<li><bugzilla>50708</bugzilla> - Classpath jar order in NewDriver not alphabetically</li>
<li><bugzilla>50659</bugzilla> - JMeter server does not support concurrent tests - prevent client from starting another</li>
<li>Added remote shutdown functionality</li>
<li>Client JMeter engine now supports external stop/shutdown via UDP</li>
<li>UDP shutdown can now use a range of ports, from jmeterengine.nongui.port=4445 to jmeterengine.nongui.maxport=4455,
allowing multiple JMeter instances on the same host without needing to change the port property.</li>
<li>Updated to httpcore 4.1.3 and httpclient 4.1.2</li>
</ul>

<h2>Non-functional changes</h2>
<ul>
<li><bugzilla>50008</bugzilla> - Allow BatchSampleSender to be subclassed</li>
<li><bugzilla>50450</bugzilla> - use System.array copy in jacobi solver as, being native, is more performant.</li>
<li><bugzilla>50487</bugzilla> - runSerialTest verifies objects that never need persisting</li>
<li>Use Thread.setDefaultUncaughtExceptionHandler() instead of private ThreadGroup</li>
<li>Update to Commons Net 3.0</li>
</ul>

<!--  ========== 2.4 ===========  -->

<h1>Version 2.4</h1>

<h2>Summary of main changes</h2>

<p>
<ul>
<li>JMeter now requires at least Java 1.5.</li>
<li>HTTP Proxy can now record HTTPS sessions.</li>
<li>JUnit sampler now supports JUnit4 annotations.</li>
<li>Added JSR223 (javax.script) test elements.</li>
<li>MailReader Sampler can now use any protocol supported by the underlying implementation.</li>
<li>An SMTP Sampler has been added.</li>
<li>JMeter now allows users to provide their own Thread Group implementations.</li>
<li>View Results Tree now supports more display options, including search and Regex Testing.</li>
<li>StatCalculator performance is much improved; Aggregate Report etc. need far less memory.</li>
<li>
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.
</li>
<li>Many other improvements have been made, please see below and in the manual.</li>
</ul>
</p>


<!--  ========================= End of summary ===================================== -->

<h2>Known bugs</h2>

<p>
The Include Controller has some problems in non-GUI mode. 
In particular, it can cause a NullPointerException if there are two include controllers with the same name.
</p>

<p>Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</p>

<p>
The menu item Options / Choose Language does not change all the displayed text to the new language.
[The behaviour has improved, but language change is still not fully working]
To override the default local language fully, set the JMeter property "language" before starting JMeter. 
</p>

<h2>Incompatible changes</h2>

<p>
HTTP Redirect now defaults to "Follow Redirects" rather than "Redirect Automatically".
This is to enable JMeter to track cookies that may be sent during redirects.
This does not affect existing test plans; it only affects the default for new HTTP Samplers.
</p>

<p>
The Avalon file format for JMX and JTL files is no longer supported.
Any such files will need to be converted by reading them in JMeter 2.3.4 and resaving them.
</p>

<p>
The XPath Assertion and XPath Extractor elements no longer fetch external DTDs by default; this can be changed in the GUI.
</p>

<p>
JMSConfigGui has been renamed as JMSSamplerGui.
This does not affect existing test plans.
</p>

<p>
The constructor public SampleResult(SampleResult res) has been changed to become a true "copy constructor".
It no longer calls addSubResult(). This may possibly affect some 3rd party add-ons.
</p>

<h2>Bug fixes</h2>

<h3>HTTP Samplers and Proxy</h3>
<ul>
<li><bugzilla>47445</bugzilla> - Using Proxy with https-spoofing secure cookies need to be unsecured</li>
<li><bugzilla>47442</bugzilla> - Missing replacement of https by http for certain conditions using https-spoofing</li>
<li><bugzilla>48451</bugzilla> - Error in: SoapSampler.setPostHeaders(PostMethod post) in the else branch</li>
<li><bugzilla>48542</bugzilla> - SoapSampler uses wrong response header field to decide if response is gzip encoded</li>
<li><bugzilla>48568</bugzilla> - CookieManager broken for AjpSampler</li>
<li><bugzilla>48570</bugzilla> - AjpSampler doesn't support query parameters (GET/POST)</li>
<li><bugzilla>46901</bugzilla> - HTTP Sampler does not process var/func refs correctly in first file parameter</li>
<li><bugzilla>43678</bugzilla> - Handle META tag http-equiv charset?</li>
<li><bugzilla>49294</bugzilla> - Images not downloaded from redirected-to pages</li>
<li><bugzilla>49560</bugzilla> - wrong "size in bytes" when following redirections</li>
</ul>

<h3>Other Samplers</h3>
<ul>
<li><bugzilla>47420</bugzilla> - LDAP extended request not closing connections during add request</li>
<li><bugzilla>48573</bugzilla> - LDAPExtSampler directory context handling</li>
<li><bugzilla>47870</bugzilla> - JMSSubscriber fails due to NPE</li>
<li><bugzilla>47899</bugzilla> - NullPointerExceptions in JMS ReceiveSubscriber constructor</li>
<li><bugzilla>48144</bugzilla> - NPE in JMS OnMessageSubscriber</li>
<li><bugzilla>47992</bugzilla> - JMS Point-to-Point Request - Response option doesn't work</li>
<li><bugzilla>48579</bugzilla> - Single Bind does not show config information when LdapExt Sampler is accessed</li>
<li><bugzilla>49111</bugzilla> - "Message With ID Not Found" Error on JMS P2P sampler.</li>
<li><bugzilla>47949</bugzilla> - JMS Subscriber never receives all the messages</li>
<li><bugzilla>46142</bugzilla> - JMS Point-to-Point correlation problems</li>
<li><bugzilla>48747</bugzilla> - TCP Sampler swallows exceptions</li>
<li><bugzilla>48709</bugzilla> - TCP Sampler Config setting "classname" has no effect</li>
</ul>

<h3>Controllers</h3>
<ul>
<li><bugzilla>47385</bugzilla> - TransactionController should set AllThreads and GroupThreads</li>
<li><bugzilla>47940</bugzilla> - Module controller incorrectly creates the replacement Sub Tree</li>
<li><bugzilla>47592</bugzilla> - Run Thread groups consecutively with "Stop test" on error, JMeter will not mark to finished</li>
<li><bugzilla>48786</bugzilla> - Run Thread groups consecutively: with "Stop test now" on error or manual stop, JMeter leaves the green box active</li>
<li><bugzilla>48727</bugzilla> - Cannot stop test if all thread groups are disabled</li>
</ul>

<h3>Listeners</h3>
<ul>
<li><bugzilla>48603</bugzilla> - Mailer Visualiser sends two emails for a single failed response</li>
<li>Correct calculation of min/max/std.dev for aggregated samples (Summary Report)</li>
<li><bugzilla>48889</bugzilla> - Wrong response time with mode=Statistical and num_sample_threshold > 1</li>
<li><bugzilla>47398</bugzilla> - SampleEvents are sent twice over RMI in distributed testing and non gui mode</li>
</ul>

<h3>Assertions</h3>
<ul>
</ul>

<h3>Functions</h3>
<ul>
</ul>

<h3>I18N</h3>
<ul>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>47646</bugzilla> -  NullPointerException in the "Random Variable" element</li>
<li>Disallow adding any child elements to JDBC Configuration</li>
<li>BeanInfoSupport now caches getBeanDescriptor() - should avoid an NPE on non-Sun JVMs when using CSVDataSet (and some other TestBeans)</li>
<li><bugzilla>48350</bugzilla> - Deadlock on distributed testing with 2 clients</li>
<li><bugzilla>48901</bugzilla> - Endless wait by adding Synchronizing Timer</li>
<li><bugzilla>49149</bugzilla> - usermanual/index.html has typo in link to "Regular Expressions" page</li>
<li><bugzilla>49394</bugzilla> - Classcast Exception in ActionRouter.postActionPerformed</li>
<li><bugzilla>48136</bugzilla> - Essential files missing from source tarball.<br/>
Source archives now contain all source files, including source files previously only provided in the binary archives.
</li>
<li><bugzilla>48331</bugzilla> - XpathExtractor does not return XML string representations for a Nodeset</li>
</ul>

<!-- ==================================================== -->

<h2>Improvements</h2>

<h3>HTTP Samplers</h3>
<ul>
<li><bugzilla>47622</bugzilla> - enable recording of HTTPS sessions</li>
<li>Allow Proxy Server to be specified on HTTP Sampler GUI and HTTP Config GUI</li>
<li><bugzilla>47461</bugzilla> - Update Cache Manager to handle Expires HTTP header</li>
<li><bugzilla>48153</bugzilla> - Support for Cache-Control and Expires headers</li>
<li><bugzilla>47946</bugzilla> - Proxy should enable Grouping inside a Transaction Controller</li>
<li><bugzilla>48300</bugzilla> - Allow override of IP source address for HTTP HttpClient requests</li>
<li><bugzilla>49083</bugzilla> - collapse '/pathsegment/..' in redirect URLs</li>
</ul>

<h3>Other samplers</h3>
<ul>
<li>JUnit sampler now supports JUnit4 tests (using annotations)</li>
<li><bugzilla>47900</bugzilla> - Allow JMS SubscriberSampler to be interrupted</li>
<li>Added JSR223 Sampler</li>
<li><bugzilla>47556</bugzilla> - JMS-PointToPoint-Sampler Timeout field should use Strings</li>
<li><bugzilla>47947</bugzilla> - Mail Reader Sampler should allow port to be overridden</li>
<li><bugzilla>48155</bugzilla> - Multiple problems / enhancements with JMS protocol classes</li>
<li>Allow MailReader sampler to use arbitrary protocols</li>
<li><bugzilla>45053</bugzilla> - SMTP-Sampler for JMeter</li>
<li><bugzilla>49552</bugzilla> - Add Message Headers on SMTPSampler</li>
<li>
JMS Publisher and Subscriber now support both Topics and Queues.
Added read Timeout to JMS Subscriber.
General clean-up of JMS code.
</li>
</ul>

<h3>Controllers</h3>
<ul>
<li><bugzilla>47909</bugzilla> - TransactionController should sum the latency</li>
<li><bugzilla>41418</bugzilla> - Exclude timer duration from Transaction Controller runtime in report</li>
<li><bugzilla>48749</bugzilla> - Allowing custom Thread Groups</li>
<li><bugzilla>43389</bugzilla> - Allow Include files to be found relative to the current JMX file</li>
</ul>

<h3>Listeners</h3>
<ul>
<li>Added DataStrippingSample sender - supports "Stripped" and "StrippedBatch" modes.</li>
<li>Added Comparison Assertion Visualizer</li>
<li><bugzilla>47907</bugzilla> - Improvements (enhancements and I18N) Comparison Assertion and Comparison Visualizer</li>
<li><bugzilla>36726</bugzilla> - add search function to Tree View Listener</li>
<li><bugzilla>47869</bugzilla> - Ability to cleanup fields of SampleResult</li>
<li><bugzilla>47952</bugzilla> - Added JSR223 Listener</li>
<li><bugzilla>47474</bugzilla> - View Results Tree support for plugin renderers</li>
<li>Allow Idle Time to be saved to sample log files</li>
<li><bugzilla>48259</bugzilla> - Improve StatCalculator performance by using TreeMap</li>
<li>Listeners using SamplingStatCalculator have much reduced memory needs 
as the Sample cache has been moved to the new CachingStatCalculator class.
In particular, Aggregate Report can now handle large numbers of samples.
</li>
<li>Aggregate Report and Summary Report now allow column headers to be optionally excluded</li>
<li><bugzilla>49506</bugzilla> - Add .csv File Extension in open dialog box from "read from file" functionality of listeners</li>
<li><bugzilla>49545</bugzilla> - Formatted (parsed) view of Sample Result in Results Tree</li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bugzilla>47338</bugzilla> - XPath Extractor forces retrieval of document DTD</li>
<li>Added Comparison Assertion</li>
<li><bugzilla>47952</bugzilla> - Added JSR223 PreProcessor and PostProcessor</li>
<li>Added JSR223 Assertion</li>
<li>Added BSF Timer and JSR223 Timer</li>
<li><bugzilla>48511</bugzilla> - add parent,child,all selection to regex extractor</li>
<li>Add Sampler scope selection to XPathExtractor</li>
<li>Regular Expression Extractor, Response Assertion and Size Assertion can now be applied to a JMeter variable</li>
<li><bugzilla>46790</bugzilla> - CSV Data Set Config should be able to parse CSV headers</li>
</ul>

<h3>Functions</h3>
<ul>
<li><bugzilla>47565</bugzilla> - [Function] FileToString</li>
</ul>

<h3>I18N</h3>
<ul>
<li><bugzilla>47938</bugzilla> -  Adding some French translations for new elements</li>
<li><bugzilla>48714</bugzilla> -  add new French messages</li>
</ul>

<h3>General</h3>
<ul>
<li><bugzilla>47223</bugzilla> - Slow Aggregate Report Performance (StatCalculator)</li>
<li><bugzilla>47980</bugzilla> - hostname resolves to 127.0.0.1 - specifiying IP not possible</li>
<li><bugzilla>47943</bugzilla> - DisabledComponentRemover is not used in Start class</li>
<li>HeapDumper class for runtime generation of dumps</li>
<li>Basic read-only JavaMail provider implementation for reading raw mail files</li>
<li><bugzilla>49540</bugzilla> - Sort "Add" menus alphabetically</li>
</ul>

<h2>Non-functional changes</h2>
<ul>
<li>Beanshell, JavaMail and JMS API (Apache Geronimo) jars are now included in the binary archive.</li>
<li>Add TestBean Table Editor support</li>
<li>Removed all external libraries from SVN; added download_jars Ant target</li>
<li>Updated various jar files:
<ul>
<li>BeanShell - 2.0b4 => 2.0b5</li>
<li>Commons Codec - 1.3 => 1.4</li>
<li>Commons-Collections - 3.2 => 3.2.1</li>
<li>JTidy => r938</li>
<li>JUnit - 3.8.2 => 4.8.1</li>
<li>Logkit - 1.2 => 2.0</li>
<li>Xalan Serializer = 2.7.1 (previously erroneously shown as 2.9.1)</li>
<li>Xerces xml-apis = 1.3.04 (previously erroneously shown as 2.9.1)</li>
<li>Some jar files were renamed.</li>
</ul>
</li>
</ul>

<!--  ========== 2.3.4 ===========  -->

<h1>Version 2.3.4</h1>

<h2>Summary of main changes</h2>

<p>
This is a minor bug-fix release, mainly to correct some bugs that were accidentally added in 2.3.3.
</p>


<h2>Known bugs</h2>

<p>
The Include Controller has some problems in non-GUI mode. 
In particular, it can cause a NullPointerException if there are two include controllers with the same name.
</p>

<p>Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</p>

<p>
The menu item Options / Choose Language does not change all the displayed text to the new language.
[The behaviour has improved, but language change is still not fully working]
To override the default local language fully, set the JMeter property "language" before starting JMeter. 
</p>

<h2>Bug fixes</h2>

<h3>HTTP Samplers and Proxy</h3>
<ul>
<li><bugzilla>47321</bugzilla> -  HTTPSampler2 response timeout not honored</li>
</ul>

<h3>Other Samplers</h3>
<ul>
<li><bugzilla>47290</bugzilla> -  Infinite loop on connection factory lookup (JMS)</li>
<li>JDBC Sampler should not close Prepared or Callable statements as these are cached</li>
</ul>

<h3>Controllers</h3>
<ul>
<li><bugzilla>39509</bugzilla> -  Once-only controller running twice</li>
</ul>

<h3>Listeners</h3>
<ul>
<li>Change ResultCollector to only warn if the directory was not created</li>
<li>Fix some synchronisation issues in ResultCollector and SampleResult (wrong locks were being used)</li>
</ul>

<h3>I18N</h3>
<ul>
<li>Fixed bug introduced in 2.3.3: JMeter does not start up if there is no messages.properties file for the default Locale.</li>
</ul>

<h3>General</h3>
<ul>
<li>Fix problems with remote clients - bug introduced in 2.3.3</li>
<li><bugzilla>47377</bugzilla> - Make ClassFinder more robust and close zipfile resources</li>
<li>Fix some errors in generating the documentation (latent bug revealed in 2.3.3 when Velocity was upgraded)</li>
</ul>

<h2>Improvements</h2>

<h3>Other samplers</h3>
<ul>
<li><bugzilla>47266</bugzilla> - FTP Request Sampler: allow specifying an FTP port, other than the default</li>
</ul>

<!--  ===================  -->

<h1>Version 2.3.3</h1>

<h2>Summary of main changes</h2>

<p>
The handling of test closedown is much improved. 
The gradual "Shutdown" command now waits until all threads have stopped,
and does not report an error if threads don't stop within 5 seconds.
The immediate "Stop" command can now be used if "Shutdown" takes too long.
Also the immediate "Stop" command is able to interrupt samplers which support the new Interruptible interface (e.g. HTTP and SOAP, FTP).
This allows immediate completion of pending responses.
Non-GUI mode tests can also now be sent a "Shutdown" or "Stop" message.
<complink name="Test Action"/> now supports a "Stop Now" action, 
as do the <complink name="Thread Group"/> and <complink name="Result Status Action Handler"/> Post Processor elements.
</p>

<p>
HTTP Cookie handling is improved, and HTTP POST can now use variable file names correctly.
HTTP, SOAP/XML-RPC and WebService(SOAP) sampler character encodings updated to be more consistent.
HTTP Samplers now support connection and response timeouts (requires JVM 1.5 for the HTTP Java sampler).
Together with the closedown improvements described above, this should avoid most cases where a test run hangs.
Multiple Header Manager elements are now supported for a single HTTP sampler.
The Proxy Server is improved, and no longer stores "Host" headers by default.
</p>

<p>
JDBC Request can optionally save the results of Select statements to variables.
JDBC Request now handles quoted strings and UTF-8, and can handle arbitrary variable types.
</p>

<p>
There are several new <a href="usermanual/functions.html">functions</a>:
__char() function: allows arbitrary Unicode characters to be entered in fields.
__unescape() function: allows Java-escaped strings to be used.
_unescapeHtml() function: decodes Html-encoded text.
__escapeHtml() function: encodes text using Html-encoding. 
A reference to a missing function - e.g. ${__missing(a)} - is now treated the same as a missing variable.
Previously the function name - and leading { - were dropped. This makes it easier to debug test plans.
</p>

<p>
Some Assertions can now be applied to sub-samples as well as (or instead of) just the parent sample.
There is a new <complink name="Random Variable"/> Configuration element.
</p>

<p>
JMS samplers are much improved (see details below). The <complink name="TCP Sampler"/> now supports some additional clients and is a bit more flexible.
</p>

<p>
Client-server mode has been improved, and the server can optionally use a fixed RMI port, which should help with setting up firewalls. 
</p>

<p>
Various I18N changes have been made; language change works better (though not perfect yet).
There are improved French translations as well as new Polish and Brazilian Portugese translations.
</p>

<p>
The BeanShell jar is now included with the binary archive; there is no need to download it separately. 
</p>

<!--  ========================= End of summary ===================================== -->

<h2>Known bugs</h2>

<p>
The Include Controller has some problems in non-GUI mode. 
In particular, it can cause a NullPointerException if there are two include controllers with the same name.
</p>

<p>Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</p>

<p>
The menu item Options / Choose Language does not change all the displayed text to the new language.
[The behaviour has improved, but language change is still not fully working]
To override the default local language fully, set the JMeter property "language" before starting JMeter. 
</p>

<h2>Incompatible changes</h2>
<p>
When loading sample results from a file, previous results are no longer cleared.
This allows one to merge multiple files.
If the previous behaviour is required,
use the menu item Run/Clear (Ctrl+Shift+E) or Run/Clear All (Ctrl+E) before loading the file.
</p>
<p>
The test elements "Save Results to a file" and "Generate Summary Results" are now shown as Listeners.
They were previously shown as Post-Processors, even though they are implemented as Listeners.
</p>
<p>
The Cookie Manager no longer saves incoming cookies as variables by default.
To save cookies as variables, define the property "CookieManager.save.cookies=true".
Also, cookies names are prefixed with "COOKIE_" before they are stored (this avoids accidental corruption of local variables)
To revert to the original behaviour, define the property "CookieManager.name.prefix= " (one or more spaces).
</p>
<p>
The Counter element is now shown as a Configuration element.
It was previously shown as a Pre-Processor, even though it is implemented as a Config item.
</p>
<p>
The above changes only affect the icons that are displayed and the locations in the GUI pop-up menus.
They do not affect test plans or test behaviour.
</p>
<p>
The PreProcessors are now invoked directly by the JMeterThread class,
rather than by the TestCompiler#configureSampler() method. (JMeterThread handles the PostProcessors).
This does not affect test plans or behaviour, but could perhaps affect 3rd party add-ons (very unlikely).
</p>
<p>
Moved the Scoping Rules sub-section from Section 3. "Building a Test Plan"  to Section 4. "Elements of a test plan"
</p>

<p>
The While controller now trims leading and trailing spaces from the condition value before it is compared
with LAST, blank or false.
</p>

<p>
The "threadName" variable in the _jexl() and __javaScript() functions was previously misspelt as "theadName".
</p>

<p>
The following deprecated methods were removed from JOrphanUtils: booleanToString(boolean) and valueOf(boolean).
Java 1.4+ has these methods in the Boolean class.
</p>

<p>
The TestElement interface has some new methods:
<ul>
<li>void setProperty(String key, String value, String dflt)</li>
<li>void setProperty(String key, boolean value, boolean dflt)</li>
<li>void setProperty(String key, int value)</li>
<li>void setProperty(String key, int value, int dflt)</li>
<li>int getPropertyAsInt(String key, int defaultValue)</li>
</ul>
These are implemented in the AbstractTestElement class which all elements should extend so this is unlikely to cause a problem.
</p>
<h2>Bug fixes</h2>

<h3>HTTP Samplers and Proxy</h3>
<ul>
<li><bugzilla>46332</bugzilla> - HTTP Cookie Manager ignores manually defined cookies (bug introduced in r707810)</li>
<li>Cookie Manager was not passing cookie policy to runtime threads so they always used compatibility mode</li>
<li>Add version attribute to JMeter Cookie class (needed for proper cookie support)</li>
<li>Cookie Manager now saves/restores cookie versions</li>
<li>Check validity of cookies before storing them.</li>

<li>HTTPSamplers can now use variables in POSTed file names</li>
<li>Fix processing of first file name in HTTP POST so functions/variables work (bug introduced with multiple file support)</li>
<li><bugzilla>45831</bugzilla> - WS Sampler reports incorrect throughput if SOAP packet creation fails</li>
<li>HTTP, SOAP/XML-RPC and WebService(SOAP) sampler character encodings updated to be more consistent</li>

<li><bugzilla>46148</bugzilla> - HTTP sampler fails on SSL requests when logging for jmeter.util is set to DEBUG</li>
<li>Fix Java 1.6 https error: java.net.SocketException: Unconnected sockets not implemented</li>

<li><bugzilla>46838</bugzilla> - if there was no data, still need to set latency in HTTPSampler</li>
<li><bugzilla>46993</bugzilla> - Saving from Header Manager generates ClassCastException</li>
<li>
<bugzilla>46690</bugzilla> - handling of 302 redirects with invalid relative paths.
JMeter now removes extraneous leading "../" segments (as do many browsers)
</li>
<li><bugzilla>44521</bugzilla> - empty variables for a POST in the HTTP Request don't get ignored</li>
<li><bugzilla>46977</bugzilla> - JMeter does not handle HTTP headers not delimited by whitespace</li>
<li>Fix bug in HTTP file: handling - read bytes, not characters in the default encoding.</li>

<li>Remove Host from headers saved by the Proxy server, as that will normally be generated by the HTTP stack</li>
<li><bugzilla>45199</bugzilla> - don't try to replace blank variables in Proxy recording</li>
<li>Change HTTPS spoofing so https: links are replaced even when URL match fails</li>
<li><bugzilla>46436</bugzilla> - Improve error reporting in Proxy Gui</li>
<li><bugzilla>46435</bugzilla> - More verbose error msg for error 501 (Proxy Server)</li>
</ul>

<h3>Other Samplers</h3>
<ul>
<li>The "prev" and "sampler" objects are now defined for BSF test elements</li>
<li>Fix NPE (in DataSourceElement) when using JDBC in client-server mode</li>
<li><bugzilla>45425</bugzilla> - JDBC Request does not support Unicode (changed sampler to use UTF-8)</li>
<li><bugzilla>46522</bugzilla> - Incorrect "Response data" in JDBC sample when column names are missing</li>
<li><bugzilla>46821</bugzilla> - JDBC select request doesn't store the first column in the variables</li>
<li><bugzilla>43791</bugzilla> - ensure QueueReceiver is closed in JMS Point to Point sampler</li>
<li><bugzilla>46016</bugzilla> - avoid possible NPE in JMSSampler</li>
<li><bugzilla>46142</bugzilla> - JMS Receiver now uses MessageID</li>
<li><bugzilla>45458</bugzilla> - Point to Point JMS in combination with authentication</li>
<li><bugzilla>45460</bugzilla> - JMS TestPlan elements depend on resource property</li>
<li>Various ReceiveSubscriber thread-safety fixes</li>
<li>JMSPublisher and Subscriber fixes: thread-safety, support dynamic locale changes, locale independence for JMX attribute values</li>
<li>FTP Sampler now logs out before disconnecting.</li>
<li>TCP sampler now calls setupTest() and teardownTest() methods</li>
<li><bugzilla>45887</bugzilla> - TCPSampler: timeout property incorrectly set</li>
</ul>

<h3>Controllers</h3>
<ul>
<li>Fix NPE when using nested Transaction Controllers with parent samples</li>
<li>Fix processing of Transaction Controller parent mode so current sampler is set to actual sampler</li>
<li><bugzilla>44941</bugzilla> - Throughput controllers should not share global counters</li>
<li><bugzilla>47120</bugzilla> - Throughput Controller: change percent executions to total executions, the value is stored in a String and interpreted as 1 execution</li>
<li><bugzilla>47150</bugzilla> - ThreadGroup with a loop count of zero causes infinite loop</li>
<li><bugzilla>47009</bugzilla> - Insert parent caused child controller name to be reset</li>
<li><bugzilla>47165</bugzilla> - Using duplicate Module Controller names in command line mode causes NPE</li>
</ul>

<h3>Listeners</h3>
<ul>
<li>Mailer Visualizer documentation now agrees with code i.e. failure/success counts need to be exceeded to trigger the mail.</li>
<li>Mailer Visualizer now shows the failure count</li>
<li>Mailer Visualiser - fix parsing of multiple e-mail address when using Test button</li>
<li><bugzilla>45976</bugzilla> - incomplete result file when using remote testing with more than 1 server</li>
<li>Fix Summariser so it works in client server mode</li>
<li><bugzilla>34096</bugzilla> - Duplicate samples not eliminated when writing to CSV files</li>
<li>Save "Include group Name in Label" setting in Aggregate and Summary reports</li>
<li>The JMeter variable "sample_variables" is sent to all server instances to ensure the data is available to the client.</li>
<li>CSVSaveService - check for EOF while reading quoted string</li>
</ul>

<h3>Assertions</h3>
<ul>
<li><bugzilla>45749</bugzilla> - Response Assertion does not work with a substring that happens to be an invalid RE</li>
<li><bugzilla>45904</bugzilla> - Allow 'Not' Response Assertion to succeed with null sample</li>
</ul>

<h3>Functions</h3>
<ul>
<li>Fix regex function - was failing to process $m$mid$n$ correctly</li>
<li>Protect against possible NPE in RegexFunction if called during test shutdown.</li>
<li>Avoid NPE if XPath function does not match any nodes</li>
<li>Correct the variable name "theadName" to "threadName" in the __jexl() and __javaScript() functions</li>
<li>A reference to a missing function - e.g. ${__missing(a)} - is now treated the same as a missing variable. Previously the function name - and leading { - were dropped.</li>
</ul>

<h3>I18N</h3>
<ul>
<li>Fixed language change handling for menus (does not yet work for TestBeans)</li>
<li>Add HeaderAsPropertyRenderer to support header resource names; use this to fix locale changes in various GUI elements</li>
<li><bugzilla>46424</bugzilla> - corrections to French translation</li>
<li><bugzilla>46844</bugzilla> -  "Library" label in test plan are not I18N</li>
<li><bugzilla>47064</bugzilla> - fixes for Mac LAF</li>
<li><bugzilla>47127</bugzilla> -  Unable to change language to pl_PL</li>
<li><bugzilla>47137</bugzilla> - Labels in View Results Tree aren't I18N</li>
<li><bugzilla>46423</bugzilla> - I18N of Proxy Recorder</li>
<li><bugzilla>45928</bugzilla> - AJP/1.3 Sampler doesn't retrieve its label from messages.properties</li>
</ul>

<h3>General</h3>
<ul>
<li>Prompt to overwrite an existing file when first saving a new test plan</li>
<li>Amend TestBeans to show the correct popup menu for Listeners</li>
<li><bugzilla>45185</bugzilla> - CSV dataset blank delimiter causes OOM</li>
<li>Fix incorrect GUI classifications: 
"Save Results to a file" and "Generate Summary Results" are now shown as Listeners.
"Counter" is now shown as a Configuration element.
</li>
<li><bugzilla>41608</bugzilla> - misleading warning log message removed</li>
<li><bugzilla>46359</bugzilla> - BSF JavaScript Preprocessor cannot access sampler variable on first interation (Implement temporary work-round for BSF-22)</li>
<li><bugzilla>46407</bugzilla> - BSF elements do not load script files, attempt to interpret filename as script</li>
<li>Better handling of Exceptions during test shutdown</li>
<li>Fix potential thread safety issue in JMeterThread class</li>
<li><bugzilla>46491</bugzilla> - Incorrect value for the last variable in "CSV Data Set Config" (error in processing quoted strings)</li>

</ul>

<!-- ==================================================== -->

<h2>Improvements</h2>

<h3>HTTP Samplers</h3>
<ul>
<li><bugzilla>45479</bugzilla> - Support for multiple HTTP Header Manager nodes</li>
<li>HTTP Samplers now support connection and request timeouts (requires Java 1.5 for Java Http sampler)</li>
<li>Apache SOAP 2.3.1 does not give access to HTTP response code/message, so WebService sampler now treats an empty response as an error</li>
<li>Mirror server now supports "X-Sleep" header - if this is set, the responding thread will wait for the specified number of milliseconds</li>
<li><bugzilla>45694</bugzilla> - Support GZIP compressed logs in Access Log Sampler</li>
</ul>

<h3>Other samplers</h3>
<ul>
<li>JDBC Request can optionally save the results of Select statements to variables.</li>
<li>JDBC Request now handles quoted strings.</li>
<li>JDBC Request now handles arbitrary variable types.</li>
<li>LDAP result data now formatted with line breaks</li>
<li><bugzilla>45200</bugzilla> - MailReaderSampler: store the whole MIME message in the SamplerResult</li>
<li><bugzilla>45571</bugzilla> - JMS Sampler correlation enhancement</li>
<li><bugzilla>46030</bugzilla> - Extend TCP Sampler to Support Length-Prefixed Binary Data</li>
<li>Add classname field to TCP Sampler GUIs</li>
</ul>

<h3>Controllers</h3>
<ul>
<li>Allow If Controller to use variable expressions (not just Javascript)</li>
<li>Trim spaces from While Controller condition before comparing against LAST, blank or false</li>
</ul>

<h3>Listeners</h3>
<ul>
<li>Save Responses to a file can save the generated filename(s) to variables.</li>
<li>Add option to skip suffix generation in Save Responses to a File</li>
<li><bugzilla>43119</bugzilla> - Save Responses to file: optionally omit the file number</li>
<li>Add BSF Listener element</li>
<li><bugzilla>47176</bugzilla> -  Monitor Results : improve load status graphic</li>
<li><bugzilla>40045</bugzilla> - Allow Results monitor to select a specific connector</li>
<li>Read XML JTL files more efficiently - pass samples to visualisers as they are read, rather than saving them all and then processing them</li>
</ul>

<h3>Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bugzilla>45903</bugzilla> - allow Assertions to apply to sub-samples</li>
<li>Add Body (unescaped) source option to Regular Expression Extractor.</li>
<li>Random Variable - new configuration element to create random numeric variables</li>
</ul>

<h3>Functions</h3>
<ul>
<li>Add OUT and log variables to __jexl() function</li>
<li>Use Script to evaluate __jexl() function so can have multiple statements.</li>
<li>Add log variable to the __javaScript() function</li>
<li>Added __char() function: allows arbitrary Unicode characters to be entered in fields.</li>
<li>Added __unescape() function: allows Java-escaped strings to be used.</li>
<li>Added __unescapeHtml() function: decodes Html-encoded text.</li>
<li>Added __escapeHtml() function: encodes text using Html-encoding.</li>
</ul>

<h3>I18N</h3>
<ul>
<li><bugzilla>45929</bugzilla> - improved French translations</li>
<li><bugzilla>47132</bugzilla> - Brazilian Portuguese translations</li>
<li><bugzilla>46900</bugzilla> - Polish translations</li>
<li>Added locales.add property to allow for new Locales</li>
</ul>

<h3>General</h3>
<ul>
<li>Allow spaces in JMeter path names (apply work-round for <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4496398">Java Bug 4496398</a>)</li>
<li>Process JVM_ARGS last in script files so users can override default settings</li>
<li><bugzilla>46636</bugzilla> - Allow server mode to optionally use a fixed rmi port</li>
<li>Make some samplers interruptible: HTTP (both), SoapSampler, FTPSampler</li>
<li>Test Action now supports "Stop Now" action, as do the Thread Group and Result Status Post Processor elements</li>
<li>The Menu items Stop and Shutdown now behave better. Shutdown will now wait until all threads exit. 
In GUI mode it can be cancelled and Stop run instead. 
Stop now reports if some threads will not exit, and exits if running in non-GUI mode</li>
<li>Add UDP server to wait for shutdown message if running in non-GUI mode; add UDP client to send the message.</li>
<li><bugzilla>41209</bugzilla> - JLabeled* and ToolTips</li>
<li>Include BeanShell 2.0b4 jar in binary download.</li>
</ul>

<h2>Non-functional changes</h2>
<ul>
<li>Introduce AbstractListenerGui class to make it easier to create Listeners with no visual output</li>
<li>Assertions are run after PostProcessors; change order of pop-up menus accordingly</li>
<li>Remove unnecessary clone() methods from function classes</li>
<li>Moved PreProcessor invocation to JMeterThread class</li>
<li>Made HashTree Map field final</li>
<li>Improve performance of calling ResultCollector#isSampleWanted() for multiple samples</li>
<li>Updated to new versions of: xmlgraphics-commons (1.3.1), jdom (1.1), xstream (1.3.1), velocity (1.6.2)</li>
</ul>


<!--  ===================  -->

<h2>Version 2.3.2</h2>

<h3>Summary of main changes</h3>

<h4>Bug fixes</h4>
<p>
Version 2.3.1 changed the way binary and text content types were determined as far as the View Results Tree Listener was concerned:
originally everything except "image/" content types were considered text, but 2.3.1 introduced a check
for specific content types. This has caused problems,
as several popular types were omitted and these were no longer shown by default in the Response tab.
Rather than try to list all the possible text types, JMeter now just checks for the following binary types:
<ul>
<li>image/*</li>
<li>audio/*</li>
<li>video/*</li>
</ul>
All other types are now assumed to be text.
</p>

<p>
JMeter 2.3.1 introduced a bug in the Cookie Manager 
- if "Clear Cookie each iteration" was selected, all threads would see the same cookies.
This bug has been corrected.
</p>

<h4>Improvements</h4>

<p>
The Proxy server can now record binary requests.
By default the content types
application/x-amf and application/x-java-serialized-object
will be treated as binary and saved in a file.
To change the content types, update the property <b>proxy.binary.types</b>.
</p>

<p>
The CSV Dataset configuration element has new file sharing options: per thread group, per thread, per identifier.
This allows for more flexible file processing, e.g. each thread can process the same data in the same order.
</p>

<p>Switch Controller now works properly with functions and variables, 
and the condition can now be a name instead of a number.
Simple Controller now works properly under a While Controller</p>

<p>CSV fields in JTL files can now contain delimiters. 
CSV and XML files can now contain additional variables (define the JMeter property <b>sample_variables</b>).</p>

<p>Response Assertion can now match on substrings (i.e. not regular expression). 
Regex extractor can operate on variables.</p>

<p>
XPath processing is improved; Tidy errors are handled better.
</p>

<p>Save Table Data buttons added to Summary and Aggregate reports to allow easy saving of the calculated data.</p>

<p>
HTTP samplers can now save just the MD5 hash of responses, rather than the entire response.
As a special case, if the HTTP Sampler path starts with "http://" or "https://" then this is used as the full URL,
overriding the host and port fields.
The HTTP Samplers can now POST multiple files.
Webservice(SOAP) Sampler can now load local WSDL files using the "file:" protocol.
</p>

<p>
A simple HTTP Cache Manager has been added. This needs further development.
</p>

<p>
View Results Tree Listener now uses Tidy to display XML.
This should allow more content to be displayed succesfully.
It also avoids the need to download remote DTD files, which can slow the rendering considerably.
</p>

<p>
MailReader sampler now supports POP3S and IMAPS protocols. Individual mails are now added as sub-samples.
</p>

<p>
Various improvements to the BSF Sampler: now supports Jexl, and Javascript bug works properly.
Added BSF PreProcessor, PostProcessor and Assertion test elements.
All now have access to "props" JMeter Properties object.
</p>

<p>Number of classes loaded in non-GUI mode is much reduced.</p>

<h3>Known bugs</h3>

<p>
The Include Controller has some problems in non-GUI mode. 
In particular, it can cause a NullPointerException if there are two include controllers with the same name.
</p>

<p>Once Only controller behaves OK under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</p>

<p>
The menu item Options / Choose Language does not change all the displayed text to the new language.
To override the default local language, set the JMeter property "language" before starting JMeter. 
</p>
<h3>Incompatible changes</h3>
<ul>
<li>
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.
</li>
<li>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.</li>
<li>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)
</li>
<li>
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 '.
</li>
<li>
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.
</li>
</ul>

<h3>Bug fixes</h3>
<ul>
<li>Check that the CSV delimiter is reasonable.</li>
<li>Fix Switch Controller to work properly with functions and variables</li>
<li><bugzilla>44011</bugzilla> - application/soap+xml not treated as a text type</li>
<li><bugzilla>43427</bugzilla> - Simple Controller is only partly executed in While loop</li>
<li><bugzilla>33954</bugzilla> - Stack Overflow in If/While controllers (may have been fixed previously)</li>
<li><bugzilla>44022</bugzilla> - Memory Leak when closing test plan</li>
<li><bugzilla>44042</bugzilla> - Regression in Cookie Manager (Bug introduced in 2.3.1)</li>
<li><bugzilla>41028</bugzilla> - JMeter server doesn't alert the user when the host is defined as a loopback address</li>
<li><bugzilla>44142</bugzilla> - Function __machineName causes NPE if parameters are omitted.</li>
<li><bugzilla>44144</bugzilla> - JMS point-to-point: request response test does not work</li>
<li><bugzilla>44314</bugzilla> - Not possible to add more than one SyncTimer</li>
<li>Capture Tidy console error output and log it</li>
<li>Fix problems using Tidy(tolerant parser) in XPath Assertion and XPath Extractor</li>
<li><bugzilla>44374</bugzilla> - improve timer calculation</li>
<li>Regular Expression Extractor now deletes all stale variables from previous matches.</li>
<li><bugzilla>44707</bugzilla> - Running remote test changes internal test plan</li>
<li><bugzilla>44625</bugzilla> - Cannot have two or more FTP samplers with different "put" and "get" actions</li>
<li><bugzilla>40850</bugzilla> - BeanShell memory leak</li>
<li>Ensure ResponseCode and ResponseMessage are set for successful JDBC samples</li>
<li>FTPSampler now detects and reports failure to open the remote file</li>
<li>Class directories defined in search_paths and user.classpath no longer need trailing "/"</li>
<li><bugzilla>44852</bugzilla> SOAP/ XML-RPC Request does not show Request details in View Results Tree</li>
<li>WebService(SOAP) Sampler ResponseData now includes the EOLs sent by server</li>
<li><bugzilla>44910</bugzilla> - close previous socket (if any) in TCP Sampler</li>
<li><bugzilla>44912</bugzilla> - Filter not working in Log Parser</li>
<li>The BeanShell and BSF component documentation made some incorrect references to the "SampleResponse" object;
this has been corrected to "SampleResult"</li>
<li>BSF Sampler now works properly with Javascript</li>
<li>Test Action "Stop Test" now works</li>
<li><bugzilla>42833</bugzilla> - Argument class uses LinkedHashMap in getArgumentsAsMap() to preserve ordering</li>
<li><bugzilla>45093</bugzilla> - SizeAssertion did not call getBytes()</li>
<li><bugzilla>45007</bugzilla> - Rewrite Location headers when using Proxy HTTPS spoofing</li>
<li>Use CRLF rather than LF in Proxy when returning headers to the client</li>
<li><bugzilla>45007</bugzilla> - fix content length header if content may have been changed</li>
</ul>

<h3>Improvements</h3>
<ul>
<li>CSV files can now handle fields with embedded delimiters.</li>
<li>longSum() function added</li>
<li><bugzilla>43382</bugzilla> - configure Tidy output (warnings, errors) for XPath Assertion and Post-Processor</li>
<li><bugzilla>43984</bugzilla> - trim spaces from port field</li>
<li>Add optional comment to __log() function</li>
<li>Make Random function variable name optional</li>
<li>Reduce class loading in non-GUI mode by only looking for Functions in class names
that contain '.functions.' and don't contain '.gui.'</li>
<li><bugzilla>43379</bugzilla> - Switch Controller now supports selection by name as well as number</li>
<li>Can specify list of variable names to be written to JTL files (CSV and XML format)</li>
<li>Now checks that the remoteStart options -r and -R are only used with non_GUI -n option</li>
<li><bugzilla>44184</bugzilla> - Allow header to be saved with Aggregate Graph data</li>
<li>Added "Save Table Data" buttons to Aggregate and Summary Reports - save table as CSV format with header</li>
<li>Allow most functions to be used on the Test Plan. 
Note __evalVar(), __split() and __regex() cannot be used on the Test Plan.</li>
<li>Allow Global properties to be loaded from a file, e.g. -Gglobal.properties</li>
<li>Add "Substring" option to Response Assertion</li>
<li><bugzilla>44378</bugzilla> - Turkish localisation</li>
<li>Add optional output variable name to Jexl function</li>
<li>Add application/vnd.wap.xhtml+xml as a text type</li>
<li>Add means to override maximum display size in View Results Tree - set the property: view.results.tree.max_size</li>
<li>Use Tidy to display XML in View Results Tree Listener (avoids fetching DTDs)</li>
<li><bugzilla>44487</bugzilla> - German translation</li>
<li>
As a special case, if the HTTP Sampler path starts with "http://" or "https://" then this is used as the full URL.
</li>
<li><bugzilla>44575</bugzilla> - Result Saver can now save only successful results</li>
<li><bugzilla>44650</bugzilla> - CSV Dataset now handles quoted column values</li>
<li><bugzilla>44600</bugzilla> - 1-ms resolution timer when running with Java 1.5+</li>
<li><bugzilla>44632</bugzilla> - Text input enhancement to FTP Sampler</li>
<li><bugzilla>42204</bugzilla> - add thread group name to Aggregate and Summary reports</li>
<li>FTP Sampler sets latency = time to login</li>
<li>FTP Sampler sets a URL if it can</li>
<li><bugzilla>41921</bugzilla> - add option for samplers to store MD5 of response; done for HTTP Samplers.</li>
<li>Regex Function can now also be applied to a variable rather than just the previous sample result.</li>
<li>Remove HTML Parameter Mask,HTTP User Parameter Modifier from menus as they are deprecated</li>
<li><bugzilla>44807</bugzilla> - allow session ids to be terminated by backslash</li>
<li><bugzilla>44784</bugzilla> - allow for broken server returning additional charset</li>
<li>Added TESTSTART.MS property / variable = test start time in milliseconds</li>
<li>Add POP3S and IMAPS protocols to Mail Reader Sampler.</li>
<li>Mail Reader Sampler now creates a sub-sample for each mail.</li>
<li>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)
</li>
<li>JUnit sampler GUI now also finds Test classes defined in user.classpath</li>
<li>
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 '
</li>
<li>Webservice(SOAP) Sampler can now load local WSDL files using the file: protocol</li>
<li><bugzilla>44872</bugzilla> - Add "All Files" filter to Open File dialogs</li>
<li>Mirror server can now be run independently (mirror-server.cmd and mirror-server.sh)</li>
<li><bugzilla>19128</bugzilla> - Added multiple file POST support to HTTP Samplers</li>
<li>Allow use of special name LAST to mean the last test run; applies to -t, -l, -j flags</li>
<li><bugzilla>44418</bugzilla>/42178 - CSV Dataset file handling improvements</li>
<li>Give BeanShell, Javascript and Jexl functions access to JMeter properties via the "props" object</li>
<li>Give BSF Sampler access to JMeter Properties via "props" object</li>
<li>Add Jexl as a supported BSF Sampler language</li>
<li>Give Beanshell test elements access to JMeter Properties via "props" object</li>
<li>Added BSF PreProcessor, PostProcessor and Assertion test elements</li>
<li>All BSF elements now have access to System.out via the variable "OUT"</li>
<li>Summariser updated to handle variable names</li>
<li>Synchronisation added to Summary and Aggregate Report to try to prevent occasional lost samples</li>
<li><bugzilla>44808</bugzilla>,<bugzilla>39641</bugzilla> - Proxy support for binary requests</li>
<li><bugzilla>28502</bugzilla> - HTTP Resource Cache</li>
</ul>

<h3>Non-functional changes</h3>
<ul>
<li>Better handling of MirrorServer startup problems and improved unit test.</li>
<li>Build process now detects missing 3rd party libraries and reports need for both binary and source archives</li>
<li>Skip BeanShell tests if jar is not present</li>
<li>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</li>
<li>Use properties for log/logn function descriptions</li>
<li>Check that all jmx files in the demos directory can be loaded OK</li>
<li>Update copyright to 2008; use copy tag instead of numeric character in HTML output</li>
<li>Methods called from constructors must not be overridable: make GUI init methods private</li>
<li>Make static variables final if possible</li>
<li>Split changes into current and previous</li>
</ul>

<!--  ===================  -->

<h3>Version 2.3.1</h3>
<h4>Summary of changes</h4>

<h5>JMeter Proxy</h5>

<p>
The Proxy spoof function was broken in 2.3; it has been fixed. 
Spoof now supports an optional parameter to limit spoofing to particular URLs. 
This is useful for HTTPS pages that have insecure content - e.g. images/stylesheets may be accessed using HTTP.
Spoofed responses now drop the default port (443) from https links to make them work better.
</p>
<p>
Ignored proxy samples are now visible in Listeners - the label is enclosed in [ and ] as an indication. 
Proxy documentation has been improved.
</p>

<h5>GUI changes</h5>

<p>The Add menus show element types in the order in which they are processed 
- see <a href="usermanual/test_plan.html#executionorder">Test Plan Execution Order</a>.
It is no longer possible to add test elements to inappropriate parts of the tree
- e.g. samplers cannot be added directly under a test plan. 
This also applies to Paste and drag and drop.
</p>

<p>
The File menu now supports a "Revert" option, which reloads the current file.
Also the last few file names used are remembered for easy reloading.
</p>

<p>
The Options Menu now supports Collapse All and Expand All items to collapse and expand the test tree.
</p>

<h5>Remote testing</h5>

<p>
The JMeter server now starts the RMI server directly (by default).
This simplifies testing, and means that the RMI server will be stopped when the server stops.
</p>

<p>
Functions can now be used in Listener filenames (variables do not work).
</p>

<p>
Command-line option -G can now be used to define properties for remote servers.
Option -X can be used to stop a remote server after a non-GUI run.
Server can be set to automatically exit after a single test (set property server.exitaftertest=true).
</p>

<h5>Other enhancements</h5>

<p>
JMeter startup no longer loads as many classes; this should reduce memory requirements.
</p>

<p>
Parameter and file support added to all BeanShell elements. 
Javascript function now supports access to JMeter objects; 
Jexl function always did have access, but the documentation has now been included.
New functions __eval() and __evalVar() for evaluating variables.
</p>

<p>
CSV files with the correct header column names are now automatically recognised when loaded. 
There is no need to configure the properties.
</p>

<p>
The hostname can now be saved in CSV and XML output files. 
New "Successes only" option added when saving result files.
Errors / Successes only option is now supported when loading XML and CSV files. 
</p>

<p>
General documentation improvements.
</p>

<h5>HTTP</h5>

<p>PUT and DELETE should now work properly. 
Cookie Manager no longer clears manually entered cookies.
</p>
<p>Now handles the META tag http-equiv charset</p>

<h5>JDBC</h5>

<p>JDBC Sampler now allows INOUT and OUT parameters for Called procedures. 
JDBC Sampler now allows per-thread connections - set Max Connections = 0 in JDBC Config.
</p>

<hr></hr>
<!-- ========================================================= -->

<h4>Incompatible changes</h4>
<ul>
<li>JMeter server now creates the RMI registry by default.
If the RMI registry has already been started externally, this will generate a warning message, but the server will continue.
This should not affect JMeter testing. 
However, if you are also using the RMI registry for other applications there may be problems.
For example, when the JMeter server shuts down it will stop the RMI registry.
Also user-written command files may need to be adjusted (the ones supplied with JMeter have been updated).
To revert to the earlier behaviour, define the JMeter property: <b>server.rmi.create=false</b>.
</li>
<li>The Proxy server removes If-Modified-Since and If-None-Match headers from generated Header Managers.
To revert to the previous behaviour, define the property proxy.headers.remove with no value</li>
</ul>

<h4>Bug fixes</h4>
<ul>
<li><bugzilla>43430</bugzilla> - Count of active threads is incorrect for remote samples</li>
<li>Throughput Controller was not working for "all thread" counts</li>
<li>If a POST body is built from parameter values only, these are now encoded if the checkbox is set.</li>
<li><bugzilla>43584</bugzilla> - Assertion Failure Message contains a comma that is also used as the delimiter for CSV files</li>
<li>HTTP Mirror Server now always returns the exact same content, it used to return incorrect data if UTF-8 encoding was used for HTTP POST body, for example</li>
<li><bugzilla>43612</bugzilla> - HTTP PUT does not honor request parameters</li>
<li><bugzilla>43694</bugzilla> - ForEach Controller (empty collection processing error)</li>
<li><bugzilla>42012</bugzilla> - Variable Listener filenames do not get processed in remote tests.
Filenames can now include function references; variable references do not work.</li>
<li>Ensure Listener nodes get own save configuration when copy-pasted</li>
<li>Correct Proxy Server include and exclude matching description - port and query are included, contrary to previously documented.</li>
<li>Aggregate Graph and Aggregate Report Column Header is KB/Sec; fixed the values to be KB rather than bytes</li>
<li>
Fix SamplingStatCalculator so it no longer adds elapsed time to endTime, as this is handled by SampleResult.
This corrects discrepancies between Summary Report and Aggregate Report throughput calculation.
</li>
<li>Default HTTPSampleResult to ISO-8859-1 encoding</li>
<li>Fix default encoding for blank encoding</li>
<li>Fix Https spoofing (port problem) which was broken in 2.3</li>
<li>Fix HTTP (Java) sampler so http.java.sampler.retries means retries, i.e. does not include initial try</li>
<li>Fix SampleResult dataType checking to better detect TEXT documents</li>
</ul>

<h4>Improvements</h4>
<ul>
<li>Add run_gui Ant target, to package and then start the JMeter GUI from Ant</li>
<li>Add File->Revert to easily drop the current changes and reload the project file currently loaded</li>
<li><bugzilla>31366</bugzilla> - Remember recently opened file(s)</li>
<li><bugzilla>43351</bugzilla> - Add support for Parameters and script file to all BeanShell test elements</li>
<li>SaveService no longer needs to instantiate classes</li>
<li>New functions: __eval() and __evalVar()</li>
<li>Menu items now appear in execution order</li>
<li>Test Plan items can now only be dropped/pasted/merged into parts of the tree where they are allowed</li>
<li>Property Display to show the value of System and JMeter properties and allow them to be changed</li>
<li><bugzilla>43451</bugzilla> - Allow Regex Extractor to operate on Response Code/Message</li>
<li>JDBC Sampler now allows INOUT and OUT parameters for Called procedures</li>
<li>JDBC Sampler now allows per-thread connections</li>
<li>Cookie Manager not longer clears cookies defined in the GUI</li>
<li>HTTP Parameters without names are ignored (except for POST requests with no file)</li>
<li>"Save Selection As" added to main menu; now checks only item is selected</li>
<li>Test Plan now has Paste menu item (paste was already supported via ^V)</li>
<li>If the default delimiter does not work when loading a CSV file, guess the delimiter by analysing the header line.</li>
<li>Add optional "loopback" protocol for HttpClient sampler</li>
<li>HTTP Mirror Server now supports blocking waiting for more data to appear, if content-length header is present in request</li>
<li>HTTP Mirror Server GUI now has the Start and Stop buttons in a more visible place</li>
<li>Server mode now creates the RMI registry; to disable set the JMeter property server.rmi.create=false</li>
<li>HTTP Sampler now supports using MIME Type field to specify content-type request header when body is constructed from parameter values</li>
<li>Enable exit after a single server test - define JMeter property server.exitaftertest=true</li>
<li>Added -G option to set properties in remote servers</li>
<li>Added -X option to stop remote servers after non-GUI run</li>
<li><bugzilla>43485</bugzilla> - Ability to specify keep-alive on SOAP/XML-RPC request</li>
<li><bugzilla>43678</bugzilla> - Handle META tag http-equiv charset</li>
<li><bugzilla>42555</bugzilla> - [I18N] Proposed corrections for the french translation</li>
<li><bugzilla>43727</bugzilla> - Test Action does not support variables or functions</li>
<li>The Proxy server removes If-Modified-Since and If-None-Match headers from generated Header Managers by default.
To change the list of removed headers, define the property proxy.headers.remove as a comma-separated list of headers to remove</li>
<li>The javaScript function now has access to JMeter variables and context etc. See <a href="usermanual/functions.html#__javaScript">JavaScript function</a></li>
<li>Use drop-down list for BSF Sampler language field</li>
<li>Add hostname to items that can be saved in CSV and XML output files.</li>
<li>Errors only flag is now supported when loading XML and CSV files</li>
<li>Ensure ResultCollector uses SaveService encoding</li>
<li>Proxy now rejects attempts to use it with https</li>
<li>Proxy spoofing can now use RE matching to determine which urls to spoof (useful if images are not https)</li>
<li>Proxy spoofing now drops the default HTTPS port (443) when converting https: links to http:</li>
<li>Add Successes Only logging and display</li>
<li>The JMeter log file name is formatted as a SimpleDateFormat (applied to the current date) if it contains paired single-quotes,  .e.g. 'jmeter_'yyyyMMddHHmmss'.log'</li>
<li>Added Collapse All and Expand All Option menu items</li>
<li>Allow optional definition of extra content-types that are viewable as text</li>
</ul>

<h4>Non-functional Improvements</h4>
<ul>
<li>Functor code tightened up; Functor can now be used with interfaces, as well as pre-defined targets and parameters.</li>
<li>Save graphics function now prompts before overwriting an existing file</li>
<li>Debug Sampler and Debug PostProcessor added.</li>
<li>Fixed up method names in Calculator and SamplingStatCalculator</li>
<li>Tidied up Listener documentation.</li>
</ul>

<!--  ===================  -->

<h3>Version 2.3</h3>

<h3>Fixes since 2.3RC4</h3>

<h4>Bug fixes</h4>
<ul>
<li>Fix NPE in SampleResultConverter - XStream PrettyPrintWriter cannot handle nulls</li>
<li>If Java HTTP sampler sees null ResponseMessage, replace with HTTP header</li>
<li><bugzilla>43332</bugzilla> - 2.3RC4 does not clear Guis based on TestBean</li>
<li><bugzilla>42948</bugzilla> - Problems with Proxy gui table fields in Java 1.6</li>
<li>Fixup broken jmeter-server script</li>
<li><bugzilla>43364</bugzilla> - option to revert If Controller to pre 2.3RC3 behaviour</li>
<li><bugzilla>43449</bugzilla> - Statistical Remote mode does not handle Latency</li>
<li><bugzilla>43450</bugzilla> (partial fix) - Allow SampleCount and ErrorCount to be saved to/restored from files</li>
</ul>

<h4>Improvements</h4>
<ul>
<li>Add nameSpace option to XPath extractor</li>
<li>Add NULL parameter option to JDBC sampler</li>
<li>Add documentation links for Rhino and BeanShell to functions; clarify variables and properties</li>
<li>Ensure uncaught exceptions are logged</li>
<li>Look for user.properties and system.properties in JMeter bin directory if not found locally</li>
</ul>

<h4>Fixes since 2.3RC3</h4>
<ul>
<li>Fixed NPE in Summariser (bug introduced in 2.3RC3)</li>
<li>Fixed setup of proxy port (bug introduced in 2.3RC3)</li>
<li>Fixed errors when running non-GUI on a headless host (bug introduced in 2.3RC3)</li>
<li><bugzilla>43054</bugzilla> - SSLManager causes stress tests to saturate and crash (bug introduced in 2.3RC3)</li>
<li>Clarified HTTP Request Defaults usage of the port field</li>
<li><bugzilla>43006</bugzilla> - NPE if icon.properties file not found</li>
<li><bugzilla>42918</bugzilla> - Size Assertion now treats an empty response as having zero length</li>
<li><bugzilla>43007</bugzilla> - Test ends before all threadgroups started</li>
<li>Fix possible NPE in HTTPSampler2 if 302 does not have Location header.</li>
<li><bugzilla>42919</bugzilla> - Failure Message blank in CSV output [now records first non-blank message]</li>
<li>Add link to Extending JMeter PDF</li>
<li>Allow for quoted charset in Content-Type parsing</li>
<li><bugzilla>39792</bugzilla> - ClientJMeter synchronisation needed</li>
<li><bugzilla>43122</bugzilla> - GUI changes not always picked up when short-cut keys used (bug introduced in 2.3RC3)</li>
<li><bugzilla>42947</bugzilla> - TestBeanGUI changes not picked up when short-cut keys used</li>
<li>Added serializer.jar (needed for update to xalan 2.7.0)</li>
<li><bugzilla>38687</bugzilla> - Module controller does not work in non-GUI mode</li>
</ul>

<h4>Improvements since 2.3RC3</h4>
<ul>
<li>Add stop thread option to CSV Dataset</li>
<li>Updated commons-httpclient to 3.1</li>
<li><bugzilla>28715</bugzilla> - allow variable cookie values (set CookieManager.allow_variable_cookies=false to disable)</li>
<li><bugzilla>40873</bugzilla> - add JMS point-to-point non-persistent delivery option</li>
<li><bugzilla>43283</bugzilla> - Save action adds .jmx if not present; checks for existing file on Save As</li>
<li>Control+A key does not work for Save All As; changed to Control+Shift+S</li>
<li><bugzilla>40991</bugzilla> - Allow Assertions to check Headers</li>
</ul>

<h3>Version 2.3RC3</h3>

<h4>Known problems/restrictions:</h4>
<p>
The JMeter remote server does not support multiple concurrent tests - each remote test should be run in a separate server.
Otherwise tests may fail with random Exceptions, e.g. ConcurrentModification Exception in StandardJMeterEngine.
See <bugzilla>43168</bugzilla>.
</p>
<p>
The default HTTP Request (not HTTPClient) sampler may not work for HTTPS connections via a proxy.
This appears to be due to a Java bug, see <bugzilla>39337</bugzilla>.
To avoid the problem, try a more recent version of Java, or switch to the HTTPClient version of the HTTP Request sampler.
</p>
<p>Transaction Controller parent mode does not support nested Transaction Controllers.
Doing so may cause a Null Pointer Exception in TestCompiler.
</p>
<p>Thread active counts are always zero in CSV and XML files when running remote tests.
</p>
<p>The property file_format.testlog=2.1 is treated the same as 2.2.
However JMeter does honour the 3 testplan versions.</p>
<p>
<bugzilla>22510</bugzilla> - JMeter always uses the first entry in the keystore.
</p>
<p>
Remote mode does not work if JMeter is installed in a directory where the path name contains spaces.
</p>
<p>
BeanShell test elements leak memory.
This can be reduced by using a file instead of including the script in the test element.
</p>
<p>
Variables and functions do not work in Listeners in client-server (remote) mode so they cannot be used
to name log files in client-server mode.
</p>
<p>
CSV Dataset variables are defined after configuration processing is completed,
so they cannot be used for other configuration items such as JDBC Config.
(see <bugzilla>40394</bugzilla>)
</p>

<h4>Summary of changes (for more details, see below)</h4>
<p>
Some of the main enhancements are:
</p>
<ul>
<li>Htmlparser 2.0 now used for parsing</li>
<li>HTTP Authorisation now supports domain and realm</li>
<li>HttpClient options can be specified via httpclient.parameters file</li>
<li>HttpClient now behaves the same as Java Http for SSL certificates</li>
<li>HTTP Mirror Server to allow local testing of HTTP samplers</li>
<li>HTTP Proxy supports XML-RPC recording, and other proxy improvements</li>
<li>__V() function allows support of nested variable references</li>
<li>LDAP Ext sampler optionally parses result sets and supports secure mode</li>
<li>FTP Sampler supports Ascii/Binary mode and upload</li>
<li>Transaction Controller now optionally generates a Sample with subresults</li>
<li>HTTPS session contexts are now per-thread, rather than shared. This gives better emulation of multiple users</li>
<li>BeanShell elements now support ThreadListener and TestListener interfaces</li>
<li>Coloured icons in Tree View Listener and elsewhere to better differentiate failed samples.</li>
</ul>
<p>
The main bug fixes are:
</p>
<ul>
<li>HTTPS (SSL) handling now much improved</li>
<li>Various Remote mode bugs fixed</li>
<li>Control+C and Control+V now work in the test tree</li>
<li>Latency and Encoding now available in CSV log output</li>
<li>Test elements no longer default to previous contents; test elements no longer cleared when changing language.</li>
</ul>

<h4>Incompatible changes (usage):</h4>
<p>
<b>N.B. The javax.net.ssl properties have been moved from jmeter.properties to system.properties,
and will no longer work if defined in jmeter.properties.</b>
<br></br>
The new arrangement is more flexible, as it allows arbitrary system properties to be defined.
</p>
<p>
SSL session contexts are now created per-thread, rather than being shared.
This generates a more realistic load for HTTPS tests.
The change is likely to slow down tests with many SSL threads.
The original behaviour can be enabled by setting the JMeter property:
<pre>
https.sessioncontext.shared=true
</pre>
</p>
<p>
The LDAP Extended Sampler now uses the same panel for both Thread Bind and Single-Bind tests.
This means that any tests using the Single-bind test will need to be updated to set the username and password.
</p>
<p>
<bugzilla>41140</bugzilla>: JMeterThread behaviour was changed so that PostProcessors are run in forward order
(as they appear in the test plan) rather than reverse order as previously.
The original behaviour can be restored by setting the following JMeter property:
<br/>
jmeterthread.reversePostProcessors=true
</p>
<p>
The HTTP Authorisation Manager now has extra columns for domain and realm, 
so the temporary work-round of using '\' and '@' in the username to delimit the domain and realm
has been removed.
</p>
<p>
Control-Z no longer used for Remote Start All - this now uses Control+Shift+R
</p>
<p>
HttpClient now uses pre-emptive authentication. 
This can be changed by setting the following:
<pre>
jmeter.properties:
httpclient.parameters.file=httpclient.parameters

httpclient.parameters:
http.authentication.preemptive$Boolean=false
</pre>
</p>

<p>
The port field in HTTP Request Defaults is no longer ignored for https samplers if it is set to 80.
</p>

<h4>Incompatible changes (development):</h4>
<p>
<b>N.B.</b>The clear() method was defined in the following interfaces: Clearable, JMeterGUIComponent and TestElement.
The methods serve different purposes, so two of them were renamed: 
the Clearable method is now clearData() and the JMeterGUIComponent method is now clearGui().
3rd party add-ons may need to be rebuilt.
</p>
<p>
Calulator and SamplingStatCalculator classes no longer provide any formatting of their data.
Formatting should now be done using the jorphan.gui Renderer classes.
</p>
<p>
Removed deprecated method JMeterUtils.split() - use JOrphanUtils version instead.
</p>
<p>
Removed method saveUsingJPEGEncoder() from SaveGraphicsService.
It was unused so far, and used the only Sun-specific class in JMeter.
</p>


<h4>New functionality/improvements:</h4>
<ul>
<li>Add Domain and Realm support to HTTP Authorisation Manager</li>
<li>HttpClient now behaves the same as the JDK http sampler for invalid certificates etc</li>
<li>Added httpclient.parameters.file to allow HttpClient parameters to be defined</li>
<li><bugzilla>33964</bugzilla> - Http Requests can send a file as the entire post body if name/type are omitted</li>
<li><bugzilla>41705</bugzilla> - add content-encoding option to HTTP samplers for POST requests</li>
<li><bugzilla>40933</bugzilla>,<bugzilla>40945</bugzilla> - optional RE matching when retrieving embedded resource URLs</li>
<li><bugzilla>27780</bugzilla> - (patch 19936) create multipart/form-data HTTP request without uploading file</li>
<li><bugzilla>42098</bugzilla> - Use specified encoding for parameter values in HTTP GET</li>
<li><bugzilla>42506</bugzilla> - JMeter threads now use independent SSL sessions</li>
<li><bugzilla>41707</bugzilla> - HTTP Proxy XML-RPC support</li>
<li><bugzilla>41880</bugzilla> - Add content-type filtering to HTTP Proxy Server</li>
<li><bugzilla>41876</bugzilla> - Add more options to control what the HTTP Proxy generates</li>
<li><bugzilla>42158</bugzilla> - Improve support for multipart/form-data requests in HTTP Proxy server</li>
<li><bugzilla>42173</bugzilla> - Let HTTP Proxy handle encoding of request, and undecode parameter values</li>
<li><bugzilla>42674</bugzilla> - default to pre-emptive HTTP authorisation if not specified</li>
<li>Support "file" protocol in HTTP Samplers</li>
<li>Http Autoredirects are now enabled by default when creating new samplers</li>

<li><bugzilla>40103</bugzilla> - various LDAP enhancements</li>
<li><bugzilla>40369</bugzilla> - LDAP: Stable search results in sampler</li>
<li><bugzilla>40381</bugzilla> - LDAP: more descriptive strings</li>

<li>BeanShell Post-Processor no longer ignores samples with zero-length result data</li>
<li>Added beanshell.init.file property to run a BeanShell script at startup</li>
<li><bugzilla>39864</bugzilla> - BeanShell init files now found from currrent or bin directory</li>
<li>BeanShell elements now support ThreadListener and TestListener interfaces</li>
<li>BSF Sampler passes additional variables to the script</li>

<li>Added timeout for WebService (SOAP) Sampler</li>

<li><bugzilla>40825</bugzilla> - Add JDBC prepared statement support</li>
<li>Extend JDBC Sampler: Commit, Rollback, AutoCommit</li>

<li><bugzilla>41457</bugzilla> - Add TCP Sampler option to not re-use connections</li>

<li><bugzilla>41522</bugzilla> - Use JUnit sampler name in sample results</li>

<li><bugzilla>42223</bugzilla> - FTP Sampler can now upload files</li>

<li><bugzilla>40804</bugzilla> - Change Counter default to max = Long.MAX_VALUE</li>

<li>Use property jmeter.home (if present) to override user.dir when starting JMeter</li>
<li>New -j option to easily change jmeter log file</li>

<li>HTTP Mirror Server Workbench element</li>

<li><bugzilla>41253</bugzilla> - extend XPathExtractor to work with non-NodeList XPath expressions</li>
<li><bugzilla>42088</bugzilla> - Add XPath Assertion for booleans</li>

<li>Added __V variable function to resolve nested variable names</li>

<li><bugzilla>40369</bugzilla> - Equals Response Assertion</li>
<li><bugzilla>41704</bugzilla> - Allow charset encoding to be specified for CSV DataSet</li>
<li><bugzilla>41259</bugzilla> - Comment field added to all test elements</li>
<li>Add standard deviation to Summary Report</li>
<li><bugzilla>41873</bugzilla> - Add name to AssertionResult and display AssertionResult in ViewResultsFullVisualizer</li>
<li><bugzilla>36755</bugzilla> - Save XML test files with UTF-8 encoding</li>
<li>Use ISO date-time format for Tree View Listener (previously the year was not shown)</li>
<li>Improve loading of CSV files: if possible, use header to determine format; guess timestamp format if not milliseconds</li>
<li><bugzilla>41913</bugzilla> - TransactionController now creates samples as sub-samples of the transaction</li>
<li><bugzilla>42582</bugzilla> - JSON pretty printing in Tree View Listener</li>
<li><bugzilla>40099</bugzilla> - Enable use of object variable in ForEachController</li>

<li><bugzilla>39693</bugzilla> - View Result Table uses icon instead of check box</li>
<li><bugzilla>39717</bugzilla> - use icons in the results tree</li>
<li><bugzilla>42247</bugzilla> - improve HCI</li>
<li>Allow user to cancel out of Close dialogue</li>
</ul>

<h4>Non-functional improvements:</h4>
<ul>
<li>Functor calls can now be unit tested</li>
<li>Replace com.sun.net classes with javax.net</li>
<li>Extract external jar definitions into build.properties file</li>
<li>Use specific jar names in build classpaths so errors are detected sooner</li>
<li>Tidied up ORO calls; now only one cache, size given by oro.patterncache.size, default 1000</li>
<li><bugzilla>42326</bugzilla> - Order of elements in .jmx files changes</li>
</ul>

<h4>External jar updates:</h4>
<ul>
<li>Htmlparser 2.0-20060923</li>
<li>xstream 1.2.1/xpp3_min-1.1.3.4.O</li>
<li>Batik 1.6</li>
<li>BSF 2.4.0</li>
<li>commons-collections 3.2</li>
<li>commons-httpclient-3.1-rc1</li>
<li>commons-jexl 1.1</li>
<li>commons-lang-2.3 (added)</li>
<li>JUnit 3.8.2</li>
<li>velocity 1.5</li>
<li>commons-io 1.3.1 (added)</li>
</ul>

<h4>Bug fixes:</h4>
<ul>
<li><bugzilla>39773</bugzilla> - NTLM now needs local host name - fix other call</li>
<li><bugzilla>40438</bugzilla> - setting "httpclient.localaddress" has no effect</li>
<li><bugzilla>40419</bugzilla> - Chinese messages translation fix</li>
<li><bugzilla>39861</bugzilla> - fix typo</li>
<li><bugzilla>40562</bugzilla> - redirects no longer invoke RE post processors</li>
<li><bugzilla>40451</bugzilla> - set label if not set by sampler</li>
<li>Fix NPE in CounterConfig.java in Remote mode</li>
<li><bugzilla>40791</bugzilla> - Calculator used by Summary Report</li>
<li><bugzilla>40772</bugzilla> - correctly parse missing fields in CSV log files</li>
<li><bugzilla>40773</bugzilla> - XML log file timestamp not parsed correctly</li>
<li><bugzilla>41029</bugzilla> - JMeter -t fails to close input JMX file</li>
<li><bugzilla>40954</bugzilla> - Statistical mode in distributed testing shows wrong results</li>
<li>Fix ClassCast Exception when using sampler that returns null, e..g TestAction</li>
<li><bugzilla>41140</bugzilla> - Post-processors are run in reverse order</li>
<li><bugzilla>41277</bugzilla> - add Latency and Encoding to CSV output</li>
<li><bugzilla>41414</bugzilla> - Mac OS X may add extra item to -jar classpath</li>
<li>Fix NPE when saving thread counts in remote testing</li>
<li><bugzilla>34261</bugzilla> - NPE in HtmlParser (allow for missing attributes)</li>
<li><bugzilla>40100</bugzilla> - check FileServer type before calling close</li>
<li><bugzilla>39887</bugzilla> - jmeter.util.SSLManager: Couldn't load keystore error message</li>
<li><bugzilla>41543</bugzilla> - exception when webserver returns "500 Internal Server Error" and content-length is 0</li>
<li><bugzilla>41416</bugzilla> - don't use chunked input for text-box input in SOAP-RPC sampler</li>
<li><bugzilla>39827</bugzilla> - SOAP Sampler content length for files</li>
<li>Fix Class cast exception in Clear.java</li>
<li><bugzilla>40383</bugzilla> - don't set content-type if already set</li>
<li>Mailer Visualiser test button now works if test plan has not yet been saved</li>
<li><bugzilla>36959</bugzilla> - Shortcuts "ctrl c" and "ctrl v" don't work on the tree elements</li>
<li><bugzilla>40696</bugzilla> - retrieve embedded resources from STYLE URL() attributes</li>
<li><bugzilla>41568</bugzilla> - Problem when running tests remotely when using a 'Counter'</li>
<li>Fixed various classes that assumed timestamps were always end time stamps:
<ul>
<li>SamplingStatCalculator</li>
<li>JTLData</li>
<li>RunningSample</li>
</ul>
</li>
<li><bugzilla>40325</bugzilla> - allow specification of proxyuser and proxypassword for WebServiceSampler</li>
<li>Change HttpClient proxy definition to use NTCredentials; added http.proxyDomain property for this</li>
<li><bugzilla>40371</bugzilla> - response assertion "pattern to test" scrollbar problem</li>
<li><bugzilla>40589</bugzilla> - Unescape XML entities in embedded URLs</li>
<li><bugzilla>41902</bugzilla> - NPE in HTTPSampler when responseCode = -1</li>
<li><bugzilla>41903</bugzilla> - ViewResultsFullVisualizer : status column looks bad when you do copy and paste</li>
<li><bugzilla>41837</bugzilla> - Parameter value corruption in proxy</li>
<li><bugzilla>41905</bugzilla> - Can't cut/paste/select Header Manager fields in Java 1.6</li>
<li><bugzilla>41928</bugzilla> - Make all request headers sent by HTTP Request sampler appear in sample result</li>
<li><bugzilla>41944</bugzilla> - Subresults not handled recursively by ResultSaver</li>
<li><bugzilla>42022</bugzilla> - HTTPSampler does not allow multiple headers of same name</li>
<li><bugzilla>42019</bugzilla> - Content type not stored in redirected HTTP request with subresults</li>
<li><bugzilla>42057</bugzilla> - connection can be null if method is null</li>
<li><bugzilla>41518</bugzilla> - JMeter changes the HTTP header Content Type for POST request</li>
<li><bugzilla>42156</bugzilla> - HTTPRequest HTTPClient incorrectly urlencodes parameter value in POST</li>
<li><bugzilla>42184</bugzilla> - Number of bytes for subsamples not added to sample when sub samples are added</li>
<li><bugzilla>42185</bugzilla> - If a HTTP Sampler follows a redirect, and is set up to download images, then images are downloaded multiple times</li>
<li><bugzilla>39808</bugzilla> - Invalid redirect causes incorrect sample time</li>
<li><bugzilla>42267</bugzilla> - Concurrent GUI update failure in Proxy Recording</li>
<li><bugzilla>30120</bugzilla> - Name of simple controller is resetted if a new simple controller is added as child</li>
<li><bugzilla>41078</bugzilla> - merge results in name change of test plan</li>
<li><bugzilla>40077</bugzilla> - Creating new Elements copies values from Existing elements</li>
<li><bugzilla>42325</bugzilla> - Implement the "clear" method for the LogicControllers</li>
<li><bugzilla>25441</bugzilla> - TestPlan changes sometimes detected incorrectly (isDirty)</li>
<li><bugzilla>39734</bugzilla> - Listeners shared after copy/paste operation</li>
<li><bugzilla>40851</bugzilla> - Loop controller with 0 iterations, stops evaluating the iterations field</li>
<li><bugzilla>24684</bugzilla> - remote startup problems if spaces in the path of the jmeter</li>
<li>Use Listener configuration when loading CSV data files</li>
<li>Function methods setParameters() need to be synchronized</li>
<li>Fix CLI long optional argument to require "=" (as for short options)</li>
<li>Fix SlowSocket to work properly with Httpclient (both http and https)</li>
<li><bugzilla>41612</bugzilla> - Loop nested in If Controller behaves erratically</li>
<li><bugzilla>42232</bugzilla> - changing language clears UDV contents</li>
<li>Jexl function did not allow variables</li>
</ul>

<h3>Version 2.2</h3>

<h4>Incompatible changes:</h4>
<p>
The time stamp is now set to the sampler start time (it was the end).
To revert to the previous behaviour, change the property <b>sampleresult.timestamp.start</b> to false (or comment it)
</p>
<p>The JMX output format has been simplified and files are not backwards compatible</p>
<p>
The JMeter.BAT file no longer changes directory to JMeter home, but runs from the current working directory.
The jmeter-n.bat and jmeter-t.bat files change to the directory containing the input file.
</p>
<p>
Listeners are now started slightly later in order to allow variable names to be used.
This may cause some problems; if so define the following in jmeter.properties:
<br/>
jmeterengine.startlistenerslater=false
</p>

<p>
The GUI now expands the tree by default when loading a test plan.
This can be disabled by setting the JMeter property <b>onload.expandtree=false</b>
</p>

<h4>Known problems:</h4>
<ul>
<li>Post-processors run in reverse order (see <bugzilla>41140</bugzilla>)</li>
<li>Module Controller does not work in non-GUI mode</li>
<li>Aggregate Report and some other listeners use increasing amounts of memory as a test progresses</li>
<li>Does not always handle non-default encoding properly</li>
<li>Spaces in the installation path cause problems for client-server mode</li>
<li>Change of Language does not propagate to all test elements</li>
<li>SamplingStatCalculator keeps a List of all samples for calculation purposes; 
this can cause memory exhaustion in long-running tests</li>
<li>Does not properly handle server certificates if they are expired or not installed locally</li>
</ul>

<h4>New functionality:</h4>
<ul>
<li>Report function</li>
<li>XPath Extractor Post-Processor. Handles single and multiple matches.</li>
<li>Simpler JMX file format (2.2)</li>
<li>BeanshellSampler code can update ResponseData directly</li>
<li><bugzilla>37490</bugzilla> - Allow UDV as delay in Duration Assertion</li>
<li>Slow connection emulation for HttpClient</li>
<li>Enhanced JUnitSampler so that by default assert errors and exceptions are not appended to the error message. 
Users must explicitly check append in the sampler</li>
<li>Enhanced the documentation for webservice sampler to explain how it works with CSVDataSet</li>
<li>Enhanced the documentation for javascript function to explain escaping comma</li>
<li>Allow CSV Data Set file names to be absolute</li>
<li>Report Tree compiler errors better</li>
<li>Don't reset Regex Extractor variable if default is empty</li>
<li>includecontroller.prefix property added</li>
<li>Regular Expression Extractor sets group count</li>
<li>Can now save entire screen as an image, not just the right-hand pane</li>
<li><bugzilla>38901</bugzilla> - Add optional SOAPAction header to SOAP Sampler</li>
<li>New BeanShell test elements: Timer, PreProcessor, PostProcessor, Listener</li>
<li>__split() function now clears next variable, so it can be used with ForEach Controller</li>
<li><bugzilla>38682</bugzilla> - add CallableStatement functionality to JDBC Sampler</li>
<li>Make it easier to change the RMI/Server port</li>
<li>Add property jmeter.save.saveservice.xml_pi to provide optional xml processing instruction in JTL files</li>
<li>Add bytes and URL to items that can be saved in sample log files (XML and CSV)</li>
<li>The Post-Processor "Save Responses to a File" now saves the generated file name with the
sample, and the file name can be included in the sample log file.
</li>
<li>Change jmeter.bat DOS script so it works from any directory</li>
<li>New -N option to define nonProxyHosts from command-line</li>
<li>New -S option to define system properties from input file</li>
<li><bugzilla>26136</bugzilla> - allow configuration of local address</li>
<li>Expand tree by default when loading a test plan - can be disabled by setting property onload.expandtree=false</li>
<li><bugzilla>11843</bugzilla> - URL Rewriter can now cache the session id</li>
<li>Counter Pre-Processor now supports formatted numbers</li>
<li>Add support for HEAD PUT OPTIONS TRACE and DELETE methods</li>
<li>Allow default HTTP implementation to be changed</li>
<li>Optionally save active thread counts (group and all) to result files</li>
<li>Variables/functions can now be used in Listener file names</li>
<li>New __time() function; define START.MS/START.YMD/START.HMS properties and variables</li>
<li>Add Thread Name to Tree and Table Views</li>
<li>Add debug functions: What class, debug on, debug off</li>
<li>Non-caching Calculator - used by Table Visualiser to reduce memory footprint</li>
<li>Summary Report - similar to Aggregate Report, but uses less memory</li>
<li><bugzilla>39580</bugzilla> - recycle option for CSV Dataset</li>
<li><bugzilla>37652</bugzilla> - support for Ajp Tomcat protocol</li>
<li><bugzilla>39626</bugzilla> - Loading SOAP/XML-RPC requests from file</li>
<li><bugzilla>39652</bugzilla> - Allow truncation of labels on AxisGraph</li>
<li>Allow use of htmlparser 1.6</li>
<li><bugzilla>39656</bugzilla> - always use SOAP action if it is provided</li>
<li>Automatically include properties from user.properties file</li>
<li>Add __jexl() function - evaluates Commons JEXL expressions</li>
<li>Optionally load JMeter properties from user.properties and system properties from system.properties.</li>
<li><bugzilla>39707</bugzilla> - allow Regex match against URL</li>
<li>Add start time to Table Visualiser</li>
<li>HTTP Samplers can now extract embedded resources for any required media types</li>
</ul>

<h4>Bug fixes:</h4>
<ul>
<li>Fix NPE when no module selected in Module Controller</li>
<li>Fix NPE in XStream when no ResponseData present</li>
<li>Remove ?xml prefix when running with Java 1.5 and no x-jars</li>
<li><bugzilla>37117</bugzilla> - setProperty() function should return ""; added optional return of original setting</li>
<li>Fix CSV output time format</li>
<li><bugzilla>37140</bugzilla> - handle encoding better in RegexFunction</li>
<li>Load all cookies, not just the first; fix class cast exception</li>
<li>Fix default Cookie path name (remove page name)</li>
<li>Fixed resultcode attribute name</li>
<li><bugzilla>36898</bugzilla> - apply encoding to RegexExtractor</li>
<li>Add properties for saving subresults, assertions, latency, samplerData, responseHeaders, requestHeaders &amp; encoding</li>
<li><bugzilla>37705</bugzilla> - Synch Timer now works OK after run is stopped</li>
<li><bugzilla>37716</bugzilla> - Proxy request now handles file Post correctly</li>
<li>HttpClient Sampler now saves latency</li>
<li>Fix NPE when using JavaScript function on Test Plan</li>
<li>Fix Base Href parsing in htmlparser</li>
<li><bugzilla>38256</bugzilla> - handle cookie with no path</li>
<li><bugzilla>38391</bugzilla> - use long when accumulating timer delays</li>
<li><bugzilla>38554</bugzilla> - Random function now uses long numbers</li>
<li><bugzilla>35224</bugzilla> - allow duplicate attributes for LDAP sampler</li>
<li><bugzilla>38693</bugzilla> - Webservice sampler can now use https protocol</li>
<li><bugzilla>38646</bugzilla> - Regex Extractor now clears old variables on match failure</li>
<li><bugzilla>38640</bugzilla> - fix WebService Sampler pooling</li>
<li><bugzilla>38474</bugzilla> - HTML Link Parser doesn't follow frame links</li>
<li><bugzilla>36430</bugzilla> - Counter now uses long rather than int to increase the range</li>
<li><bugzilla>38302</bugzilla> - fix XPath function</li>
<li><bugzilla>38748</bugzilla> - JDBC DataSourceElement fails with remote testing</li>
<li><bugzilla>38902</bugzilla> - sometimes -1 seems to be returned unnecessarily for response code</li>
<li><bugzilla>38840</bugzilla> - make XML Assertion thread-safe</li>
<li><bugzilla>38681</bugzilla> - Include controller now works in non-GUI mode</li>
<li>Add write(OS,IS) implementation to TCPClientImpl</li>
<li>Sample Result converter saves response code as "rc". Previously it saved as "rs" but read with "rc"; it will now also read with "rc".
The XSL stylesheets also now accept either "rc" or "rs"</li>
<li>Fix counter function so each counter instance is independent (previously the per-user counters were shared between instances of the function)</li>
<li>Fix TestBean Examples so that they work</li>
<li>Fix JTidy parser so it does not skip body tags with background images</li>
<li>Fix HtmlParser parser so it catches all background images</li>
<li><bugzilla>39252</bugzilla> set SoapSampler sample result from XML data</li>
<li><bugzilla>38694</bugzilla> - WebServiceSampler not setting data encoding correctly</li>
<li>Result Collector now closes input files read by listeners</li>
<li><bugzilla>25505</bugzilla> - First HTTP sampling fails with "HTTPS hostname wrong: should be 'localhost'"</li>
<li><bugzilla>25236</bugzilla> - remove double scrollbar from Assertion Result Listener</li>
<li><bugzilla>38234</bugzilla> - Graph Listener divide by zero problem</li>
<li><bugzilla>38824</bugzilla> - clarify behaviour of Ignore Status</li>
<li><bugzilla>38250</bugzilla> - jmeter.properties "language" now supports country suffix, for zh_CN and zh_TW etc</li>
<li>jmeter.properties file is now closed after it has been read</li>
<li><bugzilla>39533</bugzilla> - StatCalculator added wrong items</li>
<li><bugzilla>39599</bugzilla> - ConcurrentModificationException</li>
<li>HTTPSampler2 now handles Auto and Follow redirects correctly</li>
<li><bugzilla>29481</bugzilla> - fix reloading sample results so subresults not counted twice</li>
<li><bugzilla>30267</bugzilla> - handle AutoRedirects properly</li>
<li><bugzilla>39677</bugzilla> - allow for space in JMETER_BIN variable</li>
<li>Use Commons HttpClient cookie parsing and management. Fix various problems with cookie handling.</li>
<li><bugzilla>39773</bugzilla> - NTCredentials needs host name</li>
</ul>

<h4>Other changes</h4>
<ul>
<li>Updated to HTTPClient 3.0 (from 2.0)</li>
<li>Updated to Commons Collections 3.1</li>
<li>Improved formatting of Request Data in Tree View</li>
<li>Expanded user documentation</li>
<li>Added MANIFEST, NOTICE and LICENSE to all jars</li>
<li>Extract htmlparser interface into separate jarfile to make it possible to replace the parser</li>
<li>Removed SQL Config GUI as no longer needed (or working!)</li>
<li>HTTPSampler no longer logs a warning for Page not found (404)</li>
<li>StringFromFile now callable as __StringFromFile (as well as _StringFromFile)</li>
<li>Updated to Commons Logging 1.1</li>
</ul>

<!--  ===================  -->


<hr/>
<h3>Version 2.1.1</h3>
<h4>New functionality:</h4>
<ul>
<li>New Include Controller allows a test plan to reference an external jmx file</li>
<li>New JUnitSampler added for using JUnit Test classes</li>
<li>New Aggregate Graph listener is capable of graphing aggregate statistics</li>
<li>Can provide additional classpath entries using the property user.classpath and on the Test Plan element</li>
</ul>
<h4>Bug fixes:</h4>
<ul>
<li>AccessLog Sampler and JDBC test elements populated correctly from 2.0 test plans</li>
<li>BSF Sampler now populates filename and parameters from saved test plan</li>
<li><bugzilla>36500</bugzilla> - handle missing data more gracefully in WebServiceSampler</li>
<li><bugzilla>35546</bugzilla> - add merge to right-click menu</li>
<li><bugzilla>36642</bugzilla> - Summariser stopped working in 2.1</li>
<li><bugzilla>36618</bugzilla> - CSV header line did not match saved data</li>
<li>JMeter should now run under JVM 1.3 (but does not build with 1.3)</li>
</ul>


<!--  ===================  -->

<h3>Version 2.1</h3>
<h4>New functionality:</h4>
<ul>
<li>New Test Script file format - smaller, more compact, more readable</li>
<li>New Sample Result file format - smaller, more compact</li>
<li>XSchema Assertion</li>
<li>XML Tree display</li>
<li>CSV DataSet Config item</li>
<li>New JDBC Connection Pool Config Element</li>
<li>Synchronisation Timer</li>
<li>setProperty function</li>
<li>Save response data on error</li>
<li>Ant JMeter XSLT now optionally shows failed responses and has internal links</li>
<li>Allow JavaScript variable name to be omitted</li>
<li>Changed following Samplers to set sample label from sampler name</li>
<li>All Test elements can be saved as a graphics image to a file</li>
<li><bugzilla>35026</bugzilla> - add RE pattern matching to Proxy</li>
<li><bugzilla>34739</bugzilla> - Enhance constant Throughput timer</li>
<li><bugzilla>25052</bugzilla> - use response encoding to create comparison string in Response Assertion</li>
<li>New optional icons</li>
<li>Allow icons to be defined via property files</li>
<li>New stylesheets for 2.1 format XML test output</li>
<li>Save samplers, config element and listeners as PNG</li>
<li>Enhanced support for WSDL processing</li>
<li>New JMS sampler for topic and queue messages</li>
<li>How-to for JMS samplers</li>
<li><bugzilla>35525</bugzilla> - Added Spanish localisation</li>
<li><bugzilla>30379</bugzilla> - allow server.rmi.port to be overridden</li>
<li>enhanced the monitor listener to save the calculated stats</li>
<li>Functions and variables now work at top level of test plan</li>
</ul>
<h4>Bug fixes:</h4>
<ul>
<li><bugzilla>34586</bugzilla> - XPath always remained as /</li>
<li>BeanShellInterpreter did not handle null objects properly</li>
<li>Fix Chinese resource bundle names</li>
<li>Save field names if required to CSV files</li>
<li>Ensure XML file is closed</li>
<li>Correct icons now displayed for TestBean components</li>
<li>Allow for missing optional jar(s) in creating menus</li>
<li>Changed Samplers to set sample label from sampler name as was the case for HTTP</li>
<li>Fix various samplers to avoid NPEs when incomplete data is provided</li>
<li>Fix Cookie Manager to use seconds; add debug</li>
<li><bugzilla>35067</bugzilla> - set up filename when using -t option</li>
<li>Don't substitute TestElement.* properties by UDVs in Proxy</li>
<li><bugzilla>35065</bugzilla> - don't save old extensions in File Saver</li>
<li><bugzilla>25413</bugzilla> - don't enable Restart button unnecessarily</li>
<li><bugzilla>35059</bugzilla> - Runtime Controller stopped working</li>
<li>Clear up any left-over connections created by LDAP Extended Sampler</li>
<li><bugzilla>23248</bugzilla> - module controller didn't remember stuff between save and reload</li>
<li>Fix Chinese locales</li>
<li><bugzilla>29920</bugzilla> - change default locale if necessary to ensure default properties are picked up when English is selected.</li>
<li>Bug fixes for Tomcat monitor captions</li> 
<li>Fixed webservice sampler so it works with user defined variables</li>
<li>Fixed screen borders for LDAP config GUI elements</li>
<li><bugzilla>31184</bugzilla> - make sure encoding is specified in JDBC sampler</li>
<li>TCP sampler - only share sockets with same host:port details; correct the manual</li>
<li>Extract src attribute for embed tags in JTidy and Html Parsers</li>
</ul>

<!--  ===================  -->

<h3>Version 2.0.3</h3>
<h4>New functionality:</h4>
<ul>
<li>XPath Assertion and XPath Function</li>
<li>Switch Controller</li>
<li>ForEach Controller can now loop through sets of groups</li>
<li>Allow CSVRead delimiter to be changed (see jmeter.properties)</li>
<li><bugzilla>33920</bugzilla> - allow additional property files</li>
<li><bugzilla>33845</bugzilla> - allow direct override of Home dir</li>
</ul>
<h4>Bug fixes:</h4>
<ul>
<li>Regex Extractor nested constant not put in correct place <bugzilla>32395</bugzilla></li>
<li>Start time reset to now if necessary so that delay works OK.</li>
<li>Missing start/end times in scheduler are assumed to be now, not 1970</li>
<li><bugzilla>28661</bugzilla> - 304 responses not appearing in listeners</li>
<li>DOS scripts now handle different disks better</li>
<li><bugzilla>32345</bugzilla> - HTTP Rewriter does not work with HTTP Request default</li>
<li>Catch Runtime Exceptions so an error in one Listener does not affect others</li>
<li><bugzilla>33467</bugzilla> - __threadNum() extracted number wrongly </li>
<li><bugzilla>29186</bugzilla>,33299 - fix CLI parsing of "-" in second argument</li>
<li>Fix CLI parse bug: -D arg1=arg2. Log more startup parameters.</li>
<li>Fix JTidy and HTMLParser parsers to handle form src= and link rel=stylesheet</li>
<li>JMeterThread now logs Errors to jmeter.log which were appearing on console</li>
<li>Ensure WhileController condition is dynamically checked</li>
<li><bugzilla>32790</bugzilla> ensure If Controller condition is re-evaluated each time</li>
<li><bugzilla>30266</bugzilla> - document how to display proxy recording responses</li>
<li><bugzilla>33921</bugzilla> - merge should not change file name</li>
<li>Close file now gives chance to save changes</li>
<li><bugzilla>33559</bugzilla> - fixes to Runtime Controller</li>
</ul>
<h4>Other changes:</h4>
<ul>
<li>To help with variable evaluation, JMeterThread sets "sampling started" a bit earlier (see jmeter.properties)</li>
<li><bugzilla>33796</bugzilla> - delete cookies with null/empty values</li>
<li>Better checking of parameter count in JavaScript function</li>
<li>Thread Group now defaults to 1 loop instead of forever</li>
<li>All Beanshell access is now via a single class; only need BSH jar at run-time</li>
<li><bugzilla>32464</bugzilla> - document Direct Draw settings in jmeter.bat</li>
<li><bugzilla>33919</bugzilla> - increase Counter field sizes</li>
<li><bugzilla>32252</bugzilla> - ForEach was not initialising counters</li>
</ul>

<!--  ===================  -->

<h3>Version 2.0.2</h3>
<h4>New functionality:</h4>
<ul>
<li>While Controller</li>
<li>BeanShell intilisation scripts</li>
<li>Result Saver can optionally save failed results only</li>
<li>Display as HTML has option not to download frames and images etc</li>
<li>Multiple Tree elements can now be enabled/disabled/copied/pasted at once</li>
<li>__split() function added</li>
<li><bugzilla>28699</bugzilla> allow Assertion to regard unsuccessful responses - e.g. 404 - as successful</li>
<li><bugzilla>29075</bugzilla> Regex Extractor can now extract data out of http response header as well as the body</li>
<li>__log() functions can now write to stdout and stderr</li>
<li>URL Modifier can now optionally ignore query parameters</li>
</ul>
<h4>Bug fixes:</h4>
<ul>
<li>If controller now works after the first false condition <bugzilla>31390</bugzilla></li>
<li>Regex GUI was losing track of Header/Body checkbox <bugzilla>29853</bugzilla></li>
<li>Display as HTML now handles frames and relative images</li>
<li>Right-click open replaced by merge</li>
<li>Fix some drag and drop problems</li>
<li>Fixed foreach demo example so it works</li>
<li><bugzilla>30741</bugzilla> SSL password prompt now works again </li>
<li>StringFromFile now closes files at end of test; start and end now optional as intended</li>
<li><bugzilla>31342</bugzilla> Fixed text of SOAP Sampler headers</li>
<li>Proxy must now be stopped before it can be removed <bugzilla>25145</bugzilla></li>
<li>Link Parser now supports BASE href <bugzilla>25490</bugzilla></li>
<li><bugzilla>30917</bugzilla> Classfinder ignores duplicate names</li>
<li><bugzilla>22820</bugzilla> Allow Counter value to be cleared</li>
<li><bugzilla>28230</bugzilla> Fix NPE in HTTP Sampler retrieving embedded resources</li>
<li>Improve handling of StopTest; catch and log some more errors</li>
<li>ForEach Controller no longer runs any samples if first variable is not defined</li>
<li><bugzilla>28663</bugzilla> NPE in remote JDBC execution</li>
<li><bugzilla>30110</bugzilla> Deadlock in stopTest processing</li>
<li><bugzilla>31696</bugzilla> Duration not working correctly when using Scheduler</li>
<li>JMeterContext now uses ThreadLocal - should fix some potential NPE errors</li>
</ul>
<h3>Version 2.0.1</h3>
<p>Bug fix release. TBA.</p>
<h3>Version 2.0</h3>
<ul>
    <li>HTML parsing improved; now has choice of 3 parsers, and most embedded elements can now be detected and downloaded.</li>
<li>Redirects can now be delegated to URLConnection by defining the JMeter property HTTPSamper.delegateRedirects=true (default is false) </li>
<li>Stop Thread and Stop Test methods added for Samplers and Assertions etc. Samplers can call setStopThread(true) or setStopTest(true) if they detect an error that needs to stop the thread of the test after the sample has been processed </li>
<li>Thread Group Gui now has an extra pane to specify what happens after a Sampler error: Continue (as now), Stop Thread or Stop Test. 
    This needs to be extended to a lower level at some stage. </li>
<li>Added Shutdown to Run Menu. This is the same as Stop except that it lets the Threads finish normally (i.e. after the next sample has been completed) </li>
<li>Remote samples can be cached until the end of a test by defining the property hold_samples=true when running the server.
More work is needed to be able to control this from the GUI </li>
<li>Proxy server has option to skip recording browser headers </li>
<li>Proxy restart works better (stop waits for daemon to finish) </li>
<li>Scheduler ignores start if it has already passed </li>
<li>Scheduler now has delay function </li>
<li>added Summariser test element (mainly for non-GUI) testing. This prints summary statistics to System.out and/or the log file every so oftem (3 minutes by default). Multiple summarisers can be used; samples are accumulated by summariser name. </li>
<li>Extra Proxy Server options: 
Create all samplers with keep-alive disabled 
Add Separator markers between sets of samples 
Add Response Assertion to first sampler in each set </li>
<li>Test Plan has a comment field</li>

    <li>Help Page can now be pushed to background</li>
    <li>Separate Function help page</li>
    <li>New / amended functions</li>
    <ul>
      <li>__property() and __P() functions</li>
      <li>__log() and __logn() - for writing to the log file</li>
      <li>_StringFromFile can now process a sequence of files, e.g. dir/file01.txt, dir/file02.txt etc </li>
      <li>_StringFromFile() funtion can now use a variable or function for the file name </li>
    </ul>
    <li>New / amended Assertions</li>
    <ul>
        <li>Response Assertion now works for URLs, and it handles null data better </li>
        <li>Response Assertion can now match on Response Code and Response message as well </li>
        <li>HTML Assertion using JTidy to check for well-formed HTML</li>
    </ul>
    <li>If Controller (not fully functional yet)</li>
    <li>Transaction Controller (aggregates the times of its children)</li>
    <li>New Samplers</li>
        <ul>
            <li>Basic BSF Sampler (optional)</li>
            <li>BeanShell Sampler (optional, needs to be downloaded from www.beanshell.org</li>
            <li>Basic TCP Sampler</li>
        </ul>
     <li>Optionally start BeanShell server (allows remote access to JMeter variables and methods) </li>
</ul>
<h3>Version 1.9.1</h3>
<p>TBA</p>
<h3>Version 1.9</h3>
<ul>
<li>Sample result log files can now be in CSV or XML format</li>
<li>New Event model for notification of iteration events during test plan run</li>
<li>New Javascript function for executing arbitrary javascript statements</li>
<li>Many GUI improvements</li>
<li>New Pre-processors and Post-processors replace Modifiers and Response-Based Modifiers. </li>
<li>Compatible with jdk1.3</li>
<li>JMeter functions are now fully recursive and universal (can use functions as parameters to functions)</li>
<li>Integrated help window now supports hypertext links</li>
<li>New Random Function</li>
<li>New XML Assertion</li>
<li>New LDAP Sampler (alpha code)</li>
<li>New Ant Task to run JMeter (in extras folder)</li>
<li>New Java Sampler test implementation (to assist developers)</li>
<li>More efficient use of memory, faster loading of .jmx files</li>
<li>New SOAP Sampler (alpha code)</li>
<li>New Median calculation in Graph Results visualizer</li>
<li>Default config element added for developer benefit</li>
<li>Various performance enhancements during test run</li>
<li>New Simple File recorder for minimal GUI overhead during test run</li>
<li>New Function: StringFromFile - grabs values from a file</li>
<li>New Function: CSVRead - grabs multiple values from a file</li>
<li>Functions now longer need to be encoded - special values should be escaped 
with "\" if they are literal values</li>
<li>New cut/copy/paste functionality</li>
<li>SSL testing should work with less user-fudging, and in non-gui mode</li>
<li>Mailer Model works in non-gui mode</li>
<li>New Througput Controller</li>
<li>New Module Controller</li>
<li>Tests can now be scheduled to run from a certain time till a certain time</li>
<li>Remote JMeter servers can be started from a non-gui client.  Also, in gui mode, all remote servers can be started with a single click</li>
<li>ThreadGroups can now be run either serially or in parallel (default)</li>
<li>New command line options to override properties</li>
<li>New Size Assertion</li>

</ul>

<h3>Version 1.8.1</h3>
<ul>
<li>Bug Fix Release.  Many bugs were fixed.</li>
<li>Removed redundant "Root" node from test tree.</li>
<li>Re-introduced Icons in test tree.</li>
<li>Some re-organization of code to improve build process.</li>
<li>View Results Tree has added option to view results as web document (still buggy at this point).</li>
<li>New Total line in Aggregate Listener (still buggy at this point).</li>
<li>Improvements to ability to change JMeter's Locale settings.</li>
<li>Improvements to SSL Manager.</li>
</ul>

<h3>Version 1.8</h3>
<ul>
<li>Improvement to Aggregate report's calculations.</li>
<li>Simplified application logging.</li>
<li>New Duration Assertion.</li>
<li>Fixed and improved Mailer Visualizer.</li>
<li>Improvements to HTTP Sampler's recovery of resources (sockets and file handles).</li>
<li>Improving JMeter's internal handling of test start/stop.</li>
<li>Fixing and adding options to behavior of Interleave and Random Controllers.</li>
<li>New Counter config element.</li>
<li>New User Parameters config element.</li>
<li>Improved performance of file opener.</li>
<li>Functions and other elements can access global variables.</li>
<li>Help system available within JMeter's GUI.</li>
<li>Test Elements can be disabled.</li>
<li>Language/Locale can be changed while running JMeter (mostly).</li>
<li>View Results Tree can be configured to record only errors.</li>
<li>Various bug fixes.</li>
</ul>

<h3>Version 1.7.3</h3>
<ul>
<li>New Functions that provide more ability to change requests dynamically during test runs.</li>
<li>New language translations in Japanese and German.</li>
<li>Removed annoying Log4J error messages.</li>
<li>Improved support for loading JMeter 1.7 version test plan files (.jmx files).</li>
<li>JMeter now supports proxy servers that require username/password authentication.</li>
<li>Dialog box indicating test stopping doesn't hang JMeter on problems with stopping test.</li>
<li>GUI can run multiple remote JMeter servers (fixes GUI bug that prevented this).</li>
<li>Dialog box to help created function calls in GUI.</li>
<li>New Keep-alive switch in HTTP Requests to indicate JMeter should or should not use Keep-Alive for sockets.</li>
<li>HTTP Post requests can have GET style arguments in Path field.  Proxy records them correctly now.</li>
<li>New User-defined test-wide static variables.</li>
<li>View Results Tree now displays more information, including name of request (matching the name
in the test tree) and full request and POST data.</li>
<li>Removed obsolete View Results Visualizer (use View Results Tree instead).</li>
<li>Performance enhancements.</li>
<li>Memory use enhancements.</li>
<li>Graph visualizer GUI improvements.</li>
<li>Updates and fixes to Mailer Visualizer.</li>
</ul>
 
<h3>Version 1.7.2</h3>
<ul>
<li>JMeter now notifies user when test has stopped running.</li>
<li>HTTP Proxy server records HTTP Requests with re-direct turned off.</li>
<li>HTTP Requests can be instructed to either follow redirects or ignore them.</li>
<li>Various GUI improvements.</li>
<li>New Random Controller.</li>
<li>New SOAP/XML-RPC Sampler.</li>
</ul>

<h3>Version 1.7.1</h3>
<ul>
<li>JMeter's architecture revamped for a more complete separation between GUI code and
test engine code.</li>
<li>Use of Avalon code to save test plans to XML as Configuration Objects</li>
<li>All listeners can save data to file and load same data at later date.</li>
</ul>

<h3>Version 1.7Beta</h3> 
<ul> 
    <li>Better XML support for special characters (Tushar Bhatia) </li> 
    <li>Non-GUI functioning  &amp; Non-GUI test plan execution  (Tushar Bhatia)</li> 
    <li>Removing Swing dependence from base JMeter classes</li> 
    <li>Internationalization (Takashi Okamoto)</li> 
    <li>AllTests bug fix (neth6@atozasia.com)</li> 
    <li>ClassFinder bug fix (neth6@atozasia.com)</li> 
    <li>New Loop Controller</li> 
    <li>Proxy Server records HTTP samples from browser 
        (and documented in the user manual)</li> <li>Multipart Form support</li> 
    <li>HTTP Header class for Header customization</li> 
    <li>Extracting HTTP Header information from responses (Jamie Davidson)</li> 
    <li>Mailer Visualizer re-added to JMeter</li> 
    <li>JMeter now url encodes parameter names and values</li> 
    <li>listeners no longer give exceptions if their gui's haven't been initialized</li> 
    <li>HTTPS and Authorization working together</li> 
    <li>New Http sampling that automatically parses HTML response 
        for images to download, and includes the downloading of these 
        images in total time for request (Neth neth6@atozasia.com) </li> 
    <li>HTTP responses from server can be parsed for links and forms, 
        and dynamic data can be extracted and added to test samples 
        at run-time (documented)</li>  
    <li>New Ramp-up feature (Jonathan O'Keefe)</li> 
    <li>New visualizers (Neth)</li> 
    <li>New Assertions for functional testing</li> 
</ul>  

<h3>Version 1.6.1</h3> 
<ul> 
    <li>Fixed saving and loading of test scripts (no more extra lines)</li> 
    <li>Can save and load special characters (such as &quot;&amp;&quot; and &quot;&lt;&quot;).</li> 
    <li>Can save and load timers and listeners.</li> 
    <li>Minor bug fix for cookies (if you cookie value 
        contained an &quot;=&quot;, then it broke).</li> 
    <li>URL's can sample ports other than 80, and can test HTTPS, 
        provided you have the necessary jars (JSSE)</li> 
</ul> 

<h3>Version 1.6 Alpha</h3> 
<ul> 
    <li>New UI</li> 
    <li>Separation of GUI and Logic code</li>
    <li>New Plug-in framework for new modules</li> 
    <li>Enhanced performance</li> 
    <li>Layering of test logic for greater flexibility</li> 
    <li>Added support for saving of test elements</li> 
    <li>Added support for distributed testing using a single client</li> 

</ul> 
<h3>Version 1.5.1</h3> 
<ul> 
    <li>Fixed bug that caused cookies not to be read if header name case not as expected.</li> 
    <li>Clone entries before sending to sampler - prevents relocations from messing up 
        information across threads</li> 
    <li>Minor bug fix to convenience dialog for adding paramters to test sample.  
        Bug prevented entries in dialog from appearing in test sample.</li> 
    <li>Added xerces.jar to distribution</li> 
    <li>Added junit.jar to distribution and created a few tests.</li> 
    <li>Started work on new framework.  New files in cvs, but do not effect program yet.</li> 
    <li>Fixed bug that prevent HTTPJMeterThread from delaying according to chosen timer.</li> 
</ul>  
<p> 
<h3>Version 1.5</h3> 
<ul>   
    <li>Abstracted out the concept of the Sampler, SamplerController, and TestSample.   
        A Sampler represents code that understands a protocol (such as HTTP, 
        or FTP, RMI,   SMTP, etc..).  It is the code that actually makes the 
        connection to whatever is   being tested.   A SamplerController 
        represents code that understands how to organize and run a group   
        of test samples.  It is what binds together a Sampler and its test 
        samples and runs them.   A TestSample represents code that understands 
        how to gather information from the   user about a particular test.  
        For a website, it would represent a URL and any   information to be sent 
        with the URL.</li>   
    <li>The UI has been updated to make entering test samples more convenient.</li>   
    <li>Thread groups have been added, allowing a user to setup multiple test to run   
        concurrently, and to allow sharing of test samples between those tests.</li>   
    <li>It is now possible to save and load test samples.</li>   
    <li>....and many more minor changes/improvements...</li> 
</ul> 
</p> 
<p> 
<b>Apache JMeter 1.4.1-dev</b> 
<ul>
   <li>Cleaned up URLSampler code after tons of patches for better readability. (SM)</li>
   <li>Made JMeter send a special &quot;user-agent&quot; identifier. (SM)</li>
   <li>Fixed problems with redirection not sending cookies and authentication info and removed
     a warning with jikes compilation. Thanks to Wesley Tanaka for the patches (SM)</li>
   <li>Fixed a bug in the URLSampler that caused to skip one URL when testing lists of URLs and
     a problem with Cookie handling. Thanks to Graham Johnson for the patches (SM)</li>
   <li>Fixed a problem with POST actions. Thanks to Stephen Schaub for the patch (SM)</li>
 </ul>
 </p>
 <p>
 <b>Apache JMeter 1.4</b> - Jul 11 1999
  <ul>
   <li>Fixed a problem with POST actions. Thanks to Brendan Burns for the patch (SM)</li>
   <li>Added close button to the About box for those window managers who don't provide it.
     Thanks to Jan-Henrik Haukeland for pointing it out. (SM)</li>
   <li>Added the simple Spline sample visualizer (JPN)</li> 
</ul> </p>
  <p><b>Apache JMeter 1.3</b> - Apr 16 1999
<ul>
   <li>Run the Garbage Collector and run finalization before starting to sampling to ensure
     same state every time (SM)</li>
   <li>Fixed some NullPointerExceptions here and there (SM)</li>
   <li>Added HTTP authentication capabilities (RL)</li>
   <li>Added windowed sample visualizer (SM)</li>
   <li>Fixed stupid bug for command line arguments. Thanks to Jorge Bracer for pointing this out (SM)</li> 
</ul> </p>
  <p><b>Apache JMeter 1.2</b> - Mar 17 1999
<ul>
   <li>Integrated cookie capabilities with JMeter (SM)</li>
   <li>Added the Cookie manager and Netscape file parser (SD)</li>
   <li>Fixed compilation error for JDK 1.1 (SD)</li> </ul> </p>  
<p> <b>Apache JMeter 1.1</b> - Feb 24 1999
<ul>
   <li>Created the opportunity to create URL aliasing from the properties file as well as the
     ability to associate aliases to URL sequences instead of single URLs (SM) Thanks to
     Simon Chatfield for the very nice suggestions
     and code examples.</li>
   <li>Removed the TextVisualizer and replaced it with the much more useful FileVisualizer (SM)</li>
   <li>Added the known bug list (SM)</li>
   <li>Removed the Java Apache logo (SM)</li>
   <li>Fixed a couple of typos (SM)</li>
   <li>Added UNIX makefile (SD)</li> </ul> </p> 
<p> <b>Apache JMeter 1.0.1</b> - Jan 25 1999
<ul>
   <li>Removed pending issues doc issues (SM)</li>
   <li>Fixed the unix script (SM)</li>
   <li>Added the possibility of running the JAR directly using &quot;java -jar
     ApacheJMeter.jar&quot; with Java 2 (SM)</li>
   <li>Some small updates: fixed Swing location after Java 2(tm) release, license update and
     small cleanups (SM)</li> 
</ul> </p> 
<p> <b>Apache JMeter 1.0</b> - Dec 15 1998
<ul>
   <li>Initial version. (SM)</li> 
</ul> </p> 
</section> 
</body> 
</document>
