如何在JMeter中实现起搏?
我要在jMeter中模拟以下场景: 10个用户(ThreadGroup)正在登录,每个用户(ThreadGroup)应等待/延迟10秒以启动下一个用户(ThreadGroup)。我如何实现这一点 现在我有这样的事情: 螺纹组(10usrs)如何在JMeter中实现起搏?,jmeter,Jmeter,我要在jMeter中模拟以下场景: 10个用户(ThreadGroup)正在登录,每个用户(ThreadGroup)应等待/延迟10秒以启动下一个用户(ThreadGroup)。我如何实现这一点 现在我有这样的事情: 螺纹组(10usrs) Http采样器请求(登录) Http采样器请求(LookUpStatement) Http采样器请求(控制面板) Http采样器请求(CapAvailableList) Http采样器请求(LoadAllChatCount) Http采样器请求(Retur
- Http采样器请求(登录)
- Http采样器请求(LookUpStatement)
- Http采样器请求(控制面板)
- Http采样器请求(CapAvailableList)
- Http采样器请求(LoadAllChatCount)
- Http采样器请求(ReturnNotificationCount)
- 计时器(10秒)
最好,您可以将测试动作采样器与beanshell计时器一起使用。在下面的步骤中,我们使用4500毫秒的步调。无论前一个请求花费了多少时间,它都将应用剩余的时间。如果请求耗时1000毫秒,则将应用4500-1000=3500毫秒作为起搏
${mydelay}
Long pacing = 4500 - prev.getTime();
if (pacing > 0) {
Integer iPacing = pacing != null ? pacing.intValue() : null;
log.info(String.valueOf(iPacing));
vars.put("mydelay", String.valueOf(iPacing));
return iPacing;
} else {
vars.put("mydelay", "0");
return 0;
}
使用测试动作和JSR223定时器在开始(JSR定时器是开始,因为它所做的一切都是设置开始时间)和主循环的结束(您希望为其保持配速),并使用下面的代码来实现间隔配速。测试操作中的操作应设置为暂停
0ms
还创建一个名为packing
的JMeter变量,该变量应包含所需的调宽值。
在测试操作下的JSR223定时器中使用以下代码
/**
* PACING START
* Set the start time for pacing calculation
*
*/
def d = new Date()
try {
vars.put("pacingStartTime", "${d.getTime()}")
return 1
}
catch (Exception e) {
log.warn("[ Pacing: Failed to set the start time ]", e)
throw e;
}
最后在计时器中使用以下命令
/**
* PACING END
* Calculate the pacing and apply // return!
*
*/
def d = new Date()
try {
def pacing = Long.parseLong(vars.get("pacing")) // get the required pacing value from jmeter variable.
String startTime = vars.get("pacingStartTime") // get the start time which was set in the beginning of the loop
def diff = d.getTime() - Long.parseLong(startTime) // current time minus start time
def sleep = pacing > diff ? pacing - diff : 0 // logic for sleep time
log.info("[ Pacing: ${pacing}ms, Remaining time: ${sleep}ms ]")
return sleep
}
catch (Exception e) {
return 1000
log.warn("[ Pacing: Failed to calculate pacing ]", e)
throw e;
}