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);
}
}