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.

Другие вопросы по тегам