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
 | |
| "
 |