You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by se...@apache.org on 2012/09/09 16:50:11 UTC

svn commit: r1382510 - in /jmeter/trunk: src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPSampler.java xdocs/changes.xml

Author: sebb
Date: Sun Sep  9 14:50:11 2012
New Revision: 1382510

URL: http://svn.apache.org/viewvc?rev=1382510&view=rev
Log:
Pressing "Stop" does not interrupt the TCP sampler
Bugzilla Id: 53838

Modified:
    jmeter/trunk/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPSampler.java
    jmeter/trunk/xdocs/changes.xml

Modified: jmeter/trunk/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPSampler.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPSampler.java?rev=1382510&r1=1382509&r2=1382510&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPSampler.java (original)
+++ jmeter/trunk/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPSampler.java Sun Sep  9 14:50:11 2012
@@ -40,6 +40,7 @@ import org.apache.commons.lang3.StringUt
 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.jmeter.testelement.TestElement;
 import org.apache.jmeter.testelement.ThreadListener;
@@ -52,8 +53,8 @@ import org.apache.log.Logger;
  * A sampler which understands Tcp requests.
  *
  */
-public class TCPSampler extends AbstractSampler implements ThreadListener {
-    private static final long serialVersionUID = 233L;
+public class TCPSampler extends AbstractSampler implements ThreadListener, Interruptible {
+    private static final long serialVersionUID = 280L;
 
     private static final Logger log = LoggingManager.getLoggerForClass();
 
@@ -141,6 +142,8 @@ public class TCPSampler extends Abstract
     
     private transient boolean firstSample; // Are we processing the first sample?
 
+    private transient volatile Socket currentSocket; // used for handling interrupt
+
     public TCPSampler() {
         log.debug("Created " + this); //$NON-NLS-1$
     }
@@ -351,6 +354,7 @@ public class TCPSampler extends Abstract
                 res.setResponseCode("500"); //$NON-NLS-1$
                 res.setResponseMessage("Protocol handler not found");
             } else {
+                currentSocket = sock;
                 InputStream is = sock.getInputStream();
                 OutputStream os = sock.getOutputStream();
                 String req = getRequestData();
@@ -369,6 +373,7 @@ public class TCPSampler extends Abstract
             isSuccessful=setupSampleResult(res, "", ex, protocolHandler.getCharset());
             closeSocket(socketKey);
         } finally {
+            currentSocket = null;
             // Calculate response time
             res.sampleEnd();
 
@@ -508,4 +513,17 @@ public class TCPSampler extends Abstract
         String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue();
         return APPLIABLE_CONFIG_CLASSES.contains(guiClass);
     }
+
+    public boolean interrupt() {
+        Socket sock = currentSocket; // fetch in case gets nulled later
+        if (sock != null) {
+            try {
+                sock.close();
+            } catch (IOException e) {
+                // ignored
+            }
+            return true;
+        }
+        return false;
+    }
 }

Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1382510&r1=1382509&r2=1382510&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml (original)
+++ jmeter/trunk/xdocs/changes.xml Sun Sep  9 14:50:11 2012
@@ -97,6 +97,7 @@ The original behaviour can be restored b
 <ul>
 <li><bugzilla>53521</bugzilla> - Cache Manager should cache content with Cache-control=private</li>
 <li><bugzilla>53522</bugzilla> - Cache Manager should not store at all response with header "no-cache" and store other types of Cache-Control having max-age value</li>
+<li><bugzilla>53838</bugzilla> - Pressing "Stop" does not interrupt the TCP sampler</li>
 </ul>
 
 <h3>Other Samplers</h3>