Gatling: проблема с циклической обработкой всей полезной нагрузки в моем CSV-файле фидера - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть CSV-файл, в котором содержится около 10 тыс. Запросов для моего сеанса. Я использую встроенный CSV-фидер Gatling, чтобы просмотреть все из них в моем запросе. Но я могу получить запрос в соответствии с количеством пользователей в моем тесте.

Например, если у меня 10 пользователей, то только первые 10 записей моего csv выбираются во время выполнения. Ниже приведен исходный код, который я использую.

  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)

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 08 сентября 2018

Так работает кормушка. Каждый раз, когда вы вызываете feed(feeder), вы получите один полный набор значений, сохраненных в виде атрибутов - в случае CSV - одна строка. Поскольку вы вызываете его один раз для каждого пользователя, тогда используется только 10 строк. Поместите фидер в ваш цикл, тогда значения будут выбираться на каждой итерации.

Вам также нужно будет установить режим подачи на круговой или случайный, например.

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

Без этого режима по умолчанию будет использоваться, и он позволяет получать каждую запись только один раз, после того, как это моделирование не удастся из-за «пустого устройства подачи». Циркулярный режим будет подавать данные заново, если встречается конец списка, случайные, конечно, будут делать это случайным образом, поэтому размер списка не является для него проблемой. Вы должны помнить, что это не даст вам гарантии, что каждая строка будет использоваться ровно один раз. Если симуляция должна быть короткой, она не будет использовать все записи, если она слишком длинная, ей нужно будет использовать несколько записей несколько раз. Если вам нужно будет запускать каждую строку ровно один раз, тогда было бы лучше запустить симуляцию с 10 000 пользователей или оставить 10 пользователей, но замените forever на repeat(1000) цикл.

...