如何刚刚的JMeter线程关闭之前执行的样本?

时间:2019-01-31 18:09:13

标签: database jmeter teardown

Jmeter中是否有一种方法可以在线程关闭之前执行示例?

例如,我有一个测试计划,该计划将数据插入数据库,并且在连接上禁用了自动提交。每个线程会生成自己的连接到数据库。计划按计划运行(即我不知道样本数),并且我想在测试结束时提交所有插入的行。有办法吗?

3 个答案:

答案 0 :(得分:0)

最简单的选择是tearDown Thread Group,它专门用于执行清理操作。


更难的方法是添加一个单独的Thread Group,该线程具有1个线程和1个迭代,并带有以下JSR223 Sampler代码:1 Groovy

class ShutdownListener implements Runnable {

   @Override
   public void run() {
       //your code which needs to be executed before test ends
   }     
}

new ShutdownListener().run()

答案 1 :(得分:0)

尝试根据持续时间或迭代次数的某些条件运行提交示例 例如:如果您应该运行100次迭代: 具有条件的If控制器- __groovy($ {__ iterationNum} == 100)

应该有帮助。

答案 2 :(得分:0)

好的,这可能不是最佳选择,但可能可行

  • 在一次性控制器内的JSRSampler中添加以下代码

def caseStartTime = System.currentTimeMillis(); def timeLimit = ctx.getThreadGroup()。getDuration()-10; //执行提交采样器的时间限制 vars.put(“ scenarioStartTime”,scenarioStartTime.toString()); vars.put(“ timeLimit”,timeLimit.toString());

  • 现在,在数据库插入采样器之后,在if控制器中添加以下条件,然后添加提交采样器。

$ {__ groovy(System.currentTimeMillis()-Long.valueOf(vars.get(“ scenarioStartTime”))> = Long.valueOf(vars.get(“ timeLimit”))* 1000)}

这种情况应该可以让您在测试持续时间即将结束之前执行提交采样器。