- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
LR录制winsocket协议脚本
TCP协议的winsocket录制脚本
唱歌评测服务是使用TCP协议,是基于socket协议的编程,所以使用LR录制winsocket。下面说一下LR的winsocket协议是个很通用的协议,只要windows上通信的软件都可以使用,但是最好还是只用于录制基于socket协议的编程的应用程序。使用该协议时,靠自动录制估计是行不通的,得靠手工填写脚本。如本次我要录制本机上的服务引擎(是个exe文件)基本上自动录制的脚本是没有什么用的,下面介绍下步骤:
选择如下图所示,在录制的时候可以运行开发提供的测试工具,这样可以录制http协议的消息到data.ws,但是只能录制到发送方的消息体,无法录制服务端SES回复的消息。
录制完成后Action中如下:
Action()
{
??? lrs_create_socket(socket0, TCP, LocalHost=45678, Backlog=5,? LrsLastArg);
??? lrs_accept_connection(socket0, socket1);
??? lrs_send(socket1, buf0, LrsLastArg);
?? ? lrs_disable_socket(socket1, DISABLE_SEND);
??? lrs_close_socket(socket1);
??? return 0;
}
编译没有错误,但是运行的时候
lrs_send(socket1, buf0, LrsLastArg);一直报Action.c(14): Error : Timeout expired while trying to accept connection. Error code : 9017.
最后发现录制出现的脚本是不可用的,需要手工添加传送和接收的消息,在data.ws中添加消息交互信息,而录制的Action多半也是不可用的。
下面说一下data.ws,这个是http协议录制中没有的,这里面是soket消息交互的内容,一般需要手工填写,至于具体内容是什么样的,应该询问开发人员的消息定义格式。
以一次客户端发送的请求登录消息为例,定义消息时设置要了协议,要发送的内容为usrname和password,这些内容在逻辑设计手册上有定义。
send buf0 56
GET /ses_login HTTP/1.1\r\n
usrname: iavp\r\n
password: iavp\r\n
下面说下自动录制的Action错误:
发现实际上录制时候自动生成的LocalHost=45678是不对的,应该写成IP地址
lrs_create_socket(socket0, TCP, RemoteHost=42:45678, LrsLastArg);
lrs_accept_connection(socket0, socket1);
这个消息是不需要的,本次是长连接,整个一次评测过程中只有一个socket,如果是短连接,每次也都要重新lrs_create_socket。
有的内容是变化的,需要进行参数化,本次录制的内容比较简单,只有sessionID 需要参数化,以下是客户端收到服务端的响应的消息,其中包括sessionid。
recv buf1 67
HTTP/1.1 200 OK\r\n
response: /ses_login\r\n
sessionid: num\r\n
retcode: 0\r\n
\r\n
Sessionid的参数化步骤如下:点击进入tree模式
在需要参数化的Sessionid:1,选到1,然后右键进入create Parameter,进行参数化即可,然后应用到所有的Sessionid中即可。
以上就是LoadRunner录制的过程,比较简单,只要明确知道消息交互的格式就可以了,如果是短连接的话则发送接收一次消息就断开socket,所以需要重连,协议也不一样,短连接使用http1.0协议。
回放的时候出现mismatch的错误,接收到0byte,进行单步调试,发现连接是失败的,原因有2个:
一是回放的时候SES需要开启,录制的时候不用开启;
二是因为数据是动态的Flags= MSG_PEEK;这个标志表示不对Buf大小进行检查
lrs_receive(socket0, buf1, Flags=MSG_PEEK, LrsLastArg);
http长连接脚本:
#include lrs.h
Action()
{
lrs_create_socket(socket0, TCP, RemoteHost=42:45678, LrsLastArg);
lrs_send(socket0, buf0, L
文档评论(0)