在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%';
答案 0 :(得分:1)
<强>解决方案强>
如果您使用跨多个线程组的多个JDBC连接,请确保将唯一的变量名绑定到每个池。我正在使用&#34; myPool&#34;对于每个JDBC连接(主要是由于复制/粘贴),它导致了问题。 (我的坏!)
解决方案是:
为每个池创建唯一的变量名称可以在每个JDBC配置之间提供清晰度,并避免像我这样的问题。希望这有助于其他人。