Gatling нагрузочное тестирование и запуск сценариев - PullRequest
1 голос
/ 23 октября 2019

Я хочу создать три сценария:

  • Первый сценарий будет выполнять кучу запросов GET в течение 30 с
  • Второй и третий сценарии будут выполняться параллельно и ждать, покапервый закончен.

Я хочу, чтобы запросы из первого сценария были исключены из отчета.

У меня есть общее представление о том, чего я хочу достичь, но не вижу ожидаемогоРезультаты:

val myFeeder = csv("somefile.csv")

val scenario1 = scenario("Get stuff")
.feed(myFeeder)
.during(30 seconds) {
  exec(
      http("getStuff(${csv_colName})").get("/someEndpoint/${csv_colName}")
  )
}

val scenario2 = ...

val scenario3 = ...

setUp(
  scenario1.inject(
    constantUsersPerSec(20) during (30 seconds)
  ).protocols(firstProtocaol),


  scenario2.inject(
    nothingFor(30 seconds), //wait 30s
    ...
  ).protocols(secondProt)

  scenario3.inject(
    nothingFor(30 seconds),  //wait 30s
    ...
  ).protocols(thirdProt)

)

Я вижу, как первый сценарий запускается на протяжении всего теста. Это не останавливается после 30-х годов?

Для первого сценария я хотел бы циклически просмотреть файл CSV и выполнить запрос для каждой строки. Возможно 5-10 запросов в секунду, как мне этого добиться?

Я бы также хотел, чтобы он остановился через 30 секунд, а затем запустил две другие параллельно. Отсюда nothingFor в последних двух сценариях выше.

Также, как исключить из отчета, возможно ли это?

Спасибо

1 Ответ

0 голосов
/ 24 октября 2019

Вероятно, вы не получите ожидаемых результатов из-за комбинации настроек между вашим профилем впрыска и вашим сценарием "Получить материал".

constantUsersPerSec(20) during (30 seconds)

будет запускать 20 пользователей по сценарию "Получить материал" каждую секундув течение 30 секунд. Так что даже в течение 30-й секунды 20 пользователей НАЧНУТ "Получить материал". Инъекционный файл управляет только тем, когда пользователь запускается, а не тем, как долго он активен. Поэтому, когда пользователь выполняет сценарий «Get Stuff», он делает запрос «get» несколько раз в течение 30 секунд из-за цикла .during.

Так что, по крайней мере, у вас будут пользователи, выполняющие«Получить материал» в течение 60 секунд - хорошо в выполнении других ваших сценариев. В зависимости от времени выполнения вашего вызова getStuff оно может быть даже больше.

Чтобы избежать этого, вы можете точно определить, сколько времени вы хотите, чтобы сценарий «Получить материал» выполнялся, установите его в профиле внедрения. и не зацикливаться на сценарии. В качестве альтернативы, вы можете просто установить значения «nothingFor» на> 60 с.

Чтобы исключить вызовы Get Stuff из отчетов, вы можете добавить глушение к определению протокола (при условии, что оно не передается другим вашим запросам). Больше информации на https://gatling.io/docs/3.2/http/http_protocol/#silencing

...