在user.csv中的所有用户完成后停止Jmeter测试

时间:2018-01-11 20:09:51

标签: jmeter jmeter-plugins

我正在研究Jmeter的测试计划。 我正在使用并发线程组进行测试,我正在使用user.csv文件来通过我的用户。我已将EOF上的Recycle设置为“False”并将EOF上的停止线程设置为“True”,因为我希望所有用户只能工作一次。我在“保持目标费率时间”上设置了一些时间。

我的问题是有时所有用户都已完成并离开但是测试没有停止并继续进行,因为我设置的“保持目标速率时间”的时间超过了所有用户的实际时间并且我不断得到这个日志文件中的消息“INFO oajtJMeterThread:为线程bzm看到停止线程 - 并发线程组1-8480,原因:org.apache.jorphan.util.JMeterStopThreadException:文件结束:检测到CSV DataSet的user.csv:用户配置的stopThread:true,recycle:false “。

我想在所有用户完成后立即停止测试。我该怎么办 我正在使用带有此代码的Beanshell采样器:

if(${__threadNum} == 0)
{
    ctx.getEngine().askThreadsToStop()
}

但它没有帮助。 有什么建议吗?

2 个答案:

答案 0 :(得分:0)

  1. CSV Data Set配置为:

    CSV Data Set Config

  2. If Controller添加到您的测试计划中,并将以下表达式放入"条件"面积:

    ${__groovy(vars.get('foo').equals('<EOF>'),)}
    
  3. 添加JSR223 Sampler作为If Controller的子项,并将以下代码放入&#34;脚本&#34;面积:

    SampleResult.setStopTest(true)
    

答案 1 :(得分:0)

我只是添加了一个JSR223预处理器并添加了以下代码。

if(("${LOGIN}" == "END"))  //Login is defined in USER.csv
{
    long startTime = System.currentTimeMillis(); //fetch starting time
        while((System.currentTimeMillis()-startTime)<7200000)  //Defining sometime to 
wait let threads end gracefully.
        {
            // Waiting for the Defined time.
        }
        //println("---Stopping---"); // // Testing Purpose
        ctx.getEngine().askThreadsToStop();

}