我有一个关于Jmeter延迟的问题,我创建了一个测试计划,并在一步中使用JDBC调用DB,并将结果存储在actual_vertica_results参数中(计算临时表中的员工数)。 我想将Jmeter配置为Waite,直到actual_vertica_results为0。 (DB中的表删除自身) 有人可以建议我如何在Jmeter中执行这样的场景,今天我使用常量计时器进行延迟,并在每次迭代时手动增加它以确保删除所有数据。 我怎样才能让Jmeter每5秒钟调用一次DB并检查结果,并且只有在从表中删除所有临时数据后才能进入下一步? 如果有人可以用PIC提供一步一步的方案,那将非常有帮助 问候
答案 0 :(得分:1)
将您的JDBC请求采样器置于While Controller下并使用以下条件:
${__javaScript("${Actual_vertica_results}" != "0",)}
在JDBC Request采样器之后添加Test Action采样器,并按如下方式对其进行配置:
Current Thread
Pause
5000
有关详细信息,请参阅Using the While Controller in JMeter文章。
答案 1 :(得分:0)
我正在考虑两种选择:
${__javaScript("${Actual_vertica_results}" != "0",)}
),以便JDBC请求根据定时器延迟触发:declare var integer; begin var := 1; while var <> 0 loop select count(rec) into var from test_count; dbms_lock.sleep(5); end loop; end;
但是这假设您不需要将Actual_vertica_results变量用于其他目的,并且您的db用户已授予执行延迟/休眠的权限(在Oracle示例中的DBMS_LOCK包上)。您可能还可以使用给定的返回值在数据库中创建一个函数(如果您倾向于对不同的表进行某些验证)。
答案 2 :(得分:0)
不同的解决方案:
在另一个线程组中添加后续步骤
在“测试计划”
当count = 0时,添加Test Action目标当前线程和动作停止
这样线程组将执行直到count = 0,然后继续执行不同线程组中的后续步骤