最近写了个服务器程序,与客户端采用socket长连接,想用LoaderRunner做性能测试。以前没弄过,不知道该如何写,到google和baidu上竟然查不到,不知道是太简单了呢,还是没有人这么做,郁闷。
那就自力更生吧,研究了一下lr,原来lr支持类c脚本(据说最新版支持类java脚本),那就简单了呗,顺手写一个,如下:
Action()
{
lrs_create_socket("socket0", "TCP", "RemoteHost=192.168.37.22:8900", LrsLastArg);
lr_start_transaction("CA");
lrs_send("socket0", "buf0", LrsLastArg);
lrs_receive("socket0", "buf1", LrsLastArg);
lr_end_transaction("CA", LR_PASS);
//think time
lr_think_time(0.3);
while(1)
{
lr_start_transaction("CA");
lrs_send("socket0", "buf2", LrsLastArg);
lrs_receive("socket0", "buf3", LrsLastArg);
lr_end_transaction("CA", LR_PASS);
//think time
lr_think_time(0.3);
}
lrs_close_socket ("socket0");
return 0;
}
不要忘了在data.ws中填上数据。例如:
;WSRData 2 1
send buf0 94
"00000001100100000074{001=01}{002=20080731171525}{003=127.0.0.1}{007=001}{005=123456}{006=8888}"
recv buf1 75
"00000001100200000060{001=02}{002=2008081117040812850}{003=19.37.37.21}{007=0999}"
send buf2 63
"00000001103000000043{001=30}{002=20080731171525}{003=127.0.0.1}"
recv buf3 75
"00000001103100000055{001=31}{002=20080812162829}{003=19.37.37.21}{007=0000}"
-1
注意:buf后面的长度必须正确。
模拟运行测试一下脚本,运行通过。
最后使用该脚本定义测试场景,测试得到结果为TPS:2000。成功完成测试目标。
顺便提一下,上面使用了一个while循环,实际测试时可以不做循环,在场景中设置迭代方式和次数等(将lrs_create_socket加在init内,将lrs_close_socket加在end内,action只用来发送和接收报文,即可实现长连接测试)。