Author: sebb
Date: Wed Apr 29 00:18:16 2009
New Revision: 769598

URL: http://svn.apache.org/viewvc?rev=769598&view=rev
Log:
HTTP Samplers now support connection and request timeouts (requires Java 1.5 
for Java Http sampler)

Modified:
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
    
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/MultipartUrlConfigGui.java
    
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/UrlConfigGui.java
    
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java
    
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java
    
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java
    jakarta/jmeter/trunk/xdocs/changes.xml
    
jakarta/jmeter/trunk/xdocs/images/screenshots/http-config/http-request-defaults.png
    jakarta/jmeter/trunk/xdocs/images/screenshots/webtest/http-request.png
    jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml

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=769598&r1=769597&r2=769598&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 
Wed Apr 29 00:18:16 2009
@@ -883,6 +883,9 @@
 web_testing_embedded_url_pattern=Embedded URLs must match\:
 web_testing_retrieve_images=Retrieve All Embedded Resources from HTML Files
 web_testing_title=HTTP Request
+web_server_timeout_connect=Connect:
+web_server_timeout_response=Response:
+web_server_timeout_title=Timeouts (milliseconds)
 webservice_proxy_host=Proxy Host
 webservice_proxy_note=If Use HTTP Proxy is checked, but no host or port are 
provided, the sampler
 webservice_proxy_note2=will look at command line options. If no proxy host or 
port are provided by

Modified: 
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/MultipartUrlConfigGui.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/MultipartUrlConfigGui.java?rev=769598&r1=769597&r2=769598&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/MultipartUrlConfigGui.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/MultipartUrlConfigGui.java
 Wed Apr 29 00:18:16 2009
@@ -62,32 +62,22 @@
     private void init() {// called from ctor, so must not be overridable
         this.setLayout(new BorderLayout());
 
-        // WEB SERVER PANEL
-        VerticalPanel webServerPanel = new VerticalPanel();
-        
webServerPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
-                JMeterUtils.getResString("web_server"))); // $NON-NLS-1$
-        final JPanel domainPanel = getDomainPanel();
-        final JPanel portPanel = getPortPanel();
-        domainPanel.add(portPanel,BorderLayout.EAST);
-        webServerPanel.add(domainPanel);
-        //webServerPanel.add(getPortPanel());
-
-        JPanel northPanel = new JPanel();
-        northPanel.setLayout(new BoxLayout(northPanel, BoxLayout.Y_AXIS));
-        northPanel.add(getProtocolAndMethodPanel());
-        northPanel.add(getPathPanel());
-
         // WEB REQUEST PANEL
         JPanel webRequestPanel = new JPanel();
         webRequestPanel.setLayout(new BorderLayout());
         
webRequestPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
                 JMeterUtils.getResString("web_request"))); // $NON-NLS-1$
 
+        JPanel northPanel = new JPanel();
+        northPanel.setLayout(new BoxLayout(northPanel, BoxLayout.Y_AXIS));
+        northPanel.add(getProtocolAndMethodPanel());
+        northPanel.add(getPathPanel());
+
         webRequestPanel.add(northPanel, BorderLayout.NORTH);
         webRequestPanel.add(getParameterPanel(), BorderLayout.CENTER);
         webRequestPanel.add(getHTTPFileArgsPanel(), BorderLayout.SOUTH);
 
-        this.add(webServerPanel, BorderLayout.NORTH);
+        this.add(getWebServerTimeoutPanel(), BorderLayout.NORTH);
         this.add(webRequestPanel, BorderLayout.CENTER);
     }
 

Modified: 
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/UrlConfigGui.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/UrlConfigGui.java?rev=769598&r1=769597&r2=769598&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/UrlConfigGui.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/UrlConfigGui.java
 Wed Apr 29 00:18:16 2009
@@ -34,6 +34,7 @@
 
 import org.apache.jmeter.config.Arguments;
 import org.apache.jmeter.config.ConfigTestElement;
+import org.apache.jmeter.gui.util.HorizontalPanel;
 import org.apache.jmeter.gui.util.VerticalPanel;
 import org.apache.jmeter.protocol.http.gui.HTTPArgumentsPanel;
 import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase;
