Проблема с параметром curl в ОС Process Sampler

Я пытаюсь выполнить запрос HTTP(s) в плане тестирования Jmeter, используя OS Process Sampler, но получаю ошибку по одному из параметров curl. Я использую Jmeter на компьютере с Windows.

Вот оригинальная команда curl, которая работает, если я запускаю ее из командной строки:

curl -k -L -b .\cookies -c .\cookies -E h:\curl\EXP\curl\bin\publicCert.pem.crt --key H:\curl\EXP\curl\bin\privateKey.pem.key https://myhost.foo.com//xxx.cgi?encreply=xxxxxxxxx

Ошибка, которую я вижу в Jmeter:

curl: option --key H:\curl\EXP\curl\bin\privateKey.pem.key: is unknown
curl: try 'curl --help' or 'curl --manual' for more information

Я думаю (но не уверен), что проблема в том, что Jmeter, похоже, не нравится параметр "--key", возможно, из-за 2 черточек ("-").

Я предполагаю, что причина в том, что раньше у меня была проблема с параметром для сертификата, который был "--cert", и я смог устранить эту более раннюю проблему, изменив параметр "-E", который имеет единственный тире.

К сожалению, похоже, что для ключевого файла нет параметра с одной чертой.

Может кто-нибудь сказать мне, почему я получаю эту ошибку, когда я пытаюсь запустить curl под Jmeter, но это нормально, когда я запускаю curl из командной строки?

Спасибо!

PS FYI, причина, по которой я пытаюсь отправить запрос через OS Process Sampler вместо HTTP-запроса, состоит в том, что в URI есть некоторые символы, которые вызывают шаг HTTP-запроса, чтобы вызвать исключение URI. Я не могу закодировать этот URI, потому что он имеет какой-то хэш, и если я кодирую URL, это приводит к тому, что он должен быть плохим на стороне сервера, поэтому я пытаюсь выяснить, могу ли я заменить его, используя OS Process Sampler.

2 ответа

Решение

Опция 1

Хорошо выполненный тест JMeter должен выполнять то, что делает реальный пользователь, особенно в вашем случае, я ожидаю, что вы запускаете curl из CMD или Powershell

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


Вариант 2

Если вы планируете выполнить HTTP-запрос, я ожидаю, что наиболее очевидным выбором будет использование сэмплера HTTP-запроса.

Вы можете просто записать свой вызов CURL, используя JMeter HTTP (S) Test Script Recorder, curl может быть настроен на прокси пользователя JMeter через -x опция командной строки как:

curl -x http://localhost:8888  -k -L -b .\cookies -c .\cookies ......

Что касается прохождения сертификата на стороне клиента с использованием JMeter - это можно сделать с помощью SSL Manager или системных свойств.


Вариант 3

Имейте в виду, что в 99% случаев проще использовать JSR223 Sampler для выполнения произвольной команды ОС, синтаксис будет примерно таким:

return "your command here".execute().text

Демо (я печатаю вывод в файл jmeter.log вместо того, чтобы возвращать его как пример результата):

Вот как вы можете настроить ОС Process Sampler:

ОС Sampler

Другие вопросы по тегам