如何根据 Gatling 中的响应执行条件操作?

How do I perform a conditional action based on a response in Gatling?

我有一个负载测试示例 API 的场景。现在我想存储那些失败的场景帐户并将它们放回馈线中。我有一个全局哈希 table,我想在其中存储失败的帐户。

我不知道如何使用 doif 、 check 或任何其他 Gatling DSL 执行此操作。

ScenarioBuilder scenarioBuilder = scenario("getImage Request")
        .repeat(8)
        .on(
        feed(feeder)
        .exec(session -> {
            
            
            String token = dataapi.createStrongToken("abc", "doj");
            Session session1 = session.set("token", token);
            return session1;
        })
        .feed(csv("clientType.csv").random())
        .exec(http("uploadImage").get("/image")
                .check(status().gte(200), status().lte(304))
                .header("token",session -> session.getString("token"))
                .queryParam("accountId", "#{accountId}")
                
        );

您可以想象自定义供稿器或 csv 是合理的。如果我收到 4xx 或 5xx 范围内的响应,我想将失败的帐户存储在全局哈希 table/linked 列表中。有人可以指导我如何实施这个案例吗?如果需要更多信息,请告诉我。

添加 status().saveAs("status") 检查以便您可以构建 doIf 条件:

.doIf(session -> {
  int status = session.getInt("status");
  return status < 200 || status > 304;
}).then(
  exec(
    session -> {
      String accountId = session.getString("accountId");
      // perform accountId storage
      return session;
    }
  )
)