You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2007/03/23 20:56:44 UTC

svn commit: r521883 - in /jakarta/jmeter/branches/rel-2-2: src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java xdocs/changes.xml

Author: sebb
Date: Fri Mar 23 12:56:43 2007
New Revision: 521883

URL: http://svn.apache.org/viewvc?view=rev&rev=521883
Log:
Bug 41928 - Make all request headers sent by HTTP Request sampler appear in sample result

Modified:
    jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java
    jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java
    jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml

Modified: jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java?view=diff&rev=521883&r1=521882&r2=521883
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java (original)
+++ jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java Fri Mar 23 12:56:43 2007
@@ -29,6 +29,9 @@
 import java.net.URL;
 import java.net.URLConnection;
 
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
 import java.util.zip.GZIPInputStream;
 
 import org.apache.jmeter.protocol.http.control.AuthManager;
@@ -179,25 +182,27 @@
 		}
 
 		conn.setRequestMethod(method);
-		String hdrs = setConnectionHeaders(conn, u, getHeaderManager());
+		setConnectionHeaders(conn, u, getHeaderManager());
 		String cookies = setConnectionCookie(conn, u, getCookieManager());
 
-        if (res != null) {
-            res.setURL(u);
-            res.setHTTPMethod(method);
-            res.setRequestHeaders(hdrs);
-            res.setCookies(cookies);
-            if (method.equals(POST)) {
-                res.setQueryString(getQueryString());
-            }
-        }
+        setConnectionAuthorization(conn, u, getAuthManager());
 
-		setConnectionAuthorization(conn, u, getAuthManager());
 		if (method.equals(POST)) {
+            if(res != null) {
+                res.setQueryString(getQueryString());
+            }
 			setPostHeaders(conn);
 		} else if (method.equals(PUT)) {
             setPutHeaders(conn);
         }
+        
+        if (res != null) {
+            res.setURL(u);
+            res.setHTTPMethod(method);
+            res.setRequestHeaders(getConnectionHeaders(conn));
+            res.setCookies(cookies);
+        }
+        
 		return conn;
 	}
 
@@ -338,10 +343,9 @@
 	 * @param headerManager
 	 *            the <code>HeaderManager</code> containing all the cookies
 	 *            for this <code>UrlConfig</code>
-	 * @return the headers as a string
 	 */
-	private String setConnectionHeaders(HttpURLConnection conn, URL u, HeaderManager headerManager) {
-		StringBuffer hdrs = new StringBuffer(100);
+	private void setConnectionHeaders(HttpURLConnection conn, URL u, HeaderManager headerManager) {
+        // Set all the headers from the HeaderManager
 		if (headerManager != null) {
 			CollectionProperty headers = headerManager.getHeaders();
 			if (headers != null) {
@@ -351,15 +355,38 @@
 					String n = header.getName();
 					String v = header.getValue();
 					conn.setRequestProperty(n, v);
-					hdrs.append(n);
-					hdrs.append(": "); // $NON-NLS-1$
-					hdrs.append(v);
-					hdrs.append("\n"); // $NON-NLS-1$
 				}
 			}
 		}
-		return hdrs.toString();
 	}
