脚本实例:Loadrunner测试数据库、SQL语句性能
上一篇 / 下一篇 2011-11-20 20:00:33 / 个人分类:loadrunner
文章来源
- 文章来源:【转载】
此代码为Loadrunner 8 通过C API类型的Vuser 测试MySQL性能,或者测试sql语句性能的脚本。51Testing软件测试网z[5O%caDX:N6^
这东西很少有人用,网上资料很少,一般测试B/S的很多。51Testing软件测试网R$t t1f3g} nY
view plaincopy to clipboardprint?51Testing软件测试网
W5blB$_MJ-pC+\
xK]u6cV7m)D0Action()
{
int rc;
@:i[|5J%e#pE+^0int db_connection; // 数据库连接
int query_result; // 查询结果集 MYSQL_RES
char** result_row; // 查询的数据衕
OJ)l
JZ6[$h,I*k0
[2N&X4Z5R!U:z0char *server = "localhost";
e[
o{9aegm,U8j0char *user = "root";
char *password = "123456";
\yCgR*APd0char *database = "test";
3E6N/Mg] {*G0int port = 3306;
x
x,xur.g%f
}0int unix_socket = NULL;
w
l!c"Ed\1o;[0int flags = 0;
// 找到libmysql.dll的所在位置.
,}l4~ }P$fq4o0rc = lr_load_dll("C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\libmysql.dll");
if (rc != 0) {
}
jq*hq&Sk.Uw+H0
&eC#_x/{`?
?Hc0// 创建MySQL对象
db_connection = mysql_init(NULL);
ZS@g e?^"s0if (db_connection == NULL) {
4\0^+N6}|M$B^0
vv$P%zrM y1N0
}
HT!n'k9e#D}0
O'j"|)Ulc6J3`&k0// 连接到MySQL数据库
rc = mysql_real_connect(db_connection, server, user, password, database, port, unix_socket, flags);
if (rc == NULL) {
}
7v9x8LK%@"`A\ f0// 向数据库插入数据
// 此处的 {ORDER_ID} 是一个参数,简单测试时可以用一个常数代替
lr_save_string (lr_eval_string("INSERT INTO test_data (order_id) VALUES ({ORDER_ID})"),"paramInsertQuery");
rc = mysql_query(db_connection, lr_eval_string("{paramInsertQuery}"));
if (rc != 0) {
$IFki4Y(M0
*Wm+y'H-cm7B t(~)L0
}
``1?!y0T4o#\0
P.`eY4~2X,o{4U"q%O,xu0// 从数据库读取一个数据并显示
4XQ#qR0@Y0rc = mysql_query(db_connection, "SELECT order_id FROM test_data WHERE status IS FALSE LIMIT 1");
U&Qr8]7m} P6@RK0if (rc != 0) {
#L Q3T5~%\#? w%v#ow0
}
:F2UA!o A,O5hP|i0query_result = mysql_use_result(db_connection);
if (query_result == NULL) {
RP1PX^'NKo0
}
O8k:|DF+A
gv0// 如果结果集包含多行数据,需要多次调用 mysql_fetch_row 直到返回NULL
(o'xG#\^5j7L5H.|0result_row = (char **)mysql_fetch_row(query_result);
*Yc5};u:M1aC9K!P/V0if (result_row == NULL) {
8i'U]2v5Fe5Y0
a"`JJ0i#QecR0}
// 保存参数,用于删除这行数据
lr_save_string(result_row[0], "paramOrderID");
lr_output_message("Order ID is: %s", lr_eval_string("{paramOrderID}"));
5`_)[bk0mysql_free_result(query_result);
EGxz|:P
D m3v0
eiA/w D'c?0// 在事务里更新一行数据,需要用InnoDB引擎
rc = mysql_query(db_connection, "BEGIN"); //启动事务
if (rc != 0) {
}/U-dO
E bM5|0
.o)u `\Q5R0}
(F5\@!z
c^LJ,l9D0// 使用 "FOR UPDATE" 锁住要更新的数据行