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.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]