我有一个 JMeter 测试计划来在 SAP Web 客户端上执行性能和负载测试。测试计划包含 5 个线程组。在每个线程组中,我都有一个包含 N 请求的事务控制器,它们在其中执行 Login-Process-Logoff 。
我需要能够在无限循环中运行 20 个用户的测试计划,然后在 1 小时后关闭,但是执行仍然在 Web 客户端上的所有用户的注销(每个事务控制器上的最后一个请求)。
到目前为止,关闭只是停止对活动线程的测试,无论它是什么,都没有完成事务控制器。
有任何想法吗?
我有一个 JMeter 测试计划来在 SAP Web 客户端上执行性能和负载测试。测试计划包含 5 个线程组。在每个线程组中,我都有一个包含 N 请求的事务控制器,它们在其中执行 Login-Process-Logoff 。
我需要能够在无限循环中运行 20 个用户的测试计划,然后在 1 小时后关闭,但是执行仍然在 Web 客户端上的所有用户的注销(每个事务控制器上的最后一个请求)。
到目前为止,关闭只是停止对活动线程的测试,无论它是什么,都没有完成事务控制器。
有任何想法吗?
您可以引入一个JVM Shutdown Hook来拦截 JMeter 关闭并能够完成正在运行的任务。
示例实现:
将以下代码放入“脚本”区域:
def myHook = new Thread({ ->
try {
println('' + new Date() + '\tShutdown detected, waiting for 5 for logging out')
Thread.sleep(5000)
println('' + new Date() + '\tExiting...')
} catch (InterruptedException ignored) {
}
})
Runtime.getRuntime().addShutdownHook(myHook)
就是这样,当您向 JMeter 发送终止信号时,将调用该钩子,您可以在那里放置您需要的任何逻辑: