Http请求中的Jmeter If-controller

时间:2015-04-15 06:54:54

标签: java jmeter performance-testing jmeter-plugins

所以,我的问题看看我的Jmeter设置: Jmeter setup

让我解释一下发生了什么,然后继续我的问题。

解释 在服务器上,我有一个guava缓存(超时为5秒)和一个连接到它的数据库。请求A将数据(从csv文件读取)发送到服务器并将其放入缓存中。它返回与该数据对应的唯一ID。请求B发送一个秒请求(具有该唯一ID),该请求将项目从缓存中逐出并保存到DB。第三个请求C再次使用该唯一ID从DB读取并处理数据。

现在,为了在线程组之间共享该唯一ID(和一些其他URL参数),我将它们放在Jmeter的队列中(使用jp @ gc - 线程间通信预处理器和PostProcessor)。所有工作都应该像Jmeter和Server一样。

问题 为了完成这个设置,我需要再添加一个...对于每个请求A只需要将10%(随机)的唯一ID放入队列A中。并且对于每个请求B再次只有10%(随机)那些唯一的ID需要放在队列B中。 如果Jmeter不允许将if-controllers作为http请求的一部分放入,那么如何才能完成最后一部分呢?

2 个答案:

答案 0 :(得分:1)

如果有人对答案感兴趣。我发现最简单的方法是在Http请求A下创建一个随机变量(在变量rnd中)和一个beanshell后处理器.beanhell代码是:

import kg.apc.jmeter.modifiers.FifoMap;

if (vars.get("rnd").equals("1")) {
    FifoMap.getInstance().put("QUEUE_A", "${uniqueId");
}

对于请求B,类似于请求A的过程。工作正常。

答案 1 :(得分:0)

您是否尝试在http-request之外使用线程间通信PostProcessor - 对于instanse,在http-request之后放置的“Simple Controller”中?在这种情况下,您可以使用任何逻辑控制器(如果,吞吐量等)