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: jmeter-dev-unsubscr...@jakarta.apache.org For additional commands, e-mail: jmeter-dev-h...@jakarta.apache.org