mstover1 02/05/13 05:19:14
Modified: src_1/org/apache/jmeter/protocol/http/control
HeaderManager.java
src_1/org/apache/jmeter/protocol/http/proxy
HttpRequestHdr.java Proxy.java
src_1/org/apache/jmeter/protocol/http/sampler
HTTPSampler.java
src_1/org/apache/jmeter/samplers SampleResult.java
src_1/org/apache/jmeter/save SaveService.java
Log:
proxy server work in new sources
Revision Changes Path
1.6 +2 -2
jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/control/HeaderManager.java
Index: HeaderManager.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/control/HeaderManager.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- HeaderManager.java 2 May 2002 22:54:58 -0000 1.5
+++ HeaderManager.java 13 May 2002 12:19:14 -0000 1.6
@@ -75,7 +75,7 @@
* pass HTTP headers along with a request.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
- * @version $Revision: 1.5 $ $Date: 2002/05/02 22:54:58 $
+ * @version $Revision: 1.6 $ $Date: 2002/05/13 12:19:14 $
*/
public class HeaderManager extends AbstractTestElement implements
Serializable
@@ -271,7 +271,7 @@
if (header == null) {
continue;
}
- if (header.getName().equals(name)) {
+ if (header.getName().equalsIgnoreCase(name)) {
removeIndices.addElement(new Integer(i));
}
}
1.9 +7 -3
jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java
Index: HttpRequestHdr.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- HttpRequestHdr.java 29 Apr 2002 22:11:57 -0000 1.8
+++ HttpRequestHdr.java 13 May 2002 12:19:14 -0000 1.9
@@ -11,9 +11,11 @@
import org.apache.jmeter.samplers.Entry;
import org.apache.jmeter.protocol.http.config.*;
import org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui;
+import org.apache.jmeter.protocol.http.gui.HeaderPanel;
import org.apache.jmeter.protocol.http.sampler.*;
import org.apache.jmeter.protocol.http.control.HeaderManager;
import org.apache.jmeter.protocol.http.control.Header;
+import org.apache.jmeter.testelement.TestElement;
//
// Class: HttpRequestHdr
@@ -24,8 +26,8 @@
* !ToDo (Class description)
*
*@author $Author: mstover1 $
- *@created $Date: 2002/04/29 22:11:57 $
- *@version $Revision: 1.8 $
+ *@created $Date: 2002/05/13 12:19:14 $
+ *@version $Revision: 1.9 $
***************************************/
public class HttpRequestHdr
{
@@ -142,13 +144,15 @@
while(keys.hasNext())
{
String key = (String)keys.next();
- if(!key.equalsIgnoreCase("cookie") &&
!key.equalsIgnoreCase("content-length"))
+ if(!key.equalsIgnoreCase("proxy-connection") &&
!key.equalsIgnoreCase("content-length"))
{
Header h = new Header(key,(String)headers.get(key));
manager.add(h);
}
}
manager.setName("Browser-derived headers");
+
manager.setProperty(TestElement.TEST_CLASS,HeaderManager.class.getName());
+ manager.setProperty(TestElement.GUI_CLASS,HeaderPanel.class.getName());
return manager;
}
1.6 +12 -26
jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/proxy/Proxy.java
Index: Proxy.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/proxy/Proxy.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Proxy.java 28 Apr 2002 21:40:53 -0000 1.5
+++ Proxy.java 13 May 2002 12:19:14 -0000 1.6
@@ -63,6 +63,7 @@
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.protocol.http.sampler.HTTPSampler;
import org.apache.jmeter.testelement.TestElement;
+import org.apache.jmeter.protocol.http.control.HeaderManager;
//
// Class: Proxy
// Abstract: Thread to handle one client request. get the requested
@@ -138,16 +139,16 @@
boolean TakenFromCache = false;
boolean isCachable = false;
try {
- byte[] clientRequest =
- request.parse(new BufferedInputStream(
+ byte[] clientRequest = request.parse(new BufferedInputStream(
ClientSocket.getInputStream()));
HTTPSampler sampler = request.getSampler();
- writeToClient(
- sampler.getDomain(),
- sampler.getPort(),
- new BufferedInputStream(new
ByteArrayInputStream(clientRequest)),
+ HeaderManager headers = request.getHeaderManager();
+ sampler.setHeaderManager(headers);
+ byte[] serverResponse = sampler.sample().getResponseData();
+ writeToClient(serverResponse,
new
BufferedOutputStream(ClientSocket.getOutputStream()));
- target.deliverSampler(sampler,new
TestElement[]{request.getHeaderManager()});
+ //headers.removeHeaderNamed("cookie");
+ target.deliverSampler(sampler,new TestElement[]{headers});
} catch (UnknownHostException uhe) {
System.out.println("Server Not Found.");
try {
@@ -234,34 +235,19 @@
} catch (Exception e) {}
}
private void writeToClient(
- String server,
- int serverPort,
- InputStream in,
+ byte[] inBytes,
OutputStream out)
throws IOException {
- BufferedInputStream serverIn = null;
- BufferedOutputStream serverOut = null;
try {
- int x = 0;
- Socket toServer = new Socket(server, serverPort);
- serverOut = new
BufferedOutputStream(toServer.getOutputStream());
- serverIn = new BufferedInputStream(toServer.getInputStream());
- while ((x = in.read()) != -1) {
- serverOut.write(x);
- }
- serverOut.flush();
- while ((x = serverIn.read()) != -1) {
- out.write(x);
- }
+
+ out.write(inBytes);
out.flush();
+ System.out.println("Done writing to client");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
- in.close();
out.close();
- serverIn.close();
- serverOut.close();
} catch (Exception ex) {}
}
}
1.7 +60 -28
jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java
Index: HTTPSampler.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- HTTPSampler.java 29 Apr 2002 17:08:11 -0000 1.6
+++ HTTPSampler.java 13 May 2002 12:19:14 -0000 1.7
@@ -53,10 +53,7 @@
* <http://www.apache.org/>.
*/
package org.apache.jmeter.protocol.http.sampler;
-import java.io.BufferedInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.PrintWriter;
+import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
@@ -83,8 +80,8 @@
* HTTP requests, including cookies and authentication.
*
*@author Michael Stover
- *@created $Date: 2002/04/29 17:08:11 $
- *@version $Revision: 1.6 $
+ *@created $Date: 2002/05/13 12:19:14 $
+ *@version $Revision: 1.7 $
***************************************/
public class HTTPSampler extends AbstractSampler
{
@@ -432,11 +429,13 @@
BufferedInputStream in = new
BufferedInputStream(conn.getInputStream());
java.io.ByteArrayOutputStream w = new ByteArrayOutputStream();
int x = 0;
- while((x = in.read(buffer)) != -1)
+ while((x = in.read(buffer)) > -1)
{
w.write(buffer, 0, x);
}
in.close();
+ w.flush();
+ w.close();
return w.toByteArray();
}
@@ -447,8 +446,15 @@
*@param conn connection from which the headers are read
*@param res where the headers read are stored
***************************************/
- protected void getResponseHeaders(HttpURLConnection conn, SampleResult res)
+ protected byte[] getResponseHeaders(HttpURLConnection conn, SampleResult res)
throws IOException
{
+ StringBuffer headerBuf = new StringBuffer();
+ //PrintWriter headerBytes = new PrintWriter(output);
+ headerBuf.append("HTTP/1.1 ");
+ headerBuf.append(conn.getResponseCode());
+ headerBuf.append(" ");
+ headerBuf.append(conn.getResponseMessage());
+ headerBuf.append("\n");
DefaultConfiguration headers = new
DefaultConfiguration(HTTPSampler.HEADERS,
"org.apache.jmeter.protocol.http.samplers.HTTPSampler");
for(int i = 1; conn.getHeaderFieldKey(i) != null; i++)
@@ -457,9 +463,18 @@
"org.apache.jmeter.protocol.http.samplers.HTTPSampler");
header.setAttribute("name",conn.getHeaderFieldKey(i));
header.setValue(conn.getHeaderField(i));
+
if(!conn.getHeaderFieldKey(i).equalsIgnoreCase("transfer-encoding"))
+ {
+ headerBuf.append(conn.getHeaderFieldKey(i));
+ headerBuf.append(": ");
+ headerBuf.append(conn.getHeaderField(i));
+ headerBuf.append("\n");
+ }
}
-
+ headerBuf.append("\n");
+ //headerBytes.close();
res.addChild(headers);
+ return headerBuf.toString().getBytes("8859_1");
}
/*
@@ -550,15 +565,15 @@
*@param time time when the URL request was first started
*@return HTTP response code divided by 100
***************************************/
- private int getErrorLevel(HttpURLConnection conn, SampleResult res, long time)
+ private int getErrorLevel(HttpURLConnection conn, SampleResult res, long time)
throws IOException
{
- int errorLevel = 2;
+ int errorLevel = 200;
int responseCode = 0;
String message = null;
try
{
responseCode = ((HttpURLConnection)conn).getResponseCode();
- errorLevel = responseCode / 100;
+ errorLevel = responseCode;
message = ((HttpURLConnection)conn).getResponseMessage();
res.setResponseCode(String.valueOf(responseCode));
res.setResponseMessage(message);
@@ -612,10 +627,10 @@
}
}
URL newUrl = new URL(loc);
- urlConfig.setProperty(HTTPSampler.DOMAIN, newUrl.getHost());
- urlConfig.setProperty(HTTPSampler.PATH, newUrl.getFile());
- urlConfig.setProperty(HTTPSampler.ARGUMENTS, new Arguments());
- urlConfig.setMethod(HTTPSampler.GET);
+ this.setDomain(newUrl.getHost());
+ this.setPath(newUrl.getFile());
+ this.setArguments(new Arguments());
+ this.setMethod(HTTPSampler.GET);
}
/****************************************
@@ -674,21 +689,24 @@
saveConnectionCookies(conn, u, getCookieManager());
int errorLevel = getErrorLevel(conn, res, time);
- if(errorLevel == 2)
+ if(errorLevel/100 == 2 || errorLevel == 304)
{
- byte[] ret = readResponse(conn);
- time = System.currentTimeMillis() - time;
- res.setResponseData(ret);
- res.setSuccessful(true);
- getResponseHeaders(conn, res);
+ time = bundleResponseInResult(time, res, conn);
}
- else if(errorLevel == 3)
+ else if(errorLevel/100 == 3)
{
- redirectUrl(conn, u, url);
-
- time = System.currentTimeMillis() - time;
- res = sample(url, true);
- time += res.getTime();
+ if(redirected)
+ {
+ time = bundleResponseInResult(time,res,conn);
+ }
+ else
+ {
+ redirectUrl(conn, u, url);
+
+ time = System.currentTimeMillis() - time;
+ res = sample(url, true);
+ time += res.getTime();
+ }
}
else
{
@@ -711,6 +729,20 @@
}
catClass.debug("End : sample2");
return res;
+ }
+
+ private long bundleResponseInResult(long time, SampleResult
+ res, HttpURLConnection conn) throws IOException,
+ FileNotFoundException {
+ byte[] ret = readResponse(conn);
+ byte[] head = getResponseHeaders(conn, res);
+ time = System.currentTimeMillis() - time;
+ byte[] complete = new byte[ret.length+head.length];
+ System.arraycopy(head,0,complete,0,head.length);
+ System.arraycopy(ret,0,complete,head.length,ret.length);
+ res.setResponseData(complete);
+ res.setSuccessful(true);
+ return time;
}
/****************************************
1.7 +9 -6
jakarta-jmeter/src_1/org/apache/jmeter/samplers/SampleResult.java
Index: SampleResult.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/samplers/SampleResult.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- SampleResult.java 2 May 2002 22:54:59 -0000 1.6
+++ SampleResult.java 13 May 2002 12:19:14 -0000 1.7
@@ -67,8 +67,8 @@
* sample of an entry.
*
*@author $Author: mstover1 $
- *@created $Date: 2002/05/02 22:54:59 $
- *@version $Revision: 1.6 $
+ *@created $Date: 2002/05/13 12:19:14 $
+ *@version $Revision: 1.7 $
*/
public class SampleResult extends DefaultConfiguration implements Serializable
{
@@ -77,6 +77,7 @@
public final static String TAG_NAME = "sampleResult";
public final static String TEXT = "text";
public final static String BINARY = "bin";
+ private byte[] responseData;
Map map;
long time;
@@ -231,9 +232,10 @@
*/
public void setResponseData(byte[] response)
{
- DefaultConfiguration responseChild = new
DefaultConfiguration(RESPONSE_DATA, "");
+ responseData = response;
+ /*DefaultConfiguration responseChild = new
DefaultConfiguration(RESPONSE_DATA, "");
responseChild.setValue(getHexString(response));
- addChild(responseChild);
+ addChild(responseChild);*/
}
/**
@@ -265,14 +267,15 @@
*/
public byte[] getResponseData()
{
- Configuration responseChild = getChild(RESPONSE_DATA);
+ return responseData;
+ /*Configuration responseChild = getChild(RESPONSE_DATA);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
String res = responseChild.getValue("");
for (int i = 0; i < res.length(); i+=2)
{
bytes.write(Integer.parseInt(res.substring(i,i+2),16));
}
- return bytes.toByteArray();
+ return bytes.toByteArray();*/
}
public void setSamplerData(Sampler s)
1.3 +5 -1 jakarta-jmeter/src_1/org/apache/jmeter/save/SaveService.java
Index: SaveService.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/save/SaveService.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- SaveService.java 26 Apr 2002 00:03:57 -0000 1.2
+++ SaveService.java 13 May 2002 12:19:14 -0000 1.3
@@ -90,7 +90,7 @@
{
config.addChild(createConfigForCollection(name,(Collection)value));
}
- else
+ else if(value != null)
{
config.addChild(createConfigForString(name,value.toString()));
}
@@ -214,6 +214,10 @@
else if(items[i].getName().equals("collection"))
{
coll.add(createCollection(items[i]));
+ }
+ else if(items[i].getName().equals("string"))
+ {
+ coll.add(items[i].getValue());
}
}
return coll;
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>