Gatling:在我的馈送器CSV文件中循环遍历所有有效负载的问题

问题描述 投票:1回答:1

我有一个CSV文件,我的会话有大约10K的请求有效负载。我正在使用内置的gsling csv馈线在我的请求中循环遍历所有这些。但我能够根据我测试中的用户数来获取请求。

例如,如果我有10个用户,那么在运行时期间只会获取我的csv的前10个记录。以下是我正在使用的源代码。

  val rqstFeeder = csv("rqst.csv")
  val user = ConfigFactory.load().getInt("app.loadVariables.user")
  var URL: String = ConfigFactory.load().getString("app.loadVariables.URL")

  val httpProtocol = http
    .header(HttpHeaderNames.Accept, HttpHeaderValues.ApplicationJson)
    .inferHtmlResources()

  object GSLBRequest {
    val getData =
      exec(
        http("Get GSLB Data")
          .post(URL)
          .body(StringBody(ConfigFactory.load().getString("app.loadVariables.body"))).asJSON
          .check(status.is(200))
      )
  }

  val customInject = constantUsersPerSec(user) during (5 seconds)
  val source = scenario("GSLB Endpoint")
    .feed(rqstFeeder)
    .forever(exec(GSLBRequest.getData)).inject(customInject);

  )

  setUp(source)
    .protocols(httpProtocol).maxDuration(30 seconds)

任何帮助表示赞赏。

scala performance-testing load-testing gatling scala-gatling
1个回答
1
投票

这就是喂食器的工作原理。每次调用feed(feeder)时,您将获得一组完整的值作为属性保存 - 如果是CSV一行。由于每个用户调用一次,因此只使用10行。将进纸器放入循环中,然后在每次迭代中获取值。

您还需要将进纸器模式设置为圆形或随机fe:

val rqstFeeder = csv("rqst.csv").circular

如果没有这个默认模式,它将只允许获取每个记录一次,之后模拟将因“空馈线”而失败。如果遇到列表末尾,循环模式将再次从全部提供数据,随机将当然随机进行,因此列表大小不是问题。您必须记住,这不会保证每行只使用一次。如果模拟是短的,它不会使用所有记录,如果它太长,它将需要多次使用一些记录。如果你需要准确地运行每一行,那么最好用10k用户运行模拟或保留10个用户,但用forever循环替换repeat(1000)

© www.soinside.com 2019 - 2024. All rights reserved.