??主要介绍3个开源的webrtc压力测试框架–kite,pion及srs_bench,以janus服务器为例。
1、KITE
?? KITE整合了Selenium和Aullure。Selenium 是一个开源的浏览器自动化框架,支持集群化(grids),不同的节点可以运行不同的操作系统类型/版本、浏览器类型/版本,这样我们就可以在各种操作系统和浏览器的组合下自动化测试 Web 应用了。Allure 则是一个开源的测试报告工具,用来展示测试结果。有开源版本也有商用版本。
重要特征:
-
支持linux、windows,mac,ios及android平台,也支持所有的浏览器; -
支持Jisti、janus、Kurento/openvidu、Mediasoup、Medooze (Simulcast demo) 服务器; -
使用java或Javascript语音作为测试脚本开发语音;
注意:
《1》、安装时注意现有系统上使用的浏览器版本及其对应的驱动版本需要对应,否则会失败。谷歌浏览器查找对应版本的官方方法如下。
《2》、默认一个janus 视频会议只支持6个测试实例,需要更改配置文件及相应的脚本语言,不熟悉的情况下可以根据第一次运行的log中找到关键信息然后用egrep在测试用例中找对应的代码。(因为写的时候没有那个环境了所以就不列举了。)
《3》、需要使用KITE-Sample-Tests来测试我们的janus,这份sample里有多款webrtc服务器的初级测试脚本;
《4》、如果使用https模式且使用自己生成的证书,需要在sample对应webrtc服务文件夹下的config配置文件中添加浏览器启动参数,谷歌浏览器需添加"–ignore-certificate-errors",可以往KITE-master\localGrid\chrome\startNode中添加该参数(该文件在KITE成功安装后才有),也可以在config文件中添加。其它浏览器没使用过暂时没研究。
《5》、如果想节省移动资源可以把config文件中的headless的值设置为true,如下。这样它测试时就不会打开浏览器,但是编解码还是会有,省下浏览器那些许的资源开销。
《6》、如果浏览器驱动安装对了,然后按照github官方步骤就能跑起来,然后输出结果,可是也有时候显示测试已经pass但是实际并没有成功启动测试的(之所以知道没成功启动是因为headless为false情况下,浏览器没有启动起来,然后cpu也并没有正常测试时那么高的占用率。)正常起来压力测试的浏览器界面:
优点:多平台,多浏览器支持,测试结果一目了然,有简易测试报告; 缺点:需要进行视频的编解码,非常占用资源,一般机器十几路视频就卡死;
2、poin
??poin其实只是go语言实现的一套webrtc API不能算测试框架,但是其example里面有一个针对janus服务的实现,稍微修改一下就可以拿来做压力测试,而且要介绍的第三个压测工具是基于该框架实现的,这里面一些ICE配置可以参考。 使用wwebsock作为信令通信工具。没使用过所以只是稍微提一下它的潜力。
3、srs-bench
??srs流媒体服务器写的压测工具,基于poin框架,需要切换到其rtc分支。和kite一样都是读取同一个本地文件推流。 重要特征:
- 支持linux、windows及mac;
- 只推流或拉流,不消耗cpu及内存资源;
??按照github主页编译出来后即可使用,信令通信方式为http,若要修改为https只需要简单修改源码在编译即可,未实现turn服务器通信这一步但是可以参考pion很快写出这部分逻辑(不到10行代码)。命令行操作简单明了。 ??推流后打开浏览器进入房间可看到推的流,需要注意房间人数上限和你推流数量,超过最大限制的话web端进入不了房间。
4、参考 《1》、谷歌驱动版本下载 《2》、KITE github地址 《3》、KITE测试用例地址 《4》、python的selenium的带https安全隐私问题解决方案 《5》、pion框架 《6》、pion_example 《7》、srs-bench
|