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