OS Process Sampler 中的 curl 参数有问题
Problem with a curl parameter in OS Process Sampler
我正在尝试使用 OS Process Sampler 在 Jmeter 测试计划中执行 HTTP(s) 请求,但我在其中一个 curl 参数上遇到错误。我在 Windows 机器上 运行ning Jmeter。
这是原始的 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”参数来消除之前的问题, 其中有一个破折号。
不幸的是,密钥文件似乎没有单破折号参数。
有人能告诉我为什么当我尝试在 Jmeter 下 运行 curl 时出现该错误,但是当我从命令行 运行 curl 时没问题吗?
谢谢!
P.S。仅供参考,我尝试通过 OS Process Sampler 而不是 HTTP 请求发送请求的原因是 URI 有一些字符导致 HTTP 请求步骤抛出 URI 异常。我无法对该 URI 进行编码,因为它有某种哈希,如果我对 URL 进行编码,这会导致服务器端的错误,所以我想看看是否可以使用 OS 过程采样器。
这就是您要配置的方式 OS Process Sampler:
选项 1
良好的 JMeter 测试必须做真实用户正在做的事情,特别是你的情况我的期望是你从 CMD or Powershell
启动 curl
所以我希望您将配置修改为:
选项 2
如果您打算执行 HTTP 请求,我的期望是最明显的选择是使用 HTTP Request 采样器。
您可以简单地使用 JMeter 的 HTTP(S) Test Script Recorder, curl can be configured to user JMeter's proxy via -x
command-line option 记录您的 CURL 调用,例如:
curl -x http://localhost:8888 -k -L -b .\cookies -c .\cookies ......
关于 passing client-side certificate using JMeter - it can be done using SSL Manager 或系统属性。
选项 3
请注意,在 99% 的情况下,使用 JSR223 Sampler 来执行任意 OS 命令更容易,语法类似于:
return "your command here".execute().text
演示(我将输出打印到 jmeter.log 文件,而不是将其作为示例结果返回):
我正在尝试使用 OS Process Sampler 在 Jmeter 测试计划中执行 HTTP(s) 请求,但我在其中一个 curl 参数上遇到错误。我在 Windows 机器上 运行ning Jmeter。
这是原始的 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”参数来消除之前的问题, 其中有一个破折号。
不幸的是,密钥文件似乎没有单破折号参数。
有人能告诉我为什么当我尝试在 Jmeter 下 运行 curl 时出现该错误,但是当我从命令行 运行 curl 时没问题吗?
谢谢!
P.S。仅供参考,我尝试通过 OS Process Sampler 而不是 HTTP 请求发送请求的原因是 URI 有一些字符导致 HTTP 请求步骤抛出 URI 异常。我无法对该 URI 进行编码,因为它有某种哈希,如果我对 URL 进行编码,这会导致服务器端的错误,所以我想看看是否可以使用 OS 过程采样器。
这就是您要配置的方式 OS Process Sampler:
选项 1
良好的 JMeter 测试必须做真实用户正在做的事情,特别是你的情况我的期望是你从 CMD or Powershell
启动 curl所以我希望您将配置修改为:
选项 2
如果您打算执行 HTTP 请求,我的期望是最明显的选择是使用 HTTP Request 采样器。
您可以简单地使用 JMeter 的 HTTP(S) Test Script Recorder, curl can be configured to user JMeter's proxy via -x
command-line option 记录您的 CURL 调用,例如:
curl -x http://localhost:8888 -k -L -b .\cookies -c .\cookies ......
关于 passing client-side certificate using JMeter - it can be done using SSL Manager 或系统属性。
选项 3
请注意,在 99% 的情况下,使用 JSR223 Sampler 来执行任意 OS 命令更容易,语法类似于:
return "your command here".execute().text
演示(我将输出打印到 jmeter.log 文件,而不是将其作为示例结果返回):