如何使用JMeter中的JDBC请求将Database1中的值列表与Database2中的列进行匹配?

时间:2019-02-15 09:38:20

标签: postgresql jdbc jmeter

我对JMeter还是很陌生,所以我正在寻找执行此操作的最佳方法:我想从Database1获取messageID的列表,然后检查是否在Database2中可以找到这些messageID值,然后检查ErrorMessage列这些ID违反了我的期望。

我有JDBC请求,用于从Database1中提取messageID的列表。 JMeter将清单退还给我,但现在我陷入了困境。我不确定如何处理JDBC请求中的变量名和结果变量名字段,并在下一个针对Database2的JDBC请求的吞吐量控制器循环中使用它。

我的JDBC请求如下所示(PostgreSQL):

 SELECT messageID FROM database1

 ORDER BY created DESC

 FETCH FIRST 20 ROWS ONLY

变量名称:messageid 结果变量名称:resultDB1

然后,我使用BeanShell断言来查看是否存在与数据库的连接,或者响应是否为空。

但是现在,我必须连接到另一个数据库,因此我需要在其中创建一个具有新JDBC配置,Request等的新吞吐量控制器,但是我不知道如何将messageid列表传递给这个新要求。

我想到的是将Database1的结果列表写入文件,然后从Database2的文件中读取值,但这对我来说似乎不必要地复杂,就像JMeter中应该已经有解决方案那样。另外,我在远程Linux服务器上运行JMeter测试,所以我不想通过制作新文件并将它们保存在某个地方来使其变得更加复杂。

1 个答案:

答案 0 :(得分:0)

您可以将{'A': [0, 1, 0, 1], 'B': [0, 1, 0, 1], 'C': [0, 1, 0, 1], 'D': [0, 1, 0, 1], 'E': [0, 1, 0, 1], 'F': [0, 1, 0, 1]} 转换为JMeter属性,例如:

resultDB1

根据JMeter Documentation

  

属性与变量不同。变量是线程本地的;属性是所有线程共有的

因此,基本上,JMeter Properties是Java Properties的子集,对于整个JVM都是全局的

完成后,您将可以访问其他Thread Groups中的值,例如:

props.put("resultDB1", vars.getObject("resultDB1"));

还请注意,since JMeter 3.1 you should be using JSR223 Test Elements and Groovy language for scripting请考虑在下一个可用机会迁移到JSR223 Assertion