Size: a a a

QA — Load & Performance

2020 October 28

VG

Viktor Ganeles in QA — Load & Performance
а это просто груви-код
в jsr223-семплере мы же запятые в конце не пишем
источник

MN

Marat N in QA — Load & Performance
ну согласен, просто в этом контроллере может он по другому итерпретирует🤷‍♂️. В общем так хэлпер диалог предлагает делать
источник

V

Vladimir in QA — Load & Performance
Сейчас наблюдаю такую же проблему у себя. Не отрабатывает условие, причём иногда оно всё таки работает
источник

V

Vladimir in QA — Load & Performance
Причём всё куда проще, но не всегда орабатывает
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Vladimir
Причём всё куда проще, но не всегда орабатывает
А чекбокс ... as Variable Expression осознанно снят?
источник

V

Vladimir in QA — Load & Performance
Вячеслав Смирнов
А чекбокс ... as Variable Expression осознанно снят?
да, снял специально. На результат не повлияло. пробовал по-всякому
источник

V

Vladimir in QA — Load & Performance
по дебаг самплеру я вижу, что пришло значение которое отвечает условию, но if не срабатывает
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Vladimir
по дебаг самплеру я вижу, что пришло значение которое отвечает условию, но if не срабатывает
Красными буквами написано, что надо либо использовать
__groovy(...) или __jexl3(...)
Без галочки ... as Variable Expression.

Либо одну переменную, с такой галочкой ... as Variable Expression

У Вас не просто переменная, и при этом нет ни __groovy ни __jexl3.

У @Ganeles есть __groovy, но ещё поставлена галочка ... as Variable Expression, которой быть не должно.
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Нет, ошибся я.
https://octoperf.com/blog/2019/03/28/jmeter-if-controller/
Прочел описание подробное.

По умолчанию JavaScript-выражение вычисляет IF. Рекомендуют JavaScript заменять на groovy или jexl3, для скорости, явно указав __groovy(...) или __jexl3(...)
источник

V

Vladimir in QA — Load & Performance
Я не совсем понимаю почему, но вот в таком виде отрабатывает как надо
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Для Groovy и строк в двойных кавычках также надо знать особенность. Для двойных кавычек используется интерполяция строк. Такая строка - сложный динамический объект.

https://groovy-lang.org/syntax.html

Groovy код вида
a=123;
system.out.println("${a}");
выдаст 123

А код с одинарными кавычками
a=123;
system.out.println('${a}');
выдаст
${a}

А что будет если в JMeter, где уже есть своя интерполяция, применить вызов ${__groovy(...)}, а внутри применить двойные кавычки, где может быть еще и встретится ${...} не знаю пока.

Вот Виктор попробовал у него
"NONE" == "NONE" выдает false иногда
возможно так и надо для Groovy, не сработала дедупликация строк и строки стали разными объектами, и тогда фиксом будет
'NONE' == 'NONE'
может быть

Общий совет - стараться не использовать в Groovy "...", а стараться использовать '...', это не просто char, это строки. Так
1) производительнее для JVM
2) надежнее для JMeter
И если явно нужна интерполяция, тогда да использовать "..."
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Также есть особенности сравнения в JavaScript, который в IF по умолчанию. Там вообще магия и шаманизм
источник

V

Vladimir in QA — Load & Performance
Спасибо за помощь! Насчёт шаманизма - это точно)
источник
2020 October 29

VG

Viktor Ganeles in QA — Load & Performance
Вячеслав Смирнов
Для Groovy и строк в двойных кавычках также надо знать особенность. Для двойных кавычек используется интерполяция строк. Такая строка - сложный динамический объект.

https://groovy-lang.org/syntax.html

Groovy код вида
a=123;
system.out.println("${a}");
выдаст 123

А код с одинарными кавычками
a=123;
system.out.println('${a}');
выдаст
${a}

А что будет если в JMeter, где уже есть своя интерполяция, применить вызов ${__groovy(...)}, а внутри применить двойные кавычки, где может быть еще и встретится ${...} не знаю пока.

Вот Виктор попробовал у него
"NONE" == "NONE" выдает false иногда
возможно так и надо для Groovy, не сработала дедупликация строк и строки стали разными объектами, и тогда фиксом будет
'NONE' == 'NONE'
может быть

Общий совет - стараться не использовать в Groovy "...", а стараться использовать '...', это не просто char, это строки. Так
1) производительнее для JVM
2) надежнее для JMeter
И если явно нужна интерполяция, тогда да использовать "..."
Проверю, спасибо.
источник

KY

Kirill Yurkov in QA — Load & Performance
я всегда прописываю условия явно и их результат тоже. ${__groovy(if ("none"=="none") {return true})}
источник

VG

Viktor Ganeles in QA — Load & Performance
Фига себе
Но выглядит логично, конечно.
Попробую
источник

VG

Viktor Ganeles in QA — Load & Performance
Я ещё не понимаю, почему жметру всюду легко переменную прочитать, а в условиях if-controller тяжело.

Иными словами, почему не рекомендуется просто писать ${var1}==${var2}

Но это уже не относится к изначальному вопросу
источник

KY

Kirill Yurkov in QA — Load & Performance
потому что компиляция будет не в груви а средствами самого жметер. а это ему сложнее ибо он не такой крутой как груви
источник

NM

NoEndOutcry💡🔋🚓 Mikst... in QA — Load & Performance
Коллеги спасайте помогайте, вчера весь вечер пытался сохранить хоть как-то сгенеренный файл на диск средствами того самого груви. Исходные данные - 2 переменные в одной контент, в другой имя файла, сохранить надо например в C:\temp, но на деле пофиг уже куда. дальше вот этого я не прошел, не работает. а я тот еще мамкин кодер, набравшийся примеров со стаковерфлоу
источник

NM

NoEndOutcry💡🔋🚓 Mikst... in QA — Load & Performance
def save = vars.get("send_filecontent")
def name = vars.get("filenamefor")
FileWriter fstream = new FileWriter("name", true);
BufferedWriter out = new BufferedWriter(save);
out.write(vars.get("send_filecontent"));
источник