【性能测试】:loadrunner直压MYSQL数据库的脚本开发
有时性能测试,会涉及到直接压测数据库,测试数据库处理sql的水平,或者通过sql脚本向数据库写数据做铺地数据
这里贴上一个自己用的对数据库操作的脚本
一,首先要去下载一个LR压MYSQL的一个库文件,放到bin和include目录下
二,在头文件中,添加对库的引用
#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 "HOSTIP"
#define MYSQLUSERNAME "USER"
#define MYSQLPASSWORD "PASSWORD"
#define MYSQLDB "DATABASE_NAME"
#define MYSQLPORT "PORT"
char chQuery[1024];
int statu=1;
int status=0;
MYSQL *Mconn;
char sql_query[256], sql_sub_query[50];
int i=0, res=0, conn_fail=0, conn_iter=0;
char response[50];// to go
vuser_init()
{
lr_load_dll ("libmysql.dll");
lr_start_transaction("mysql_conn"); //设置一个连接数据库的事务
/*------------------------------------------------------------------------*/
/* Initialise MySQL */
if(!(Mconn = mysql_init(NULL)))
{
lr_message("Error -1: Cannot initialize MySQL - %s", mysql_error(Mconn));
//return -1;
statu = 0;
lr_end_transaction("mysql_conn", 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;
}
while(conn_fail < 0 && conn_iter < 10);
if (conn_fail < 0)
{
lr_message("Error -2: %s", mysql_error(Mconn));
//mysql_close(Mconn);
//return -2;
statu = 0;
lr_end_transaction("mysql_conn", LR_FAIL); //连接数据库失败判定事务失败
}
else
{
//lr_message("MySql - Good Connection");
//mysql_close(Mconn);
statu = 1;
lr_end_transaction("mysql_conn", LR_PASS); //连接数据库成功,事务通过。
}
return 0;
}
三,Action中的脚本
Action()
{
if(statu){ //成功连接数据库后才进行执行sql的操作
lr_start_transaction("mysql_select");
sprintf(chQuery, "SELECT * from cms-member-dev.cms_member_basic where id = '1007449268564533248'");//查询论坛用户
//sprintf(chQuery,"UPDATE lr_test SET password = "%s" WHERE username='tom'",lr_eval_string ("{pwd}"));
/*
sprintf(chQuery,"update pre_ucenter_members set username='dd' where username='qq' ");//更改用户名qq为dd
sprintf(chQuery,"delete from pre_ucenter_members ORDER BY uid desc LIMIT 1");//删除最后添加的一条数据
*/
status = lr_mysql_query(Mconn, chQuery);
if(status!=0){ //判断sql是否执行成功
lr_end_transaction("mysql_select",LR_FAIL);
}else{
lr_end_transaction("mysql_select",LR_PASS);
}
lr_start_transaction("mysql_insert");
sprintf(chQuery,"SELECT * from cms_member_basic where id = '1007449268564533248'");//插入数据
status = lr_mysql_query(Mconn, chQuery);
if(status!=0){ //判断sql是否执行成功
lr_end_transaction("mysql_insert",LR_FAIL);
}else{
lr_end_transaction("mysql_insert",LR_PASS);
}
}
return 0;
}
三 VUSER_END()中的脚本
vuser_end()
{
lr_mysql_disconnect(Mconn); //关闭数据库连接
return 0;
}
【性能测试】:loadrunner直压MYSQL数据库的脚本开发的更多相关文章
- 老李分享:loadrunner操作mysql数据库
老李分享:loadrunner操作mysql数据库 在poptest测试开发工程师就业培训的课程中,针对一套商业系统进行性能测试,目标是mysql后台数据库的负载能力,在这里我把测试代码 ...
- Windows下MySQL数据库备份脚本(一)
说明: MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0 MySQL数据库存放目录:C:\Program Files\MySQL\MySQL S ...
- Windows下MySQL数据库备份脚本(二)
说明: MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0 MySQL数据库存放目录:C:\Program Files\MySQL\MySQL S ...
- mysql数据库备份脚本
mysql数据库备份脚本 mysql数据库分库备份脚本:[root@localhost tmp]# cat mysql.sh #!/bin/bash USER=root PASSWORD=joy4yo ...
- Ubuntu Server下MySql数据库备份脚本代码
明: 我这里要把MySql数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2012_04_11.tar. ...
- mysql数据库备份脚本一例
例子,mysql数据库备份脚本.vim mysql.sh #!/bin/bash DAY=`date +%Y-%m-%d` //日期以年月日显示并赋予DAY变量 SIZE=`du -sh /var/l ...
- MySQL 数据库备份脚本
MySQL 数据库备份脚本 #!/bin/bash # 数据库连接信息 DB_HOST="127.0.0.1" DB_PORT="3306" DB_USER=& ...
- LoadRunner访问Mysql数据库
这是很久以前编写的一个测试案例,那时是为了检查大量往Mysql数据库里插入数据,看一下数据库的性能如何?服务器是否会很快就被写满了. 前期的准备工作:Mysql 数据库搭建,LoadRunner,li ...
- LoadRunner访问 Mysql数据库
这是很久以前编写的一个测试案例,那时是为了检查大量往Mysql数据库里插入数据,看一下数据库的性能如何?服务器是否会很快就被写满了. 前期的准备工作:Mysql 数据库搭建,LoadRunner,li ...
随机推荐
- 关于Android控件EditText的属性InputType的一些经验,java组合多个参数
关于Android控件EditText的属性InputType的一些经验 2013-11-14 15:08:02| 分类: 默认分类|举报|字号 订阅 1.InputType属性在代码中 ...
- TableLayout 里的TextView等组的LayoutParams参数问题
TableLayout 里的TextView等组的LayoutParams参数不能是LinearLayout.LayoutParams这样来定义, 只能是用TableRow.LayoutParams ...
- 06 Python字符编码与文件处理
python垃圾回收机制: python中的垃圾回收机制是以引用计数为主,分代收集为辅,引用计数的缺陷是循环引用的问题,一个对象的引用数为0 ,那么这个对象就会被python虚拟机回收内存 字符编码 ...
- mongo学习-固定集合
一.创建固定集合 db.createCollection("guding",{"capped":true,"size":10,"m ...
- S5PV210定时器
在S5PV210内部,一共有4类定时器件.这4类定时器件的功能.特征是不同的. 1.PWM定时器(1)这种是最常用的,平时所说的定时器一般指的是这个.像简单单片机(譬如51单片机)中的定时器也是这类. ...
- 机器学习—集成学习(XGBoost)
一.原理部分: 二.xgboost实现 看看大神的博客瞬间了解:https://blog.csdn.net/han_xiaoyang/article/details/52665396
- Cockroachdb 一、系统环境
cockroachdb 一.系统环境 **硬件** 最低标准 a 至少3个节点保证集群可用副本 b 每个节点至少1CPU ,2GB RAM.增加资源配置可支持处理更多的数据,负载,高并发,高性能. 最 ...
- Win10+VS2015折腾小记
20150807 昨天安装了多语言的专业版(当时语言可选,但是我也没选,今天虚机中文企业版时,视图选择语言,但是也只有中文简体,输入法有很多). 专业版安装在硬盘中,感觉不到半小时就完成了. 使用一个 ...
- Python 实现图片对比检测
在写测试框架的时候,需要用到图片对比的方法来判断用例执行的情况,问了一下度娘,原来可以用PIL模块处理: from PIL import Image # 先安装Pillow, \>pip in ...
- PostgreSQL操作数据表
1.创建表(SysUser) create table "SysUsers"( "UserId" serial, --用户Id,自增 "LoginNa ...