如何通过 Jmeter 中的系统变量设置 jdbc 连接配置
Posted
技术标签:
【中文标题】如何通过 Jmeter 中的系统变量设置 jdbc 连接配置【英文标题】:How to set jdbc connection configuration via system variables in Jmeter 【发布时间】:2018-02-16 15:35:13 【问题描述】:出于安全原因,我们有通用测试机,一名测试员不应在采样器中看到另一名测试员的 jdbc 配置详细信息,因为有可能滥用用户名和密码以及其他详细信息。
1.有没有办法为MySQL、DB2、Microsoft SQL等多个数据库的不同jdbc连接配置设置系统变量。例如:应用程序 X 使用 Microsoft SQL,而应用程序 Y 使用 DB2,应用程序 Z 使用 MySQL。 Y 和 Z 是集成层。 数据库URL、JDBC驱动类、用户名、密码的变量。请提供示例。
2.Tester需要在测试开始前通过命令行运行#1怎么做?命令行是什么?。请提供示例。
3.在JDBC请求中,而不是硬编码sql脚本如何发送可能包含一堆SQL脚本或单个SQL脚本的SQL脚本路径。。请提供示例。
我已经尝试了下面的截图,但始终只返回唯一 sql 查询的结果,但是当查看采样器请求时,我看到所有已发送的查询,但响应仅针对第一个查询。
4.对于分布式测试,上述任何需要特别注意的事项。.请提供示例。
如何实现#1、#2、#3 和#4。
以下是最新截图 下面的#1 和#2 是截图
#3 下面是截图
谢谢, 拉杰
【问题讨论】:
【参考方案1】:每个用户可以在命令行(-JdbUser)或使用属性文件发送不同的属性。
将每个动态参数定义为 dbUser 作为属性 $dbUser,以便每个用户都有不同的连接。
【讨论】:
我已经尝试了#3,但只执行了文件中的第一个 sql 查询。当我查看 jdbc 示例请求的请求时,请求进展顺利,但只返回了第一个查询的响应,其余的没有(请参阅原始帖子的屏幕截图)。您能否详细说明#1,并通过举例提供完整的命令。 我已经弄清楚了#1 和#2。有人可以在#3 上帮助我吗,因为我总是提到只有第一个 SQL 查询返回结果,尽管 Jdbc 请求能够成功读取所有列表来自文件的 SQL 查询。 #3 使用 CSV 数据集,它将读取 csv 文件中的所有 SQL。 meta.stackexchange.com/help/someone-answers【参考方案2】:您可以使用__groovy function 之类的方式访问操作系统Environment Variables
$__groovy(System.getenv('DB2_PASSWORD'),)
取决于您的操作系统,即:
对于 Windows 系列,命令行类似于:set DB2_PASSWORD=secret
对于 Unix 系列,它将是:DB2_PASSWORD=secret && export DB2_PASSWORD
最简单的方法是使用Directory Listing Config Plugin
根据Remote Testing用户手册条目:
如果测试使用任何数据文件,请注意这些文件不是由客户端发送的,因此请确保这些文件在每个服务器上的相应目录中可用。如有必要,您可以通过编辑每个服务器上的 user.properties 或 system.properties 文件来定义不同的属性值。这些属性将在服务器启动时被拾取,并可用于测试计划以影响其行为(例如,连接到不同的远程服务器)。或者在测试使用的任何数据文件中使用不同的内容(例如,如果每个服务器必须使用唯一的 id,则在数据文件之间划分它们)
JMeter 从属设备完全独立,因此您需要在每个从属设备上进行相同的环境变量设置、复制 JDBC 驱动程序和 SQL 脚本、进行配置更改等 /强>,
【讨论】:
我已经为#1 和#2 使用了属性文件阅读器,jdbc 连接工作正常。对于#3,我为每个 SQL 查询创建了 5 个 csv 文件,当我执行它时只执行 1 个 csv 文件和抛出错误。我不确定我是在做混合还是错误地使用直接列出数据源插件来执行 SQL 查询。请参阅下面是我添加到原始帖子的最新屏幕截图部分。请告诉我。 目录列表数据源将只获取文件名,您需要使用__FileToString() function 才能从文件中读取查询,例如$__FileToString($filename,,)
我在一个文件中保存了 5 个 Sql 查询,目录列表成功完成,找到 1 个文件:$filename = C:\JMETER\LR2JMeter\NGP\Scripts\Database\NGP_Database.csv并在 jdbc 请求中传递了 $__FileToString($filename,,) 。请求成功运行了 5 个 sql 查询,但始终只返回第 1 个 sql 查询的结果。
如果单个文件中有 5 个 sql 查询,则需要使用 __StringFromFile() 或 CSVRead() 函数
我已经尝试了所有这些 $__StringFromFile(C:\JMETER\LR2JMeter\NGP\Scripts\SV_Db2Queries.csv,,,) $__StringFromFile(C:\JMETER\LR2JMeter\NGP\Scripts \SV_Db2Queries.txt,,,) $__StringFromFile(C:\JMETER\LR2JMeter\NGP\Scripts\SV_Db2Queries.sql,,,) 但仍然每次只读取 1 个和第一个 sql 查询以上是关于如何通过 Jmeter 中的系统变量设置 jdbc 连接配置的主要内容,如果未能解决你的问题,请参考以下文章