【问题标题】:Jmeter - How to perform a cleanup per thread with Groovy?Jmeter - 如何使用 Groovy 执行每个线程的清理?
【发布时间】:2016-11-01 17:55:04
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: groovy jmeter


    【解决方案1】:

    我如何知道线程何时完成了 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"));
    

    参考资料:

    【讨论】:

      【解决方案2】:

      对于您的要求,FIFO 插件似乎是一个不错的选择。请查看here

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

      【讨论】:

        猜你喜欢
        • 2012-09-24
        • 1970-01-01
        • 1970-01-01
        • 2019-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多