From 5d3337c8a4a139b6864494c8356532f9dcc30bdb Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 31 Oct 2015 03:27:57 +0000 Subject: [PATCH] Started work on test script --- test.sh | 353 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 353 insertions(+) create mode 100644 test.sh diff --git a/test.sh b/test.sh new file mode 100644 index 000000000..f2e6cc30c --- /dev/null +++ b/test.sh @@ -0,0 +1,353 @@ +#!/bin/bash +# Just Cause 2 +# Server Management Script +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +version="150715" + +#### Variables #### + +# Notification Email +# (on|off) +emailnotification="off" +email="email@example.com" + +# Steam login +steamuser="anonymous" +steampass="" + +# Start Variables +updateonstart="off" + +fn_parms(){ +parms="" +} + +#### Advanced Variables #### + +# Steam +appid="261140" + +# Server Details +servicename="jc2-server" +gamename="Just Cause 2" +engine="avalanche" + +# Directories +rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +selfname="$(basename $0)" +lockselfname=".${servicename}.lock" +filesdir="${rootdir}/serverfiles" +systemdir="${filesdir}" +executabledir="${filesdir}" +executable="./Jcmp-Server" +servercfg="config.lua" +servercfgdir="${filesdir}" +servercfgfullpath="${servercfgdir}/${servercfg}" +servercfgdefault="${servercfgdir}/default_config.lua" +backupdir="${rootdir}/backups" + +# Logging +logdays="7" +#gamelogdir="" # No server logs available +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" + +scriptlog="${scriptlogdir}/${servicename}-script.log" +consolelog="${consolelogdir}/${servicename}-console.log" +emaillog="${scriptlogdir}/${servicename}-email.log" + +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" + +##### Script ##### +# Do not edit + +fn_runfunction(){ +# Functions are downloaded and run with this function +if [ ! -f "${rootdir}/functions/${functionfile}" ]; then + cd "${rootdir}" + if [ ! -d "functions" ]; then + mkdir functions + fi + cd functions + echo -e " loading ${functionfile}...\c" + wget -N /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45- + chmod +x "${functionfile}" + cd "${rootdir}" +fi +source "${rootdir}/functions/${functionfile}" +} + +fn_functions(){ +# Functions are defined in fn_functions. +functionfile="${FUNCNAME}" +fn_runfunction +} + +fn_functions + +getopt=$1 + +fn_currentstatus(){ +pid=$(tmux list-sessions 2>&1 | awk '{print $1}' | grep -Ec "^${servicename}:") +if [ "${pid}" == "0" ]; then + currentstatus="OFFLINE" +else + currentstatus="ONLINE" +fi +} + +fn_setstatus(){ + fn_currentstatus + + echo"" + echo "Required status: ${requiredstatus}" + while [ "${requiredstatus}" != "${currentstatus}" ]; do + fn_currentstatus + echo -ne "Current status: ${currentstatus}\\r" + if [ "${requiredstatus}" == "ONLINE" ]; then + (fn_start > /dev/null 2>&1) + else + (fn_stop > /dev/null 2>&1) + fi + done + echo -ne "Current status: ${currentstatus}\\r" + echo -e "\n" + echo "Test starting:" + echo "" + sleep 0.5 +} + +echo "1.0 - start - no files" +echo "=================================" +echo "Description:" +echo "Test script reaction to missing server files." +requiredstatus="OFFLINE" +fn_setstatus +(fn_start) +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "2.0 - install" +echo "=================================" +echo "Description:" +echo "install ${gamename} server." +requiredstatus="OFFLINE" +fn_setstatus +fn_autoinstall +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "3.1 - start" +echo "=================================" +echo "Description:" +echo "start ${gamename} server." +requiredstatus="OFFLINE" +fn_setstatus +fn_start +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "3.2 - start - online" +echo "=================================" +echo "Description:" +echo "start ${gamename} server while already running." +requiredstatus="ONLINE" +fn_setstatus +(fn_start) +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "3.3 - stop" +echo "=================================" +echo "Description:" +echo "stop ${gamename} server." +requiredstatus="ONLINE" +fn_setstatus +fn_stop +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "3.4 - stop - offline" +echo "=================================" +echo "Description:" +echo "stop ${gamename} server while already stopped." +requiredstatus="OFFLINE" +fn_setstatus +(fn_stop) +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "3.5 - restart" +echo "=================================" +echo "Description:" +echo "restart ${gamename}." +requiredstatus="ONLINE" +fn_setstatus +fn_restart +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "3.5 - restart - offline" +echo "=================================" +echo "Description:" +echo "restart ${gamename} while already stopped." +requiredstatus="OFFLINE" +fn_setstatus +fn_restart +echo "" +echo "Test complete!" +sleep 1 +echo "" + +echo "4.1 - update" +echo "=================================" +echo "Description:" +echo "check for updates." +requiredstatus="OFFLINE" +fn_setstatus +fn_update_check +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "4.2 - update - change buildid" +echo "=================================" +echo "Description:" +echo "change the buildid tricking SteamCMD to update." +requiredstatus="OFFLINE" +fn_setstatus +fn_printinfonl "changed buildid to 0." +sed -i 's/[0-9]\+/0/' ${filesdir}/steamapps/appmanifest_${appid}.acf +fn_update_check +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "4.3 - update - change buildid - online" +echo "=================================" +echo "Description:" +echo "change the buildid tricking SteamCMD to update server while already running." +requiredstatus="ONLINE" +fn_setstatus +fn_printinfonl "changed buildid to 0." +sed -i 's/[0-9]\+/0/' ${filesdir}/steamapps/appmanifest_${appid}.acf +fn_update_check +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "4.4 - update - remove appmanifest file" +echo "=================================" +echo "Description:" +echo "removing appmanifest file will cause script to repair." +requiredstatus="OFFLINE" +fn_setstatus +fn_printinfonl "removed appmanifest_${appid}.acf." +rm --verbose "${filesdir}/steamapps/appmanifest_${appid}.acf" +fn_update_check +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "4.5 - force-update" +echo "=================================" +echo "Description:" +echo "force-update bypassing update check." +requiredstatus="OFFLINE" +fn_setstatus +fn_update_check +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "4.6 - force-update - online" +echo "=================================" +echo "Description:" +echo "force-update bypassing update check server while already running." +requiredstatus="ONLINE" +fn_setstatus +fn_update_check +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "4.7 - validate" +echo "=================================" +echo "Description:" +echo "validate server files." +requiredstatus="OFFLINE" +fn_setstatus +fn_validate +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "4.8 - validate - online" +echo "=================================" +echo "Description:" +echo "validate server files while server while already running." +requiredstatus="ONLINE" +fn_setstatus +fn_validate +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "5.1 - monitor - online" +echo "=================================" +echo "Description:" +echo "run monitor server while already running." +requiredstatus="ONLINE" +fn_setstatus +(fn_monitor) +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "5.2 - monitor - offline - no lockfile" +echo "=================================" +echo "Description:" +echo "run monitor while server is offline with no lockfile" +requiredstatus="OFFLINE" +fn_setstatus +(fn_monitor) +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "5.2 - monitor - offline - with lockfile" +echo "=================================" +echo "Description:" +echo "run monitor while server is offline with no lockfile" +requiredstatus="OFFLINE" +fn_setstatus +fn_printinfonl "creating lockfile." +date > "${rootdir}/${lockselfname}" +(fn_monitor) +echo "" +echo "Test complete!" +sleep 1 +echo "" +echo "5.2 - monitor - gsquery.py failure" +echo "=================================" +echo "Description:" +echo "gsquery.py will fail to query port" +requiredstatus="ONLINE" +fn_setstatus +port=${port+1} +(fn_monitor) +port=${port-1} +echo "" +echo "Test complete!" +sleep 1 +echo "" +