【性能测试】: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 ...
随机推荐
- Javascript变长参数和默认参数
/* javascript 变长参数 * 实参少于形参: 剩下的参数如果没有默认值,将解析为undefined * 实参多于形参: 剩下的实参可以通过 "实参对象"-argumen ...
- iOS密码输入框的实现
[iOS密码输入框的实现] 就是一个UITextField,把属性 UITextField.secureTextEntry设置为Yes即可.此种UI效果为iOS默认效果.
- Leader/Follower多线程网络模型介绍
之前分享过<轻量级 web server Tornado代码分析>,介绍了目前我们采用nginx + tornado的方式搭建升级.配管.数据中心等各类服务组建客户端迭代体系.最近注意到, ...
- HDU1875 畅通工程再续 2017-04-12 19:52 48人阅读 评论(0) 收藏
畅通工程再续 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submis ...
- 团体程序设计天梯赛L1-020 帅到没朋友 2017-03-22 17:46 72人阅读 评论(0) 收藏
L1-020. 帅到没朋友 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为 ...
- dxbarmanager生成传统下拉式样的菜单
传统菜单 //创建一个dxSubItem,相当于创建一个主菜单项 dxBarSubItem := TdxBarSubItem.Create(Self); dxBarSubItem.Caption := ...
- C#基础入门 八
C#基础入门 八 泛型 C#中的泛型能够将类型作为参数来传递,即在创建类型时用一个特定的符号,如"T"来作为一个占位符,代替实际的类型,等待实例化时用一个实际的类型来代替. pub ...
- log4j打印MyBatis的sql语句配置
log4j.rootLogger=DEBUG,stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender. ...
- 原创:MVC 5 实例教程(MvcMovieStore 新概念版:mvc5.0,EF6.01) - 4、创建数据上下文和数据实体模型
说明:MvcMovieStore项目已经发布上线,想了解最新版本功能请登录 MVC影视(MvcMovie.cn) 进行查阅.如需转载,请注明出处:http://www.cnblogs.com/Dodu ...
- wp8.1 SQLite的基本使用
SQLite是一个轻量级的关系型数据库,正是由于其精悍小巧,在移动端平台被广泛应用,但不适合处理大量数据和批量操作.它的底层是由C语言编写,最初设计是为了应用于嵌入式,占用资源非常低且简单易用,而且绝 ...