<?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.
-->
<!DOCTYPE document
[
<!ENTITY hellip   "&#x02026;" >
<!ENTITY vellip   "&#x022EE;" >
]>
<document>   
<properties>     
    <author email="dev AT jmeter.apache.org">JMeter developers</author>     
    <title>Changes</title>   
</properties> 
<body> 
<section name="Changes"> 
<style type="text/css"><!--
h2 { color: #960000; }
h3 { color: #960000; }
--></style>
<note>
<b>This page details the changes made in the current version only.</b>
<br></br>
Earlier changes are detailed in the <a href="changes_history.html">History of Previous Changes</a>.
</note>


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

<h1>Version 3.1</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>Sample category</ch_category>
<ch_title>Sample title</ch_title>
<!-- <figure width="846" height="613" image="changes/3.0/view_results_tree_search_feature.png"></figure> -->

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

<ch_section>Incompatible changes</ch_section>

<ul>
    <li>A cache for CSS Parsing of URLs has been introduced in this version, it is enabled by default. It is controlled by property <code>css.parser.cache.size</code>. It can be disabled by setting its value to 0. See <bugzilla>59885</bugzilla></li>
</ul>

<h3>Deprecated and removed elements</h3>
<ul>
    <li>Sample removed element</li>
</ul>

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

<ch_section>Improvements</ch_section>

<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
    <li><bug>59882</bug>Reduce memory allocations for better throughput. Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com) through <pr>217</pr></li>
    <li><bug>59885</bug>Optimize css parsing for embedded resources download by introducing a cache. Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com) through <pr>219</pr></li>
</ul>

<h3>Other samplers</h3>
<ul>
    <li><pr>211</pr>Differentiate the timing for JDBC Sampler. Use latency and connect time.
    Contributed by Thomas Peyrard (thomas.peyrard at murex.com)</li>
</ul>

<h3>Controllers</h3>
<ul>
    <li><bug>59351</bug>Improve log/error/message for IncludeController. Partly contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)</li>
</ul>

<h3>Listeners</h3>
<ul>
    <li><bug>59953</bug>GraphiteBackendListener : Add Average metric. Partly contributed by Maxime Chassagneux (maxime.chassagneux at gmail.com)</li>
    <li><bug>59975</bug>View Results Tree : Text renderer annoyingly scrolls down when content is bulky. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
    <li><bug>59609</bug>Format extracted JSON Objects in JSON Post Processor correctly as JSON.</li>
    <li><bug>59845</bug>Log messages about JSON Path mismatches at <code>debug</code> level instead of <code>error</code>.</li>
    <li><pr>212</pr>Allow multiple selection and delete in HTTP Authorization Manager. Based on a patch by Benoit Wiart (b.wiart at ubik-ingenierie.com)</li>
    <li><bug>59816</bug><pr>213</pr>Allow multiple selection and delete in HTTP Header Manager.
    Based on a patch by Benoit Wiart (b.wiart at ubik-ingenierie.com)</li>
    <li><bug>59967</bug>CSS/JQuery Extractor : Allow empty default value. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
    <li><bug>59974</bug>Response Assertion : Add button "Add from clipboard". Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>

<h3>Functions</h3>
<ul>
    <li><bug>59963</bug>New Function <code>__RandomFromMultipleVars</code>: Ability to compute a random value from values of 1 or more variables. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
    <li><bug>59991</bug>New function __groovy to evaluate Groovy Script. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>

<h3>I18N</h3>
<ul>
    <li><pr>214</pr>Add spanish translation for delayed starting of threads. Contributed by Asier Lostalé (asier.lostale at openbravo.com).</li>
</ul>

<h3>General</h3>
<ul>
    <li><bug>59803</bug>Use <code>isValid()</code> method from jdbc driver, if no validationQuery
    is given in JDBC Connection Configuration.</li>
    <li><bug>59918</bug>Ant generated HTML report is broken (extras folder)</li>
    <li><bug>57493</bug>Create a documentation page for properties</li>
    <li><bug>59924</bug>The log level of XXX package is set to DEBUG if <code>log_level.XXXX</code> property value contains spaces, same for __log function</li>
    <li><bug>59777</bug>Extract slf4j binding into its own jar and make it a jmeter lib</li>
    <li><bug>59954</bug>Web Report/Dashboard : Add average metric</li>
    <li><bug>59956</bug>Web Report / Dashboard : Add ability to generate a graph for a range of data</li>
</ul>

