Size: a a a

QA — Load & Performance

2020 April 07

ИД

Илья Деськов in QA — Load & Performance
Осознал, что в моём случае нужно другое действие:
START_NEXT_ITERATION_OF_THREAD
Но всё равно не слушается(
источник

ВС

Вячеслав Смирнов in QA — Load & Performance
Илья Деськов
Всем привет! Может доводилось кому-то из jsr223 отправлять тред на следующую итерацию? пробую с помощью:
ctx.setTestLogicalAction(org.apache.jmeter.threads.JMeterContext.TestLogicalAction.START_NEXT_ITERATION_OF_CURRENT_LOOP);
Но jmeter не ругается, но и не слушается
Привет.

import org.apache.jmeter.threads.JMeterContext.TestLogicalAction
ctx.setTestLogicalAction(TestLogicalAction.START_NEXT_ITERATION_OF_CURRENT_LOOP)
источник

ИД

Илья Деськов in QA — Load & Performance
Решение найдено!
SampleResult.setTestLogicalAction(org.apache.jmeter.threads.JMeterContext.TestLogicalAction.START_NEXT_ITERATION_OF_THREAD);
источник

KY

Kirill Yurkov in QA — Load & Performance
Илья Деськов
Всем привет! Может доводилось кому-то из jsr223 отправлять тред на следующую итерацию? пробую с помощью:
ctx.setTestLogicalAction(org.apache.jmeter.threads.JMeterContext.TestLogicalAction.START_NEXT_ITERATION_OF_CURRENT_LOOP);
Но jmeter не ругается, но и не слушается
думаю надо сделать в отдельном треде модуль контроллер. в основном треде сделать регулярку, которая будет проверять наличие куки. далее сделать иф, который проверяет значение в регулярки, если оно содержит куку - тогда отправлять в модуль контроллер в другом треде (он может быть даже выключен - сам тред). в модуле уже авторизация
источник

KY

Kirill Yurkov in QA — Load & Performance
Kirill Yurkov
думаю надо сделать в отдельном треде модуль контроллер. в основном треде сделать регулярку, которая будет проверять наличие куки. далее сделать иф, который проверяет значение в регулярки, если оно содержит куку - тогда отправлять в модуль контроллер в другом треде (он может быть даже выключен - сам тред). в модуле уже авторизация
тогда можно в любом месте сделать авториацию и продолжить
источник

ИД

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

import org.apache.jmeter.threads.JMeterContext.TestLogicalAction
ctx.setTestLogicalAction(TestLogicalAction.START_NEXT_ITERATION_OF_CURRENT_LOOP)
ща попробую, красивее выглядит)
источник

ВС

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

ИД

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

import org.apache.jmeter.threads.JMeterContext.TestLogicalAction
ctx.setTestLogicalAction(TestLogicalAction.START_NEXT_ITERATION_OF_CURRENT_LOOP)
если обращаться к ctx, то не слушается, если обращаться к SampleResult, то работает
источник

KY

Kirill Yurkov in QA — Load & Performance
а это постпроцессор?
источник

KY

Kirill Yurkov in QA — Load & Performance
хотя ctx должен быть везде
источник

ВС

Вячеслав Смирнов in QA — Load & Performance
import org.apache.jmeter.threads.JMeterContext.TestLogicalAction

SampleResult.setTestLogicalAction(TestLogicalAction.START_NEXT_ITERATION_OF_CURRENT_LOOP)

Вот так работает
источник

ИД

Илья Деськов in QA — Load & Performance
так вот и я так думал
источник

ИД

Илья Деськов in QA — Load & Performance
Слава, ага. А если из постпроцессора, то через prev
источник

ВС

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

ИД

Илья Деськов in QA — Load & Performance
Kirill Yurkov
а это постпроцессор?
Отлаживал в самплере
источник

ИД

Илья Деськов in QA — Load & Performance
Спасибо!
источник

KY

Kirill Yurkov in QA — Load & Performance
#jmeter тут сделал легкую проверку работы балансировщика с возможностью понять откуда получаем проблемные запросы.
на каждый семплер-обращение к системе делаем 1 Dummy Sampler, из семплера обращения с помощью jsr223 postproccesor списываем все нужные нам данные:
def sampleResult = prev;
TransactionName = sampleResult.getSampleLabel();
responseTime = sampleResult.getTime();
size = sampleResult.getBytesAsLong();
isSuccessful =sampleResult.isSuccessful();
connect = sampleResult.getConnectTime()
latenct = sampleResult.getLatency()
vars.put("respTime", responseTime.toString())
vars.put("latency", latenct.toString())
vars.put("connect", connect.toString())
из хидеров запроса можно регуляркой дернуть хост ответа.
его подставляем в имя Dummy Sampler - заполняем остальные поля и получаем детальный повтор каждого семплера, который может включать в себя ответы из предыдущего и не создавать доп нагрузку на систему :)
источник

KY

Kirill Yurkov in QA — Load & Performance
когда есть несколько проблемных хостов - дает хорошие результаты
источник

KY

Kirill Yurkov in QA — Load & Performance
особенно когда хосты разные
источник

KY

Kirill Yurkov in QA — Load & Performance
или на каких то крутятся сторонние приложения
источник