#!/usr/bin/env bash # # Usage: grid-node {start|stop} # source $(dirname $0)/util EXPECTED_ARGS=1 E_BADARGS=65 DO_showUsage() { echo "Usage: $(basename $0) {start|stop}" exit $E_BADARGS } if [ $# -ne $EXPECTED_ARGS ]; then DO_showUsage fi ################################################################################ WEBDRIVER_SERVER_JAR=$HOME/opt/selenium-server-standalone.jar # API default is 4444, so for testing we'll use 3333 WEBDRIVER_NODE_PARAMS="-role webdriver -hubHost 127.0.0.1 -hubPort 3333 -host 127.0.0.1 -browserName=firefox" WEBDRIVER_NODE_PIDFILE="/tmp/webdriver_node.pid" if [ ! -f $WEBDRIVER_SERVER_JAR ]; then echo "You must place the Selenium-WebDriver standalone JAR file at ${WEBDRIVER_SERVER_JAR} before proceeding." exit 1 fi case "$1" in start) echo "Starting Selenium-WebDriver Grid2 node..." if [ -f $WEBDRIVER_NODE_PIDFILE ]; then echo "${FAIL_MSG} Selenium-WebDriver Grid2 node already running with PID $(cat $WEBDRIVER_NODE_PIDFILE). Run 'grid-node stop' or 'grid-node restart'." exit 1 else START_NODE_CMD="java -Djava.util.logging.config.file=test/logging.properties -jar ${WEBDRIVER_SERVER_JAR} ${WEBDRIVER_NODE_PARAMS}" $START_NODE_CMD & PID=$! echo $PID > "${WEBDRIVER_NODE_PIDFILE}" echo "${SUCCESS_MSG} Selenium-WebDriver Grid2 node started successfully." echo "To see full log output, remove the java.util.logging.config.file parameter from script/grid-node" fi ;; stop) echo "Stopping Selenium-WebDriver Grid2 node..." if [ -f $WEBDRIVER_NODE_PIDFILE ]; then PID=$(cat $WEBDRIVER_NODE_PIDFILE) kill $PID rm $WEBDRIVER_NODE_PIDFILE sleep 1 if [[ $(ps -A | egrep "^${PID}") ]]; then echo "${FAIL_MSG} Tried to kill the node with PID ${PID}, but was unsuccessful. You need to kill it with something stronger, like 'kill -9'" exit 1 else echo "${SUCCESS_MSG} Selenium-WebDriver Grid2 node stopped successfully." exit 0 fi else echo "${SUCCESS_MSG} Selenium-WebDriver Grid2 node has already been stopped." exit 0 fi ;; restart) $0 stop $0 start ;; *) DO_showUsage esac