【问题标题】:Stopping Jmeter test when all users in user.csv are done完成 user.csv 中的所有用户后停止 Jmeter 测试
【发布时间】:2018-12-20 01:59:27
【问题描述】:

我正在 Jmeter 中制定测试计划。 我正在使用并发线程组进行测试,并且正在使用 user.csv 文件将我的用户传递给它。我已将 EOF 上的 Recycle 设置为“False”,并将 EOF 上的 Stop thread 设置为“True”,因为我希望所有用户只工作一次。我在“Hold Target Rate Time”上设置了一些时间。

我的问题是有时所有用户都完成并离开,但测试并没有停止并继续进行,因为我在“保持目标速率时间”上设置的时间超过了所有用户的实际时间,我不断得到这个日志文件中的消息“INFO o.a.j.t.JMeterThread: Stop Thread seen for thread bzm - Concurrency Thread Group 1-8480, reason: org.apache.jorphan.util.JMeterStopThreadException: End of file:user.csv detected for CSV DataSet:users configured with停止线程:真,回收:假 ”。

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

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

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

【问题讨论】:

    标签: jmeter jmeter-plugins


    【解决方案1】:
    1. 将您的CSV Data Set 配置为:

    2. If Controller 添加到您的测试计划中,并将以下表达式放入“条件”区域:

      ${__groovy(vars.get('foo').equals('<EOF>'),)}
      
    3. JSR223 Sampler添加为If控制器的子节点,并将以下代码放入“脚本”区域:

      SampleResult.setStopTest(true)
      

    【讨论】:

      【解决方案2】:

      我只是添加了一个 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();
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-15
        • 2015-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多