目前,我正在使用Jmeter将数据填充到数据库中,稍后将用于性能测试。
问题是我有时会出现一个随机错误,第100个条目或第5000个条目会停止我的线程和数据输入,直到我做了再次启动数据加载的必要操作为止。我认为一个简单的重试循环应该可以解决此手动重启问题。
我的Jmeter结构如下:
线程组
-启动虚拟采样器
-回路控制器
---柜台
---虚拟采样器
---用户参数:变量“错误” = null
--- While控制器:$ {__ javaScript(“ $ {Error}”!=“ false”,)}
----事务控制器
-----用户参数:变量“错误” =假
-----虚拟采样器1
-----虚拟采样器2(内置失败/成功)
-----虚拟采样器3
-----虚拟采样器4
----- JSR223后处理器
-断言
我想实现的是,如果由于某种原因在任何采样/请求上断言失败,则应该重新启动while循环。基本上在发生故障的情况下,请使用相同的数据重试循环。
我在Groovy和Javascript中使用以下示例的许多变体进行了尝试,但无法使其正常工作。 我认为我的问题出在比较中。
if(vars.get("JMeterThread.last_sample_ok").equals('false')){vars.put("Error","true");}
if(vars.get("JMeterThread.last_sample_ok")=='false'){vars.put("Error","true");}
有人看到这个问题吗?或者可以为我的问题提出替代解决方案? 我现在确实想通过线程组控件启动一个新线程,因为我想在进入下一个数据集(csv)之前重试当前的数据/变量,直到成功为止。
解决方案: 我使用以下代码在线程组级别添加了JSR223侦听器:
if(vars.get("JMeterThread.last_sample_ok")=="false"){vars.put("Error","true");}
尽管通过调试采样器查看时,它似乎并没有更新变量,但它仍然可以正常工作并满足我的要求。 我还查看了“结果状态操作处理程序”,但是它实际上并没有工作。它仅适用于采样器级别,因此我必须将元素添加到每个采样器中……我将对此进行研究,并尝试通过JSR223侦听器中的其他代码来解决该问题。