Gatling - UniformRandomSwitch не работает должным образом
Я хочу перебрать все элементы файла CSV, и для каждого элемента я хочу равномерно распределить запрос так, чтобы все функции SearchProduct (SearchProduct1, SearchProduct2 и SearchProduct3) вызывались в одно и то же время.
val products= csv("products.csv").records
val start= exec(repeat(products.size, "n"){
feed(products.queue)
.uniformRandomSwitch(
exec(searchProduct1),
exec(searchProduct2),
exec(searchProduct3)
)
})
Я ожидаю, что если у меня 9 продуктов, функция SearchProduct1 вызывается 3 раза, функция SearchProduct2 вызывается 3 раза, а функция SearchProduct3 также вызывается 3 раза.
Но статистика показывает мне много раз, что функция SearchProduct3 была вызвана 5 раз, а SearchProduct2 и SearchProduct1 были вызваны 2 раза. Я делаю anithing неправильно? Должен ли я сделать повторение внутри uniformRandomSwitch
?
Так я понимаю uniformRandomSwitch
что вероятность выполнения одной из этих трех функций одинакова. Вполне возможно, что за 9 итераций 8 раз выполняется SearchProduct1 и 1 раз SearchProduct2 (а SearchProduct3 никогда). Но с uniformRandomSwitch
Я не заставляю одинаково выполнять каждую функцию. Правильно?
1 ответ
Я думаю, что вы хотите, это roundRobinSwitch
директивы. Это будет проходить по каждой цепочке, переходить к следующей и затем повторяться в начале по мере поступления новых запросов.
С uniformRandomSwitch
каждая цепь имеет 1/N
шанс быть вызванным. Только через много итераций количество вызовов, приведенное в вашем примере, сойдется до 3/3/3.