如何在Jmeter中同步两个线程组

时间:2014-03-25 13:40:58

标签: jmeter

使用Jmeter,我希望实现这样的目标:

Thread Group 1
 - Http Request 1
 - Set P1 to "true"
 - Wait synchronization with Thread Group 2 (parameters P1 and P2 are both "true")
 - Http Request 2

Thread Group 2
 - Http Request 1
 - Set P2 to "true"
 - Wait synchronization with Thread Group 1 (parameters P1 and P2 are both "true")
 - Http Request 2

这与herehere描述的基本相同:我将P1和P2设置为" true"如下(HTTP Request / BeanShell都有效):

${__setProperty(P1,"true",)}

我的问题是如何实现等待条件。我已经为while控制器的退出条件尝试了所有可能的组合,但无法达到我想要的效果。奇怪的是,循环中放置的Debug采样器(或带有log.info的beanshell)向我显示正确设置属性P1和P2(并且退出条件满足我的期望),但它无论如何都不会退出。例如我尝试过:

${__property("P1")}!="true"||${__property("P2")}!="true"
${__property(P1)}!="true"||${__property(P2)}!="true"
${__property(P1)}=="true"&&${__property(P2)}=="true"
${__property("P1")}=="true"&&${__property("P2")}=="true"

任何人都可以帮助我吗?提前谢谢!

2 个答案:

答案 0 :(得分:0)

请参阅处理内部线程通信的此组件:

答案 1 :(得分:0)

诀窍是对while条件使用__BeanShell函数:

${__BeanShell((${__property(P1)}!="true"||${__property(P2)}!="true"}

此外,While控制器不能为空(您必须添加一个采样器或类似的东西,否则将被跳过)。