You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2020/12/17 20:30:47 UTC
[jmeter] branch master updated: Bug 65004 - HTTP(S) Test Script
recorder computes wrong HTTP Request breaking the application
This is an automated email from the ASF dual-hosted git repository.
pmouawad pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git
The following commit(s) were added to refs/heads/master by this push:
new acca046 Bug 65004 - HTTP(S) Test Script recorder computes wrong HTTP Request breaking the application
acca046 is described below
commit acca046473657083e6b139402652d4b78c5229cb
Author: pmouawad <p....@ubik-ingenierie.com>
AuthorDate: Thu Dec 17 21:27:29 2020 +0100
Bug 65004 - HTTP(S) Test Script recorder computes wrong HTTP Request
breaking the application
---
.../protocol/http/proxy/DefaultSamplerCreator.java | 30 +++++++++++++++++++---
xdocs/changes.xml | 1 +
2 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/DefaultSamplerCreator.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/DefaultSamplerCreator.java
index f91f01a..13c6503 100644
--- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/DefaultSamplerCreator.java
+++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/DefaultSamplerCreator.java
@@ -55,6 +55,9 @@ import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
/**
* Default implementation that handles classical HTTP textual + Multipart requests
*/
@@ -69,6 +72,7 @@ public class DefaultSamplerCreator extends AbstractSamplerCreator {
private static final int SAMPLER_NAME_NAMING_MODE_SUFFIX = 2; // $NON-NLS-1$
private static final int SAMPLER_NAME_NAMING_MODE_FORMATTER = 3; // $NON_NLS-1$
+ private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
/**
*
*/
@@ -248,7 +252,8 @@ public class DefaultSamplerCreator extends AbstractSamplerCreator {
// used when postData is pure xml (eg. an xml-rpc call) or for PUT
} else if (postData.trim().startsWith("<?")
|| HTTPConstants.PUT.equals(sampler.getMethod())
- || isPotentialXml(postData)) {
+ || isPotentialXml(postData)
+ || isPotentialJson(postData)) {
sampler.addNonEncodedArgument("", postData, "");
} else if (contentType == null ||
(contentType.startsWith(HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED) &&
@@ -277,11 +282,28 @@ public class DefaultSamplerCreator extends AbstractSamplerCreator {
}
/**
+ * Tries parsing to see if content is JSON
+ * @param postData String
+ * @return boolean
+ */
+ public static boolean isPotentialJson(final String postData) throws IOException {
+ boolean valid = true;
+ try{
+ OBJECT_MAPPER.readTree(postData);
+ } catch(JsonProcessingException e){
+ valid = false;
+ }
+ log.debug("Is Post data {} JSON ? {}", postData, valid);
+ return valid;
+ }
+
+ /**
* Tries parsing to see if content is xml
* @param postData String
* @return boolean
*/
private static boolean isPotentialXml(String postData) {
+ boolean isXml;
try {
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
@@ -292,10 +314,12 @@ public class DefaultSamplerCreator extends AbstractSamplerCreator {
xmlReader.setContentHandler(detectionHandler);
xmlReader.setErrorHandler(detectionHandler);
xmlReader.parse(new InputSource(new StringReader(postData)));
- return !detectionHandler.isErrorDetected();
+ isXml = !detectionHandler.isErrorDetected();
} catch (ParserConfigurationException | SAXException | IOException e) {
- return false;
+ isXml = false;
}
+ log.debug("Is Post data {} XML ? {}", postData, isXml);
+ return isXml;
}
private static final class ErrorDetectionHandler extends DefaultHandler {
diff --git a/xdocs/changes.xml b/xdocs/changes.xml
index f77317a..6480a77 100644
--- a/xdocs/changes.xml
+++ b/xdocs/changes.xml
@@ -137,6 +137,7 @@ Summary
<ul>
<li><bug>64955</bug>Keystore password not reset on reload</li>
<li><bug>65002</bug>HTTP(S) Test Script recorder creates an invalid Basic authentication URL. Contributed by Ubik Load Pack (https://ubikloadpack.com)</li>
+ <li><bug>65004</bug>HTTP(S) Test Script recorder computes wrong HTTP Request breaking the application. Contributed by Ubik Load Pack (https://ubikloadpack.com)</li>
</ul>
<h3>Other Samplers</h3>