使用Gatling进行可变数量的并行HTTP请求?

时间:2016-10-29 22:22:10

标签: load-testing gatling

我正在尝试在Gatling 2.2.0中建模服务器到服务器的REST API交互。有几种类型的交互"请求列表然后并行地请求列表中的所有项目#34;但我似乎无法在Gatling中对此进行建模。代码到目前为止:

def groupBy(dimensions: Seq[String], metric: String) = {
  http("group by")
    .post(endpoint)
    .body(...).asJSON
    .check(
      ...
      .saveAs("events")
    )
}

scenario("Dashboard scenario")
  .exec(groupBy(dimensions, metric)
    .resources(
      // a http() for each item in session("events"), plz 
    )
  )

我已经知道并行请求是由.resources()执行的,但我不知道如何生成一个请求列表来提供它。任何意见都表示赞赏。

2 个答案:

答案 0 :(得分:0)

不太确定您的查询,但似乎您需要发送可由{{1}}

执行的并行请求

请参阅此http://gatling.io/docs/2.0.0-RC2/general/simulation_setup.html

答案 1 :(得分:0)

以下方法对我有用。 HttpRequestBuilder的Seq将同时执行:

val numberOfParallelReq = 1000

val scn = scenario("Some scenario")
  .exec(
    http("first request")
      .post(url)
      .resources(parallelRequests: _*)
      .body(StringBody(firstReqBody))
      .check(status.is(200))
  )

def parallelRequests: Seq[HttpRequestBuilder] =
  (0 until numberOfParallelReq).map(i => generatePageRequest(i))

def generatePageRequest(id: Int): HttpRequestBuilder = {

  val body = "Your request body here...."

  http("page")
    .post(url)
    .body(StringBody(body))
    .check(status.is(200))
}