JMeterThread 完成时如何运行 编码?
How to run code when JMeterThread finishes?
在线程组中我有一个线程和两个循环。
我需要在循环结束时运行编码(一些清理)。
编辑:
我正在使用一些专有插件。此插件存储在线程的队列 ID 中。
它还存储哪些线程已在使用中的信息。
Thread Group中的循环结束时,不会清除Thread被使用的信息。因此下一个循环不能使用这个线程,每个线程组只有一个线程集。
所以我正在寻找一种方法来清除在线程组循环结束时使用线程的信息。
我建议您使用 tearDown Thread Group
,它最终会执行所有清理工作。
编辑:
根据你更新的问题和评论,我假设你有插件的源代码,并希望为每次迭代清除一些信息。
您需要实施org.apache.jmeter.engine.event.LoopIterationListener
你可以添加这个方法iterationStart(LoopIterationEvent loopitr)
(没有iterationEnd
)
因此,JMeter 可能不知道循环何时结束。您可以在此方法中进行清理(如清除变量等)。
loopitr.getIteration()
returns 一个整数 - 循环计数。
您可以按照下面给出的方式进行清理(忽略第一次迭代 - 从第二次迭代开始 - 这是前一个循环的结尾 -
if(loopitr.getIteration()>1){
// skip the first iteration - start cleaning up from second iteration beginning.
}
但是,这种方法不会清除您可以实现的最后一次迭代 setup.For TestStateListener
,它知道测试何时结束 - 您可以对最后一次迭代进行清理。
在线程组中我有一个线程和两个循环。
我需要在循环结束时运行编码(一些清理)。
编辑:
我正在使用一些专有插件。此插件存储在线程的队列 ID 中。 它还存储哪些线程已在使用中的信息。
Thread Group中的循环结束时,不会清除Thread被使用的信息。因此下一个循环不能使用这个线程,每个线程组只有一个线程集。
所以我正在寻找一种方法来清除在线程组循环结束时使用线程的信息。
我建议您使用 tearDown Thread Group
,它最终会执行所有清理工作。
编辑:
根据你更新的问题和评论,我假设你有插件的源代码,并希望为每次迭代清除一些信息。
您需要实施org.apache.jmeter.engine.event.LoopIterationListener
你可以添加这个方法iterationStart(LoopIterationEvent loopitr)
(没有iterationEnd
)
因此,JMeter 可能不知道循环何时结束。您可以在此方法中进行清理(如清除变量等)。
loopitr.getIteration()
returns 一个整数 - 循环计数。
您可以按照下面给出的方式进行清理(忽略第一次迭代 - 从第二次迭代开始 - 这是前一个循环的结尾 -
if(loopitr.getIteration()>1){
// skip the first iteration - start cleaning up from second iteration beginning.
}
但是,这种方法不会清除您可以实现的最后一次迭代 setup.For TestStateListener
,它知道测试何时结束 - 您可以对最后一次迭代进行清理。