+    
+    /**
+     * Get all the headers for the <code>HttpURLConnection</code> passed in
+     * 
+     * @param conn
+     *            <code>HttpUrlConnection</code> which represents the URL
+     *            request
+     * @return the headers as a string
+     */
+    private String getConnectionHeaders(HttpURLConnection conn) {
+        // Get all the request properties, which are the headers set on the connection
+        StringBuffer hdrs = new StringBuffer(100);
+        Map requestHeaders = conn.getRequestProperties();
+        Set headerFields = requestHeaders.keySet();
+        for(Iterator i = headerFields.iterator(); i.hasNext();) {
+            String headerKey = (String)i.next();
+            // Exclude the COOKIE header, since cookie is reported separately in the sample
+            if(!HEADER_COOKIE.equalsIgnoreCase(headerKey)) {            
+                String headerValue = conn.getRequestProperty(headerKey);
+                hdrs.append(headerKey);
+                hdrs.append(": "); // $NON-NLS-1$
+                hdrs.append(headerValue);
+                hdrs.append("\n"); // $NON-NLS-1$
+            }
+        }
+
+        return hdrs.toString();
+    }
 
 	/**
 	 * Extracts all the required authorization for that particular URL request

Modified: jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java?view=diff&rev=521883&r1=521882&r2=521883
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java (original)
+++ jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java Fri Mar 23 12:56:43 2007
@@ -361,17 +361,16 @@
 			httpMethod.setRequestHeader(HEADER_CONNECTION, CONNECTION_CLOSE);
 		}
 
-		String hdrs = setConnectionHeaders(httpMethod, u, getHeaderManager());
+		setConnectionHeaders(httpMethod, u, getHeaderManager());
 		String cookies = setConnectionCookie(httpMethod, u, getCookieManager());
 
-		if (res != null) {
+        setConnectionAuthorization(httpClient, u, getAuthManager());
+
+        if (res != null) {
             res.setURL(u);
-            res.setRequestHeaders(hdrs);
             res.setCookies(cookies);
 		}
 
-		setConnectionAuthorization(httpClient, u, getAuthManager());
-
 		return httpClient;
 	}
 
@@ -434,10 +433,9 @@
 	 * @param headerManager
 	 *            the <code>HeaderManager</code> containing all the cookies
 	 *            for this <code>UrlConfig</code>
-	 * @return the headers as a string
 	 */
-	String setConnectionHeaders(HttpMethod method, URL u, HeaderManager headerManager) {
-		StringBuffer hdrs = new StringBuffer(100);
+	private void setConnectionHeaders(HttpMethod method, URL u, HeaderManager headerManager) {
+        // Set all the headers from the HeaderManager
 		if (headerManager != null) {
 			CollectionProperty headers = headerManager.getHeaders();
 			if (headers != null) {
@@ -453,16 +451,36 @@
 					if (! HEADER_CONTENT_LENGTH.equalsIgnoreCase(n)){
 						String v = header.getValue();
 						method.addRequestHeader(n, v);
-						hdrs.append(n);
-						hdrs.append(": "); // $NON-NLS-1$
-						hdrs.append(v);
-						hdrs.append("\n"); // $NON-NLS-1$
 					}
 				}
 			}
 		}
-		return hdrs.toString();
 	}
+    
+    /**
+     * Get all the request headers for the <code>HttpMethod</code>
+     * 
+     * @param method
+     *            <code>HttpMethod</code> which represents the request
+     * @return the headers as a string
+     */
+    private String getConnectionHeaders(HttpMethod method) {
+        // Get all the request headers
+        StringBuffer hdrs = new StringBuffer(100);        
+        Header[] requestHeaders = method.getRequestHeaders();
+        for(int i = 0; i < requestHeaders.length; i++) {
+            // Exclude the COOKIE header, since cookie is reported separately in the sample
+            if(!HEADER_COOKIE.equalsIgnoreCase(requestHeaders[i].getName())) {
+                hdrs.append(requestHeaders[i].getName());
+                hdrs.append(": "); // $NON-NLS-1$
+                hdrs.append(requestHeaders[i].getValue());
+                hdrs.append("\n"); // $NON-NLS-1$
+            }
+        }
+        
+        return hdrs.toString();
+    }
+    
 
 	/**
 	 * Extracts all the required authorization for that particular URL request
@@ -573,6 +591,8 @@
 			} else if (method.equals(PUT)) {
                 setPutHeaders((PutMethod) httpMethod);
             }
+
+            res.setRequestHeaders(getConnectionHeaders(httpMethod));
 
 			int statusCode = client.executeMethod(httpMethod);
 

Modified: jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml?view=diff&rev=521883&r1=521882&r2=521883
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml (original)
+++ jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml Fri Mar 23 12:56:43 2007
@@ -193,6 +193,7 @@
 <li>Bug 41903 - ViewResultsFullVisualizer : status column looks bad when you do copy and paste</li>
 <li>Bug 41837 - Parameter value corruption in proxy</li>
 <li>Bug 41905 - Can't cut/paste/select Header Manager fields in Java 1.6</li>
+<li>Bug 41928 - Make all request headers sent by HTTP Request sampler appear in sample result</li>
 </ul>
 
 <h3>Version 2.2</h3>



---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org