使用 feeder 让加特林根据请求生成随机数据

Viv*_*Rao 5 scala gatling

我试图让加特林为每个 POST 请求创建随机数据。我在 stackoverflow 和其他地方关注了一些帖子。我想出了这个场景 -

def randomUuid = UUID.randomUUID().toString
val feeder = Iterator.continually(Map("user" -> randomUuid))

def createPostRequest = {
  http("createuser")
    .post("http://jsonplaceholder.typicode.com/posts")
    .body(StringBody("${user}"))
    .check(status.is(201))
}

val scn = scenario("some load test")
  .feed(feeder)
  .forever(exec(createPostRequest))

setUp(scn.inject(atOnceUsers(1)))
  .maxDuration(20 minutes)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此代码时,它仅调用我的 feeder 一次来创建单个 UUID,并在整个负载测试过程中重复使用相同的 UUID。

我在关注此线程后创建了上面的代码。我正在使用加特林 2.2.5。这是我的 sbt 配置 -

import sbt._

object Dependencies {
  private val gatlingHighcharts = "io.gatling.highcharts" % "gatling- 
  charts-highcharts" % "2.2.5"                    % "test"
  private val gatlingTest =       "io.gatling"            % "gatling-test-framework"    % gatlingHighcharts.revision % "test"

  val gatlingDependencies = Seq(gatlingHighcharts, gatlingTest)
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*arr -1

在您的设置中,您只创建一个用户 - 因此您的场景仅执行一次,这意味着“feed”仅在您开始循环请求之前发生一次。

将您的场景更改为

val scn = scenario("some load test")
.feed(feeder)
.exec(createPostRequest)
Run Code Online (Sandbox Code Playgroud)

并进行设置(将 100 替换为您想要的任意数量的用户)

setUp(scn.inject(atOnceUsers(100)))
Run Code Online (Sandbox Code Playgroud)