【问题标题】:How to retrieve response headers in gatling and execute http call multiple times?如何在 gatling 中检索响应标头并多次执行 http 调用?
【发布时间】:2019-08-21 04:17:58
【问题描述】:

我正在尝试找到一种方法来从 http 调用响应中获取响应标头,例如 X-RateLimit-Limit、X-RateLimit-Remaining 等。 无法从在线资源或文档中找到,有人可以帮忙吗? 当我启用日志记录时,我在控制台中看到了这些标头,但不知道如何从响应中检索这些标头。

http("Get API")
      .get("https://hello.com/list")
      .header("Authorization", "${auth}")
      .check(status.is(200))
      .check(bodyString.saveAs("Auth_Response"))

还有一种方法可以在一个时间范围内多次运行此 http 调用。我应该使用哪些内置方法进行循环以及在特定时间限制内运行这个特定的 http 调用?我在下面尝试但不成功。理想情况下,我希望能够验证此 API 速率限制,因此尝试了这种方式。虽然我开始明白我不能同时使用 repeat() duration() ,但是它们有两个我想要实现的不同目的。即使只是在 duration() 中调用 http 请求构建器类型调用也会引发错误 - “它不符合预期的 ChainBuilder 类型

val scn1 =
during (60.seconds) {
  scenario("Setup scenario")
    .repeat(201){
      exec(
      http("Get API")
        .get("https://hello.com/list")
        .header("Authorization", "${auth}")
    )}
  setUp(
    scn1.inject(
      atOnceUsers(1)
    )
  )
}

无论我把 setup () 放在 during() 还是放在外面,都会导致错误。我正在尝试评估我是否甚至需要 during()。当仅使用 repeat(201) 时,它会导致 API 运行 201 次并减少 api 的 X-RateLimit-Remaining 计数,但不足以将其达到 0 导致错误代码回复。 请提供任何建议?

【问题讨论】:

    标签: http response gatling rate-limiting scala-gatling


    【解决方案1】:

    它在 https://gatling.io/docs/current/cheat-sheet/ 的备忘单中

    .check(header(headerName)).is(...)

    【讨论】:

    • thanks@James Warr 我能够检索响应标头。另外,根据我的帖子,您建议在一段时间(秒)内多次执行此 API 的内置函数是什么?
    • 这正是您得到的代码吗?您在重复链周围使用“()”而不是“{}”
    • 是的,这主要是我使用和运行的确切代码。此外,在重复链中使用 '()' 而不是 '{}' 在编译中完全可以正常工作,并且不会在语法上失败。
    • 事实上,只使用 repeat(201) 而没有 duration() 确实会执行 http API 201 次。但它不会导致达到 api rate limit exceeded 错误响应代码,因此我尝试使用 duration()
    • 您可以随时增加注入的用户数量以达到您想要的口味
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 2020-01-15
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 2021-07-29
    相关资源
    最近更新 更多