Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Как собирать кастомную статистику в Jmeter

performance
jmeter
infrastructure
Теги: #<Tag:0x00007fedb95bb040> #<Tag:0x00007fedb95baf00> #<Tag:0x00007fedb95bab40>

(Роман Румянцев) #1

Есть groovy код, который получает определенное значение параметра тестируемого приложения. Как это визуализировать в jmeter? Нужно построить график этого параметра во времени. Я что то начал смотреть на jsr223 listner, но совершенно не могу понять как его применить. Может быть есть у кого то ссылочка?


(Vasiliy Rakshin) #2

он куда получает эти данные? может, записывать их в файл? csv какой-нить, а потом в экселе стройте себе любые графики.


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

Для этого используется JSR223 Sampler.
Код примерно такой:

	def message = new XmlParser().parseText(ReceivedMessage)
	String id = message.received.@id[0].toString()
	log.debug("Received id: $id")
	def ids = id.split('_')
	long start = ids[2] as long
	long end = System.currentTimeMillis()
	SampleResult.startTime = start
//	log.info("Calculated time: ${(end-start)}")
//	log.info("Sample Time: ${SampleResult.time}")
	SampleResult.setResponseMessage("Fake response message!!! Calculated time: ${(end-start)}")
	SampleResult.label = 'Real message response'

Если в кратце, то возвращается в SampleResult. И имя JSR223 Sampler будет потом видно в отчёте.


(Роман Румянцев) #4

никуда не пишется. Мне не совсем понятно что с этим значением вообще делать. Предположим, у меня есть набор потоков, которые обеспечивают нагрузку. Параллельно я хочу запустить поток, который будет с помощью скрипта получать нужные данные с сервера. Но я не пойму как мне оформить этот скрипт, что бы эти данные потом можно было бы посмотреть в виде графика. Вариант с экселем мне не нравится. Он какой то очень офлайновый. Желательно было бы сделать это средствами jmeter.


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

Что-то я не понял. О каких данных с сервера мы тогда говорим? CPU, память? Всё это обеспечивается через jmeter. Время ответа как раз измеряете скриптом, которым грузите. Я например, писал этот код, потому что общение с сервером происходит в асинхронном режиме через очереди и я не мог связать запрос-ответ напрямую во время выполнения запроса.


(Роман Румянцев) #6

Нет. Это глубина очередей тестируемого приложения. Получить ее средствами jmeter нельзя.


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

Тогда, то что я написал ваш вариант. Вытаскиваете вашу глубину очереди и публикуете как метрику.


(Eugene Borodenkov) #8

выгружаешь эти данные в файл и обрабатываешь например в pandas и отображаешь в plotly