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