跳转到主要内容

受80年代启发的WebRTC Python单元测试

项目描述

VideoDrone

您最喜欢的开源视频会议解决方案可以处理多少个连接用户?这正是videodrone想要回答的问题。通过经验来回答。

Videodrone使用Selenium HQ和Python测试流行的WebRTC平台,旨在成为负载测试编排的轻量级构建系统。

目前只实现了chrome driver,并在基于Debian的发行版上进行了充分测试,欢迎您贡献您的“drone连接器”。有关更多信息,请参阅Drone Connectors

需求

  • python {36,37,38}
  • selenium
  • chromium网络浏览器

可用无人机

您应该知道,

  • WebRTC需要巨大的负载,在英特尔i7处理器上,您将从5到8架无人机开始
  • 在分布式环境中,应该可以处理数百架无人机,一个videodrones集群
  • 使用Docker是构建一个完整工作环境的最快方式,即点即用。
  • 无人机代码中默认硬编码了URL,请使用-url参数进行覆盖。

设置

提供完整的Python3 pip环境,其中已安装virtualenv。您甚至可以使用build.sh构建您的videodrone项目。example

准备环境

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

发生了什么example

另一个与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 (9.4 kB 查看哈希值)

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面