sebb 2004/06/28 18:34:40
Modified: src/core/org/apache/jmeter/engine Tag: rel-2_0
StandardJMeterEngine.java
Log:
Allow test and threads to be stopped from external thread (e.g. beanshell)
Revision Changes Path
No revision
No revision
1.43.2.3 +42 -6
jakarta-jmeter/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java
Index: StandardJMeterEngine.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java,v
retrieving revision 1.43.2.2
retrieving revision 1.43.2.3
diff -u -r1.43.2.2 -r1.43.2.3
--- StandardJMeterEngine.java 12 Jun 2004 20:21:35 -0000 1.43.2.2
+++ StandardJMeterEngine.java 29 Jun 2004 01:34:40 -0000 1.43.2.3
@@ -46,7 +46,6 @@
import org.apache.log.Logger;
/**
- * @author ?
* @version $Revision$ Updated on: $Date$
*/
public class StandardJMeterEngine
@@ -63,10 +62,45 @@
private transient SearchByClass testListeners;
private String host = null;
private transient ListenerNotifier notifier;
-
+
+ // Allow engine and threads to be stopped from outside a thread
+ // e.g. from beanshell server
+ private static transient Map allThreadNames;
+ private static StandardJMeterEngine engine;
+ public static void stopEngineNow()
+ {
+ engine.stopTest();
+ }
+ public static void stopEngine()
+ {
+ engine.askThreadsToStop();
+ }
+ public static boolean stopThread(String threadName)
+ {
+ if (allThreadNames == null) return false;// e.g. not yet started
+ JMeterThread thrd;
+ try {
+ thrd = (JMeterThread)allThreadNames.get(threadName);
+ } catch (Exception e) {
+ log.warn("stopThread: "+e);
+ return false;
+ }
+ if (thrd!= null)
+ {
+ thrd.stop();
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
public StandardJMeterEngine()
{
allThreads = new HashMap();
+ engine=this;
+ allThreadNames = new HashMap();
}
public StandardJMeterEngine(String host)
@@ -318,7 +352,8 @@
threads[i].setThreadNum(i);
threads[i].setInitialContext(JMeterContextService.getContext());
threads[i].setInitialDelay((int) (perThreadDelay * (float) i));
- threads[i].setThreadName(groupName + (groupCount) + "-" + (i + 1));
+ String threadName = groupName + " " + groupCount + "-" + (i + 1);
+ threads[i].setThreadName(threadName);
scheduleThread(threads[i], group);
@@ -328,8 +363,9 @@
threads[i].setOnErrorStopThread(onErrorStopThread);
Thread newThread = new Thread(threads[i]);
- newThread.setName(threads[i].getThreadName());
+ newThread.setName(threadName);
allThreads.put(threads[i], newThread);
+ allThreadNames.put(threadName,threads[i]);
if (serialized
&& !iter.hasNext()
&& i == threads.length - 1) //last thread
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]