Как извлечь и сравнить байты из тела ответа подписчика JMS JMeter - PullRequest
0 голосов
/ 02 ноября 2018

Я отправляю запрос (в байтах из файла) JMS Publisher (снимок экрана JMS Publisher) , чтение ответа от подписчика JMS (снимок экрана JMS-подписчика) и попытайтесь таким образом сравнить данные запросов и ответов с помощью BeanShell Assertion (снимок экрана BeanShell Assertion) :

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;

Path path = Paths.get("${pathToTesting}/queries/randomBytes/randomBytes.dat", new String[0]);
byte[] originalArray = Files.readAllBytes(path);
byte[] changedArray = ctx.getPreviousResult().getResponseData();
System.out.println(changedArray.length);
if (Arrays.equals(originalArray, changedArray))
{
    System.out.println("same!");

} else {
    System.out.println("diff!");
     SampleResult.setSuccessful(false);
    SampleResult.setResponseMessage("Comparison failed");
     SampleResult.setResponseData("Byte arrays has changed after sending through connectors","UTF-8");
    IsSuccess=false;
}

В дереве результатов просмотра (в подписчике JMS) я вижу

5000 байт, полученных в BytesMessage

И вопрос в том, КАК получить АКТУАЛЬНЫЕ 5000 байтов (НЕ сообщение "5000 байтов получено в BytesMessage") и сравнить его с оригинальными байтами, которые я отправляю через JMS Publisher?

Мне нужно переконфигурировать сэмплеры \ утверждение или просто изменить код?

Буду благодарен за любую помощь и соответствующие ссылки

1 Ответ

0 голосов
/ 02 ноября 2018

Просмотр исходного кода класса JMSSampler Я не вижу, как вы можете получить фактическое содержимое ответа, не изменяя вышеупомянутый класс, так как он, по-видимому, отбрасывается, поэтому вы не сможете его утверждать.

} else if (msg instanceof BytesMessage) {
    BytesMessage bytesMessage = (BytesMessage) msg;
    buffer.append(bytesMessage.getBodyLength() + " bytes received in BytesMessage");
}

Вы создаете запрос на улучшение , и есть вероятность, что он будет включен в следующую версию или, по крайней мере, измените логику подтверждения, чтобы сравнить размер отправленного сообщения с полученным.

Также следует помнить, что начиная с JMeter 3.1 рекомендуется переключаться на тестовые элементы JSR223 и язык Groovy для любой формы сценариев, поэтому рассмотрите возможность перехода на Утверждение JSR223 при следующей доступной возможности ,

...