Gatling Websocket 对消息做出反应
Gatling Websocket react on message
是否可以编写 gatling script which connects to WebSocket 然后在收到某些消息时执行操作(例如新的 HTTP 请求)(最好是开箱即用的 STOMP 消息支持,但我可能可以解决这个问题) .
换句话说,"real clients"应该尽可能地模拟。真正的客户端(angular 应用程序)会根据某些 WebSocket 消息加载数据。
我正在寻找类似于(伪代码,不起作用)的东西:
val scn = scenario("WebSocket")
.exec(http("Home").get("/"))
.pause(1)
.exec(session => session.set("id", "Steph" + session.userId))
.exec(http("Login").get("/room?username=${id}"))
.pause(1)
.exec(
ws("Connect WS")
.open("/room/chat?username=${id}")
// ---------------------------------------------------------------------
// Is it possible to trigger/exec something (http call, full scenario)
// as reaction to a STOMP/WebSocket message?
.onMessage(check(perform some check, maybe regex?).as("idFromPayload"))
.exec(http("STOMP reaction").get("/entity/${idFromPayload}"))
// ---------------------------------------------------------------------
)
.exec(ws("Close WS").close)
// ideally, closing the websocket should only be done once the full scenario is over
// (or never, until the script terminates in "forever" scenarios)
目前可以吗?如果没有,是否计划在未来的 gatling 版本中使用?
据我所知,这对 Gatling 是不可能的。
我已经切换到 k6,它支持使用这种 logic/behavior 编写和执行测试脚本。
是否可以编写 gatling script which connects to WebSocket 然后在收到某些消息时执行操作(例如新的 HTTP 请求)(最好是开箱即用的 STOMP 消息支持,但我可能可以解决这个问题) .
换句话说,"real clients"应该尽可能地模拟。真正的客户端(angular 应用程序)会根据某些 WebSocket 消息加载数据。
我正在寻找类似于(伪代码,不起作用)的东西:
val scn = scenario("WebSocket")
.exec(http("Home").get("/"))
.pause(1)
.exec(session => session.set("id", "Steph" + session.userId))
.exec(http("Login").get("/room?username=${id}"))
.pause(1)
.exec(
ws("Connect WS")
.open("/room/chat?username=${id}")
// ---------------------------------------------------------------------
// Is it possible to trigger/exec something (http call, full scenario)
// as reaction to a STOMP/WebSocket message?
.onMessage(check(perform some check, maybe regex?).as("idFromPayload"))
.exec(http("STOMP reaction").get("/entity/${idFromPayload}"))
// ---------------------------------------------------------------------
)
.exec(ws("Close WS").close)
// ideally, closing the websocket should only be done once the full scenario is over
// (or never, until the script terminates in "forever" scenarios)
目前可以吗?如果没有,是否计划在未来的 gatling 版本中使用?
据我所知,这对 Gatling 是不可能的。
我已经切换到 k6,它支持使用这种 logic/behavior 编写和执行测试脚本。