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]

Reply via email to