Neither did I - but I asked on the httpclient mailing list.

I've looked at doing the same for the default JVM, but it seems to be
a lot harder, as the URL factory implementation needs to do a lot
more, and there is no easy access to the default implementation, so
one can't easily override or encapsulate it.

Likewise for SocketFactory - if that could be easily wrapped, we could
emulate slow FTP, TCP etc links.

S.
On 18/11/05, Peter Lin <[EMAIL PROTECTED]> wrote:
> Sweet! I didn't even know httpclient had that features. thanks for
> implementing it sebb
>
> peter
>
>
> On 11/17/05, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> >
> > Author: sebb
> > Date: Thu Nov 17 15:40:54 2005
> > New Revision: 345368
> >
> > URL: http://svn.apache.org/viewcvs?rev=345368&view=rev
> > Log:
> > Slow connection emulation for HttpClient
> >
> > Modified:
> > jakarta/jmeter/branches/rel-2-1/bin/jmeter.properties
> >
> > jakarta/jmeter/branches/rel-2-1/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java
> > jakarta/jmeter/branches/rel-2-1/xdocs/changes.xml
> >
> > Modified: jakarta/jmeter/branches/rel-2-1/bin/jmeter.properties
> > URL:
> > http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/bin/jmeter.properties?rev=345368&r1=345367&r2=345368&view=diff
> >
> > ==============================================================================
> > --- jakarta/jmeter/branches/rel-2-1/bin/jmeter.properties (original)
> > +++ jakarta/jmeter/branches/rel-2-1/bin/jmeter.properties Thu Nov 17
> > 15:40:54 2005
> > @@ -174,6 +174,10 @@
> > # Set the http version (defaults to 1.1)
> > #httpclient.version=1.0
> >
> > +# Define characters per second > 0 to emulate slow connections
> > +#httpclient.socket.http.cps=0
> > +#httpclient.socket.https.cps=0
> > +
> > # Sample logging levels for HttpClient
> > # Note that full category names are used, i.e. must include the org.apache
> > .
> > # Info level produces no output:
> >
> > Modified:
> > jakarta/jmeter/branches/rel-2-1/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java
> > URL:
> > http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java?rev=345368&r1=345367&r2=345368&view=diff
> >
> > ==============================================================================
> > ---
> > jakarta/jmeter/branches/rel-2-1/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java
> > (original)
> > +++
> > jakarta/jmeter/branches/rel-2-1/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java
> > Thu Nov 17 15:40:54 2005
> > @@ -33,8 +33,10 @@
> > import org.apache.commons.httpclient.DefaultMethodRetryHandler;
> > import org.apache.commons.httpclient.HostConfiguration;
> > import org.apache.commons.httpclient.HttpConnection;
> > +import org.apache.commons.httpclient.HttpConstants;
> > import org.apache.commons.httpclient.HttpMethod;
> > import org.apache.commons.httpclient.HttpMethodBase;
> > +import org.apache.commons.httpclient.HttpRecoverableException;
> > import org.apache.commons.httpclient.HttpState;
> > import org.apache.commons.httpclient.NTCredentials;
> > import org.apache.commons.httpclient.methods.EntityEnclosingMethod;
> > @@ -48,6 +50,7 @@
> > import org.apache.jmeter.protocol.http.control.CookieManager;
> > import org.apache.jmeter.protocol.http.control.HeaderManager;
> > import org.apache.jmeter.protocol.http.control.Cookie;
> > +import org.apache.jmeter.protocol.http.util.SlowHttpClientSocketFactory;
> >
> > import org.apache.jmeter.testelement.property.CollectionProperty;
> > import org.apache.jmeter.testelement.property.PropertyIterator;
> > @@ -63,19 +66,42 @@
> > *
> > */
> > public class HTTPSampler2 extends HTTPSamplerBase {
> > - transient private static Logger log = LoggingManager.getLoggerForClass
> > ();
> > + private static final Logger log = LoggingManager.getLoggerForClass();
> > +
> > + private static final String PROTOCOL_HTTP = "http"; // $NON-NLS-1$
> >
> > /*
> > * Connection is re-used within the thread if possible
> > */
> > transient private static ThreadLocal httpClients = null;
> >
> > + private static boolean basicAuth
> > + = JMeterUtils.getPropDefault("httpsampler2.basicauth", false); //
> > $NON-NLS-1$
> > +
> > static {
> > // Set the default to Avalon Logkit, if not already defined:
> > if (System.getProperty("org.apache.commons.logging.Log") == null) { //
> > $NON-NLS-1$
> > System.setProperty("org.apache.commons.logging.Log" // $NON-NLS-1$
> > , "org.apache.commons.logging.impl.LogKitLogger"); // $NON-NLS-1$
> > }
> > + log.info("httpsampler2.basicauth=" + basicAuth); // $NON-NLS-1$
> > +
> > + int cps =
> > + JMeterUtils.getPropDefault("httpclient.socket.http.cps", 0); //
> > $NON-NLS-1$
> > +
> > + if (cps > 0) {
> > + log.info("Setting up HTTP SlowProtocol, cps="+cps);
> > + Protocol.registerProtocol(PROTOCOL_HTTP,
> > + new Protocol(PROTOCOL_HTTP,new
> > SlowHttpClientSocketFactory(cps),DEFAULT_HTTP_PORT));
> > + }
> > + cps =
> > + JMeterUtils.getPropDefault("httpclient.socket.https.cps", 0); //
> > $NON-NLS-1$
> > +
> > + if (cps > 0) {
> > + log.info("Setting up HTTPS SlowProtocol, cps="+cps);
> > + Protocol.registerProtocol(PROTOCOL_HTTPS,
> > + new Protocol(PROTOCOL_HTTPS,new
> > SlowHttpClientSocketFactory(cps),DEFAULT_HTTPS_PORT));
> > + }
> > }
> >
> > /*
> > @@ -86,13 +112,6 @@
> >
> > private transient HttpState httpState = null;
> >
> > - private static boolean basicAuth
> > - = JMeterUtils.getPropDefault("httpsampler2.basicauth", false); //
> > $NON-NLS-1$
> > -
> > - static {
> > - log.info("httpsampler2.basicauth=" + basicAuth); // $NON-NLS-1$
> > - }
> > -
> > /**
> > * Constructor for the HTTPSampler2 object.
> > */
> > @@ -157,14 +176,14 @@
> > }
> > }
> >
> > + // Convert \ to \\
> > private String encode(String value) {
> > StringBuffer newValue = new StringBuffer();
> > - char[] chars = value.toCharArray();
> > - for (int i = 0; i < chars.length; i++) {
> > - if (chars[i] == '\\') { // $NON-NLS-1$
> > + for (int i = 0; i < value.length(); i++) {
> > + if (value.charAt(i) == '\\') { // $NON-NLS-1$
> > newValue.append("\\\\"); // $NON-NLS-1$
> > } else {
> > - newValue.append(chars[i]);
> > + newValue.append(value.charAt(i));
> > }
> > }
> > return newValue.toString();
> > @@ -195,7 +214,7 @@
> >
> > String schema = uri.getScheme();
> > if ((schema == null) || (schema.equals(""))) { // $NON-NLS-1$
> > - schema = "http"; // $NON-NLS-1$
> > + schema = PROTOCOL_HTTP;
> > }
> > Protocol protocol = Protocol.getProtocol(schema);
> >
> >
> > Modified: jakarta/jmeter/branches/rel-2-1/xdocs/changes.xml
> > URL:
> > http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/xdocs/changes.xml?rev=345368&r1=345367&r2=345368&view=diff
> >
> > ==============================================================================
> > --- jakarta/jmeter/branches/rel-2-1/xdocs/changes.xml (original)
> > +++ jakarta/jmeter/branches/rel-2-1/xdocs/changes.xml Thu Nov 17 15:40:54
> > 2005
> > @@ -35,6 +35,7 @@
> > <li>Simpler JMX file format (2.2)</li>
> > <li>BeanshellSampler code can update ResponseData directly</li>
> > <li>Bug 37490 - Allow UDV as delay in Duration Assertion</li>
> > +<li>Slow connection emulation for HttpClient</li>
> > </ul>
> >
> > <h4>Bug fixes:</h4>
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to