【发布时间】:2020-06-24 00:18:19
【问题描述】:
此线程中接受的答案来自 2014 年,似乎不再起作用。我不知道为什么:JMeter. How to determine when thread group is finished
我有 2 个线程组(忽略设置组)
根据我添加的上述线程中接受的答案
- BeanShell 预处理器
vars.put("DONE", "FALSE"); - BeanShell 后处理器
int activeThreadCount = org.apache.jmeter.threads.JMeterContextService.getNumberOfThreads(); if (activeThreadCount <= 1) { vars.put("DONE", "TRUE"); } - 如果控制器
${__BeanShell(vars.get("DONE") != null && vars.get("DONE")=="TRUE")}; - ... 如果触发,流控制操作会通过 Stop now 终止所有线程。
通过后处理器中的打印语句,我能够验证变量“DONE”的设置是否正确,并且条件vars.get("DONE") != null && vars.get("DONE")=="TRUE" 的评估是否正确(在后处理器中使用时)。
但是,当我在 If Controller 中使用条件时,似乎没有正确评估 If Controller 的子元素内的任何代码。即使条件评估为真,“Thred Group:ETL”也会继续运行。
我的假设是,这与“将条件解释为可变表达式”复选框或 If 控制器后面的解释器有关。但不幸的是,我对 JMeter 的了解还不够,无法弄清楚这一点。
【问题讨论】:
-
链接答案使用
props而不是vars -
我都试过了,没什么区别。