{"id":14978884,"url":"https://github.com/peppelinux/videodrone","last_synced_at":"2025-10-28T13:31:26.281Z","repository":{"id":62587403,"uuid":"298594224","full_name":"peppelinux/videodrone","owner":"peppelinux","description":"WebRTC Selenium HQ tests in python.","archived":false,"fork":false,"pushed_at":"2021-01-16T01:32:06.000Z","size":49791,"stargazers_count":19,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-09-29T02:05:45.102Z","etag":null,"topics":["python-3","selenium","selenium-python","unit-testing","unittest","webrtc"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peppelinux.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-25T14:21:06.000Z","updated_at":"2023-03-24T10:33:47.000Z","dependencies_parsed_at":"2022-11-03T22:15:53.665Z","dependency_job_id":null,"html_url":"https://github.com/peppelinux/videodrone","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peppelinux%2Fvideodrone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peppelinux%2Fvideodrone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peppelinux%2Fvideodrone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peppelinux%2Fvideodrone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peppelinux","download_url":"https://codeload.github.com/peppelinux/videodrone/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219859520,"owners_count":16556036,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python-3","selenium","selenium-python","unit-testing","unittest","webrtc"],"created_at":"2024-09-24T13:58:34.817Z","updated_at":"2025-10-28T13:31:24.632Z","avatar_url":"https://github.com/peppelinux.png","language":"Python","readme":"VideoDrone\n----------\n\nHow many connected users your favourite open source video conferencing solution can handle?\nThat's the question that __videodrone__ wants to answer. Empirically.\n\nVideodrone tests popular WebRTC Platforms with Selenium HQ and Python, aiming \nto be a lightweight build system for load test orchestration.\n\nAt this moment only chrome driver was implemented and well tested on Debian based distributions, \nfill free to contribute with your \"drone connector\". See [Drone Connectors](#drone-connectors) for further informations.\n\nRequirements:\n- python {36,37,38}\n- selenium\n- chromium web browser\n\nAvailable drones:\n- [BBB meet GARR](https://blue.meet.garr.it), [bbbmeet_garr_chrome](src/videodrone/drones/bbbmeet_garr_chrome.py)\n- [Pexip GARR](), [pexip_garr_chrome](src/videodrone/drones/pexip_garr_chrome.py)\n- [jitsi](https://meet.jit.si/), [jitsi_chrome](src/videodrone/drones/jitsi_chrome.py)\n- [Edu meet GARR](https://edu.meet.garr.it/), [edumeet_garr_chrome](src/videodrone/drones/edumeet_garr_chrome.py)\n- [Open meet GARR](https://open.meet.garr.it/), [open_garr_chrome](src/videodrone/drones/open_garr_chrome.py)\n- [lepida #iorestoacasa work](https://lepida1.iorestoacasa.work), [lepida_iorestoacasawork_chrome](src/videodrone/drones/lepida_iorestoacasawork_chrome.py)\n\nYou should know, that:\n- WebRTC needs a huge load, on a intel i7 processor you would start from 5 to 8 drones\n- hundreds of drones should be handled in a distribuited environment, a cluster of videodrones\n- Docker is the fastest way to built a fully working environment, ready to go\n- Drones have default hardcoded URLS in their code, please use `-url` parameter to override\n\nSetup\n-----\n\nProvide a fully working python3 pip environment, with `virtualenv` installed in.\nYou can even use `build.sh` to build your videodrone project.\n![example](gallery/videodrone_autobuild.3-min.gif)\n\n\nPrepare environment\n````\napt install python3-pip wget chromium chromium-driver unzip\npip3 install --upgrade pip\npip3 install virtualenv\n````\n\nInstall videodrone.\n\n````\nmkdir VideoDrones \u0026\u0026 cd VideoDrones\nvirtualenv -ppython3 env \u0026\u0026 source env/bin/activate\npip install videodrone\n````\n\nCreate the following directories before executing `videodrone`.\n\n- y4m, where your preferred y4m files resides. They will be used randomically.\n  - `mkdir y4ms`\n  - `wget https://media.xiph.org/video/derf/y4m/students_cif.y4m -O y4ms/students_cif.y4m`\n- drivers, where your selenium drivers resides.\n\n\nBuild script, DEPRECABLE: tested on Debian10 and Ubuntu Focal 20.04\n````\nwget https://raw.githubusercontent.com/peppelinux/videodrone/master/build.sh -O build.sh\nbash build.sh VideoDrone\n````\nWe kindly suggest to use Docker to built in a easy and fast way your VideoDrone environment.\n\n\nSetup in LXC container\n----------------------\n\n````\napt install lxc\nCONTAINER_NAME=deb10\nlxc-create -t download -n $CONTAINER_NAME -- -d debian -r buster -a armhf\nlxc-start deb10\nlxc-attach deb10\n\n# then choose your preferred setup as show in the previous sections.\n````\n\nDocker Image\n------------\n\n````\ndocker image build --tag videodrone .\n\n# go in\n# docker container run -it videodrone /bin/bash\n\n# run the container with your preferred configuration\ndocker 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\n````\n\nRun\n---\n\n`VIDEODRONE_DRIVER` environment variable can override the default path, which is `$VDPATH/drivers/chromedriver`.\n\nexample, this connector is configured to create a single drone to \"https://meet.jit.si/thatroom\":\n````\nVIDEODRONE_DRIVER=/usr/bin/chromedriver videodrone -c \"videodrone.drones.jitsi_chrome\" -r thatroom -y4m ./y4ms/\n````\n\nThere will be a party of 4 drones in \"thatroom\":\n````\nvideodrone -room thatroom -c \"videodrone.drones.edumeet_garr_chrome\" -y4m ./y4ms/ -n 4\n````\n\nOutput\n````\nINFO:__name__:Started drone \u003cProcess name='Process-1' pid=25900 parent=25898 started\u003e\nINFO:__name__:Started drone \u003cProcess name='Process-2' pid=25960 parent=25898 started\u003e\nINFO:__name__:Started drone \u003cProcess name='Process-3' pid=26155 parent=25898 started\u003e\nINFO:__name__:Started drone \u003cProcess name='Process-4' pid=26373 parent=25898 started\u003e\nINFO:__name__:Drone destroyed\nINFO:__name__:Drone destroyed\nINFO:__name__:Drone destroyed\nINFO:__name__:Drone destroyed\n````\n\nWhat happens\n![example](gallery/1.png)\n\nAnother example with Garr BBB meet. `headless` set to false means that the browser will run in foreground.\n\n````\n./videodrone -c \"videodrone.drones.bbbmeet_garr_chrome\" -room \"/b/roomname -pin thatpin -y4m y4ms/ -headless 0 -lifetime 27\n````\n\n\nDrone Connectors\n----------------\n\nDrone connectors are selenium browser macros, written in python, as simple as possibile.\nDrone connectors must be packaged and installed or included \nin your PYTHONPATH (sys.path). You can even create \na python local package folder, in your VideoDrone Project.\n\nSee [videodrone.drones.jitsi_chrome](src/videodrone/drones/jitsi_chrome.py) for example.\n\n\nIssues\n------\n\nThe big problem is the correct version of selenium's chrome-driver and chrome web browser.\nIf you need to run videodrone as a Developer you should have to work a bit more on your workstation to get the correct versions.\nSee Dockerfile to see how I do that.\n\n\nCredits\n-------\n\n- Fabio Farina (Garr Consortium)\n- Massimo Carboni (Garr Consortium)\n- Garrlab community\n- IoRestoACasa Community\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeppelinux%2Fvideodrone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpeppelinux%2Fvideodrone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeppelinux%2Fvideodrone/lists"}