jmeter - Jmeter 仅记录带有 JSR223 侦听器的 HTTPSampler
问题描述
尝试在测试计划级别设置 JSR223 侦听器,以便侦听所有线程组。我想要实现的是它只记录每个 HTTP 请求的方法(GET、POST、HEAD、OPTIONS、PUT、DELETE 和 TRACE)并打印每个方法、URL、响应代码、值和响应数据。
环顾四周,发现了一些左右和中间的片段,并提出了这个:
try{
if (sampler.getUrl().toString().contains("http")){
log.warn('Method: ' + sampler.getMethod() + ' URL: ' + sampler.getUrl().toString());
sampler.getArguments().each {arg ->
log.warn('CODE: ' + prev.getResponseCode() + ' Value: ' + arg.getStringValue())
}
log.warn('CODE: ' + prev.getResponseCode() + ' ResponseData: ' + prev.getResponseDataAsString());
}else{
log.warn('Not a HTTPRequest')
}
}
catch (Throwable ex)
{
log.warn('Something went wrong', ex);
throw ex;
}
我根据需要在我的日志查看器中获得结果。
我面临的挑战是,如果任何其他采样器类型处于活动状态,它会记录错误,因为该采样器不是 HTTP 请求而是虚拟采样器,因此它无法返回请求的值。
groovy.lang.MissingMethodException:没有方法签名:kg.apc.jmeter.samplers.DummySampler.getUrl()
现在我的示例仅显示线程组中的两个采样器,但假设有 100 个不同的采样器我需要更改我的“if”语句以不检查采样器参数,而是检查采样器类型(HTTPRequest),但很好老谷歌的回报不多。那么,是否有可能有一个 if 语句来检查采样器类型,该语法是什么?
if (sampler==HTTPRequest)
???
解决方案
您可以使用sampler.getClass()
并比较它来检查 HTTP 请求是否:
if("HTTPSamplerProxy".equals(sampler.getClass().getSimpleName())) {
您可以使用日志检查类名:
log.info(sampler.getClass().getSimpleName());
推荐阅读
- vue.js - 在 vuefity 中更改每页项目时是否调用了一个动作?:switch-items-per-page
- javascript - Angular - 使用自定义指令加载多个组件返回未定义
- networking - tvOS 的 VLC 如何创建一个我可以在我的 mac 上访问的 .local 域?
- amazon-web-services - 无法使用 RDP 客户端连接到 AWS 实例
- linux - 提交给drupal 8服务器的git后如何忽略文件夹?
- html - 如何在 React js 中预加载自定义字体?
- python - 如何告诉 Peewee 使用插值而不是准备好的语句?
- css - 我的链接导航栏响应动画不起作用
- python - python中的多个BLE连接非常慢(黯淡)
- bash - Bash:从数组中排除范围