Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Jmeter中动态更改JDBC配置_Java_Jdbc_Jmeter_Beanshell - Fatal编程技术网

Java 在Jmeter中动态更改JDBC配置

Java 在Jmeter中动态更改JDBC配置,java,jdbc,jmeter,beanshell,Java,Jdbc,Jmeter,Beanshell,我需要根据环境确定表中是否有数据,例如,我有两个数据库,一个是开发,另一个是生产,如下所示 Production host1 dbuser1 dbpassword1 dburl Tablename : studentinfo Development dbuser2 dbpassword2 dburl2 Tablename : studentinfo 仅供参考:studentinfo在这两种环境中具有相同的结构 在用户定义变量(UDV)Jmeter中,我配置了两组数据库信息。使用BeanSh

我需要根据环境确定表中是否有数据,例如,我有两个数据库,一个是开发,另一个是生产,如下所示

Production 
host1
dbuser1
dbpassword1
dburl
Tablename : studentinfo

Development
dbuser2
dbpassword2
dburl2
Tablename : studentinfo
仅供参考:studentinfo在这两种环境中具有相同的结构

在用户定义变量(UDV)Jmeter中,我配置了两组数据库信息。使用BeanShell Processor,我试图更改数据库连接信息,是否有任何方法可以动态更改数据库配置

下面给出的是我的Jmeter UDV

env : prod
prod_db_url: dburl
prod_db_user:usr
prod_db_password:password

dev_db_url: dburl
dev_db_user:usr
dev_db_password:password
在我的Beanshell预处理器中

String env=vars.get("env");
if(env.equlas("prod")){
   // Load the Prod db into vars
} else if (env.equals("dev")){
   // Load the Dev db into vars
}
在这里,我在vars中设置值,并试图从DB配置变量中获取信息。但我无法在DB配置中获取值


有人能解释一下吗?出现了什么问题,或者连接的方法是什么?

您不需要Beanshell预处理器

对于以下UDV

env : prod
prod_db_url: dburl
prod_db_user:usr
prod_db_password:password

dev_db_url: dburl
dev_db_user:usr
dev_db_password:password
只需更改env的值,就可以使用

${{env(${env}}{db\u url)}
//返回prod或dev db url取决于env的值


另一个不错的解决方案:

您可以拥有相同的变量并将它们存储在两个不同的属性文件中吗

生产项目

db_url=dburl
db_user=usr
db_password=password
db_url=dburl
db_user=usr
db_password=password
开发属性

db_url=dburl
db_user=usr
db_password=password
db_url=dburl
db_user=usr
db_password=password
您可以使用JMeter-

属性读取器文件路径应为
/path/to/${env}。属性

使用
${{{uu P(db\u url)}
${{uu P(db\u user)}

JDBC连接配置在用户定义的变量之后初始化,但在任何预处理器之前初始化,这就是为什么看不到值更改的原因

考虑使用JMeter属性而不是JMeter变量,即将JDBC连接配置中的
${dburl}
更改为
${{p(dburl,)}
。对凭据变量执行相同的操作

根据您运行测试的方式,您可以设置属性值:

  • 通过
    -J
    命令行参数,如:

    jmeter -Jdburl=jdbc://somedb:port/etc -Juser=foo -Jpassword=bar 
    
  • 将其放入user.properties文件(位于JMeter的“bin”文件夹中),如下所示

  • 参考资料:


    类似的问题,我无法使用${env}.properties加载.properties文件,我得到空值。@VasanthDha,env应该是一个UDV。它本身不能在属性文件中这是隐藏在jmeter文档中的东西你能告诉我在任何预处理器之前初始化的jmeter doc JDBC配置到底在哪里吗??谢谢