Описание проблемы
У меня есть сценарий с двумя разными примерами, вложенными в группу пошаговых потоков (а не в обычную группу потоков). В каждом образце имеется препроцессор JSR223 с небольшим кодом для генерации UUID.
Я ожидаю, что препроцессор JSR223 будет генерировать новый уникальный UUID для каждого потока для каждой новой итерации.
Однако в моей ситуации UUID не обновляется и дублируется во всех потоках и всех итерациях.
Эта проблема возникает только в группе пошаговых потоков, а не в обычной группе потоков.
Итак, мой вопрос: как я могу создать новый уникальный UUID для каждого потока и итерации в JMeter?
Что я сделал до сих пор?
В первом примере я использую препроцессор JSR223 для генерации UUID и сохранения его в строке «ref1».
Затем я присваиваю значение «ref1» новой переменной с именем «reference_1», чтобы передать ее в запросе. Пожалуйста, проверьте скриншот ниже для справки.
Сэмплер Jmeter: введите сюда описание изображения
Вывод Jmeter Listner: введите сюда описание изображения
Для второго образца я выполняю те же шаги для генерации UUID, но теперь я передаю этот второй UUID во втором образце, а также сопоставляю первый UUID со вторым образцом.
Если это поможет, я добавил очень простую демонстрацию того, что я ожидаю, и того, что я получаю: Ожидание и факт (упрощенно) введите здесь описание изображения
Любая помощь высоко ценится. Спасибо!





Если вы читаете документацию JMeter (кто вообще читает документацию в 2024 году?) на JSR223 Sampler, вы увидите там следующий текст
В тестовых элементах JSR223 есть функция (компиляция), которая позволяет существенно повысить производительность. Чтобы воспользоваться этой функцией:
- Используйте файлы сценариев вместо их встраивания. Это заставит JMeter скомпилировать их, если эта функция доступна в ScriptEngine, и кэшировать их.
- Или используйте текст сценария и проверьте свойство «Кэшировать скомпилированный сценарий», если оно доступно. При использовании этой функции убедитесь, что ваш код сценария не использует переменные JMeter или вызовы функций JMeter непосредственно в коде сценария, поскольку при кэшировании будет кэшироваться только первая замена. Вместо этого используйте параметры сценария.
Поэтому вам либо нужно поместить функцию __UUID() в раздел «Параметры», например:
или сгенерируйте UUID без вызова функции, например:
String ref1 = UUID.randomUUID().toString()
Дополнительная информация о сценариях Groovy в JMeter: Apache Groovy: для чего используется Groovy?
Спасибо, Иван! Я воспользовался вашим предложением по варианту 1 и создал отдельный файл отличного сценария и скомпилировал его во время выполнения, а не жестко закодировал. Работало как шарм. Ваше здоровье!