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 2019/10/28 19:45:34 UTC
[jmeter] branch master updated: Fix wrong parsing of parameters
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 2e33d0f Fix wrong parsing of parameters
2e33d0f is described below
commit 2e33d0fc5fd71bc6ef74d72e55a124cb7ff28d88
Author: pmouawad <p....@ubik-ingenierie.com>
AuthorDate: Mon Oct 28 20:45:01 2019 +0100
Fix wrong parsing of parameters
---
.../protocol/http/gui/action/ParseCurlCommandAction.java | 7 ++++++-
.../jmeter/gui/action/ParseCurlCommandActionTest.java | 14 ++++++++++++++
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/ParseCurlCommandAction.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/ParseCurlCommandAction.java
index 23f3e8b..6f9100a 100644
--- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/ParseCurlCommandAction.java
+++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/ParseCurlCommandAction.java
@@ -51,6 +51,7 @@ import javax.swing.SwingUtilities;
import javax.swing.tree.TreePath;
import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.config.KeystoreConfig;
import org.apache.jmeter.control.Controller;
@@ -286,7 +287,11 @@ public class ParseCurlCommandAction extends AbstractAction implements MenuCreato
if (url.getPort() != -1) {
httpSampler.setPort(url.getPort());
}
- httpSampler.setPath(url.getPath());
+ String path = url.getPath();
+ if (StringUtils.isNotEmpty(url.getQuery())) {
+ path += "?" + url.getQuery();
+ }
+ httpSampler.setPath(path);
httpSampler.setDomain(url.getHost());
httpSampler.setUseKeepAlive(request.isKeepAlive());
httpSampler.setFollowRedirects(true);
diff --git a/src/protocol/http/src/test/java/org/apache/jmeter/gui/action/ParseCurlCommandActionTest.java b/src/protocol/http/src/test/java/org/apache/jmeter/gui/action/ParseCurlCommandActionTest.java
index a2d4652..5c46611 100644
--- a/src/protocol/http/src/test/java/org/apache/jmeter/gui/action/ParseCurlCommandActionTest.java
+++ b/src/protocol/http/src/test/java/org/apache/jmeter/gui/action/ParseCurlCommandActionTest.java
@@ -27,6 +27,7 @@ import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -41,6 +42,7 @@ import org.apache.jmeter.protocol.http.control.AuthManager.Mechanism;
import org.apache.jmeter.protocol.http.control.Authorization;
import org.apache.jmeter.protocol.http.control.CookieManager;
import org.apache.jmeter.protocol.http.control.DNSCacheManager;
+import org.apache.jmeter.protocol.http.control.Header;
import org.apache.jmeter.protocol.http.control.HeaderManager;
import org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui;
import org.apache.jmeter.protocol.http.curl.BasicCurlParser;
@@ -251,6 +253,18 @@ public class ParseCurlCommandActionTest {
httpSampler = (HTTPSamplerProxy) method.invoke(p, objs);
assertEquals("c", httpSampler.getArguments().getArgument(0).getName());
assertEquals("@test.txt;type=text/foo", httpSampler.getArguments().getArgument(0).getValue());
+
+ // test form data in httpsampler
+ request = basicCurlParser.parse("curl -X PUT \"https://www.example.com:123/12345?param1=value1¶m2=value2\" -H \"accept: */*\" -H \"X-XSRF-TOKEN: 1234\"");
+ objs = new Object[]{request, ""};
+ httpSampler = (HTTPSamplerProxy) method.invoke(p, objs);
+ assertEquals(new URL("https://www.example.com:123/12345?param1=value1¶m2=value2"), httpSampler.getUrl());
+ assertEquals(123, httpSampler.getPort());
+ assertEquals("www.example.com", httpSampler.getDomain());
+ assertEquals("/12345?param1=value1¶m2=value2", httpSampler.getPath());
+ assertEquals("PUT", httpSampler.getMethod());
+ assertEquals(new Header("accept", "*/*"), httpSampler.getHeaderManager().getHeader(0));
+ assertEquals(new Header("X-XSRF-TOKEN", "1234"), httpSampler.getHeaderManager().getHeader(1));
}
@Test