JMeter - генерировать объекты и добавлять в массив - PullRequest
0 голосов
/ 17 мая 2018

Итак, я хочу провести стресс-тестирование моего websocket-соединения и сервера, отправив большое количество сообщений.Дело в том, что сообщения отформатированы особым образом, и я изо всех сил пытаюсь сгенерировать правильные данные.

Поэтому каждый раз, когда я отправляю сообщение от клиента, отправленное сообщение на сервер выглядитПримерно так:

42["tickets","ticket_message",
{"ticket":{
 "body":[
  {"received":"2018-05-17T11:28:51.000Z","fromName":"Jesper Pedersen","body":"test\n"},
  {"received":"2018-05-17T13:30:53+02:00","body":"Yo","fromName":"Futurum Digital"}
 ] 
}]

Где каждый раз, когда создается новое сообщение, оно добавляется в тело.Поэтому, если я отправлю новое сообщение, тело будет выглядеть следующим образом:

 "body":[
  {"received":"2018-05-17T11:28:51.000Z","fromName":"Jesper Pedersen","body":"test\n"},
  {"received":"2018-05-17T13:30:53+02:00","body":"Yo","fromName":"Futurum Digital"},
  {"received":"2018-05-17T13:38:43+02:00","body":"Yo again","fromName":"Futurum Digital"}
 ] 

Мне интересно, как я мог бы зациклить этот процесс с JMeter (я думаю, с помощью препроцессора Beanshells каким-то образом).То есть я хочу, чтобы каждый цикл потока добавлял к этому телу массива новое сообщение.Мне нужен некоторый список массивов, который хранит данные в каждом цикле и добавляет новое сообщение, которое выглядит следующим образом:

{"received":"new date","body":"new message again","fromName":"Futurum Digital"}

в каждом цикле потока.

У меня есть CSV-файл, которыйсодержит сообщения, которые я устанавливаю для переменной MESSAGE:

message1,
message2

И, наверное, мне нужна какая-то функция вроде этой (Неправильный синтаксис Java, переведенный в javascript-ish):

var messages = ${SOME_GLOBAL_MESSAGES_ARRAY}
var message = {"received": new Date().toString(),"body":"${MESSAGE}", "fromName":"Futurum Digital"}

messages.push(message)
vars.put('messageList', messages);

Но у меня нет опыта работы с Java и Beanshell, и я не могу понять, как это сделать.Буду очень признателен за любую помощь!

1 Ответ

0 голосов
/ 17 мая 2018

Если у вас есть body Переменная JMeter со значением

{
  "body": [
    {
      "received": "2018-05-17T11:28:51.000Z",
      "fromName": "Jesper Pedersen",
      "body": "test\n"
    }
  ]
}

Вы можете добавить еще одну запись с помощью JSR223 Test Element и кода, подобного:

def json = new  groovy.json.JsonSlurper().parseText(vars.get('body'))
def body = json.body
def newEntry = new groovy.json.internal.LazyMap()
newEntry.put('received', '2018-05-17T13:30:53+02:00')
newEntry.put('fromName', 'foo')
newEntry.put('body', 'bar')
body.add(newEntry)
vars.put('body', new groovy.json.JsonBuilder(json).toPrettyString())

Демо-версия:

JMeter Groovy Add JSON

Дополнительная информация:

...