Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

JMeter custom latency time не HTTP-тест с использованием JSR322 Sampler

jmeter
Теги: #<Tag:0x00007f7b62690430>

(Максим Таран) #1

Приветствую, коллеги.
Уже неделю ломаю голову никак не могу допетрить.
Дано, есть #jmeter , есть приложение с очередеями. Соответственно в одной группе потоков я кладу сообщения в очеред. Из этой очереди его забирает приложение и отсылает ответ в другую очередь. Забором из второй очереди у меня занимается другая группа потоков. Так вот проблема. Нужно передать в JMeter для статистики время между посылкой сообщения и его получением.
Пытался сделать следующее - сохраняю время в мапку. Потом, когда получаю ответ на сообщение делаю, типа:

result = new SampleResult()
result.setStampAndTime(start, end-start)
result.setLatency(end - start)
log.info("Calculated time: ${(end-start)}")
return result.

Всё это с ипользованием JSR322 Sampler, но не канает так. Всё равно в ответе получается нулевое время.
Подскажите ресурс, где можно подобное найти. Я обгуглился - безрезультатно.


(Павел) #2

Т.Е, вы хотите искусственно увеличить Latency самплера, причем таким образом, чтобы это увеличение отображалось в листенерах?


(Максим Таран) #3

Так точно


(Максим Таран) #4

Фууу. Наконец разобрался. Надо делать так:

def start = getNeededTimefromSomeWhere()
SampleResult.startTime = start

В результате при выходе из самплера end time автоматически запишется текущим временем.
Если нужно более тонко, то добавляем JSR223 PostProcessor после нашего самплера и в нём имеем полный доступ до результата через переменную prev. И там уже можно поменять и время начала и время конца. В результате - в Aggregate Report попадает нужное нам время.