Jmeter - 如何使用Groovy对每个线程执行清理?

时间:2016-11-01 17:55:04

标签: groovy jmeter

我有一个包含多个线程组的测试计划,每个线程组执行不同类型的请求。整个测试计划模拟我们的环境。

每个线程都使用特殊资源向服务器发送请求,此资源正在构建一次(使用Once Once Controller)并存储在Jmeter Variables中。 Jmeter变量不在线程之间共享,所以如果我有10个线程组,每个线程有10个线程,我创建了100个资源。

我想在每个线程完成其工作后断开此资源。

无法使用拆解线程组,因为Jmeter变量只能由存储它的线程看到。

具体问题是:如何知道线程何时完成Groovy的工作?

2 个答案:

答案 0 :(得分:0)

  

如何知道线程何时完成Groovy的工作?

不能,但是你可以获得当前的线程数和当前的迭代次数,如:

if (ctx.getThreadNum() == 0 && vars.getIteration() == 10)
{
    //do what you need 
}

另一个选择是将JMeter变量转换为JMeter属性(它们是整个JVM的全局属性,因此可以从不同的线程组访问)并在tearDown线程组中执行清理,如:

//assuming you have JMeter Variable called "foo"
props.put("foo", vars.get("foo"));

参考文献:

答案 1 :(得分:0)

根据您的要求,FIFO插件似乎是一个不错的选择。请检查here

基本上,要清除的所有资源都会添加到队列中 - 有一个单独的线程组可以检查此队列并清除资源。