Apache JMeter-避免线程突然关闭

Apache JMeter-避免线程突然关闭,apache,jmeter,jmeter-5.0,Apache,Jmeter,Jmeter 5.0,我有一个测试计划,它有几个transacion控制器(我称之为UserJournes),每个控制器都由一些采样器(JourneySteps)组成 我面临的问题是,一旦测试持续时间结束,JMIT会杀死所有线程,并且不考虑它们是否在用户旅程(事务控制器)的中间。p> 在其中一些uj上,我做了一些重要的事情,在用户再次登录之前需要完成,否则下一次迭代(新的测试运行)将失败 问题是:有没有办法告诉JMeter,在杀死它之前,它需要等待每个线程到达其流/UJ/TransactionController的末

我有一个测试计划,它有几个transacion控制器(我称之为UserJournes),每个控制器都由一些采样器(JourneySteps)组成

我面临的问题是,一旦测试持续时间结束,JMIT会杀死所有线程,并且不考虑它们是否在用户旅程(事务控制器)的中间。p> 在其中一些uj上,我做了一些重要的事情,在用户再次登录之前需要完成,否则下一次迭代(新的测试运行)将失败

问题是:有没有办法告诉JMeter,在杀死它之前,它需要等待每个线程到达其流/UJ/TransactionController的末尾


提前谢谢

从5.1.1版开始,这是不可能的,您应该在以下位置请求增强:

解决方案是将添加为包含JSR223预处理器的

将包含以下groovy代码:

    import org.apache.jorphan.util.JMeterStopTestException;

    long startDate = vars["TESTSTART.MS"].toLong();
    long now = System.currentTimeMillis();
    String testDuration = Parameters;
    if ((now - startDate) >= testDuration.toLong()) {
        log.info("Test duration "+testDuration+" reached");
        throw new JMeterStopTestException("Test duration "+testDuration+"reached ");
    } else {
        log.info("Test duration "+testDuration+" not reached yet");
    }
并按如下方式配置:

最后,您可以使用以下命令行设置属性testDuration(以毫秒为单位):

-JtestDuration=3600000


如果您想了解更多关于JMeter和性能测试的信息,这将对您有所帮助。

谢谢您的回答。我将在Apache的网站上打开一个功能请求。