loadrunner 测试mysql_loadrunner测试MySQL数据库性能

一、 准备文件

下载 MySQL LoadRunner libraries。

可以看到 MySQL LoadRunner libraries 里面有两个文件夹:bin 以及 include。将 bin 文件夹里的文件拷贝到 LoadRunner 安装路径下的 bin 文件夹下。将 include 文件夹里的文件全部拷贝到 LoadRunner 安装路径下的 include 文件夹下。

二、LoadRunner 执行单句SQL语句

1. vuser_init文件代码

#include "Ptt_Mysql.h"

#include "mysql.h"

#include "mysql_com.h"

#include "mysql_time.h"

#include "mysql_version.h"

#include "typelib.h"

#include "my_list.h"

#include "my_alloc.h"

#define MYSQLSERVER "**.**.**.***"//IP地址

#define MYSQLUSERNAME "root"

#define MYSQLPASSWORD "root123"

#define MYSQLDB "mytest"

#define MYSQLPORT "3306"

int statu=1;

//mysql连接字符串

MYSQL *Mconn;

int conn_fail=0, conn_iter=0;

vuser_init()

{

// Load libmysql.dll

int rc;

rc = lr_load_dll("libmysql.dll");

if (rc != 0) {

lr_error_message("Could not load libmysql.dll");

lr_abort();

}

lr_start_transaction("mysql_connection");

//Initialise MySQL

if(!(Mconn = mysql_init(NULL)))

{

lr_message("Error -1: Cannot initialize MySQL - %s", mysql_error(Mconn));

statu = 0;

lr_end_transaction("mysql_connection", LR_FAIL);

}

do{

// Connect to database

if (!mysql_real_connect(Mconn, MYSQLSERVER, MYSQLUSERNAME, MYSQLPASSWORD, MYSQLDB, atoi(MYSQLPORT), NULL, 0))

{

conn_fail = -2;

conn_iter++;

sleep(100);

}

else

conn_fail = 0;

}

//如果连接失败,重复连接最多10次

while(conn_fail < 0 && conn_iter < 10);

//连接失败返回error

if (conn_fail < 0)

{

lr_message("Error : %s", mysql_error(Mconn));

statu = 0;

lr_end_transaction("mysql_connection", LR_FAIL);

return -2;

}

//连接成功返回MySql - Good Connection

else

{

lr_message("MySql - Good Connection");

statu = 1;

lr_end_transaction("mysql_connection", LR_PASS);

}

return 0;

}

2. Action文件代码

Action()

{

if(statu)

{

//定义字符数组来存储sql结果

char chQuery[1024];

int status=0;

lr_start_transaction("mysql_updata");

//参数化

lr_output_message("The parameter username is : %s",lr_eval_string("{username}"));

lr_output_message("The parameter score is : %s",lr_eval_string("{score}"));

//将sql结果(格式化后的字符串)输出到目标数组

sprintf(chQuery, "UPDATE user_info SET score = '%s' WHERE username = '%s';",lr_eval_string("{score}"),lr_eval_string("{username}"));

//是否成功,0成功,其他失败

status = lr_mysql_query(Mconn, chQuery);

if(status!=0)

{

lr_end_transaction("mysql_updata",LR_FAIL );

}

else

{

lr_end_transaction("mysql_updata", LR_PASS);

}

}

return 0;

}

3. vuser_end文件代码

vuser_end()

{

//释放mysql资源

lr_mysql_disconnect(Mconn);

return 0;

}

4. 遇到的问题

问题一:Linux中 MySQL 授权远程连接?

解决办法:

在虚拟机中使用 root 用户登录 mysql 数据库

mysql -u root -p

使用 mysql 命令为 root 用户授权 mysql 远程连接服务

grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;

说明:此命令是为密码为 root 、IP(%)任意的 root 用户授权。(%:模糊查询,所有 IP 都可以,可指定其他主机 IP;BY 后的 'password' 为密码)

将配置写入 mysql 授权表中

flush privileges;

防火墙开放3306端口

打开防火墙配置文件

vi /etc/sysconfig/iptables

增加下面一行

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

重启防火墙

service iptables restart

注意:增加的开放3306端口的语句一定要在icmp-host-prohibited之前

问题二:jmeter连接Oracle数据库报错,报错信息:

System.Data.OleDb.OleDbException:One or more errors occurred during processing of command. ORA-00911: invalid character at...

解决办法:

原因是不能将分号(;)放到sql的语句中(loadrunner可以),解决办法很简单,取得分号就行了。

问题三:Oracle ORA-00984: column not allowed here?

解决办法:ORA-00984错误: 列在此处不允许,当数据以char的形式存在时,应加单引号,则插入数据库就不会出现类似错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值