#!/bin/bash
### BEGIN INIT INFO
# Provides:          selenium
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: selenium
# Description:       selenium test framework
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

DISPLAY_ID="{{ selenium_display_id }}"
RUN_AS=root

JAVA_BIN=/usr/bin/java

XVFB_BIN=/usr/bin/xvfb-run

SELENIUM_DIR={{ selenium_install_dir }}/selenium
SELENIUM_JAR_FILE="$SELENIUM_DIR/selenium-server-standalone-{{ selenium_version }}.jar"
DAEMON_PID_FILE="$SELENIUM_DIR/selenium.pid"
SELENIUM_LOG_FILE="$SELENIUM_DIR/selenium.log"
SELENIUM_DAEMON_OPTS=" -client -jar $SELENIUM_JAR_FILE -log $SELENIUM_LOG_FILE -port {{ selenium_port }}"

export DISPLAY="$DISPLAY_ID"

set -e

. /lib/lsb/init-functions

case "$1" in
    start)
        if status_of_proc -p $DAEMON_PID_FILE "$SELENIUM_JAR_FILE" $SELENIUM_JAR_FILE > /dev/null; then
            log_progress_msg "Service already running"
        else
            log_daemon_msg "Starting Selenium server"
            log_progress_msg "selenium"
            start-stop-daemon -c $RUN_AS --start --quiet --background --pidfile $DAEMON_PID_FILE --make-pidfile --exec $XVFB_BIN {{ selenium_xvfb_args }} $JAVA_BIN -- $SELENIUM_DAEMON_OPTS
        fi
        ;;

    stop)
        if status_of_proc -p $DAEMON_PID_FILE "$SELENIUM_JAR_FILE" $SELENIUM_JAR_FILE > /dev/null; then
            log_daemon_msg "Stopping Selenium server"
            log_progress_msg "selenium"
            DAEMON_PID=$(cat $DAEMON_PID_FILE)
            DAEMON_CHILDREN=$(pstree -l -p $DAEMON_PID |grep "([[:digit:]]*)" -o |tr -d '()')
            # Stop daemon itself.
            start-stop-daemon --stop --pidfile $DAEMON_PID_FILE
            # Stop all child processes.
            sudo kill $DAEMON_CHILDREN
        else
            log_progress_msg "Service not running"
        fi
        ;;

    restart|force-reload)
        $0 stop
        sleep 1
        $0 start
	;;

	status)
        status_of_proc -p $DAEMON_PID_FILE "$SELENIUM_JAR_FILE" $SELENIUM_JAR_FILE && exit 0 || exit $?
    ;;

    *)
      	N=/etc/init.d/selenium
        echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
        exit 1
        ;;
esac