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 2015/08/28 19:16:29 UTC
svn commit: r1698378 - in /jmeter/trunk:
src/protocol/java/org/apache/jmeter/protocol/java/sampler/
src/protocol/java/org/apache/jmeter/protocol/java/test/ xdocs/
Author: sebb
Date: Fri Aug 28 17:16:28 2015
New Revision: 1698378
URL: http://svn.apache.org/r1698378
Log:
Make existing Java Samplers implement Interruptible
Bugzilla Id: 58300
Modified:
jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java
jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/test/JavaTest.java
jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/test/SleepTest.java
jmeter/trunk/xdocs/changes.xml
Modified: jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java?rev=1698378&r1=1698377&r2=1698378&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java (original)
+++ jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java Fri Aug 28 17:16:28 2015
@@ -29,6 +29,7 @@ import org.apache.jmeter.config.Argument
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.TestStateListener;
@@ -42,7 +43,7 @@ import org.apache.log.Logger;
* information on writing Java code to be executed by this sampler.
*
*/
-public class JavaSampler extends AbstractSampler implements TestStateListener {
+public class JavaSampler extends AbstractSampler implements TestStateListener, Interruptible {
private static final Logger log = LoggingManager.getLoggerForClass();
@@ -334,4 +335,13 @@ public class JavaSampler extends Abstrac
String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue();
return APPLIABLE_CONFIG_CLASSES.contains(guiClass);
}
+
+ @Override
+ public boolean interrupt() {
+ if (javaClient instanceof Interruptible) {
+ return ((Interruptible) javaClient).interrupt();
+
+ }
+ return false;
+ }
}
Modified: jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/test/JavaTest.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/test/JavaTest.java?rev=1698378&r1=1698377&r2=1698378&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/test/JavaTest.java (original)
+++ jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/test/JavaTest.java Fri Aug 28 17:16:28 2015
@@ -25,6 +25,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
+import org.apache.jmeter.samplers.Interruptible;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jorphan.logging.LoggingManager;
@@ -67,7 +68,7 @@ import org.apache.log.Logger;
*
*/
-public class JavaTest extends AbstractJavaSamplerClient implements Serializable {
+public class JavaTest extends AbstractJavaSamplerClient implements Serializable, Interruptible {
private static final Logger LOG = LoggingManager.getLoggerForClass();
@@ -150,6 +151,8 @@ public class JavaTest extends AbstractJa
/** The name used to store the Success Status parameter. */
private static final String SUCCESS_NAME = "Status";
+ private volatile Thread myThread;
+
/**
* Default constructor for <code>JavaTest</code>.
*
@@ -300,12 +303,14 @@ public class JavaTest extends AbstractJa
// Execute the sample. In this case sleep for the
// specified time, if any
if (sleep > 0) {
+ myThread = Thread.currentThread();
TimeUnit.MILLISECONDS.sleep(sleep);
+ myThread = null;
}
results.setSuccessful(success);
} catch (InterruptedException e) {
LOG.warn("JavaTest: interrupted.");
- results.setSuccessful(true);
+ results.setSuccessful(false);
} catch (Exception e) {
LOG.error("JavaTest: error during sample", e);
results.setSuccessful(false);
@@ -350,4 +355,12 @@ public class JavaTest extends AbstractJa
return sb.toString();
}
+ @Override
+ public boolean interrupt() {
+ Thread t = myThread;
+ if (t!= null) {
+ t.interrupt();
+ }
+ return t != null;
+ }
}
Modified: jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/test/SleepTest.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/test/SleepTest.java?rev=1698378&r1=1698377&r2=1698378&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/test/SleepTest.java (original)
+++ jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/test/SleepTest.java Fri Aug 28 17:16:28 2015
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
+import org.apache.jmeter.samplers.Interruptible;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jorphan.logging.LoggingManager;
@@ -47,7 +48,7 @@ import org.apache.log.Logger;
*
* @version $Revision$
*/
-public class SleepTest extends AbstractJavaSamplerClient implements Serializable {
+public class SleepTest extends AbstractJavaSamplerClient implements Serializable, Interruptible {
private static final Logger LOG = LoggingManager.getLoggerForClass();
@@ -77,6 +78,8 @@ public class SleepTest extends AbstractJ
// The name of the sampler
private String name;
+ private volatile Thread myThread;
+
/**
* Default constructor for <code>SleepTest</code>.
*
@@ -148,14 +151,16 @@ public class SleepTest extends AbstractJ
// Record sample start time.
results.sampleStart();
+ myThread = Thread.currentThread();
// Execute the sample. In this case sleep for the
// specified time.
TimeUnit.MILLISECONDS.sleep(sleep);
+ myThread = null;
results.setSuccessful(true);
} catch (InterruptedException e) {
LOG.warn("SleepTest: interrupted.");
- results.setSuccessful(true);
+ results.setSuccessful(false);
results.setResponseMessage(e.toString());
} catch (Exception e) {
LOG.error("SleepTest: error during sample", e);
@@ -219,4 +224,13 @@ public class SleepTest extends AbstractJ
sb.append(Integer.toHexString(hashCode()));
return sb.toString();
}
+
+ @Override
+ public boolean interrupt() {
+ Thread t = myThread;
+ if (t!= null) {
+ t.interrupt();
+ }
+ return t != null;
+ }
}
Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1698378&r1=1698377&r2=1698378&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml (original)
+++ jmeter/trunk/xdocs/changes.xml Fri Aug 28 17:16:28 2015
@@ -89,6 +89,7 @@ Summary
<h3>Other samplers</h3>
<ul>
<li><bug>57928</bug>Add ability to define protocol (http/https) to AccessLogSampler GUI. Contributed by Jérémie Lesage (jeremie.lesage at jeci.fr)</li>
+ <li><bug>58300</bug> Make existing Java Samplers implement interruptible</li>
</ul>
<h3>Controllers</h3>