Рандомизация количества повторов для разных пользователей в Гатлинге - PullRequest
0 голосов
/ 03 октября 2019

В настоящее время я пытаюсь написать сценарий в Гатлинге, где я хотел бы, чтобы действие повторялось от 1 до 8 раз. Случайность должна быть индивидуальной для каждого пользователя, поэтому, например, один пользователь может получить 3 повторения, а другой - 7.

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

Я попробовал следующее:

class MySimulation extends Simulation {
  private val myScenario = scenario("Scenario")
    .repeat(Random.nextInt(8) + 1) {
      // some stuff
    }

  setUp(myScenario.inject(rampUsers(100) during (60 seconds)))
}

Однако, в конечном итоге это компилируется в одно случайное число, а затем используется длякаждый пользователь. Поэтому, если генерация случайных чисел получает 5, каждый пользователь в конечном итоге будет повторять 5 раз, а это не то, что я хочу.

Есть ли способ в Гатлинге, чтобы каждый пользователь получал разные случайные числа для функции повтора? Или это будет работать только с постоянными числами?

1 Ответ

1 голос
/ 03 октября 2019

То, как вы пытались, не сработало, так как ваш сценарий, как определено, является компоновщиком, который запускается один раз при запуске, поэтому Random.nextInt вызывается только один раз.

Но есть несколько способов, которыми вы могли бы достичьто, что вы хотите.

Самое простое (поскольку вы просто хотите получить случайное число) было бы использовать набирающий EL для случайного выбора элемента последовательности.

во-первых, определите значение scala val с помощьютребуемый диапазон чисел

private val times = 1 to 8

, затем поместите свой диапазон в сессию и используйте EL, чтобы получить случайное значение из коллекции

.exec(_.set("times", times))
.repeat("${times.random()}" ) {
  // some stuff
}

В качестве альтернативы, вы можете определить пользовательскийfeeder - этот подход позволяет вам делать такие вещи, как случайные строки

private val times = Iterator.continually( Map( "times" -> Random.nextInt(8) + 1))

Затем просто введите и используйте значение "times"

.feed(times)
.repeat("${times}") {
  // some stuff
}
...