forked from switnet/quick-jibri-installer
				
			
		
			
				
	
	
		
			172 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
#!/bin/bash
 | 
						|
# Custom Selenium Grid-Node fro Jitsi Meet
 | 
						|
# Pandian © - https://community.jitsi.org/u/Pandian
 | 
						|
# SwITNet Ltd © - 2025, https://switnet.net/
 | 
						|
# GPLv3 or later.
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
#Check if user is root
 | 
						|
if ! [ "$(id -u)" = 0 ]; then
 | 
						|
   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||')"
 | 
						|
 | 
						|
echo -e "\n-- Make sure you have at least 10GB of disk space available.\n"
 | 
						|
if [ "$(echo "$AV_SPACE > 9" | bc)" -ne 0 ]; then
 | 
						|
  echo "> Seems we have enough disk space."
 | 
						|
else
 | 
						|
  echo "> Please meet the minimum required disk space for this installer, exiting..."
 | 
						|
  exit
 | 
						|
fi
 | 
						|
 | 
						|
apt-get update
 | 
						|
apt-get dist-upgrade -y
 | 
						|
apt-get install -y \
 | 
						|
                         gnupg \
 | 
						|
                         bmon \
 | 
						|
                         curl \
 | 
						|
                         wget \
 | 
						|
                         unzip \
 | 
						|
                         maven \
 | 
						|
                         openjdk-11-jdk
 | 
						|
# Docker
 | 
						|
curl -fsSL https://get.docker.com -o get-docker.sh
 | 
						|
sh get-docker.sh
 | 
						|
## 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
 | 
						|
chmod +x /usr/local/bin/docker-compose
 | 
						|
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
 | 
						|
 | 
						|
# Jitsi Meet Torture
 | 
						|
cd /opt || exit
 | 
						|
git clone https://github.com/jitsi/jitsi-meet-torture
 | 
						|
cd jitsi-meet-torture/ || exit
 | 
						|
if [ -f resources/FourPeople_1280x720_30.y4m ] ; then
 | 
						|
  echo "FourPeople_1280x720_30.y4m exists"
 | 
						|
else
 | 
						|
  echo "FourPeople_1280x720_30.y4m doesn't exists, getting a copy..."
 | 
						|
  wget -c https://media.xiph.org/video/derf/y4m/FourPeople_1280x720_60.y4m
 | 
						|
  mv FourPeople_1280x720_60.y4m resources/
 | 
						|
  cp resources/FourPeople_1280x720_60.y4m resources/FourPeople_1280x720_30.y4m
 | 
						|
fi
 | 
						|
 | 
						|
#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"
 | 
						|
    restart: always
 | 
						|
  chrome:
 | 
						|
    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
 | 
						|
  chrome2:
 | 
						|
    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
 | 
						|
  chrome3:
 | 
						|
    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
 | 
						|
  chrome4:
 | 
						|
    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
 | 
						|
  chrome5:
 | 
						|
    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
 | 
						|
SELENIUM_GRID_DOCKER
 | 
						|
 | 
						|
docker-compose -f selenium.yml up -d
 | 
						|
 | 
						|
echo -e "\n#=================== End of Seleniun Grid build ========================#\n"
 | 
						|
echo -e "\nChange the values according to you test requirements using something like;\n"
 | 
						|
echo "cd /opt/jitsi-meet-torture
 | 
						|
sudo bash /opt/jitsi-meet-torture/scripts/malleus.sh \\
 | 
						|
                        --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
 | 
						|
"
 | 
						|
echo -e "\n-- If using 'hamertesting' as prefix name you can join the room
 | 
						|
hamertesting0, hamertesting1, hamertestingN
 | 
						|
according to the 'N' number of conferences you have set to watch the test.
 | 
						|
 | 
						|
*Beware* for 120 \"participants\" to join video-muted it was necessary at least a c5.24xlarge AWS instance.
 | 
						|
So start low, monitor your server resources and go from there."
 | 
						|
 | 
						|
echo -e "\n-- You can check the grid status at:
 | 
						|
http://$WAN_IP:4444/grid/console
 | 
						|
"
 |