LoadRunner利用ODBC编写MySql脚本
最近做了几周的LoadRunner测试,有一些心得,记录下来,以便以后查找。
LoadRunner测试数据库是模拟客户端去连接数据库服务器,因此,需要协议(或者说驱动的支持)。LoadRunner本身直接支持Oracle、SqlServer数据库,这两个数据库直接选择相应的协议就可以录制脚本。而MySQL数据库只能利用ODBC协议来录制(编写)脚本,所以必须要MySql的ODBC驱动,和支持ODBC的查询分析器(录脚本需要,自己编写就不需要)。
1、首先要安装MySql的ODBC驱动,MyODBC 3.51.11 WIN。
2、从“控制面板”打开“数据源ODBC”,如果没有找到(我的电脑上就没有找到)。到桌面,新建一个快捷方式,目标位置:%SystemRoot%/system32/odbcad32.exe。
3、打开ODBC管理程序,添加的驱动为“MySQL ODBC 3.51 Driver”,然后填写一些ip、用户名、密码之类的,测试一下就可以了。(这一步其实是非必须的,如果写连接串,就不需要,如果要用DNS数据库名,就需要)
4、安装一个查询分析器,这个查询分析器必须是支持ODBC 的(这是必须的,否则录不上),这很不好找。我找了一个,还不好用,叫“通用数据库查询分析器”。http://www.onlinedown.net/soft/31366.htm 。
5、启动LoadRunner,Create Scripts;Application type选择Win32 Applications;Program record选择第4步的查询分析器位置,记得查询分析器选择“ODBC”,才能录得上;录完了,运行一下是否正常。
6、Run Load Tests的时候,如果失败,看看License是否支持,用global-100的License就可以了。
录制的脚本是惨不忍睹(又臭又长),所以,我试着手工编写了一个简单的,每行都有注释,如果要高级的,请参考LoadRunner的帮助文档。
- #include "lrd.h"
- Action()
- {
- static LRD_INIT_INFO InitInfo = {LRD_INIT_INFO_EYECAT};
- static LRD_DEFAULT_DB_VERSION DBTypeVersion[] =
- {
- {LRD_DBTYPE_ODBC, LRD_DBVERSION_ODBC_30},
- {LRD_DBTYPE_NONE, LRD_DBVERSION_NONE}
- };
- static LRD_CONTEXT FAR * Ctx1;
- static LRD_CONNECTION FAR * Con1;
- static LRD_CURSOR FAR * Csr1;
- //上面的定义的代码如果录制脚本,在vdf.h中就有定义,同时还有一些其他文件
- //如果手写脚本,则需要手工添加,主要是定义各种变量
- //查询行数
- unsigned long count=0;
- //初始
- lrd_init(&InitInfo, DBTypeVersion);
- //打开上下文
- lrd_open_context(&Ctx1, LRD_DBTYPE_ODBC, 0, 0, 0);
- //申请连接的内存
- lrd_alloc_connection(&Con1, LRD_DBTYPE_ODBC, Ctx1, 0 /*Unused*/, 0);
- //打开连接,注意DRIVER就是上面安装的
- lrd_open_connection(&Con1, LRD_DBTYPE_ODBC, "", "","", "DRIVER=MySQL ODBC 3.51 Driver;UID=root;PWD=123456;SERVER=192.168.1.99;DATABASE=TestDB", Ctx1, 1, 0);
- //打开游标
- lrd_open_cursor(&Csr1, Con1, 0);
- //Sql语句,注意1代表的意思是,立马执行
- lrd_stmt(Csr1, "select column1 from table1 where colum1 = 1", -1, 1, 0 /*None*/, 0);
- //统计行数到count变量中
- lrd_row_count(Csr1, &count, 0);
- //打印消息
- lr_message("count= %d",count);
- //先关闭游标
- lrd_close_cursor(&Csr1, 0);
- //再关闭连接
- lrd_close_connection(&Con1, 0, 0);
- //释放连接,和alloc相呼应,否则有内存泄露
- lrd_free_connection(&Con1, 0 /*Unused*/, 0);
- //再关闭上下文
- lrd_close_context(&Ctx1, 0, 0);
- //完毕,返回0
- return 0;
- }
写完了,自己运行一下可以查看日志如下:
------------------------------------------------------------------------------
Starting iteration 1.
Starting action Action.
Action.c(8): lrd_open_connection: User="", Server=""
Action.c(11): lrd_stmt: select column1 from table1 where colum1 = 1;
count= 1
Action.c(16): lrd_close_connection: User="", Server=""
Ending action Action.
------------------------------------------------------------------------------
count = 1表示查询成功了
==========================================================================
性能相关的系列文章:
LoadRunner利用ODBC编写MySql脚本
LoadRunner压力测试时监控服务器Linux的资源情况
压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate
高性能服务器架构(High-Performance Server Architecture)
网站性能测试PV到TPS的转换以及TPS的波动
用GTmetrix来优化你的网页(集成了YSlow、FireBug的功能)
LoadRunner利用ODBC编写MySql脚本的更多相关文章
- LoadRunner利用ODBC编写MySql脚本(转)
LoadRunner测试数据库是模拟客户端去连接数据库服务器,因此,需要协议(或者说驱动的支持).LoadRunner本身直接支持Oracle.SqlServer数据库,这两个数据库直接选择相应的协议 ...
- loadrunner通过odbc测mysql数据库语句
#include "lrd.h" Action() { double trans_time; //定义一个double型变量用来保存事务执行时间 static LRD_INIT_ ...
- loadrunner 利用JDBC操作mysql数据库
import lrapi.lr;import java.util.ArrayList;import java.util.List; import java.sql.Connection; import ...
- MFC通过ODBC连接mysql(使用VS2012编写MFC)
原创文章,转载请注明原文:MFC通过ODBC连接mysql(使用VS2012编写MFC) By Lucio.Yang 1.ODBC连接mysql 首先ODBC是什么呢? 开放数据库互连(Open Da ...
- 利用java编写的盲注脚本
之前在网上见到一个盲注的题目,正好闲来无事,便用java写了个盲注脚本,并记录下过程中的坑 题目源码: <?php header("Content-Type: text/html;ch ...
- Loadrunner与idea编写加密的java Vusers脚本总结
Loadrunner与idea编写加密的java Vusers脚本总结 准备工作: jdk版本的选择: Loadrunner11 使用版本jdk1.6 32位(如果使用1.7的Load ...
- Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本
脚本开发-利用loadrunner开发Windows Sockets协议脚本 by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436 实践举例 Socket服务端简单实 ...
- Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本
脚本开发-利用Loadrunner生成Web service测试脚本 1.选择协议--Web Service,如下图 2.导入服务 入口1:点击Manage Services ->弹出窗中选择“ ...
- CentOS下编写shell脚本来监控MySQL主从复制的教程
这篇文章主要介绍了在CentOS系统下编写shell脚本来监控主从复制的教程,文中举了两个发现故障后再次执行复制命令的例子,需要的朋友可以参考下 目的:定时监控MySQL主从数据库是否同步,如果不同步 ...
随机推荐
- ExtJS4.2.1
ExtJS4.2.1 1. 介绍 1.1 说明 ExtJS是一个用javascript.CSS和HTML等技术实现的主要用于创建RIA即富客户端,且与后台技术无关的前端Ajax框架. 常用于企业内部管 ...
- 一个ajax的后台controller
@RequestMapping("/api/merBrand") @ResponseBody public ResultBrand merBrand(HttpServletRequ ...
- IOS 通过button获取cell
在使用tableview时,有时我们需要在cell中添加button和label,以便添加某项功能,而且往往点这个button的方法中需要知道button所在cell中label内存放的值. 一般而言 ...
- NGINX配置小随笔
达到以下效果: 1,特定目录被指定IP访问 2,不是指定的IP地址不能执行URI中特定字符串 3,特定目录中不能执行PHP文件 set $self_visit ''; if ( $request_ur ...
- java解析网页的内容
有时候,我们需要在java程序中获取一个连接,然后解析连接后,获取连接返回的内容结果来解析.准确的说是解析一个链接. 以下代码时解析百度首页的链接,获取的html代码的效果: public stati ...
- Go语言中的管道(Channel)总结
管道(Channel)是Go语言中比较重要的部分,经常在Go中的并发中使用.今天尝试对Go语言的管道来做以下总结.总结的形式采用问答式的方法,让答案更有目的性. Q1.管道是什么? 管道是Go语言在语 ...
- 在 Java 应用程序中使用 Elasticsearch
如果您使用过 Apache Lucene 或 Apache Solr,就会知道它们的使用体验非常有趣.尤其在您需要扩展基于 Lucene 或 Solr 的解决方案时,您就会了解 Elasticsear ...
- http2.0 相对于 http1.1的优势
1.http2.0完全是多路复用的,只需一个连接就可实现并行 可以将不同的请求夹杂在一起,只需一个连接就能加载一个页面. 2.可以让服务器将响应主动推动到客户端缓存中 当浏览器请求一个网页时,服务器除 ...
- poj 2718 Smallest Difference(穷竭搜索dfs)
Description Given a number of distinct , the integer may not start with the digit . For example, , , ...
- log4j 突然不打印记录,提示:No appenders could be found for logge,处理方法
log4j 一直都在使用正常,log4j.xml配置.代码都没有修改,突然不打印记录,出现下面提示: log4j:WARN No appenders could be found for logger ...