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