makaay1144 发表于 2010-1-8 14:08:26

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 编辑 ]

makaay1144 发表于 2010-1-8 14:25:21

比较急,请各位高手指点我一下
还有获取了消息之后,能否进行结果比较

superliming 发表于 2010-1-8 14:39:25

压力测试比较什么啊

makaay1144 发表于 2010-1-8 14:40:26

因为要看返回的是否成功,所以要看一下

ermine 发表于 2010-1-8 15:00:05

你录制的时候,就没有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 编辑 ]

kexi1314 发表于 2010-1-8 15:04:54

回复 1# 的帖子

定义了一个int型的变量rca,主要是为了调试脚本时确认soket连接是否建立成功。

你不是设置了这个吗?还要看什么结果?

makaay1144 发表于 2010-1-8 16:31:47

谢谢各位的帮助,我都是个菜鸟,被逼用loadrunner的。
就是要做个形式,给业主们看的,环境啥的都不正规。

[ 本帖最后由 makaay1144 于 2010-1-8 16:49 编辑 ]

makaay1144 发表于 2010-1-8 17:03:41

原帖由 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.
是不是因为程序没有及时返回呢?怎样设置超时时间?

ermine 发表于 2010-1-8 17:09:18

。。。我的是个例子,你可以参考看
buf1是录制的时候,服务器发回客户端的buffer,如果你的服务器只收不发,客户端就没有buffer了。

makaay1144 发表于 2010-1-8 17:12:17

原帖由 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 编辑 ]

云层 发表于 2010-1-8 17:24:00

如果要获得服务器的返回,可以用lrs_save_param或者是lrs_save_searched_string()

Fin 发表于 2010-1-9 11:06:20

原帖由 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

makaay1144 发表于 2010-1-10 01:14:20

楼上兄弟说的是,我已经发现了。谢谢指正!

makaay1144 发表于 2010-1-10 01:15:10

楼上兄弟说的是,谢谢指正

cainiaoxiao 发表于 2010-1-11 18:03:04

:lol
LZ,你这个脚本怎么没有closed掉socket呢,这个肯定有问题

龙雨 发表于 2010-1-12 10:03:31

建议仔细观察运行日志,会有所领悟的,尤其是对于功能类似的函数的理解。
页: [1]
查看完整版本: loadrunner如何接收返回的soket消息