sebb 2003/10/16 15:06:33
Modified: src/protocol/http/org/apache/jmeter/protocol/http/proxy
Proxy.java ProxyControl.java
src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui
ProxyControlGui.java
Log:
See bug 22721 - browser header capture can now be disabled. Stop proxy now waits 1s
for daemon to stop, which means that restart works more reliably
Revision Changes Path
1.12 +16 -7
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/Proxy.java
Index: Proxy.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/Proxy.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- Proxy.java 5 Oct 2003 00:44:02 -0000 1.11
+++ Proxy.java 16 Oct 2003 22:06:33 -0000 1.12
@@ -88,7 +88,9 @@
/** Target to receive the generated sampler. */
private ProxyControl target;
-
+
+ /** Whether or not to capture the HTTP headers. */
+ private boolean captureHttpHeaders;
/**
* Default constructor.
@@ -122,6 +124,7 @@
{
this.target = target;
this.clientSocket = clientSocket;
+ this.captureHttpHeaders = target.getCaptureHttpHeaders();
}
/**
@@ -131,24 +134,30 @@
{
HttpRequestHdr request = new HttpRequestHdr();
byte[] serverResponse = new byte[0];
- HeaderManager headers = new HeaderManager();
+ HeaderManager headers = null;
+
HTTPSampler sampler = new HTTPSampler();
try
{
byte[] clientRequest = //TODO: var not used, but call may be needed for
side effects?
request.parse(
new BufferedInputStream(clientSocket.getInputStream()));
- headers = request.getHeaderManager();
sampler = request.getSampler();
- sampler.setHeaderManager(headers);
+ if (captureHttpHeaders)
+ {
+ headers = request.getHeaderManager();
+ sampler.setHeaderManager(headers);
+ }
serverResponse = sampler.sample().getResponseData();
writeToClient(
serverResponse,
new BufferedOutputStream(clientSocket.getOutputStream()));
- headers.removeHeaderNamed("cookie");
-
+ if (captureHttpHeaders)
+ {
+ headers.removeHeaderNamed("cookie");
+ }
}
catch (UnknownHostException uhe)
1.29 +28 -4
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
Index: ProxyControl.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- ProxyControl.java 15 Oct 2003 17:53:52 -0000 1.28
+++ ProxyControl.java 16 Oct 2003 22:06:33 -0000 1.29
@@ -76,6 +76,7 @@
import org.apache.jmeter.protocol.http.control.RecordingController;
import org.apache.jmeter.protocol.http.sampler.HTTPSampler;
import org.apache.jmeter.testelement.TestElement;
+import org.apache.jmeter.testelement.property.BooleanProperty;
import org.apache.jmeter.testelement.property.CollectionProperty;
import org.apache.jmeter.testelement.property.IntegerProperty;
import org.apache.jmeter.testelement.property.PropertyIterator;
@@ -104,6 +105,7 @@
public final static String PORT = "ProxyControlGui.port";
public final static String EXCLUDE_LIST = "ProxyControlGui.exclude_list";
public final static String INCLUDE_LIST = "ProxyControlGui.include_list";
+ public final static String CAPTURE_HTTP_HEADERS =
"ProxyControlGui.capture_http_headers";
public ProxyControl()
{
@@ -111,6 +113,7 @@
setPort(DEFAULT_PORT);
setExcludeList(new HashSet());
setIncludeList(new HashSet());
+ setCaptureHttpHeaders(true); // maintain original behaviour
}
public void setPort(int port)
@@ -122,7 +125,12 @@
{
setProperty(PORT,port);
}
-
+
+ public void setCaptureHttpHeaders(boolean capture)
+ {
+ setProperty(new BooleanProperty(CAPTURE_HTTP_HEADERS,capture));
+ }
+
public void setIncludeList(Collection list)
{
setProperty(new CollectionProperty(INCLUDE_LIST, new HashSet(list)));
@@ -147,6 +155,11 @@
return DEFAULT_PORT;
}
+ public boolean getCaptureHttpHeaders()
+ {
+ return getPropertyAsBoolean(CAPTURE_HTTP_HEADERS);
+ }
+
public Class getGuiClass()
{
return org.apache.jmeter.protocol.http.proxy.gui.ProxyControlGui.class;
@@ -213,6 +226,13 @@
if (server != null)
{
server.stopServer();
+ try
+ {
+ server.join(1000); // wait for server to stop
+ }
+ catch (InterruptedException e)
+ {
+ }
}
}
@@ -439,8 +459,12 @@
GuiPackage.getInstance().getReplacer().reverseReplace(sampler);
for (int i = 0; i < configs.length; i++)
{
- GuiPackage.getInstance().getReplacer().reverseReplace(
- configs[i]);
+ if (configs[i] != null)
+ {
+ GuiPackage.getInstance().getReplacer().reverseReplace(
+ configs[i]);
+ }
+
}
}
catch (InvalidVariableException e)
1.21 +31 -6
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java
Index: ProxyControlGui.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- ProxyControlGui.java 7 Sep 2003 18:58:17 -0000 1.20
+++ ProxyControlGui.java 16 Oct 2003 22:06:33 -0000 1.21
@@ -70,6 +70,7 @@
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
+import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
@@ -116,6 +117,13 @@
private static transient Logger log = LoggingManager.getLoggerForClass();
private JTextField portField;
+ /**
+ * Used to indicate that HTTP request headers should be captured.
+ * The default is to <b>not</b> capture the HTTP request headers,
+ * which are specific to particular browser settings.
+ */
+ private JCheckBox httpHeaders;
+
private ProxyControl model;
private JTable excludeTable;
@@ -174,10 +182,11 @@
configureTestElement(el);
if(el instanceof ProxyControl)
{
- ((ProxyControl)el).setPort(portField.getText());
- setIncludeListInProxyControl((ProxyControl)el);
- setExcludeListInProxyControl((ProxyControl)el);
- model = (ProxyControl)el;
+ model = (ProxyControl)el;
+ model.setPort(portField.getText());
+ setIncludeListInProxyControl(model);
+ setExcludeListInProxyControl(model);
+ model.setCaptureHttpHeaders(httpHeaders.isSelected());
}
}
@@ -220,6 +229,7 @@
super.configure(element);
model = (ProxyControl)element;
portField.setText(model.getPropertyAsString(ProxyControl.PORT));
+
httpHeaders.setSelected(model.getPropertyAsBoolean(ProxyControl.CAPTURE_HTTP_HEADERS));
populateTable(includeModel, model.getIncludePatterns().iterator());
populateTable(excludeModel, model.getExcludePatterns().iterator());
repaint();
@@ -274,6 +284,10 @@
model = (ProxyControl) createTestElement();
startProxy();
}
+ else if (command.equals(ProxyControl.CAPTURE_HTTP_HEADERS))
+ {
+ enableRestart();
+ }
else if (command.equals(ADD_EXCLUDE))
{
excludeModel.addNewRow();
@@ -381,6 +395,7 @@
}
}
}
+ enableRestart();
}
private void init()
@@ -436,9 +451,19 @@
JLabel label = new JLabel(JMeterUtils.getResString("port"));
label.setLabelFor(portField);
+ httpHeaders = new JCheckBox(JMeterUtils.getResString("proxy_headers"));
+ httpHeaders.setName(ProxyControl.CAPTURE_HTTP_HEADERS);
+ httpHeaders.setSelected(true); //maintain original default
+ httpHeaders.addActionListener(this);
+ httpHeaders.setActionCommand(ProxyControl.CAPTURE_HTTP_HEADERS);
+
HorizontalPanel panel = new HorizontalPanel();
panel.add(label);
panel.add(portField);
+
+ panel.add(Box.createHorizontalStrut(10));
+ panel.add(httpHeaders);
+
return panel;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]