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>