Author: sebb
Date: Tue Apr 7 17:54:16 2009
New Revision: 762874
URL: http://svn.apache.org/viewvc?rev=762874&view=rev
Log:
Bug 46977 - JMeter does not handle HTTP headers not delimited by whitespace
Modified:
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java
jakarta/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/proxy/TestHttpRequestHdr.java
jakarta/jmeter/trunk/xdocs/changes.xml
Modified:
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java?rev=762874&r1=762873&r2=762874&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java
(original)
+++
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java
Tue Apr 7 17:54:16 2009
@@ -218,16 +218,12 @@
* If name = "content-length", then return value as int, else return 0
*/
private int parseLine(String nextLine) {
- StringTokenizer tz;
- tz = new StringTokenizer(nextLine);
- String token = getToken(tz);
- // look for termination of HTTP command
- if (0 == token.length()) {
- return 0;
- }
- String trimmed = token.trim();
- String name = trimmed.substring(0, trimmed.length() - 1);// drop ':'
- String value = getRemainder(tz);
+ int colon = nextLine.indexOf(':');
+ if (colon <= 0){
+ return 0; // Nothing to do
+ }
+ String name = nextLine.substring(0, colon).trim();
+ String value = nextLine.substring(colon+1).trim();
headers.put(name.toLowerCase(java.util.Locale.ENGLISH), new
Header(name, value));
if (name.equalsIgnoreCase(CONTENT_LENGTH)) {
return Integer.parseInt(value);
Modified:
jakarta/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/proxy/TestHttpRequestHdr.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/proxy/TestHttpRequestHdr.java?rev=762874&r1=762873&r2=762874&view=diff
==============================================================================
---
jakarta/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/proxy/TestHttpRequestHdr.java
(original)
+++
jakarta/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/proxy/TestHttpRequestHdr.java
Tue Apr 7 17:54:16 2009
@@ -20,6 +20,7 @@
import java.io.ByteArrayInputStream;
import java.io.IOException;
+import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Collections;
import java.util.HashMap;
@@ -27,6 +28,8 @@
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.junit.JMeterTestCase;
+import org.apache.jmeter.protocol.http.control.Header;
+import org.apache.jmeter.protocol.http.control.HeaderManager;
import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase;
import org.apache.jmeter.protocol.http.util.HTTPArgument;
@@ -443,6 +446,34 @@
checkArgument((HTTPArgument)arguments.getArgument(1), "description",
descriptionValue, descriptionValue, contentEncoding, false);
}
+ public void testParse1() throws Exception {// no space after :
+ HttpRequestHdr req = new HttpRequestHdr();
+ ByteArrayInputStream bis = null;
+ bis = new ByteArrayInputStream("GET xxx HTTP/1.0\r\nname:value
\r\n".getBytes("ISO-8859-1"));
+ req.parse(bis);
+ bis.close();
+ HeaderManager mgr = req.getHeaderManager();
+ Header header;
+ mgr.getHeaders();
+ header = mgr.getHeader(0);
+ assertEquals("name",header.getName());
+ assertEquals("value",header.getValue());
+ }
+
+ public void testParse2() throws Exception {// spaces after :
+ HttpRequestHdr req = new HttpRequestHdr();
+ ByteArrayInputStream bis = null;
+ bis = new ByteArrayInputStream("GET xxx HTTP/1.0\r\nname:
value \r\n".getBytes("ISO-8859-1"));
+ req.parse(bis);
+ bis.close();
+ HeaderManager mgr = req.getHeaderManager();
+ Header header;
+ mgr.getHeaders();
+ header = mgr.getHeader(0);
+ assertEquals("name",header.getName());
+ assertEquals("value",header.getValue());
+ }
+
public void testPostMultipartFileUpload() throws Exception {
String url = "http://localhost/matrix.html";
// A HTTP POST request, multipart/form-data, simple values,
Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=762874&r1=762873&r2=762874&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Tue Apr 7 17:54:16 2009
@@ -198,6 +198,7 @@
JMeter now removes extraneous leading "../" segments (as do many browsers)
</li>
<li>Bug 46844 - "Library" label in test plan are not I18N</li>
+<li>Bug 46977 - JMeter does not handle HTTP headers not delimited by
whitespace</li>
</ul>
<h3>Improvements</h3>
@@ -235,6 +236,7 @@
<li>Added locales.add property to allow for new Locales</li>
<li>Bug 40045 - Allow Results monitor to select a specific connector</li>
<li>Bug 46636 - rmi ports</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>
</ul>
<h3>Non-functional changes</h3>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]