loadrunner如何接收返回的soket消息
头出差了,丢下一个服务要我用loadrunner做压力测试。我还是loadrunner菜鸟,在51testing搜索到一个发soket的脚本,可以正常发到服务上出发业务。
但是问题是我见不到返回结果。具体脚本如下,请高手指点
Action()
{
//定义了一个int型的变量rca,主要是为了调试脚本时确认soket连接是否建立成功。
/*
我分别加了3个transction,主要是为了确认如果大并发的情况下,是否会造出交通拥堵。事实证明这是非常有效的,因为我从我的测试监控平台可以看到,很明显的压力大服务器资源 不够的情况下,申请建立一个socket连接也是非常困难的。
*/
int rca;
lr_start_transaction("CreatSocket");
rca =lrs_create_socket("socket2", "TCP", "LocalHost=0", "RemoteHost=127.0.0.1:51118", LrsLastArg);
lr_end_transaction("CreatSocket", LR_AUTO);
if (rca==0)
lr_output_message("Socket is succesfully created!");
lr_start_transaction("SendMessage");
lrs_send("socket2", "buf0", LrsLastArg);
lr_end_transaction("SendMessage", LR_AUTO);
//关闭连接
lr_start_transaction("CloseSocket");
lrs_close_socket("socket2");
lr_end_transaction("CloseSocket", LR_AUTO);
return 0;
}
data.ws
;WSRData 2 1
send buf0 380
"00010002022010010100008CCCCCCHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH<?xml version="1.0" encoding="GBK"?><Message><Header><SendID>000A</SendID><ReceiverID>FFFF</ReceiverID><MessageClass>0009</MessageClass><MessageType>00</MessageType><ReqDate>20100120</ReqDate><MessageID>007294</MessageID><ReqTime>100135</ReqTime></Header><Body><CardID>32010847220000004991</CardID><Balance>-1</Balance></Body></Message>"
-1
[ 本帖最后由 makaay1144 于 2010-1-8 14:11 编辑 ] 比较急,请各位高手指点我一下
还有获取了消息之后,能否进行结果比较 压力测试比较什么啊 因为要看返回的是否成功,所以要看一下 你录制的时候,就没有lr_receive吗?
我们的程序都是一发一收的,在send后,用lr_receive接收
然后再用lrs_get_last_received_buffer取得buf信息和长度。
一个例子,粘上来格式不对了。。
Action()
{
char *mybuf;
int buflen;
lr_start_transaction("test");
lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=192.168.1.1:8011",LrsLastArg);
lrs_send("socket0", "buf0", LrsLastArg);
lrs_receive("socket0", "buf1", LrsLastArg);
lrs_get_last_received_buffer("socket0", &mybuf, &buflen);
lr_output_message("%s",mybuf);
lr_output_message("%d",buflen);
if (buflen!=285) //285是录制时,buf1的长度
{
lr_end_transaction("test", LR_FAIL);
}
else{
lr_end_transaction("test", LR_PASS);
}
return 0;
}
[ 本帖最后由 ermine 于 2010-1-8 15:02 编辑 ]
回复 1# 的帖子
定义了一个int型的变量rca,主要是为了调试脚本时确认soket连接是否建立成功。你不是设置了这个吗?还要看什么结果? 谢谢各位的帮助,我都是个菜鸟,被逼用loadrunner的。
就是要做个形式,给业主们看的,环境啥的都不正规。
[ 本帖最后由 makaay1144 于 2010-1-8 16:49 编辑 ] 原帖由 ermine 于 2010-1-8 15:00 发表 http://bbs.51testing.com/images/common/back.gif
你录制的时候,就没有lr_receive吗?
我们的程序都是一发一收的,在send后,用lr_receive接收
然后再用lrs_get_last_received_buffer取得buf信息和长度。
一个例子,粘上来格式不对了。。
Action()
{
ch ...
用了您的方法,出现这种错误
Action.c(32): Error : Specified buffer buf1 doesn't exist. Error code : 9011.
是不是因为程序没有及时返回呢?怎样设置超时时间? 。。。我的是个例子,你可以参考看
buf1是录制的时候,服务器发回客户端的buffer,如果你的服务器只收不发,客户端就没有buffer了。 原帖由 ermine 于 2010-1-8 17:09 发表 http://bbs.51testing.com/images/common/back.gif
。。。我的是个例子,你可以参考看
buf1是录制的时候,服务器发回客户端的buffer,如果你的服务器只收不发,客户端就没有buffer了。
哦,我们开发的只是一个服务,开发人员给了我一个发送soket的小工具。我用loadrunner录制这个小工具脚本,结果操作完了后是空的。于是我就在网上找相关资料,抄袭来了前面的脚本。
[ 本帖最后由 makaay1144 于 2010-1-8 17:20 编辑 ] 如果要获得服务器的返回,可以用lrs_save_param或者是lrs_save_searched_string() 原帖由 makaay1144 于 2010-1-8 17:03 发表 http://bbs.51testing.com/images/common/back.gif
用了您的方法,出现这种错误
Action.c(32): Error : Specified buffer buf1 doesn't exist. Error code : 9011.
是不是因为程序没有及时返回呢?怎样设置超时时间?
你没有在data.ws 里面添加BUF1 吧?
;WSRData 2 1
sendbuf0 1
""
recvbuf1 1
""
-1 楼上兄弟说的是,我已经发现了。谢谢指正! 楼上兄弟说的是,谢谢指正 :lol
LZ,你这个脚本怎么没有closed掉socket呢,这个肯定有问题 建议仔细观察运行日志,会有所领悟的,尤其是对于功能类似的函数的理解。
页:
[1]