51Testing软件测试论坛
标题:
请教关于socket脚本中参数化的问题
[打印本页]
作者:
runny15
时间:
2012-6-26 12:38
标题:
请教关于socket脚本中参数化的问题
场景是这样的,我的脚本一共有三个步骤,分别是(client->server)获取终端id,终端注册,用户注册,然后每一步服务器都会有相应的应答。期间,终端注册需要用获取终端id步骤中recv到的报文中服务器传回来的id号,然后要在终端注册中传id号+mac+ip+time等等,然后用户注册就是用户名+id+mac+ip等等,单独一个用户进行这三步的脚本已经实现,发送的buf采用的是lrs_set_send_buffer+lrs_length_send的方式发送我自己编的结构体的内容,然后recv到的报文再保存到另一个准备好的结构体中,现在我想要进入controller开始性能测试,所以需要先将mac、ip参数化,但是我试了两种方法:1像录制web协议一样直接在脚本中将参数右键参数化,不可用,在send的buf日志中显示发送的就是参数化的名称:“<mac>”,而不是我参数化的实际值00-00-00-00-00-01;2参考书上说的使用lrs_save_param_ex,但是这个函数貌似只能用data.ws中buf的数据来参数化,然后结合lrs_send发送buf,可是我的脚本根本就没用data.ws来发实际的数据(因为使用了lrs_set_send_buffer+lrs_length_send),所以我现在遇到的问题是:
【怎样在lrs_set_send_buffer+lrs_length_send的前提下在脚本中做到参数化,而不用data.ws】
ps:
因为代码太长了,所以截取部分结构体放上来给大家分析:
【终端注册的结构体】:
typedef struct terminalreg_req
{
char ver; //°?±?o?£?0x01
char sn; //serial number£?μ±?°2?×?D£?é
short nop; //±£á?2??×??ú
int type; //±¨??ààDí
int len; //data×???μ?3¤?è
char id[12]; //terminal id
int idtype; //terminal alive or login
char ip[16]; //terminal ip
char ipv6[16]; //terminal ipv6
char mac[20]; //terminal mac
int creat_time; //terminal id creat time
int user_state; //user online state
char user_name[32]; //user name
char domain_name[32]; //domain name
char version[20]; //client version
}uni_pkt_Treg_req;
uni_pkt_Treg_req *pktTreg;
【给结构体中的属性赋值】:
pktTreg->ver = 0x01;
pktTreg->type = TERMINAL_REG_REQ;
pktTreg->len = 160;
pktTreg->nop = 0;
pktTreg->idtype = 0;
strcpy(pktTreg->ip,"200.104.0.82");
strcpy(pktTreg->mac,"00-00-00-00-00-01");
pktTreg->user_state = 0;
strcpy(pktTreg->version,"3.02.07.64");
strcpy(pktTreg->id,pktRecv2->tid); //将第一步获取的终端id放到要发送的终端注册的结构体中
pktTreg->creat_time = pktRecv2->creat_time; //同上一步的意义
(我就是想把“200.104.0.82”和“00-00-00-00-00-01”参数化,然后能够使用controller把这个值发出去。)
发送buf的函数:
t_size = sizeof(uni_pkt_Treg_req);
【将组合好的结构体放到buffer中然后发送】:
memcpy(bufferTregResp,pktTreg,sizeof(uni_pkt_Treg_req));
lrs_set_send_buffer("socket0",(char*)bufferTregResp,t_size);
lrs_length_send("socket0","buf4",0,LrsLastArg);
lrs_receive("socket0","buf5",LrsLastArg);
【在data.ws中的内容是这样子的】:
send buf4 8
"00000000"
recv buf5 40
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2