51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 8319|回复: 17
打印 上一主题 下一主题

[原创] 对流媒体服务器达尔文进行性能测试的总结

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2005-12-22 22:44:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚刚搞了公司流媒体服务器达尔文的性能测试工作,有点进展。把自己的一点收获总结一下跟大家分享一下。
      loadrunner没有直接支持达尔文的协议,所以选择winsock协议进行脚本录制。
   大致的脚本如下:

#include "lrs.h"


Action()
{  int a=1;       

    lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=192.168.0.7:554",  LrsLastArg);

    lrs_send("socket0", "buf0", LrsLastArg);

    lrs_receive("socket0", "buf1", LrsLastArg);

    lrs_send("socket0", "buf2", LrsLastArg);

    lrs_receive("socket0", "buf3", LrsLastArg);

    lrs_send("socket0", "buf4", LrsLastArg);

    lrs_receive("socket0", "buf5", LrsLastArg);

    lrs_save_param("socket0",NULL,"newsession",178,19);

    lr_output_message("session is:%s",lr_eval_string("<newsession>"));

    lrs_send("socket0", "buf6", LrsLastArg);

        while (a=1)
        {
                }

  /* lrs_receive("socket0", "buf7", LrsLastArg);

     lrs_create_socket("socket1", "UDP", "LocalHost=6972",  LrsLastArg);

    lrs_create_socket("socket2", "UDP", "LocalHost=6973",  LrsLastArg);

    lrs_receive("socket1", "buf8", LrsLastArg);

    lrs_send("socket2", "buf9", "TargetSocket=192.168.0.7:6971", LrsLastArg);

    lrs_receive("socket2", "buf10", LrsLastArg);
......
    lrs_close_socket("socket2");

    lrs_close_socket("socket1");*/

    lrs_disable_socket("socket0", DISABLE_SEND);

    lrs_close_socket("socket0");

    return 0;
}
其中     lrs_save_param("socket0",NULL,"newsession",178,19);用来关联buf5中服务器传来的session id。buf5如下:
recv  buf5 486
        "RTSP/1.0 200 OK\r\n"
        "Server: DSS/5.5 (Build/489.7; Platform/Linux; Release/Darwin; )\r\n"
        "Cseq: 2\r\n"
        "Last-Modified: Thu, 22 Dec 2005 01:59:56 GMT\r\n"
        "Cache-Control: must-revalidate\r\n"
        "Session: 2347936984390074812\r\n"
        "Date: Thu, 22 Dec 2005 12:27:08 GMT\r\n"
        "Expires: Thu, 22 Dec 2005 12:27:08 GMT\r\n"
        "Transport: RTP/AVP;unicast;source=192.168.0.7;client_port=6972-6973;server"
        "_port=6970-6971;ssrc=401DA4CB\r\n"
        "x-Transport-Options: late-tolerance=0.400000\r\n"
        "x-Retransmit: our-retransmit\r\n"
        "x-Dynamic-Rate: 1;rtt=68\r\n"
        "\r\n"
其中session id 由第178位开始连续19位,将其保存在<newsession>中。用它替换之后由客户端发起的rtsp请求中的session id
如buf6:
send  buf6 268
        "PLAY rtsp://192.168.0.7:554/sugar.3gp RTSP/1.0\r\n"
        "CSeq: 3\r\n"
        "Range: npt=0.000000-134.200000\r\n"
        "x-prebuffer: maxtime=2.000000\r\n"
        "x-transport-options: late-tolerance=10\r\n"
        "Session: <newsession>\r\n"
        "User-Agent: QuickTime/7.0.3 (qtver=7.0.3;os=Windows NT 5.1Service Pack 2)\r"
        "\n"
        "\r\n"
脚本中的while(a=1){}只是用来让程续停留在那里,不往下执行用的。用来举个例子,没什么意义,意思就是当rtsp连接建立完成,服务器开始通过rtp协议向客户端发送流之后永远不关闭rtsp连接。大可加入有意义的控制。
      此脚本中注释掉了录制到的RTP连接的建立,因为个人认为加入那个对控制流的发送没意义,做起来又容易出错。
     在自己家,CONTROLER里面试一下,就用3个用户。打开ethereal,运行场景。截获的包中前后显示客户端发起3次describe、setup、play,服务器的应答都是成功,各自有不同的session-id。之后是服务器发来RTP包,传输开始了。我想这样基本就成功了吧。
      明天开始测了,不知道还会碰到什么问题。有了我在补上。
      感谢前辈们批评和指点。QQ:181645823 MSN: sun181645823@hotmail.com