@@ -48,34 +49,21 @@
 /**
  * Basic URL / HTTP Request configuration:
  * - host and port
+ * - connect and response timeouts
  * - path, method, encoding, parameters
  * - redirects & keepalive
  */
 public class UrlConfigGui extends JPanel implements ChangeListener {
-    protected HTTPArgumentsPanel argsPanel;
-
-    private static final String DOMAIN = "domain"; // $NON-NLS-1$
-
-    private static final String PORT = "port"; // $NON-NLS-1$
-
-    private static final String PROTOCOL = "protocol"; // $NON-NLS-1$
-
-    private static final String CONTENT_ENCODING = "content_encoding"; // 
$NON-NLS-1$
-
-    private static final String PATH = "path"; // $NON-NLS-1$
-
-    private static final String FOLLOW_REDIRECTS = "follow_redirects"; // 
$NON-NLS-1$
-
-    private static final String AUTO_REDIRECTS = "auto_redirects"; // 
$NON-NLS-1$
-
-    private static final String USE_KEEPALIVE = "use_keepalive"; // $NON-NLS-1$
-
-    private static final String USE_MULTIPART_FOR_POST = 
"use_multipart_for_post"; // $NON-NLS-1$
+    private HTTPArgumentsPanel argsPanel;
 
     private JTextField domain;
 
     private JTextField port;
 
+    private JTextField connectTimeOut;
+    
+    private JTextField responseTimeOut;
+    
     private JTextField protocol;
 
     private JTextField contentEncoding;
@@ -105,12 +93,6 @@
         init();
     }
 
-    protected void configureTestElement(TestElement mc) {
-        mc.setName(getName());
-        mc.setProperty(TestElement.GUI_CLASS, this.getClass().getName());
-        mc.setProperty(TestElement.TEST_CLASS, mc.getClass().getName());
-    }
-
     public void clear() {
         domain.setText(""); // $NON-NLS-1$
         if (notConfigOnly){
@@ -122,6 +104,8 @@
         }
         path.setText(""); // $NON-NLS-1$
         port.setText(""); // $NON-NLS-1$
+        connectTimeOut.setText(""); // $NON-NLS-1$
+        responseTimeOut.setText(""); // $NON-NLS-1$
         protocol.setText(""); // $NON-NLS-1$
         contentEncoding.setText(""); // $NON-NLS-1$
         argsPanel.clear();
@@ -130,7 +114,9 @@
     public TestElement createTestElement() {
         ConfigTestElement element = new ConfigTestElement();
 
-        this.configureTestElement(element);
+        element.setName(this.getName());
+        element.setProperty(TestElement.GUI_CLASS, this.getClass().getName());
+        element.setProperty(TestElement.TEST_CLASS, 
element.getClass().getName());
         modifyTestElement(element);
         return element;
     }
@@ -147,6 +133,8 @@
         element.setProperty(new TestElementProperty(HTTPSamplerBase.ARGUMENTS, 
args));
         element.setProperty(HTTPSamplerBase.DOMAIN, domain.getText());
         element.setProperty(HTTPSamplerBase.PORT, port.getText());
+        element.setProperty(HTTPSamplerBase.CONNECT_TIMEOUT, 
connectTimeOut.getText());
+        element.setProperty(HTTPSamplerBase.RESPONSE_TIMEOUT, 
responseTimeOut.getText());
         element.setProperty(HTTPSamplerBase.PROTOCOL, protocol.getText());
         element.setProperty(HTTPSamplerBase.CONTENT_ENCODING, 
contentEncoding.getText());
         element.setProperty(HTTPSamplerBase.PATH, path.getText());
@@ -178,6 +166,8 @@
         } else {
             port.setText(portString);
         }
+        
connectTimeOut.setText(el.getPropertyAsString(HTTPSamplerBase.CONNECT_TIMEOUT));
+        
responseTimeOut.setText(el.getPropertyAsString(HTTPSamplerBase.RESPONSE_TIMEOUT));
         protocol.setText(el.getPropertyAsString(HTTPSamplerBase.PROTOCOL));
         
