首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gatling:遍历feeder中的所有条目

Gatling:遍历feeder中的所有条目
EN

Stack Overflow用户
提问于 2018-09-08 03:11:50
回答 1查看 4.7K关注 0票数 4

我有一个CSV文件,它有大约10K个条目(我的会话的请求有效负载)。在我的请求中,我使用了内置的CSV供给器来遍历它们。但是仅执行与测试中的用户数量相对应的请求数量。我希望执行整个提要。

例如,如果我有10个用户,那么在运行时只会获取CSV的前10条记录。

这是我的代码:

代码语言:javascript
复制
  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)
EN

回答 1

Stack Overflow用户

发布于 2018-09-08 07:57:59

这就是feeders的工作原理。每次调用feed(feeder)时,您将获得一整套保存为属性的值-在CSV只有一行的情况下。因为您对每个用户调用一次,所以只使用了10行。把feeder放到你的循环中,然后在每次迭代中取值。

您还需要将送纸器模式设置为循环或随机fe。:

代码语言:javascript
复制
val rqstFeeder = csv("rqst.csv").circular

如果没有该默认模式,则将使用默认模式,并且它只允许每条记录获取一次,之后,模拟将由于“空feeder”而失败。如果遇到列表末尾,循环模式将重新输入数据,随机模式当然会随机执行,因此列表大小对它来说不是问题。您必须记住,这并不能保证每一行都只使用一次。如果模拟是短的,它不会使用所有记录,如果它太长,它将需要多次使用一些记录。如果您需要每行只运行一次,那么最好使用10k用户运行模拟,或者保留10个用户,但用repeat(1000)循环替换forever

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52228409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档