51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4139|回复: 15
打印 上一主题 下一主题

[原创] loadrunner如何接收返回的soket消息

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-1-8 14:08:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
头出差了,丢下一个服务要我用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 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2010-1-8 14:25:21 | 只看该作者
比较急,请各位高手指点我一下
还有获取了消息之后,能否进行结果比较
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-1-8 14:39:25 | 只看该作者
压力测试比较什么啊
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-1-8 14:40:26 | 只看该作者
因为要看返回的是否成功,所以要看一下
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-1-8 15:04:54 | 只看该作者

回复 1# 的帖子

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

你不是设置了这个吗?还要看什么结果?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2010-1-8 16:31:47 | 只看该作者
谢谢各位的帮助,我都是个菜鸟,被逼用loadrunner的。
就是要做个形式,给业主们看的,环境啥的都不正规。

[ 本帖最后由 makaay1144 于 2010-1-8 16:49 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2010-1-8 17:03:41 | 只看该作者
原帖由 ermine 于 2010-1-8 15:00 发表
你录制的时候,就没有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.
是不是因为程序没有及时返回呢?怎样设置超时时间?
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-1-8 17:09:18 | 只看该作者
。。。我的是个例子,你可以参考看
buf1是录制的时候,服务器发回客户端的buffer,如果你的服务器只收不发,客户端就没有buffer了。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2010-1-8 17:12:17 | 只看该作者
原帖由 ermine 于 2010-1-8 17:09 发表
。。。我的是个例子,你可以参考看
buf1是录制的时候,服务器发回客户端的buffer,如果你的服务器只收不发,客户端就没有buffer了。


哦,我们开发的只是一个服务,开发人员给了我一个发送soket的小工具。我用loadrunner录制这个小工具脚本,结果操作完了后是空的。于是我就在网上找相关资料,抄袭来了前面的脚本。

[ 本帖最后由 makaay1144 于 2010-1-8 17:20 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2010-1-8 17:24:00 | 只看该作者
如果要获得服务器的返回,可以用lrs_save_param或者是lrs_save_searched_string()
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2010-1-9 11:06:20 | 只看该作者
原帖由 makaay1144 于 2010-1-8 17:03 发表



用了您的方法,出现这种错误
Action.c(32): Error : Specified buffer buf1 doesn't exist. Error code : 9011.
是不是因为程序没有及时返回呢?怎样设置超时时间?



你没有在data.ws 里面添加BUF1 吧?
;WSRData 2 1

send  buf0 1
        ""

recv  buf1 1
        ""

-1
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2010-1-10 01:14:20 | 只看该作者
楼上兄弟说的是,我已经发现了。谢谢指正!
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2010-1-10 01:15:10 | 只看该作者
楼上兄弟说的是,谢谢指正
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2017-7-7 09:06
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    15#
    发表于 2010-1-11 18:03:04 | 只看该作者

    LZ,你这个脚本怎么没有closed掉socket呢,这个肯定有问题
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2010-1-12 10:03:31 | 只看该作者
    建议仔细观察运行日志,会有所领悟的,尤其是对于功能类似的函数的理解。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-18 14:28 , Processed in 0.078121 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表