You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2009/04/08 06:12:42 UTC
svn commit: r762961 - in /jakarta/jmeter/trunk:
src/protocol/ftp/org/apache/jmeter/protocol/ftp/sampler/
src/protocol/http/org/apache/jmeter/protocol/http/sampler/ xdocs/
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-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org