JMeter--ThreadGroupの原理分析

2154 ワード

JMeterEngineはJMeter ThreadGroupを駆動してTest Threadsを起動してテストを実行します.それ自体もRunnableです.ここではテストドライバ(JUnitや他のmainのような)をメインスレッド(main thread)と見なしているので、JMeterEngineは第1層サブスレッド(First Child Thread)として扱われます.したがって、プロジェクトコードが多くのモジュール(例えばOSGIベース)に基づいている場合、ClassLoaderの調整が必要な場合は、JMeterEngineのrunTestメソッドを書き換えることができます.例:
public void runTest() throws JMeterEngineException  
{  
    try {  
        tcClassloader = Thread.currentThread().getContextClassLoader();  
  
        Future> f = DefaultExecutorService.getInstance().submit(this);  
        f.get();  
    }  
    catch (Exception err) {  
        stopTest();  
        throw new JMeterEngineException(err);  
    }  
    finally {  
          
    }  
}  
  
              @Override  
public void run()  
{  
    ClassLoader oldCl = Thread.currentThread().getContextClassLoader();  
    Thread.currentThread().setContextClassLoader(tcClassloader);  
    try {  
        super.run();  
    }  
    finally {  
        Thread.currentThread().setContextClassLoader(oldCl);  
    }  
}