51Testing软件测试论坛
标题:
关于lrs_receive函数的一个问题求助
[打印本页]
作者:
z309466902
时间:
2012-11-19 17:16
标题:
关于lrs_receive函数的一个问题求助
问题描述:
1、使用loadrunner的socket测试UDP协议
2、此UDP协议在消息体前面添加了一些自定义的头(即私有协议)
3、获取随机数操作
步骤1:客户端发送获取随机数请求到服务器上,服务器会返回一个确认的ACK,表示服务器收到了请求,
步骤2:服务器在返回ACK后,接着返回了随机数(有重发机制,服务器判断客户端是否收到随机数的依据是客户端是否发送了ACK)
步骤3:客户端接收到随机数后,发送ACK给服务器,表示接收到了随机数,操作结束
问题:
1、发现服务器要发送3次的随机数给客户端后,才会继续进行发送ACK的操作,请问这个问题怎么解决,万分感谢
2、lrs_receive的接收结束原理是什么,为什么要在接收了一个随机数报后不执行“lrs_send("socket0","buf2", "TargetSocket=10.137.86.5:8089", LrsLastArg);“代码?
LR脚本
Action()
{
lrs_create_socket("socket0", "UDP", "LocalHost=18998", LrsLastArg);
lrs_send"buf0", "TargetSocket=10.137.86.5:8089", LrsLastArg
rs_set_recv_timeout2(5,0);
lr_start_transaction("GetRamom");
lrs_receive("socket0", "buf1", LrsLastArg);
lrs_save_searched_string("socket0",NULL,"RAMOM1","LB=nonce\":","RB=\"",3,1,-1);
lrs_save_searched_string("socket0",NULL,"resultCode","LB=resultCode\"","RB=,",3,1,-1);
if (strcmp(lr_eval_string("<resultCode>"),"401")==0) {
lr_end_transaction("GetRamom", LR_PASS);
}
lr_output_message("resultCode is : %s",lr_eval_string("<resultCode>"));
lr_output_message("RAMOM is : %s",lr_eval_string("<RAMOM1>"));
lrs_send("socket0","buf2", "TargetSocket=10.137.86.5:8089", LrsLastArg);
return 0;
}
作者:
z309466902
时间:
2012-11-19 17:17
补充下data文件
;WSRData 2 1
send buf0 106
"U"
"\xaa\x00\x00\x00\x00\x01\x01\x01\x01"
";"
"\x00\x00\x00\x00\x00"
"Y<75558010312>{\"sno\":1,\"timeStamp\":\"2012-11-13 05:57:28.317\",\"userA"
"ccount\":\"75558010312\"}\n"
recv buf1 365
send buf2 0
"U"
"\xaa\x00\x01"
"ォ"
"\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-1
作者:
z309466902
时间:
2012-11-20 10:11
请大神们帮忙看看下,纠结了很多天了!!!!!!
作者:
Sayid
时间:
2012-11-20 10:16
1、你的脚本是不是设置了3次迭代?如果没有,那么就是你的buf1的接收长度与服务器实际返回不一致导致服务端重发了3次。
2、lrs_receive的接收原理就是有没有执行lrs_send,如果没有接收到数据lrs_receive会一直等待,除非socket状态为non-blocking。同时,接收长度不等于预期长度,会重新接收socket的数据,直到超时为止。
3、你试试下面这段action
Action()
{
lrs_create_socket("socket0", "UDP", "RemoteHost=10.137.86.5:8089", LrsLastArg);
lrs_send("socket0", "buf0", LrsLastArg);
lrs_set_recv_timeout2(5,0);
lr_start_transaction("GetRamom");
lrs_receive("socket0", "buf1", LrsLastArg);
lrs_save_searched_string("socket0",NULL,"RAMOM1","LB=nonce\":","RB=\"",3,1,-1);
lrs_save_searched_string("socket0",NULL,"resultCode","LB=resultCode\"","RB=,",3,1,-1);
if (strcmp(lr_eval_string("<resultCode>"),"401")==0) {
lr_end_transaction("GetRamom", LR_PASS);
}
lr_output_message("resultCode is : %s",lr_eval_string("<resultCode>"));
lr_output_message("RAMOM is : %s",lr_eval_string("<RAMOM1>"));
lrs_send("socket0","buf2", LrsLastArg);
lrs_close_socket("socket0");
return 0;
}
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2