contentEncoding.setText(el.getPropertyAsString(HTTPSamplerBase.CONTENT_ENCODING));
         path.setText(el.getPropertyAsString(HTTPSamplerBase.PATH));
@@ -193,35 +183,51 @@
     private void init() {// called from ctor, so must not be overridable
         this.setLayout(new BorderLayout());
 
-        // WEB SERVER PANEL
-        VerticalPanel webServerPanel = new VerticalPanel();
-        
webServerPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
-                JMeterUtils.getResString("web_server"))); // $NON-NLS-1$
-        final JPanel domainPanel = getDomainPanel();
-        final JPanel portPanel = getPortPanel();
-        domainPanel.add(portPanel,BorderLayout.EAST);
-        webServerPanel.add(domainPanel);
-
-        JPanel northPanel = new JPanel();
-        northPanel.setLayout(new BoxLayout(northPanel, BoxLayout.Y_AXIS));
-        northPanel.add(getProtocolAndMethodPanel());
-        northPanel.add(getPathPanel());
-
         // WEB REQUEST PANEL
         JPanel webRequestPanel = new JPanel();
         webRequestPanel.setLayout(new BorderLayout());
         
webRequestPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
                 JMeterUtils.getResString("web_request"))); // $NON-NLS-1$
 
+        JPanel northPanel = new JPanel();
+        northPanel.setLayout(new BoxLayout(northPanel, BoxLayout.Y_AXIS));
+        northPanel.add(getProtocolAndMethodPanel());
+        northPanel.add(getPathPanel());
+
         webRequestPanel.add(northPanel, BorderLayout.NORTH);
         webRequestPanel.add(getParameterPanel(), BorderLayout.CENTER);
 
-        this.add(webServerPanel, BorderLayout.NORTH);
+        this.add(getWebServerTimeoutPanel(), BorderLayout.NORTH);
         this.add(webRequestPanel, BorderLayout.CENTER);
     }
-    protected JPanel getPortPanel() {
-        port = new JTextField(6);
-        port.setName(PORT);
+
+    protected final JPanel getWebServerTimeoutPanel() {
+        // WEB SERVER PANEL
+        JPanel webServerPanel = new HorizontalPanel();
+        
webServerPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
+                JMeterUtils.getResString("web_server"))); // $NON-NLS-1$
+        final JPanel domainPanel = getDomainPanel();
+        final JPanel portPanel = getPortPanel();
+        webServerPanel.add(domainPanel);
+        webServerPanel.add(portPanel);
+        
+        JPanel timeOut = new HorizontalPanel();
+        
timeOut.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
+                JMeterUtils.getResString("web_server_timeout_title"))); // 
$NON-NLS-1$
+        final JPanel connPanel = getConnectTimeOutPanel();
+        final JPanel reqPanel = getResponseTimeOutPanel();
+        timeOut.add(connPanel);
+        timeOut.add(reqPanel);
+        
+        
+        JPanel webServerTimeoutPanel = new VerticalPanel();
+        webServerTimeoutPanel.add(webServerPanel, BorderLayout.CENTER);
+        webServerTimeoutPanel.add(timeOut, BorderLayout.EAST);
+        return webServerTimeoutPanel;
+    }
+
+    private JPanel getPortPanel() {
+        port = new JTextField(4);
 
         JLabel label = new 
JLabel(JMeterUtils.getResString("web_server_port")); // $NON-NLS-1$
         label.setLabelFor(port);
@@ -233,9 +239,34 @@
         return panel;
     }
 