[ 本帖最后由 Lennon 于 2005-12-26 17:02 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2005-12-23 08:56:02 | 只看该作者
good experience
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2005-12-23 15:49:33 | 只看该作者
Lennon,好棒,加油
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2005-12-24 19:04:03 | 只看该作者
顶一下而已。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2005-12-26 16:05:48 | 只看该作者
不错
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2005-12-26 16:55:32 | 只看该作者
经过两天测试,碰到一个问题:连接不能长时间保持.我想这个问题应该是因为服务器长时间没有收到客户端的响应发生的.于是将脚本中的
while (a=1)
        {
                }
更改成

        while (a=1)

        {
                     lr_think_time(60);
        lrs_send("socket1", "buf8", LrsLastArg);
        }
buf8如下:
send buf8 252
        "PLAY rtsp://192.168.0.7/sugar.3gp RTSP/1.0\r\n"
        "CSeq: <b>\r\n"
        "Range: npt=0.000000-134.200000\r\n"
        "x-prebuffer: maxtime=2.000000\r\n"
        "x-transport-options: late-tolerance=10\r\n"
        "Session: <newsession>\r\n"
        "User-Agent: QuickTime/7.0.2 (qtver=7.0.2;os=Windows NT 5.0Service Pack 4)\r"
        "\n"
        "\r\n"
作用就是连续向服务器发送rtsp的play请求.
流媒体服务器会根据其中的CSeq依次处理请求,所以我将后面的值做了参数化<b>。应为公司极其上没有安装VC等可以制作DLL的工具,暂时不使用user defined fountion的参数化方法,不然的话那倒是最好的方法。在这里,我使用的是file的方法(准备一个4到2000dat文件,每行一个数字)这个办法也足够脚本运行个进30个小时了。
其中的"Session: <newsession>\r\n"是上面做的关联。

脚本中的   lr_think_time(60);在本次测试中有意义,他保证了4到2000的Cseq能用上几十个小时。

测试到今天,我最大的体会是
“对业务过程的理解(在本次测试中体现为对rtsp协议的了解)对性能测试实在是太重要了”
感谢前辈们批评和指点。QQ:181645823 MSN: sun181645823@hotmail.com

[ 本帖最后由 Lennon 于 2005-12-26 17:03 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2005-12-30 13:48:50 | 只看该作者
自己顶 .Lennon真帅 ~~~!!
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2005-12-30 16:54:38 | 只看该作者

果然很帅。。

winsocket好像不能自动关联?
如果不了解系统后台的操作,简直是无从下手
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2006-1-6 16:34:59 | 只看该作者
再顶
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2006-1-7 18:24:30 | 只看该作者
我顶~~~
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2006-1-9 10:23:41 | 只看该作者
请问有没有数出是第几位的快捷办法?谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2006-1-9 11:49:46 | 只看该作者
在data.ws里面选中需要的buf,然后按f7。就看到了。接下来数一下。我是这么做的,大概还有更快捷的方法。
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2006-1-16 16:02:28 | 只看该作者
如此好贴,越看越帅~~~我顶
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2006-3-21 14:03:18 | 只看该作者
哇靠比我还帅
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2008-8-1 11:35:08 | 只看该作者
有人测试过流媒体吗还
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2015-6-25 18:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    16#
    发表于 2008-8-1 11:41:28 | 只看该作者
    顶,好帖,学习一下。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2010-11-9 16:45:04 | 只看该作者
    您好,51testing测试朋友,最近我 测流媒体性能,看了你之前的文章想跟你交个朋友!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2011-11-2 18:21:54 | 只看该作者
    还有人测试吗,我最近有测试流媒体的需求,请指教啊
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-9-25 07:24 , Processed in 0.091986 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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