Author: sebb Date: Tue Apr 7 21:00:01 2009 New Revision: 762961 URL: http://svn.apache.org/viewvc?rev=762961&view=rev Log: Implement interruptible for some more samplers
Modified: jakarta/jmeter/trunk/src/protocol/ftp/org/apache/jmeter/protocol/ftp/sampler/FTPSampler.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/SoapSampler.java jakarta/jmeter/trunk/xdocs/changes.xml Modified: jakarta/jmeter/trunk/src/protocol/ftp/org/apache/jmeter/protocol/ftp/sampler/FTPSampler.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/ftp/org/apache/jmeter/protocol/ftp/sampler/FTPSampler.java?rev=762961&r1=762960&r2=762961&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/protocol/ftp/org/apache/jmeter/protocol/ftp/sampler/FTPSampler.java (original) +++ jakarta/jmeter/trunk/src/protocol/ftp/org/apache/jmeter/protocol/ftp/sampler/FTPSampler.java Tue Apr 7 21:00:01 2009 @@ -29,6 +29,9 @@ import java.net.MalformedURLException; import java.net.URL; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpConnectionManager; +import org.apache.commons.httpclient.SimpleHttpConnectionManager; import org.apache.commons.io.IOUtils; import org.apache.commons.io.output.NullOutputStream; import org.apache.commons.io.output.TeeOutputStream; @@ -39,6 +42,7 @@ import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; +import org.apache.jmeter.samplers.Interruptible; import org.apache.jmeter.samplers.SampleResult; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; @@ -47,7 +51,7 @@ * A sampler which understands FTP file requests. * */ -public class FTPSampler extends AbstractSampler { +public class FTPSampler extends AbstractSampler implements Interruptible { private static final Logger log = LoggingManager.getLoggerForClass(); public final static String SERVER = "FTPSampler.server"; // $NON-NLS-1$ @@ -69,6 +73,8 @@ // Should the file data be saved in the response? public final static String SAVE_RESPONSE = "FTPSampler.saveresponse"; // $NON-NLS-1$ + private volatile FTPClient savedClient; + public FTPSampler() { } @@ -152,6 +158,7 @@ res.sampleStart(); FTPClient ftp = new FTPClient(); try { + savedClient = ftp; ftp.connect(getServer()); res.latencyEnd(); int reply = ftp.getReplyCode(); @@ -234,6 +241,7 @@ res.setResponseCode("000"); // TODO res.setResponseMessage(ex.toString()); } finally { + savedClient = null; if (ftp.isConnected()) { try { ftp.logout(); @@ -251,4 +259,18 @@ res.sampleEnd(); return res; } + + /** {...@inheritdoc} */ + public boolean interrupt() { + FTPClient client = savedClient; + if (client != null) { + savedClient = null; + try { + client.abort(); + client.disconnect(); + } catch (IOException ignored) { + } + } + return client != null; + } } 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=762961&r1=762960&r2=762961&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 Tue Apr 7 21:00:01 2009 @@ -133,6 +133,8 @@ private static final int nonProxyHostSuffixSize; + protected volatile HttpClient savedClient; + private static boolean isNonProxy(String host){ return nonProxyHostFull.contains(host) || isPartialMatch(host); } @@ -237,8 +239,6 @@ } } - private volatile HttpClient savedClient; - /** * Constructor for the HTTPSampler2 object. * Modified: jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/SoapSampler.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/SoapSampler.java?rev=762961&r1=762960&r2=762961&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/SoapSampler.java (original) +++ jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/SoapSampler.java Tue Apr 7 21:00:01 2009 @@ -26,6 +26,7 @@ import org.apache.jmeter.protocol.http.control.Header; import org.apache.jmeter.protocol.http.control.HeaderManager; import org.apache.jmeter.protocol.http.util.HTTPConstants; +import org.apache.jmeter.samplers.Interruptible; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; @@ -44,7 +45,7 @@ /** * Commons HTTPClient based soap sampler */ -public class SoapSampler extends HTTPSampler2 { +public class SoapSampler extends HTTPSampler2 implements Interruptible { // Implemented by parent class private static final Logger log = LoggingManager.getLoggerForClass(); public static final String XML_DATA = "HTTPSamper.xml_data"; //$NON-NLS-1$ @@ -245,6 +246,7 @@ try { int content_len = setPostHeaders(httpMethod); client = setupConnection(url, httpMethod, res); + savedClient = client; res.setQueryString(sendPostData(httpMethod,content_len)); int statusCode = client.executeMethod(httpMethod); @@ -345,6 +347,7 @@ return err; } finally { JOrphanUtils.closeQuietly(instream); + savedClient = null; httpMethod.releaseConnection(); } } Modified: jakarta/jmeter/trunk/xdocs/changes.xml URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=762961&r1=762960&r2=762961&view=diff ============================================================================== --- jakarta/jmeter/trunk/xdocs/changes.xml (original) +++ jakarta/jmeter/trunk/xdocs/changes.xml Tue Apr 7 21:00:01 2009 @@ -238,7 +238,7 @@ <li>Bug 40045 - Allow Results monitor to select a specific connector</li> <li>Bug 46636 - rmi ports</li> <li>Mirror server now supports "X-Sleep" header - if this is set, the responding thread will wait for the specified number of milliseconds</li> -<li>Make some samplers interruptible: HTTP (both)</li> +<li>Make some samplers interruptible: HTTP (both), SoapSampler, FTPSampler</li> </ul> <h3>Non-functional changes</h3> --------------------------------------------------------------------- To unsubscribe, e-mail: jmeter-dev-unsubscr...@jakarta.apache.org For additional commands, e-mail: jmeter-dev-h...@jakarta.apache.org