首页 > 解决方案 > 使用带有可调用语句的 JMETER GUI JDBC 请求——我如何获取结果集/元数据?

问题描述

我已经调用了我的数据库作为 SQL 选择语句。但我正在努力使用 JMeter 调用存储过程以进行进一步测试。我正在严格处理 JMX 文件,目前还没有将 JMETER 集成到我们的主要 Java 项目中。

我已经使用 JDBC 连接配置和 JDBC 请求设置了 JMETER GUI。我已经使用带有字符串 INPUT 的可调用语句成功调用了我的数据库,并获取了字符串 OUTPUT 参数字符串。

OUTPUT 参数字符串仅包含有关调用的信息(用户、系统、成功等……),但不包含表中的任何值/数据——在 ResultSet/MetaData 中找到。但我无法弄清楚如何使用 JMETER 中的 JDBC 请求获取 ResultSet 或元数据。

在 Java 中,我知道我使用该语句,只需调用 statement.getResultSet() 并在 resultSet.next() 存在时执行一个循环。我如何在 JMETER 中做到这一点?

我尝试添加一个额外的 out 参数,但我的语句拒绝了调用,因为只有一个 in 参数。我尝试了各种 JMeter 断言 - 但由于主调用仅返回 out 参数,我无法获取其他数据。

Query: call XXXXX.readUser(?)

Parameter Values: ${inputJSONString}

Parameter Types: INOUT VARCHAR

Variable Names: ouputJSONString

Result Variable Name: ouputJSONString

查看结果树:响应代码:200,响应消息:OK,按位置输出变量:包含带有用户、系统和成功的整个 JSON 输出参数字符串。返回表列标题但不返回值。

我没有错误 - 呼叫成功。我只是不知道如何从 JMETER 访问结果集。

标签: jdbcjmetercallable-statementdatabase-metadata

解决方案


Don't use the same reference name for the Variable Names and the Result Variable Name as the latter one will be overwritten.

So

  1. Change ouputJSONString to i.e. ouputJSONStringObject
  2. Add JSR223 PostProcessor as the child of the request
  3. You will be able to access the JMeter's representation of the ResultSet as vars.getObject('ouputJSONStringObject') (basically ArrayList of HashMaps

See Debugging JDBC Sampler Results in JMeter article for more details.

Unfortunately you cannot access the normal ResultSet as it is not exposed anywhere and being converted via private function


推荐阅读