2020-12-15 14:46:52 +00:00
|
|
|
#!/bin/bash
|
|
|
|
# Custom Selenium Grid-Node fro Jitsi Meet
|
2020-12-20 06:40:03 +00:00
|
|
|
# Pandian © - https://community.jitsi.org/u/Pandian
|
2023-11-08 06:34:51 +00:00
|
|
|
# SwITNet Ltd © - 2023, https://switnet.net/
|
2020-12-15 14:46:52 +00:00
|
|
|
# GPLv3 or later.
|
|
|
|
|
2022-05-21 00:54:27 +00:00
|
|
|
while getopts m: option
|
|
|
|
do
|
|
|
|
case "${option}"
|
|
|
|
in
|
|
|
|
m) MODE=${OPTARG};;
|
|
|
|
\?) echo "Usage: sudo bash ./$0 [-m debug]" && exit;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
|
|
#DEBUG
|
|
|
|
if [ "$MODE" = "debug" ]; then
|
|
|
|
set -x
|
|
|
|
fi
|
|
|
|
|
2020-12-15 14:46:52 +00:00
|
|
|
#Check if user is root
|
2022-05-12 04:52:18 +00:00
|
|
|
if ! [ "$(id -u)" = 0 ]; then
|
2020-12-15 14:46:52 +00:00
|
|
|
echo "You need to be root or have sudo privileges!"
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
WAN_IP="$(dig +short myip.opendns.com @resolver1.opendns.com)"
|
|
|
|
AV_SPACE="$(df -h .|grep -v File|awk '{print$4}'|sed -e 's|G||')"
|
|
|
|
|
2020-12-17 12:47:10 +00:00
|
|
|
echo -e "\n-- Make sure you have at least 10GB of disk space available.\n"
|
2022-05-12 04:52:18 +00:00
|
|
|
if [ "$(echo "$AV_SPACE > 9" | bc)" -ne 0 ]; then
|
2020-12-15 14:46:52 +00:00
|
|
|
echo "> Seems we have enough disk space."
|
|
|
|
else
|
|
|
|
echo "> Please meet the minimum required disk space for this installer, exiting..."
|
|
|
|
exit
|
|
|
|
fi
|
|
|
|
|
2020-12-15 22:50:45 +00:00
|
|
|
apt-get update
|
2020-12-15 14:46:52 +00:00
|
|
|
apt-get dist-upgrade -y
|
|
|
|
apt-get install -y \
|
|
|
|
gnupg \
|
|
|
|
bmon \
|
|
|
|
curl \
|
|
|
|
wget \
|
|
|
|
unzip \
|
|
|
|
maven \
|
2022-05-12 09:12:13 +00:00
|
|
|
openjdk-11-jdk
|
2020-12-15 22:50:45 +00:00
|
|
|
# Docker
|
2020-12-15 14:46:52 +00:00
|
|
|
curl -fsSL https://get.docker.com -o get-docker.sh
|
|
|
|
sh get-docker.sh
|
2020-12-15 22:50:45 +00:00
|
|
|
## Docker Compose
|
|
|
|
curl -sL "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
2020-12-15 14:46:52 +00:00
|
|
|
chmod +x /usr/local/bin/docker-compose
|
|
|
|
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
|
|
|
|
|
2020-12-15 22:50:45 +00:00
|
|
|
# Jitsi Meet Torture
|
2022-05-12 04:52:18 +00:00
|
|
|
cd /opt || exit
|
2020-12-15 14:46:52 +00:00
|
|
|
git clone https://github.com/jitsi/jitsi-meet-torture
|
2022-05-12 04:52:18 +00:00
|
|
|
cd jitsi-meet-torture/ || exit
|
|
|
|
if [ -f resources/FourPeople_1280x720_30.y4m ] ; then
|
2022-02-08 01:30:25 +00:00
|
|
|
echo "FourPeople_1280x720_30.y4m exists"
|
2020-12-20 06:40:03 +00:00
|
|
|
else
|
2022-02-08 01:30:25 +00:00
|
|
|
echo "FourPeople_1280x720_30.y4m doesn't exists, getting a copy..."
|
|
|
|
wget -c https://media.xiph.org/video/derf/y4m/FourPeople_1280x720_60.y4m
|
2022-05-12 04:52:18 +00:00
|
|
|
mv FourPeople_1280x720_60.y4m resources/
|
|
|
|
cp resources/FourPeople_1280x720_60.y4m resources/FourPeople_1280x720_30.y4m
|
2020-12-20 06:40:03 +00:00
|
|
|
fi
|
2020-12-15 14:46:52 +00:00
|
|
|
|
|
|
|
#150 "participants" available
|
|
|
|
## Tested up to 120 with AWS c5.24xlarge
|
|
|
|
cat << SELENIUM_GRID_DOCKER > selenium.yml
|
|
|
|
version: "3"
|
|
|
|
services:
|
|
|
|
selenium-hub:
|
|
|
|
image: selenium/hub:3.141.59-20200525
|
|
|
|
container_name: selenium-hub
|
|
|
|
ports:
|
|
|
|
- "4444:4444"
|
2020-12-15 22:50:45 +00:00
|
|
|
restart: always
|
2020-12-15 14:46:52 +00:00
|
|
|
chrome:
|
2020-12-15 22:50:45 +00:00
|
|
|
image: selenium/node-chrome:3.141.59-20200525
|
|
|
|
volumes:
|
|
|
|
- /dev/shm:/dev/shm
|
|
|
|
- ./resources:/usr/share/jitsi-meet-torture/resources
|
|
|
|
depends_on:
|
|
|
|
- selenium-hub
|
|
|
|
environment:
|
|
|
|
- HUB_HOST=selenium-hub
|
|
|
|
- HUB_PORT=4444
|
|
|
|
- NODE_MAX_INSTANCES=30
|
|
|
|
- NODE_MAX_SESSION=30
|
|
|
|
restart: always
|
2020-12-15 14:46:52 +00:00
|
|
|
chrome2:
|
2020-12-15 22:50:45 +00:00
|
|
|
image: selenium/node-chrome:3.141.59-20200525
|
|
|
|
volumes:
|
|
|
|
- /dev/shm:/dev/shm
|
|
|
|
- ./resources:/usr/share/jitsi-meet-torture/resources
|
|
|
|
depends_on:
|
|
|
|
- selenium-hub
|
|
|
|
environment:
|
|
|
|
- HUB_HOST=selenium-hub
|
|
|
|
- HUB_PORT=4444
|
|
|
|
- NODE_MAX_INSTANCES=30
|
|
|
|
- NODE_MAX_SESSION=30
|
|
|
|
restart: always
|
2020-12-15 14:46:52 +00:00
|
|
|
chrome3:
|
2020-12-15 22:50:45 +00:00
|
|
|
image: selenium/node-chrome:3.141.59-20200525
|
|
|
|
volumes:
|
|
|
|
- /dev/shm:/dev/shm
|
|
|
|
- ./resources:/usr/share/jitsi-meet-torture/resources
|
|
|
|
depends_on:
|
|
|
|
- selenium-hub
|
|
|
|
environment:
|
|
|
|
- HUB_HOST=selenium-hub
|
|
|
|
- HUB_PORT=4444
|
|
|
|
- NODE_MAX_INSTANCES=30
|
|
|
|
- NODE_MAX_SESSION=30
|
|
|
|
restart: always
|
2020-12-15 14:46:52 +00:00
|
|
|
chrome4:
|
2020-12-15 22:50:45 +00:00
|
|
|
image: selenium/node-chrome:3.141.59-20200525
|
|
|
|
volumes:
|
|
|
|
- /dev/shm:/dev/shm
|
|
|
|
- ./resources:/usr/share/jitsi-meet-torture/resources
|
|
|
|
depends_on:
|
|
|
|
- selenium-hub
|
|
|
|
environment:
|
|
|
|
- HUB_HOST=selenium-hub
|
|
|
|
- HUB_PORT=4444
|
|
|
|
- NODE_MAX_INSTANCES=30
|
|
|
|
- NODE_MAX_SESSION=30
|
|
|
|
restart: always
|
2020-12-15 14:46:52 +00:00
|
|
|
chrome5:
|
2020-12-15 22:50:45 +00:00
|
|
|
image: selenium/node-chrome:3.141.59-20200525
|
|
|
|
volumes:
|
|
|
|
- /dev/shm:/dev/shm
|
|
|
|
- ./resources:/usr/share/jitsi-meet-torture/resources
|
|
|
|
depends_on:
|
|
|
|
- selenium-hub
|
|
|
|
environment:
|
|
|
|
- HUB_HOST=selenium-hub
|
|
|
|
- HUB_PORT=4444
|
|
|
|
- NODE_MAX_INSTANCES=30
|
|
|
|
- NODE_MAX_SESSION=30
|
|
|
|
restart: always
|
2020-12-15 14:46:52 +00:00
|
|
|
SELENIUM_GRID_DOCKER
|
|
|
|
|
2020-12-16 16:28:28 +00:00
|
|
|
docker-compose -f selenium.yml up -d
|
|
|
|
|
2020-12-15 22:50:45 +00:00
|
|
|
echo -e "\n#=================== End of Seleniun Grid build ========================#\n"
|
2021-05-22 20:50:42 +00:00
|
|
|
echo -e "\nChange the values according to you test requirements using something like;\n"
|
2020-12-16 16:28:28 +00:00
|
|
|
echo "cd /opt/jitsi-meet-torture
|
|
|
|
sudo bash /opt/jitsi-meet-torture/scripts/malleus.sh \\
|
2020-12-15 14:46:52 +00:00
|
|
|
--conferences=1 \\
|
|
|
|
--participants=30 \\
|
|
|
|
--senders=2 \\
|
|
|
|
--audio-senders=1 \\
|
|
|
|
--duration=120 \\
|
|
|
|
--room-name-prefix=hamertesting \\
|
|
|
|
--hub-url=http://localhost:4444/wd/hub \\
|
|
|
|
--instance-url=https://YOUR.JITSI-MEET-INSTANCE.DOMAIN
|
|
|
|
"
|
2022-05-12 04:52:18 +00:00
|
|
|
echo -e "\n-- If using 'hamertesting' as prefix name you can join the room
|
|
|
|
hamertesting0, hamertesting1, hamertestingN
|
2020-12-16 00:54:54 +00:00
|
|
|
according to the 'N' number of conferences you have set to watch the test.
|
2020-12-15 14:46:52 +00:00
|
|
|
|
2020-12-15 22:50:45 +00:00
|
|
|
*Beware* for 120 \"participants\" to join video-muted it was necessary at least a c5.24xlarge AWS instance.
|
2020-12-16 00:54:54 +00:00
|
|
|
So start low, monitor your server resources and go from there."
|
2020-12-15 14:46:52 +00:00
|
|
|
|
|
|
|
echo -e "\n-- You can check the grid status at:
|
|
|
|
http://$WAN_IP:4444/grid/console
|
|
|
|
"
|