Size: a a a

QA — Load & Performance

2021 November 13

NM

NoEndOutcry💡🔋🚓 Mikst... in QA — Load & Performance
упорный какой бот
источник

O

Olga in QA — Load & Performance
Круто, спасибо :) глянула
источник

VG

Viktor Ganeles in QA — Load & Performance
А я думал там проблема в том, что jmeter:
- сперва собирает XML-дерево всего сценария
- потом уже инитится та часть, которая обрабатывает проперти или user defined variable, функции и так далее

но я в код не лазал
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Да, ты прав. Так и есть
источник

VG

Viktor Ganeles in QA — Load & Performance
значит не получится туда переменные вписать.
А вот почему нельзя в ней использовать переменные окружения (типа %appdata% или %temp%) - не понимаю.
Мы сперва хотели при каждом запуске в переменную операционки (сессии) класть путь к конкретному JMX а потом запускать JMETER
но не сработало 😩
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Думаю получится. Есть такой механизм в user.properties
jsr223.init.file

Он работает до загрузки JMX. И если там написать vars.put, то на момент загрузки JMX все будет ок
источник

KY

Kirill Yurkov in QA — Load & Performance
так Володя дал ответ уже, switch и parameterzied controller
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Возможно )
источник

KY

Kirill Yurkov in QA — Load & Performance
должно быть проще)
источник

VG

Viktor Ganeles in QA — Load & Performance
Нет.
Parametrized controller позволяет менять значения переменных

Но переменные нельзя использовать в include controller как путь

А у нас идея была именно в том, чтобы все скрипты подключать через include
источник

VG

Viktor Ganeles in QA — Load & Performance
То есть это вызов jsr223 до чтения jmx-файла?

Ну, проперти я ведь вовсе могу передать из командной строки - гарантированно до всего остального.
Но jmeter не читает проперти в этом месте.
Хотя, если поправить код jmeter, чтобы начал читать…
источник

O

Oleksii in QA — Load & Performance
Если я правильно понял, идея форкнуть репу, заменить одну строку и юзать свой jar?
источник

AK

Andrey K in QA — Load & Performance
хы) а в 2020 я там занимался подготовкой к БФ))
источник

KY

Kirill Yurkov in QA — Load & Performance
это лёгкий путь)
источник

O

Oleksii in QA — Load & Performance
Когда я пробовал добавить переменную вместо реального пути к файлу, то проблемы начались при сохранении файла - я получил ошибку сохранения файла, пока не вернул заглушку, поэтому подозреваю, что подход не сработает из гуя, можно править голый хмл, но тогда саппорт файлов будет уже без гуя, только редактирование голого хмл.

Или кто-то уже попробовал подход?
источник

O

Oleksii in QA — Load & Performance
Пул реквест, расширяющий функционал, - всегда самый легкий путь ;)
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Посмотрел снова. Обработка переменных начинается только при старте. А сборка сценария делается до старта, вот в этом причина вся. Поэтому Include Controller не сможет поддерживать переменные.

Но можешь делать символические ссылки.
Использовать Kotlin DSL
Python DSL
Java DSL

Или awk/sed/... до запуска сценария, которые сделают замены в xml
источник

VG

Viktor Ganeles in QA — Load & Performance
Спасибо
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Магия с поддержкой переменных оказалась такой
При запуске, когда сценарий уже собран, делается метод PreCompile, и он смотрит на свойства и если в некоторых есть признаки функций, то такие свойства становятся
вот такими:
jmeter\src\core\src\main\java\org\apache\jmeter\testelement\property\FunctionProperty.java
а изначально они просто строковые

А уже во время выполнения
метод получения значения свойства использует метод FunctionProperty, который делает вычисление содержимого

Вот если бы все вообще поля были по умолчанию FunctionProperty, то тогда бы была проблема производительности.
Но даже в этом случае это не сработало бы для IncludeController, который сработал до запуска ((
источник

VG

Viktor Ganeles in QA — Load & Performance
Спасибо, что помог разобраться
источник