#!/bin/bash

################################################################################
################################################################################
########## This is the starting script for the automated xmpptest ##############
################################################################################
################################################################################

# set directory path
XMPPTEST_DIR=/usr/share/xmpptest

# set default number of accounts to test
DEFAULT_TEST=5000

# parameter to set number of accounts to test
COUNT_TEST=${1-$DEFAULT_TEST}

# set required packages
PACKAGES=("jabbertest" "jabberd" "jabberd-sqlite" "sqlite3" "berkeleydb" "jabberd-db" "xmlstarlet")

# function to display usage
usage(){
        echo -e "Usage: xmpptest-start [option]\nOption:\n
<total-users>\tTotal number (integer) of users to log into the Jabber service.\nIf nothing specified, the default value of $DEFAULT_TEST is set.\n
Example:\n
xmpptest-start 1000\n
This invocation will login 1000 users into the Jabber service and starts\n1000 concurrent sessions."
exit
}

# check parameter
if [ $# -gt 1  ] || ! [[ "$COUNT_TEST" =~ ^[1-9][0-9]*+$ ]];
        then usage;
fi

# test if required packages are installed, exit if not
NOT_INSTALLED=1
for i in "${PACKAGES[@]}"
do
        echo "Test package: "$i
        if rpm -q $i &> /dev/null;
                then echo -e "\t $i is installed\n";
        else    echo -e "----- package $i is not installed -----\n"
                NOT_INSTALLED=0;
        fi
done

if [[ $NOT_INSTALLED -eq 0 ]];
        then echo "Error: please install the required packages"
        exit;
fi

# set testuser
TESTUSER="xmpptestuser"

echo "limits: `ulimit -n`"

# change ulimits
echo "change limits"
ulimit -n 40000
echo "limits: `ulimit -n`"

# login as testuser and execute testing scripts
echo "login as testuser xmpptestuser"
su $TESTUSER -c "$XMPPTEST_DIR/xmpptest-main $XMPPTEST_DIR $COUNT_TEST"
