Package: videodrone
VideoDroneHow many connected users your favourite open source video conferencing solution can handle?
That's the question thatvideodronewants to answer. Empirically.Videodrone tests popular WebRTC Platforms with Selenium HQ and Python, aiming
to be a lightweight build system for load test orchestration.At this moment only chrome driver was implemented and well tested on Debian based distributions,
fill free to contribute with your "drone connector". SeeDrone Connectorsfor further informations.Requirements:python {36,37,38}seleniumchromium web browserAvailable drones:BBB meet GARR,bbbmeet_garr_chromePexip GARR,pexip_garr_chromejitsi,jitsi_chromeEdu meet GARR,edumeet_garr_chromeOpen meet GARR,open_garr_chromelepida #iorestoacasa work,lepida_iorestoacasawork_chromeYou should know, that:WebRTC needs a huge load, on a intel i7 processor you would start from 5 to 8 droneshundreds of drones should be handled in a distribuited environment, a cluster of videodronesDocker is the fastest way to built a fully working environment, ready to goDrones have default hardcoded URLS in their code, please use-urlparameter to overrideSetupProvide a fully working python3 pip environment, withvirtualenvinstalled in.
You can even usebuild.shto build your videodrone project.Prepare environmentapt 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 VideoDroneYou can even install videodrone by hands.mkdir VideoDrones && cd VideoDrones
virtualenv -ppython3 env && source env/bin/activate
pip install videodroneCreate the following directories before executingvideodrone.y4m, where your preferred y4m files resides. They will be used randomically.mkdir y4mswget https://media.xiph.org/video/derf/y4m/students_cif.y4m -O y4ms/students_cif.y4mdrivers, where your selenium drivers resides.Setup in LXC containerapt 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 Imagedocker 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 4RunVIDEODRONE_DRIVERenvironment variable can override the default path, which is$VDPATH/drivers/chromedriver.example, this connector is configured to create a single drone to "https://meet.jit.si/thatroom":VIDEODRONE_DRIVER=/usr/bin/chromedriver videodrone -c "videodrone.drones.jitsi_chrome" -r thatroom -y4m ./y4ms/There will be a party of 4 drones in "thatroom":videodrone -room thatroom -c "videodrone.drones.edumeet_garr_chrome" -y4m ./y4ms/ -n 4OutputINFO:__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 destroyedWhat happensAnother example with Garr BBB meet.headlessset to false means that the browser will run in foreground../videodrone -c "videodrone.drones.bbbmeet_garr_chrome" -room "/b/roomname -pin thatpin -y4m y4ms/ -headless 0 -lifetime 27Drone ConnectorsDrone connectors are selenium browser macros, written in python, as simple as possibile.
Drone connectors must be packaged and installed or included
in your PYTHONPATH (sys.path). You can even create
a python local package folder, in your VideoDrone Project.Seevideodrone.drones.jitsi_chromefor example.CreditsFabio Farina (Garr Consortium)Massimo Carboni (Garr Consortium)Garrlab communityIoRestoACasa Community