Jmeter, beanshell – как записать вывод exec() в строку?

У меня есть следующий код в моем постпроцессоре beanshell, который выполняет программу C # и записывает ее вывод в консоль Jmeter:

import it.sauronsoftware.base64.Base64;

prev.setDataEncoding("ANSI");
encoded = Base64.encode(prev.getResponseDataAsString());
print (exec("C:\\prog\\prog.exe decode " + encoded));

Для меня это работает достаточно быстро, но я хочу передать вывод из prog.exe в строку (а затем вывести эту строку в качестве данных ответа). Можно ли это сделать с помощью постпроцессора beanshell? Если нет, то как проще всего это сделать?


person Ray Poward    schedule 11.10.2012    source источник


Ответы (1)


Используйте Сэмплер процессов ОС после каждого веб-сервиса, этот сэмплер будет обрабатывать декодирование ответа. .

Обратите внимание, что это именно то, что вы делаете здесь с дополнительной стоимостью Beanshell.

Он был представлен в JMeter 2.7 и позволяет запускать программу C# и получать выходные данные в виде ResponseData.

person UBIK LOAD PACK    schedule 11.10.2012
comment
Я не уверен, что это сработает в моем случае, так как я должен сначала получить ответ сервера, чтобы обработать его с помощью этой программы, и в моих планах тестирования есть по крайней мере дюжина пробоотборников SOAP, получающих разные ответы, поэтому передавайте ответы между пробоотборниками может быть сложно. - person Ray Poward; 12.10.2012
comment
Я не понимаю, почему вы думаете, что это будет сложно. В любом случае использование файла журнала не вариант, так как во время нагрузочного теста они будут перемешаны - person UBIK LOAD PACK; 13.10.2012
comment
Было бы немного проще просто добавить постпроцессор ко всей группе потоков, а извлечение вывода exec() в строку также может быть полезно для препроцессоров beanshell и утверждений. Однако у меня работает OS Process Sampler, поэтому я отмечаю это как ответ. Спасибо за вашу помощь! - person Ray Poward; 15.10.2012