在加特林检查中访问会话值

Access session value in gatling checks

我使用 gatling 将数据发送到 ActiveMQ。有效负载是在单独的方法中生成的。还应对响应进行验证。但是,如何在检查中访问会话数据 check(bodyString.is()) 还是 simpleCheck(...)?我也考虑过将当前有效载荷存储在一个单独的全局变量中,但我不知道这是否是正确的方法。目前我的代码设置如下所示:

val scn = scenario("Example ActiveMQ Scenario")
  .exec(jms("Test").requestReply
    .queue(...)
    .textMessage{ session => val message = createPayload(); session.set("payload", payload); message}
    .check(simpleCheck{message => customCheck(message, ?????? )})) //access stored payload value, alternative: check(bodystring.is(?????) 

def customCheck(m: Message, string: String) = {
 // check logic goes here
}

免责声明:在 Java 中提供示例,因为您似乎不是 Scala 开发人员,因此 Java 更适合您(从 Gatling 3.7 开始支持)。

你想做的事情不可能行得通。

.textMessage(session -> {
   String message = createPayload();
   session.set("payload", payload);
   return message;
  }
)

As explained in the documentation, Session 是不可变的,因此在应该 return 有效负载的函数中,您不能还 return 新会话。

您必须先将有效负载存储在会话中,然后再获取它:

.exec(session -> session.set("payload", createPayload()))
...
.textMessage("#{payload}")

关于写支票,simpleCheck 无权访问 Session。您必须使用 check(bodyString.is()) 并将函数传递给 is,再次 as explained in the documentation