-    protected JPanel getDomainPanel() {
+    private JPanel getConnectTimeOutPanel() {
+        connectTimeOut = new JTextField(4);
+
+        JLabel label = new 
JLabel(JMeterUtils.getResString("web_server_timeout_connect")); // $NON-NLS-1$
+        label.setLabelFor(connectTimeOut);
+
+        JPanel panel = new JPanel(new BorderLayout(5, 0));
+        panel.add(label, BorderLayout.WEST);
+        panel.add(connectTimeOut, BorderLayout.CENTER);
+
+        return panel;
+    }
+
+    private JPanel getResponseTimeOutPanel() {
+        responseTimeOut = new JTextField(4);
+
+        JLabel label = new 
JLabel(JMeterUtils.getResString("web_server_timeout_response")); // $NON-NLS-1$
+        label.setLabelFor(responseTimeOut);
+
+        JPanel panel = new JPanel(new BorderLayout(5, 0));
+        panel.add(label, BorderLayout.WEST);
+        panel.add(responseTimeOut, BorderLayout.CENTER);
+
+        return panel;
+    }
+
+    private JPanel getDomainPanel() {
         domain = new JTextField(20);
-        domain.setName(DOMAIN);
 
         JLabel label = new 
JLabel(JMeterUtils.getResString("web_server_domain")); // $NON-NLS-1$
         label.setLabelFor(domain);
@@ -255,27 +286,22 @@
      */
     protected Component getPathPanel() {
         path = new JTextField(15);
-        path.setName(PATH);
 
         JLabel label = new JLabel(JMeterUtils.getResString("path")); 
//$NON-NLS-1$
         label.setLabelFor(path);
 
         if (notConfigOnly){
             followRedirects = new 
JCheckBox(JMeterUtils.getResString("follow_redirects")); // $NON-NLS-1$
-            followRedirects.setName(FOLLOW_REDIRECTS);
             followRedirects.setSelected(false);
 
             autoRedirects = new 
JCheckBox(JMeterUtils.getResString("follow_redirects_auto")); //$NON-NLS-1$
-            autoRedirects.setName(AUTO_REDIRECTS);
             autoRedirects.addChangeListener(this);
             autoRedirects.setSelected(true);// Default changed in 2.3
 
             useKeepAlive = new 
JCheckBox(JMeterUtils.getResString("use_keepalive")); // $NON-NLS-1$
-            useKeepAlive.setName(USE_KEEPALIVE);
             useKeepAlive.setSelected(true);
 
             useMultipartForPost = new 
JCheckBox(JMeterUtils.getResString("use_multipart_for_http_post")); // 
$NON-NLS-1$
-            useMultipartForPost.setName(USE_MULTIPART_FOR_POST);
             useMultipartForPost.setSelected(false);
         }
 
@@ -303,10 +329,8 @@
     protected JPanel getProtocolAndMethodPanel() {
         // PROTOCOL
         protocol = new JTextField(10);
-        protocol.setName(PROTOCOL);
         // CONTENT_ENCODING
         contentEncoding = new JTextField(10);
-        contentEncoding.setName(CONTENT_ENCODING);
 
         JLabel protocolLabel = new 
JLabel(JMeterUtils.getResString("protocol")); // $NON-NLS-1$
         protocolLabel.setLabelFor(protocol);

Modified: 
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java?rev=769598&r1=769597&r2=769598&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java
 Wed Apr 29 00:18:16 2009
@@ -21,6 +21,8 @@
 import java.io.IOException;
 import java.io.InputStream;
 
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.net.BindException;
 import java.net.HttpURLConnection;
 import java.net.URL;
@@ -65,8 +67,49 @@
         JMeterUtils.getPropDefault("http.java.sampler.retries" // $NON-NLS-1$
                 ,10); // Maximum connection retries
 
+    // TODO - these can be removed when JMeter moves up to Java 1.5+
+    private static final Method setReadTimeout;
+    
+    private static final Method setConnectTimeout;
+    
     static {
         log.info("Maximum connection retries = "+MAX_CONN_RETRIES); // 
$NON-NLS-1$
+        // Temporary copies, so can set the final ones
+        Method _setConnectTimeout = null, _setReadTimeout = null;
+        Class clazz = URLConnection.class;
+        try {
+            _setConnectTimeout = clazz.getMethod("setConnectTimeout", 
//$NON-NLS-1$
+                    new Class[] { Integer.TYPE });
+            _setReadTimeout = clazz.getMethod("setReadTimeout", //$NON-NLS-1$
+                    new Class[] { Integer.TYPE });
+        } catch (SecurityException e) {
+            log.warn("Error trying to find timeout methods: "+e);
+        } catch (NoSuchMethodException e) {
+        } finally {
+            if (_setReadTimeout != null) {
+                log.info("Connection and read timeouts are available on this 
JVM");
+            } else {
+                log.info("Connection and read timeouts are *not* available on 
this JVM");
+            }
+            setReadTimeout = _setReadTimeout;
+            setConnectTimeout = _setConnectTimeout;
+        }
+    }
+
+    private static void setTimeout(Method method, URLConnection conn ,int 
timeout){
+        if (method == null){
+            log.warn("Connect/Read Timeout is not supported on this JVM");
+            return;
+        }
+        try {
+            method.invoke(conn, new Integer[]{new Integer(timeout)});
+        } catch (IllegalArgumentException e1) {
+            log.warn("Failed to set timeout: "+e1);
+        } catch (IllegalAccessException e1) {
+            log.warn("Failed to set timeout: "+e1);
+        } catch (InvocationTargetException e1) {
+            log.warn("Failed to set timeout: "+e1);
+        }        
     }
 
     private static final byte[] NULL_BA = new byte[0];// can share these
@@ -151,6 +194,16 @@
         // Update follow redirects setting just for this connection
         conn.setInstanceFollowRedirects(getAutoRedirects());
 
+        int cto = getConnectTimeout();
+        if (cto > 0){
+            setTimeout(setConnectTimeout, conn, cto);
+        }
+        
+        int rto = getResponseTimeout();
+        if (rto > 0){
+            setTimeout(setReadTimeout, conn, rto);
+        }
+        
         if (PROTOCOL_HTTPS.equalsIgnoreCase(u.getProtocol())) {
             try {
                 if (null != sslmgr){

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=769598&r1=769597&r2=769598&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
 Wed Apr 29 00:18:16 2009
@@ -225,7 +225,7 @@
         } catch (ProtocolException e) {
             log.warn("Problem setting protocol version 
"+e.getLocalizedMessage());
         }
-        String to= JMeterUtils.getProperty("httpclient.timeout");
+        String to= JMeterUtils.getProperty("httpclient.timeout"); // 
$NON-NLS-1$
         if (to != null){
             params.setIntParameter(HttpMethodParams.SO_TIMEOUT, 
Integer.parseInt(to));
         }
@@ -571,6 +571,17 @@
             }
         }
 
+        int rto = getResponseTimeout();
+        if (rto > 0){
+            httpMethod.getParams().setSoTimeout(1);
+        }
+
+        int cto = getConnectTimeout();
+        if (cto > 0){
+            
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(cto);
+        }
+
+
         // Allow HttpClient to handle the redirects:
         httpMethod.setFollowRedirects(getAutoRedirects());
 

Modified: 
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java?rev=769598&r1=769597&r2=769598&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java
 Wed Apr 29 00:18:16 2009
@@ -94,6 +94,10 @@
 
     public static final String PORT = "HTTPSampler.port"; // $NON-NLS-1$
 
+    public static final String CONNECT_TIMEOUT = 
"HTTPSampler.connect_timeout"; // $NON-NLS-1$
+
+    public static final String RESPONSE_TIMEOUT = 
"HTTPSampler.response_timeout"; // $NON-NLS-1$
+
     public static final String METHOD = "HTTPSampler.method"; // $NON-NLS-1$
 
     public static final String CONTENT_ENCODING = 
"HTTPSampler.contentEncoding"; // $NON-NLS-1$
@@ -693,6 +697,22 @@
         return getPropertyAsString(DOMAIN);
     }
 
+    public void setConnectTimeout(String value) {
+        setProperty(CONNECT_TIMEOUT, value);
+    }
+
+    public int getConnectTimeout() {
+        return getPropertyAsInt(CONNECT_TIMEOUT, 0);
+    }
+
+    public void setResponseTimeout(String value) {
+        setProperty(RESPONSE_TIMEOUT, value);
+    }
+
+    public int getResponseTimeout() {
+        return getPropertyAsInt(RESPONSE_TIMEOUT, 0);
+    }
+
     public void setArguments(Arguments value) {
         setProperty(new TestElementProperty(ARGUMENTS, value));
     }

Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=769598&r1=769597&r2=769598&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Wed Apr 29 00:18:16 2009
@@ -249,6 +249,7 @@
 In GUI mode it can be cancelled and Stop run instead. 
 Stop now reports if some threads will not exit, and exits if running in 
non-GUI mode</li>
 <li>Add UDP server to wait for shutdown message if running in non-GUI mode; 
add UDP client to send the message.</li>
+<li>HTTP Samplers now support connection and request timeouts (requires Java 
1.5 for Java Http sampler)</li>
 </ul>
 
 <h3>Non-functional changes</h3>

Modified: 
jakarta/jmeter/trunk/xdocs/images/screenshots/http-config/http-request-defaults.png
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/images/screenshots/http-config/http-request-defaults.png?rev=769598&r1=769597&r2=769598&view=diff
==============================================================================
Binary files - no diff available.

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=769598&r1=769597&r2=769598&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=769598&r1=769597&r2=769598&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
+++ jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Wed Apr 29 
00:18:16 2009
@@ -81,7 +81,7 @@
 
 </component>
 
-<component name="HTTP Request" index="&sect-num;.1.2"  width="682" 
height="619" screenshot="webtest/http-request.png">
+<component name="HTTP Request" index="&sect-num;.1.2"  width="730" 
height="618" screenshot="webtest/http-request.png">
 
 <description>
         <p>This sampler lets you send an HTTP/HTTPS request to a web server.  
It
@@ -172,8 +172,10 @@
 </description>
 <properties>
         <property name="Name" required="No">Descriptive name for this 
controller that is shown in the tree.</property>
-        <property name="Server" required="No">Domain name or IP address of the 
web server. e.g. www.example.com. [Do not include the http:// 
prefix.]</property>
+        <property name="Server" required="Yes, unless provided by HTTP Request 
Defaults">Domain name or IP address of the web server. e.g. www.example.com. 
[Do not include the http:// prefix.]</property>
         <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. Requires Java 1.5 or 
later when using the default Java HTTP implementation.</property>
+        <property name="Response Timeout" required="No">Response Timeout. 
Number of milliseconds to wait for a response. Requires Java 1.5 or later when 
using the default Java HTTP implementation.</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>
@@ -2696,7 +2698,7 @@
 </component>
 
 <component name="HTTP Request Defaults" index="&sect-num;.4.5" 
-         width="581" height="385" 
screenshot="http-config/http-request-defaults.png">
+         width="727" height="396" 
screenshot="http-config/http-request-defaults.png">
 <description><p>This element lets you set default values that your HTTP 
Request controllers use.  For example, if you are
 creating a Test Plan with 25 HTTP Request controllers and all of the requests 
are being sent to the same server,
 you could add a single HTTP Request Defaults element with the "Server Name or 
IP" field filled in.  Then, when
@@ -2712,6 +2714,8 @@
         <property name="Name" required="No">Descriptive name for this 
controller that is shown in the tree.</property>
         <property name="Server" required="No">Domain name or IP address of the 
web server. e.g. www.example.com. [Do not include the http:// prefix.</property>
         <property name="Port" required="No">Port the web server is listening 
to.</property>
+        <property name="Connect Timeout" required="No">Connection Timeout. 
Number of milliseconds to wait for a connection to open. Requires Java 1.5 or 
later when using the default Java HTTP implementation.</property>
+        <property name="Response Timeout" required="No">Response Timeout. 
Number of milliseconds to wait for a response. Requires Java 1.5 or later when 
using the default Java HTTP implementation.</property>
         <property name="Protocol" required="Yes">HTTP or HTTPS.</property>
         <property name="Method" required="No">HTTP GET or HTTP POST.</property>
         <property name="Path" required="No">The path to resource (for example, 
/servlets/myServlet). If the



---------------------------------------------------------------------
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