使用馈线使加特林根据请求生成随机数据

时间:2018-12-17 18:25:19

标签: 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)

但是,当我运行这段代码时,它只会调用一次供稿器来创建一个UUID,并在整个负载测试中重复使用相同的UUID。

我在遵循this thread之后创建了上面的代码。我正在使用加特林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)
}

2 个答案:

答案 0 :(得分:0)

由于您不会在循环中调用feed,通常不会在forever循环中调用,因此实际上每个虚拟用户只会生成一个值。 如果您希望每个循环迭代具有唯一值,请在循环内移动feed调用。

答案 1 :(得分:-1)

在您的设置中,您仅创建一个用户-因此您的方案仅执行一次,这意味着“提要”仅在开始遍历请求之前发生一次。

将您的情况更改为

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

进行设置(将100个用户替换为所需数量的用户)

setUp(scn.inject(atOnceUsers(100)))