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="&sect-num;.1.2"  width="730" 
height="618" screenshot="webtest/http-request.png">
+<component name="HTTP Request" index="&sect-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

Reply via email to