Как ввести случайное нет. пользователей в Gatling?

#scala #gatling

#scala #gatling

Вопрос:

Я хотел бы ввести случайное число. пользователей в Gatling. Например,

В течение первых 10 секунд 100 пользователей

В течение следующих 15 секунд 25 пользователей,

В течение следующих 2 секунд 1000 пользователей и так далее..

случайное время со случайным количеством пользователей

Один сложный обходной путь, который я нашел, заключается в следующем:

 val r=new scala.util.Random
  setUp(
    scn.inject(

         constantUsersPerSec(10) during(10 seconds) randomized,
             constantUsersPerSec(10 r.nextInt(500)) during(15 seconds) randomized,
             constantUsersPerSec(210 r.nextInt(500)) during(25 seconds) randomized,
             constantUsersPerSec(510 r.nextInt(520)) during(55 seconds) randomized,
             constantUsersPerSec(170 r.nextInt(100)) during(5 seconds) randomized,
             constantUsersPerSec(270 r.nextInt(1010)) during(5 seconds) randomized,
             constantUsersPerSec(710 r.nextInt(5100)) during(1 minute) randomized,
             constantUsersPerSec(5 r.nextInt(40)) during(100 seconds) randomized,
             constantUsersPerSec(710 r.nextInt(5200)) during(15 seconds) randomized,
             constantUsersPerSec(0 r.nextInt(20)) during(10 seconds) randomized,


         constantUsersPerSec(10) during(10 seconds) randomized,
             constantUsersPerSec(10 r.nextInt(500)) during(15 seconds) randomized,
             constantUsersPerSec(210 r.nextInt(500)) during(25 seconds) randomized,
             constantUsersPerSec(510 r.nextInt(520)) during(55 seconds) randomized,
             constantUsersPerSec(170 r.nextInt(100)) during(5 seconds) randomized,
             constantUsersPerSec(270 r.nextInt(1010)) during(5 seconds) randomized,
             constantUsersPerSec(710 r.nextInt(5100)) during(1 minute) randomized,
             constantUsersPerSec(5 r.nextInt(40)) during(100 seconds) randomized,
             constantUsersPerSec(710 r.nextInt(5200)) during(15 seconds) randomized,

             constantUsersPerSec(1) during(10 seconds),

           ).protocols(kafkaConf))
  

Есть ли какой-нибудь простой способ сделать это?

Другими словами, есть ли какой-либо способ ввести в цикл?

P.S: Я пробовал repeat() для сценария, но это совершенно другое дело. Вместо того, чтобы вызывать один раз, он вызывает n раз, т.е. он выполняет действие n раз для каждого пользователя.

Ответ №1:

метод .inject может выполнять множество шагов внедрения, поэтому вы можете просто использовать функцию для генерации этого массива

 val r=new scala.util.Random

setUp(
    scn.inject(
        (1 to 10).map(i => constantUsersPerSec(r.nextInt(500)) during (r.nextInt(30) seconds) randomized)
    )
).protocols