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]
