Size: a a a

QA — Load & Performance

2020 August 05

KY

Kirill Yurkov in QA — Load & Performance
ID:0
Переслано от Kirill Yurkov
#jmeter #reports #confluence #grafana
как совпало)
я тоже сегодня допилил свое решение для автогенерации отчетов в конфлюенсе из JMeter. в комплекте 3 дашборда и jmx со всеми натсройками. пока отзывы хорошие, может кому еще пригодиться. если будут хотелки - не стесняйтесь, стараюсь активно допиливать
https://github.com/kirillyu/jmeterReports
jmx старый лежал в github - обновил
источник

VG

Viktor Ganeles in QA — Load & Performance
Kirill Yurkov
вероятно сама сеть действительно проседает. может быть на твоей машине, может на машине на которую подключвешься. вот это не просто отдекетить. тормоза приложения можно проверить по откликам - убедиться, что проблема в нем или она только у тебя
Проверю так:
Пущу невысокую нагрузку, которая работает норм, а потом нагружу сеть JPERF-ом
Если начнутся те же проблемы - значит оно.
источник

KY

Kirill Yurkov in QA — Load & Performance
Viktor Ganeles
Проверю так:
Пущу невысокую нагрузку, которая работает норм, а потом нагружу сеть JPERF-ом
Если начнутся те же проблемы - значит оно.
ну да звучит адекватно, еще Latency смотри в первую очередь
источник

VG

Viktor Ganeles in QA — Load & Performance
Ок
источник

N

Nik in QA — Load & Performance
Всем доброе
Подскажите, пожалуйста, как вытащить переменную stringMessage из этой функции?
def Listener(): Unit = {

     val connectionFactory  = new ActiveMQConnectionFactory(activeMqUrl)
     val connection = connectionFactory.createConnection
     connection.setClientID("gatling")
     connection.start

     println("Started")

     val qsession: javax.jms.Session = connection.createSession(false, ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE)
     val queue  = qsession.createQueue("dest")
     val consumer = qsession.createConsumer(queue)
     var count = 0
     var msg : String = ""

     val listener = new MessageListener {
       def onMessage(message: Message) {
         var msg1 = ""
         message match {
           case text: BytesMessage => {

             if (message.isInstanceOf[BytesMessage] && count < 1) {

               val byteMessage = message.asInstanceOf[BytesMessage]
               var byteData = new Array[Byte](byteMessage.getBodyLength.toInt)
               byteMessage.readBytes(byteData)
               byteMessage.reset()
               var stringMessage = new String(byteData)
//                println("Received message: " + stringMessage)
               count += 1
               println("Count: " + count)

                 text.acknowledge()
                 msg1 = stringMessage
//                  println(msg)

             }
           }
           case _ => {
             throw new Exception("Unhandled Message Type: " + message.getClass.getSimpleName)
           }
             println("msg1 :" + msg1)
         }
       }
     }
     consumer.setMessageListener(listener)
   }
источник

ΙΤ

Ιωάννης Τσεκούρι... in QA — Load & Performance
Nik
Всем доброе
Подскажите, пожалуйста, как вытащить переменную stringMessage из этой функции?
def Listener(): Unit = {

     val connectionFactory  = new ActiveMQConnectionFactory(activeMqUrl)
     val connection = connectionFactory.createConnection
     connection.setClientID("gatling")
     connection.start

     println("Started")

     val qsession: javax.jms.Session = connection.createSession(false, ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE)
     val queue  = qsession.createQueue("dest")
     val consumer = qsession.createConsumer(queue)
     var count = 0
     var msg : String = ""

     val listener = new MessageListener {
       def onMessage(message: Message) {
         var msg1 = ""
         message match {
           case text: BytesMessage => {

             if (message.isInstanceOf[BytesMessage] && count < 1) {

               val byteMessage = message.asInstanceOf[BytesMessage]
               var byteData = new Array[Byte](byteMessage.getBodyLength.toInt)
               byteMessage.readBytes(byteData)
               byteMessage.reset()
               var stringMessage = new String(byteData)
//                println("Received message: " + stringMessage)
               count += 1
               println("Count: " + count)

                 text.acknowledge()
                 msg1 = stringMessage
//                  println(msg)

             }
           }
           case _ => {
             throw new Exception("Unhandled Message Type: " + message.getClass.getSimpleName)
           }
             println("msg1 :" + msg1)
         }
       }
     }
     consumer.setMessageListener(listener)
   }
Никак, ибо у тебя def Listener возвращает юнит
источник

МЁ

Мюсля 🙈 Ёшшик... in QA — Load & Performance
подскажите пожалуйста по гатлингу,
приложение на socket.io, пишу скрипт.
судя по логу гатлинг подгребает при проверке ответа в качестве  matching message сообщение которое пришло раньше, чем была отправка текущего. при чем проверка получения этого сообщения уже была в предыдущем блоке exec.
поэтому, очевидно, проверка падает
источник

N

Nik in QA — Load & Performance
Ιωάννης Τσεκούρι
Никак, ибо у тебя def Listener возвращает юнит
Подкинули мысль что как-то через callback можно..
источник

ΙΤ

Ιωάννης Τσεκούρι... in QA — Load & Performance
Nik
Подкинули мысль что как-то через callback можно..
все можно, а зачем?))
источник

ΙΤ

Ιωάννης Τσεκούρι... in QA — Load & Performance
какая задача стоит?
источник

N

Nik in QA — Load & Performance
Это сообщение из очереди, его нужно дальше в симуляцию передать
источник

N

Nik in QA — Load & Performance
Точнее тело сообщения - там xml лежит
источник

ΙΤ

Ιωάννης Τσεκούρι... in QA — Load & Performance
а как ты это в гатлинге вызываешь?
источник

N

Nik in QA — Load & Performance
Написал отдельный object и внутри сессии вызываю метод, который забирает одно сообщение из очереди
источник

ΙΤ

Ιωάννης Τσεκούρι... in QA — Load & Performance
Nik
Написал отдельный object и внутри сессии вызываю метод, который забирает одно сообщение из очереди
источник

N

Nik in QA — Load & Performance
Да
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Nik
Написал отдельный object и внутри сессии вызываю метод, который забирает одно сообщение из очереди
Я бы сделал var queueResult = new LinkedBlockingQueue<String> (); за пределами метода

И клал бы ответы туда из метода
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
var - плохой подход, но хоть что-то
источник

ΙΤ

Ιωάννης Τσεκούρι... in QA — Load & Performance
вар не обязательно использовать даже если у тебя мутабельная коллекция
источник

N

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