【问题标题】:Making gatling generate random data per request using a feeder使用 feeder 使 gatling 为每个请求生成随机数据
【发布时间】:2019-05-18 03:57:14
【问题描述】:

我正在尝试让 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)

但是,当我运行此代码时,它只调用一次我的 feeder 以创建单个 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)
}

【问题讨论】:

    标签: scala gatling


    【解决方案1】:

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

    【讨论】:

    • 遇到了同样的事情。怀疑可能是这种情况……显然,这是一个容易犯的错误。谢谢你的解释!
    【解决方案2】:

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

    改变你的场景

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 2013-01-31
    • 2018-11-14
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多