0

这是我的问题JMeter 的延续:如何对从数据库表中批量删除数据进行基准测试?. 我采用了 Dimitri T 提出的解决方案,现在我正在使用 Oracle DB 的测试用例。

我的测试用例从插入 1000 个条目开始,在 10 个循环中使用 100 个线程。之后,它会删除 where rownum < 250

但是,我的测试用例不再能够检测到表是空的。当我在结果树中查看响应数据时,我看到以下内容:

249 updates
249 updates
249 updates
249 updates
4 updates
0 updates
0 updates
0 updates
...

JMeter 本身不会报告发生的任何错误。

我的线程组如下所示:

...(separate thread group to do INSERT)...

Thread Group: Do DELETE
   Txn Ctrl: DELETE
      While Loop: tbl still has data
         JDBC Request: DELETE from tbl
            JDBC PostProcessor

循环条件定义如下:

${__jexl3('${count_1} > 0',)}

(与上一个问题中的解决方案略有不同,我将条件用引号括起来,以防止出现模棱两可的表达式错误。)

JDBC请求定义如下:

delete from tbl where (entrydt < ${endDt}) and (rownum < ${deleteLimit})

(用户定义的变量endDt并分别deleteLimit有值TO_DATE('2019/02/01 00:00:00', 'yyyy/mm/dd hh24:mi:ss')250。)

JDBC后处理器定义如下:

[Select statement] select count(*) from tbl

Variable names: count (All other fields are empty.)
Handle ResultSet: Store as String

我试过了

  • 改变循环条件;报价无关紧要;也不会更改${count_1}${count}
  • 更换后处理器;变量名、结果变量名以及结果集的处理方式之间
4

1 回答 1

1

谁让你用引号括住表达式?首先,您破坏了工作解决方案,然后您抱怨提供的表达式不起作用。

只需通过用户定义的变量count_1定义为正数, jmeter.log中就不会出现任何错误

如果由于某种原因您不愿意或不能这样做 - 您可以考虑迁移到__groovy() 函数,并额外检查count_1设置的变量,例如:

${__groovy(vars.get('count_1') == null || (vars.get('count_1') as int) > 0,)}
于 2019-02-20T08:41:05.983 回答