<ch_section>Non-functional changes</ch_section>
<ul>
    <li>Updated to jsoup-1.9.2 (from 1.8.3)</li>
    <li>Updated to ph-css 4.1.4 (from 4.1.4)</li>
    <li>Updated to tika-core and tika-parsers 1.13 (from 1.12)</li>
    <li><pr>215</pr>Reduce duplicated code by using the newly added method <code>GuiUtils#cancelEditing</code>.
    Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com)</li>
    <li><pr>218</pr>Misc cleanup. Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com)</li>
    <li><pr>216</pr>Re-use pattern when possible. Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com)</li>
</ul>
 
 <!-- =================== Bug fixes =================== -->

<ch_section>Bug fixes</ch_section>

<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
    <li><bug>58888</bug>HTTP(S) Test Script Recorder (ProxyControl) does not add TestElement's returned by SamplerCreator createChildren ()</li>
    <li><bug>59902</bug>Https handshake failure when setting <code>httpclient.socket.https.cps</code> property</li>
    <li><bug>59973</bug>XML version in JTL files is changed into 1.1 to match serializer output. Implemented by Andrey Pokhilko (andrey at blazemeter.com) and contributed by BlazeMeter Ltd.</li>
 </ul>

<h3>Other Samplers</h3>
<ul>
    <li><bug>59113</bug>JDBC Connection Configuration : Transaction Isolation level not correctly set if constant used instead of numerical</li>
</ul>

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

<h3>Listeners</h3>
<ul>
    <li><bug>59712</bug>Display original query in RequestView when decoding fails. Based on a patch by
         Teemu Vesala (teemu.vesala at qentinel.com)</li>
</ul>

<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
    <li><bug>59964</bug>JSR223 Test Element : Cache compiled script if available is not correctly reset. 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><bug>59400</bug>Get rid of UnmarshalException on stopping when <code>-X</code> option is used.</li>
    <li><bug>59607</bug>JMeter crashes when reading large test plan (greater than 2g). Based on fix by Felix Draxler (felix.draxler at sap.com)</li>
    <li><bug>59621</bug>Error count in report dashboard is one off.</li>
    <li><bug>59657</bug>Only set font in JSyntaxTextArea, when property <code>jsyntaxtextarea.font.family</code> is set.</li>
    <li><bug>59720</bug>Batch test file comparisons fail on Windows as XML files are generated as EOL=LF</li>
    <li>Code cleanups. Patches by Graham Russell (graham at ham1.co.uk)</li>
    <li><bug>59722</bug>Use StandardCharsets to reduce the possibility of misspelling Charset names.</li>
    <li><bug>59723</bug>Use jmeter.properties for testing whenever possible</li>
    <li><bug>59726</bug>Unit test to check that CSV header text and sample format don't change unexpectedly</li>
    <li><bug>59889</bug>Change encoding to UTF-8 in reports for dashboard.</li>
</ul>

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

<ch_section>Thanks</ch_section>
<p>We thank all contributors mentioned in bug and improvement sections above:
</p>
<ul>
<li>Felix Draxler (felix.draxler at sap.com)</li>
<li>Antonio Gomes Rodrigues (ra0077 at gmail.com)</li>
<li>Graham Russell (graham at ham1.co.uk)</li>
<li>Teemu Vesala (teemu.vesala at qentinel.com)</li>
<li>Asier Lostalé (asier.lostale at openbravo.com)</li>
<li>Thomas Peyrard (thomas.peyrard at murex.com)</li>
<li>Benoit Wiart (b.wiart at ubik-ingenierie.com)</li>
<li>Maxime Chassagneux (maxime.chassagneux at gmail.com)</li>
<li><a href="http://ubikloadpack.com">Ubik Load Pack</a></li>
</ul>
<p>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:</p>
<ul>
</ul>
<p>
Apologies if we have omitted anyone else.
 </p>
 <!--  =================== Known bugs or issues related to JAVA Bugs =================== -->
 
<ch_section>Known problems and workarounds</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 <code>0</code> (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:
<source>
 [java] WARNING: Couldn't flush user prefs:
 java.util.prefs.BackingStoreException:
 java.lang.IllegalArgumentException: Not supported: indent-number
</source>
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:
<source>
java.util.prefs.WindowsPreferences 
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(&hellip;) returned error code 5.
</source>
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 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.java.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:
<source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source>
 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 <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case.
<br></br>
This property is in this file:
<source>JAVA_HOME/jre/lib/security/java.security</source>
See  <bugzilla>56357</bugzilla> for details.
</li>

<li>
Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers.
This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a> 
The fix is to use JDK7_u79, JDK8_u45 or later.
</li>

<li>
View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>.
This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes.
See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a> 
The fix is to use JDK9 b65 or later.
</li>

<li>
JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with JAVA 7 on Mac OSX.
This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a> 
The fix is to use JDK 8 b132 or later.
</li>
</ul>
 
</section> 
</body> 
</document>
