受80年代启发的WebRTC Python单元测试
项目描述
VideoDrone
您最喜欢的开源视频会议解决方案可以处理多少个连接用户?这正是videodrone想要回答的问题。通过经验来回答。
Videodrone使用Selenium HQ和Python测试流行的WebRTC平台,旨在成为负载测试编排的轻量级构建系统。
目前只实现了chrome driver,并在基于Debian的发行版上进行了充分测试,欢迎您贡献您的“drone连接器”。有关更多信息,请参阅Drone Connectors。
需求
- python {36,37,38}
- selenium
- chromium网络浏览器
可用无人机
- BBB meet GARR, bbbmeet_garr_chrome
- Pexip GARR, pexip_garr_chrome
- jitsi, jitsi_chrome
- Edu meet GARR, edumeet_garr_chrome
- Open meet GARR, open_garr_chrome
- lepida #iorestoacasa work, lepida_iorestoacasawork_chrome
您应该知道,
- WebRTC需要巨大的负载,在英特尔i7处理器上,您将从5到8架无人机开始
- 在分布式环境中,应该可以处理数百架无人机,一个videodrones集群
- 使用Docker是构建一个完整工作环境的最快方式,即点即用。
- 无人机代码中默认硬编码了URL,请使用
-url
参数进行覆盖。
设置
提供完整的Python3 pip环境,其中已安装virtualenv
。您甚至可以使用build.sh
构建您的videodrone项目。
准备环境
apt install python3-pip wget chromium unzip
pip3 install --upgrade pip
pip3 install virtualenv
wget https://raw.githubusercontent.com/peppelinux/videodrone/master/build.sh -O build.sh
bash build.sh VideoDrone
您甚至可以手动安装videodrone。
mkdir VideoDrones && cd VideoDrones
virtualenv -ppython3 env && source env/bin/activate
pip install videodrone
在执行videodrone
之前,请创建以下目录。
- y4m,您的y4m文件所在的位置。它们将被随机使用。
mkdir y4ms
wget https://media.xiph.org/video/derf/y4m/students_cif.y4m -O y4ms/students_cif.y4m
- drivers,您的selenium驱动所在的位置。
在LXC容器中设置
apt install lxc
CONTAINER_NAME=deb10
lxc-create -t download -n $CONTAINER_NAME -- -d debian -r buster -a armhf
lxc-start deb10
lxc-attach deb10
# then choose your preferred setup as show in the previous sections.
Docker镜像
docker image build --tag videodrone .
# go in
# docker container run -it videodrone /bin/bash
# run the container with your preferred configuration
docker container run -dit -e VIDEODRONE_DRIVER=/usr/bin/chromedriver videodrone videodrone -room thatroom -c videodrone.drones.jitsi_chrome -y4m /VideoDrone/y4ms/ -lifetime 33 -n 4
运行
VIDEODRONE_DRIVER
环境变量可以覆盖默认路径,默认路径为$VDPATH/drivers/chromedriver
。
示例,此连接器配置为创建一个连接到"https://meet.jit.si/thatroom"的单个无人机
VIDEODRONE_DRIVER=/usr/bin/chromedriver videodrone -c "videodrone.drones.jitsi_chrome" -r thatroom -y4m ./y4ms/
"thatroom"中将有一群4架无人机
videodrone -room thatroom -c "videodrone.drones.edumeet_garr_chrome" -y4m ./y4ms/ -n 4
输出
INFO:__name__:Started drone <Process name='Process-1' pid=25900 parent=25898 started>
INFO:__name__:Started drone <Process name='Process-2' pid=25960 parent=25898 started>
INFO:__name__:Started drone <Process name='Process-3' pid=26155 parent=25898 started>
INFO:__name__:Started drone <Process name='Process-4' pid=26373 parent=25898 started>
INFO:__name__:Drone destroyed
INFO:__name__:Drone destroyed
INFO:__name__:Drone destroyed
INFO:__name__:Drone destroyed
发生了什么
另一个与Garr BBB会议的示例。将headless
设置为false意味着浏览器将在前台运行。
./videodrone -c "videodrone.drones.bbbmeet_garr_chrome" -room "/b/roomname -pin thatpin -y4m y4ms/ -headless 0 -lifetime 27
无人机连接器
无人机连接器是selenium浏览器宏,用python编写,尽可能简单。无人机连接器必须打包和安装,或包含在您的PYTHONPATH(sys.path)中。您甚至可以在VideoDrone项目中创建一个python本地包文件夹。
例如,请参阅videodrone.drones.jitsi_chrome。
致谢
- 法比奥·法里纳(Garr联盟)
- 马西莫·卡博尼(Garr联盟)
- Garrlab社区
- IoRestoACasa社区
项目详情
关闭
videodrone-0.9.9.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 50d4f78f010aeb6ddece3ec7e5904c8d30146dc07df9cce1c8d6582a83fdf99f |
|
MD5 | a6a7eaa6db8e265397253fb659792be0 |
|
BLAKE2b-256 | dca44c05320ea8c267ceff95fcce759b6ff384c0e497b0fd68992beba357c092 |