You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2009/11/30 03:09:57 UTC

svn commit: r885312 - in /jakarta/jmeter/trunk: docs/images/screenshots/webtest/ src/core/org/apache/jmeter/resources/ src/protocol/http/org/apache/jmeter/protocol/http/control/gui/ src/protocol/http/org/apache/jmeter/protocol/http/sampler/ xdocs/ xdoc...

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