Author: sebb
Date: Mon Nov 30 02:09:55 2009
New Revision: 885312
URL: http://svn.apache.org/viewvc?rev=885312&view=rev
Log:
Bug 48300 - Allow override of IP source address for HTTP HttpClient requests
Modified:
jakarta/jmeter/trunk/docs/images/screenshots/webtest/http-request.png
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui.java
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui2.java
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java
jakarta/jmeter/trunk/xdocs/changes.xml
jakarta/jmeter/trunk/xdocs/images/screenshots/webtest/http-request.png
jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
Modified: jakarta/jmeter/trunk/docs/images/screenshots/webtest/http-request.png
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/images/screenshots/webtest/http-request.png?rev=885312&r1=885311&r2=885312&view=diff
==============================================================================
Binary files - no diff available.
Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=885312&r1=885311&r2=885312&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties (original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties Mon Nov 30 02:09:55 2009
@@ -923,6 +923,7 @@
web_server_client=Client implementation:
web_server_domain=Server Name or IP\:
web_server_port=Port Number\:
+web_testing2_source_ip=Source IP address:
web_testing2_title=HTTP Request HTTPClient
web_testing_embedded_url_pattern=Embedded URLs must match\:
web_testing_retrieve_images=Retrieve All Embedded Resources from HTML Files
Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties?rev=885312&r1=885311&r2=885312&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties (original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties Mon Nov 30 02:09:55 2009
@@ -789,6 +789,7 @@
web_server_timeout_connect=Connexion \:
web_server_timeout_response=R\u00E9ponse \:
web_server_timeout_title=D\u00E9lai expiration (ms)
+web_testing2_source_ip=Adresse IP source \:
web_testing2_title=Requ\u00EAte HTTP HTTPClient
web_testing_embedded_url_pattern=Les URL \u00E0 inclure doivent correspondre \u00E0 \:
web_testing_retrieve_images=R\u00E9cup\u00E9rer les ressources incluses
Modified: jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui.java?rev=885312&r1=885311&r2=885312&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui.java (original)
+++ jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui.java Mon Nov 30 02:09:55 2009
@@ -113,7 +113,7 @@
add(createOptionalTasksPanel(), BorderLayout.SOUTH);
}
- private JPanel createOptionalTasksPanel() {
+ protected JPanel createOptionalTasksPanel() {
// OPTIONAL TASKS
JPanel optionalTasksPanel = new VerticalPanel();
optionalTasksPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils
@@ -134,7 +134,7 @@
// Embedded URL match regex
embeddedRE = new JLabeledTextField(JMeterUtils.getResString("web_testing_embedded_url_pattern"),30); // $NON-NLS-1$
- optionalTasksPanel.add(embeddedRE);
+ optionalTasksPanel.add(embeddedRE, BorderLayout.CENTER);
return optionalTasksPanel;
}
Modified: jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui2.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui2.java?rev=885312&r1=885311&r2=885312&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui2.java (original)
+++ jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui2.java Mon Nov 30 02:09:55 2009
@@ -18,15 +18,24 @@
package org.apache.jmeter.protocol.http.control.gui;
-import org.apache.jmeter.protocol.http.sampler.HTTPSamplerFactory;
+import java.awt.BorderLayout;
+import javax.swing.JPanel;
+
+import org.apache.jmeter.protocol.http.sampler.HTTPSampler2;
import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase;
+import org.apache.jmeter.protocol.http.sampler.HTTPSamplerFactory;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.util.JMeterUtils;
+import org.apache.jorphan.gui.JLabeledTextField;
/**
* HTTP Sampler GUI for Apache HTTPClient HTTP implementation
*/
public class HttpTestSampleGui2 extends HttpTestSampleGui {
+
+ private static final long serialVersionUID = 240L;
+
+ private JLabeledTextField sourceIpAddr;
public HttpTestSampleGui2() {
super();
@@ -51,4 +60,44 @@
return super.getStaticLabel().replace(' ', '_'); // $NON-NLS-1$ // $NON-NLS-2$
}
+ @Override
+ protected JPanel createOptionalTasksPanel() {
+ JPanel optionalTasksPanel = super.createOptionalTasksPanel();
+ // Add a new field source ip address
+ sourceIpAddr = new JLabeledTextField(JMeterUtils
+ .getResString("web_testing2_source_ip"), 15); // $NON-NLS-1$
+ optionalTasksPanel.add(sourceIpAddr, BorderLayout.EAST);
+
+ return optionalTasksPanel;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui#clearGui()
+ */
+ @Override
+ public void clearGui() {
+ super.clearGui();
+ sourceIpAddr.setText(""); // $NON-NLS-1$
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui#configure(org.apache.jmeter.testelement.TestElement)
+ */
+ @Override
+ public void configure(TestElement element) {
+ super.configure(element);
+ final HTTPSampler2 samplerBase = (HTTPSampler2) element;
+ sourceIpAddr.setText(samplerBase.getIpSource());
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui#modifyTestElement(org.apache.jmeter.testelement.TestElement)
+ */
+ @Override
+ public void modifyTestElement(TestElement sampler) {
+ // TODO Auto-generated method stub
+ super.modifyTestElement(sampler);
+ final HTTPSampler2 samplerBase = (HTTPSampler2) sampler;
+ samplerBase.setIpSource(sourceIpAddr.getText());
+ }
}
Modified: jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java?rev=885312&r1=885311&r2=885312&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java (original)
+++ jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java Mon Nov 30 02:09:55 2009
@@ -119,6 +119,8 @@
private static final String PROXY_DOMAIN =
JMeterUtils.getPropDefault("http.proxyDomain",""); // $NON-NLS-1$ $NON-NLS-2$
+
+ public static final String IP_SOURCE = "HTTPSampler.ipSource"; // $NON-NLS-1$
static final InetAddress localAddress;
@@ -536,6 +538,12 @@
// Set up the local address if one exists
if (localAddress != null){
hc.setLocalAddress(localAddress);
+ } else {
+ final String ipSource = getIpSource();
+ if (ipSource.length() > 0) {// Use special field ip source address (for pseudo 'ip spoofing')
+ InetAddress inetAddr = InetAddress.getByName(ipSource);
+ hc.setLocalAddress(inetAddr);
+ }
}
boolean useStaticProxy = PROXY_DEFINED && !isNonProxy(host);
@@ -1162,4 +1170,13 @@
}
return client != null;
}
+
+
+ public void setIpSource(String value) {
+ setProperty(IP_SOURCE, value, "");
+ }
+
+ public String getIpSource() {
+ return getPropertyAsString(IP_SOURCE,"");
+ }
}
Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=885312&r1=885311&r2=885312&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Mon Nov 30 02:09:55 2009
@@ -120,6 +120,7 @@
<li>Bug 47461 - Update Cache Manager to handle Expires HTTP header</li>
<li>Bug 48153 - Support for Cache-Control and Expires headers</li>
<li>Bug 47946 - Proxy should enable Grouping inside a Transaction Controller</li>
+<li>Bug 48300 - Allow override of IP source address for HTTP HttpClient requests</li>
</ul>
<h3>Other samplers</h3>
Modified: jakarta/jmeter/trunk/xdocs/images/screenshots/webtest/http-request.png
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/images/screenshots/webtest/http-request.png?rev=885312&r1=885311&r2=885312&view=diff
==============================================================================
Binary files - no diff available.
Modified: jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=885312&r1=885311&r2=885312&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
+++ jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Mon Nov 30 02:09:55 2009
@@ -81,7 +81,7 @@
</component>
-<component name="HTTP Request" index="§-num;.1.2" width="730" height="618" screenshot="webtest/http-request.png">
+<component name="HTTP Request" index="§-num;.1.2" width="735" height="646" screenshot="webtest/http-request.png">
<description>
<p>This sampler lets you send an HTTP/HTTPS request to a web server. It
@@ -176,6 +176,10 @@
<property name="Port" required="No">Port the web server is listening to. Default: 80</property>
<property name="Connect Timeout" required="No">Connection Timeout. Number of milliseconds to wait for a connection to open.</property>
<property name="Response Timeout" required="No">Response Timeout. Number of milliseconds to wait for a response.</property>
+ <property name="Server (proxy)" required="No">Hostname or IP address of a proxy server to perform request. [Do not include the http:// prefix.]</property>
+ <property name="Port" required="No">Port the proxy server is listening to.</property>
+ <property name="Username" required="No">(Optional) username for proxy server.</property>
+ <property name="Password" required="No">(Optional) password for proxy server.</property>
<property name="Protocol" required="No">HTTP, HTTPS or FILE. Default: HTTP</property>
<property name="Method" required="Yes">GET, POST, HEAD, TRACE, OPTIONS, PUT, DELETE</property>
<property name="Content Encoding" required="No">Content encoding to be used (for POST and FILE)</property>
@@ -252,6 +256,12 @@
So if you only want to download embedded resources from http://example.com/, use the expression:
http://example\.com/.*
</property>
+ <property name="Source IP address:" required="No">
+ [Only for HTTP Request HTTPClient]
+ Override the default local IP address for this sample.
+ The JMeter host must have multiple IP addresses (i.e. IP aliases or network interfaces).
+ If the property <b>httpclient.localaddress</b> is defined, that is used for all HttpClient requests.
+ </property>
</properties>
<p>
<b>N.B.</b> when using Automatic Redirection, cookies are only sent for the initial URL.
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.