JMeter:JDBC删除不一致

时间:2016-03-22 21:40:42

标签: jmeter

在JMeter(v2.13 r1665067)中,我使用tearDown Thread Group删除测试运行后剩余的所有剩余记录。

奇怪的是我无法弄清楚:

  • 当线程组独立执行时(,就其本身而言),我能够看到从数据库中删除了剩余的记录。

    < / LI>
  • 当线程组作为完整运行的一部分运行时(即完整的端到端测试计划),剩余的记录是 未从数据库中删除

查看SQL事件探查器,它“显示”DELETE已发送,但记录仍保留在数据库中。可能是我的恒定吞吐量设置还是其他时间?任何人都可以解释为什么只有在完整运行期间才会发生这种情况?

在测试计划中,启用关闭主线程后运行tearDown线程组

这是我的tearDown Thread Group中的内容:

JDBC连接配置

Variable Name = myPool
Connection Pool Config
    Max # of Connections = 10
    Pool Timeout = 5000
    Idle Cleanup Interval (ms) = 60000
    Auto Commit = True
    Transaction Isolation = TRANSACTION_SERIALIZEABLE
Connection Validation by Pool
    Keep-Alive = True
    Max Connections Age = 5000
    Validation Query = null

JDBC请求1

Variable Name = myPool
Query Type = Prepared Update Statement
    DELETE FROM Foo 
    WHERE Foo.QualifierObjId IN 
    (SELECT Bar.ObjId FROM Bar WHERE Bar.DsplyName like '%myTest%');

JDBC请求2

Variable Name = myPool
Query Type = Prepared Update Statement
    DELETE FROM Bar WHERE Bar.DsplyName like '%myTest%';

JDBC请求3

Variable Name = myPool
Query Type = Prepared Update Statement
    DELETE FROM Master WHERE Master.DsplyName like '%myTest%';

1 个答案:

答案 0 :(得分:1)

<强>解决方案

如果您使用跨多个线程组的多个JDBC连接,请确保将唯一的变量名绑定到每个池。我正在使用&#34; myPool&#34;对于每个JDBC连接(主要是由于复制/粘贴),它导致了问题。 (我的坏!

解决方案是:

  • 线程组1,JDBC连接配置,变量名称= myFooPool
  • 线程组2,JDBC连接配置,变量名称= myBarPool
  • tearDown线程组,JDBC连接配置,变量名称= myTearDownPool

为每个池创建唯一的变量名称可以在每个JDBC配置之间提供清晰度,并避免像我这样的问题。希望这有助于其他人。