diff --git a/tests/tests_defaultcfg/defaultcfg_0.txt b/tests/tests_defaultcfg/defaultcfg_0.txt deleted file mode 100644 index bcaa9f1dd0..0000000000 --- a/tests/tests_defaultcfg/defaultcfg_0.txt +++ /dev/null @@ -1,63 +0,0 @@ -stats -displayip -postalert -discordalert -discordwebhook -emailalert -email -emailfrom -iftttalert -ifttttoken -iftttevent -mailgunalert -mailguntoken -mailgundomain -mailgunemailfrom -mailgunemail -pushbulletalert -pushbullettoken -channeltag -rocketchatalert -rocketchatwebhook -rocketchattoken -slackalert -slackwebhook -pushoveralert -pushovertoken -telegramalert -telegramtoken -telegramchatid -curlcustomstring -maxbackups -maxbackupdays -stoponbackup -consolelogging -logdays -querydelay -ansi -sleeptime -stopmode -querymode -querytype -consoleverbose -consoleinteract -gamename -engine -glibc -systemdir -executabledir -executable -servercfgdir -servercfg -servercfgdefault -servercfgfullpath -backupdir -logdir -lgsmlogdir -consolelogdir -lgsmlog -consolelog -alertlog -postdetailslog -lgsmlogdate -consolelogdate diff --git a/tests/tests_defaultcfg/defaultcfg_1.txt b/tests/tests_defaultcfg/defaultcfg_1.txt deleted file mode 100644 index aa5b8a207d..0000000000 --- a/tests/tests_defaultcfg/defaultcfg_1.txt +++ /dev/null @@ -1,54 +0,0 @@ -################################## -######## Default Settings ######## -################################## -# DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN! -# Copy settings from here and use them in either: -# common.cfg - applies settings to every instance. -# [instance].cfg - applies settings to a specific instance. -#### Game Server Settings #### -## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -#### LinuxGSM Settings #### -## Notification Alerts -# (on|off) -# Display IP | https://docs.linuxgsm.com/alerts#display-ip -# More info | https://docs.linuxgsm.com/alerts#more-info -# Discord Alerts | https://docs.linuxgsm.com/alerts/discord -# Email Alerts | https://docs.linuxgsm.com/alerts/email -# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt -# Mailgun Email Alerts | https://docs.linuxgsm.com/alerts/mailgun -# Pushbullet Alerts | https://docs.linuxgsm.com/alerts/pushbullet -# Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover -# Slack Alerts | https://docs.linuxgsm.com/alerts/slack -# Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram -# You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". -# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". -## Backup | https://docs.linuxgsm.com/commands/backup -## Logging | https://docs.linuxgsm.com/features/logging -## Monitor | https://docs.linuxgsm.com/commands/monitor -# Query delay time -## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors -#### Advanced Settings #### -## Message Display Time | https://docs.linuxgsm.com/features/message-display-time -## Stop Mode | https://docs.linuxgsm.com/features/stop-mode -# 1: tmux kill -# 2: CTRL+c -# 3: quit -# 4: quit 120s -# 5: stop -# 6: q -# 7: exit -# 8: 7 Days to Die -# 9: GoldSrc -# 10: Avorion -# 11: end -## Console type -consoleverbose="" -consoleinteract="" -## Game Server Details -# Do not edit -#### Directories #### -# Edit with care -## Game Server Directories -## Backup Directory -## Logging Directories -## Logs Naming diff --git a/tests/tests_defaultcfg/tests_defaultcfg.sh b/tests/tests_defaultcfg/tests_defaultcfg.sh deleted file mode 100644 index 5f97f9a333..0000000000 --- a/tests/tests_defaultcfg/tests_defaultcfg.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash -echo -e "" -echo -e "0.1 - Full comparison Output" -echo -e "==================================================================" -echo -e "Description:" -echo -e "test checks that vars present in ALL _default.cfg files are correct." -echo -e "" -echo -e "In master config < | > In game config" -find "lgsm/config-default/config-lgsm/" ! -name '*template.cfg' -name "*.cfg" -type f -print0 \ - | while IFS= read -r -d $'\0' line; do - grep "=" "${line}" | cut -f1 -d"=" > defaultcfgtemp.txt - diffoutput=$(diff tests/tests_defaultcfg/defaultcfg_0.txt defaultcfgtemp.txt) - if [ "${diffoutput}" ]; then - echo "File with errors:" - echo "${line}" - echo -e "=================================" - echo -e "In master config < | > In game config" - echo "${diffoutput}" - echo "" - fi - rm -f defaultcfgtemp.txt - done - -echo -e "" -echo -e "1.0 - Master Comparison" -echo -e "==================================================================" -echo -e "Description:" -echo -e "test checks that vars present in ALL _default.cfg files are correct." -echo -e "" -echo -e "In master config < | > In game config" -find lgsm/config-default/config-lgsm/ ! -name '*template.cfg' -name "*.cfg" -type f -print0 \ - | while IFS= read -r -d $'\0' line; do - grep "=" "${line}" | cut -f1 -d"=" > defaultcfgtemp.txt - diffoutput=$(diff tests/tests_defaultcfg/defaultcfg_0.txt defaultcfgtemp.txt | grep '^<') - if [ "${diffoutput}" ]; then - echo "File with errors:" - echo "${line}" - echo -e "=================================" - echo -e "In master config < | > In game config" - echo "${diffoutput}" - echo "" - fi - rm -f defaultcfgtemp.txt - done - -echo -e "" -echo -e "2.0 - Check Comment" -echo -e "==================================================================" -echo -e "Description:" -echo -e "test checks that comments in ALL _default.cfg files are correct." -echo -e "" -echo -e "In master config < | > In game config" -find lgsm/config-default/config-lgsm/ ! -name '*template.cfg' -name "*.cfg" -type f -print0 \ - | while IFS= read -r -d $'\0' line; do - grep "#" "${line}" > defaultcfgtemp.txt - diffoutput=$(diff tests/tests_defaultcfg/defaultcfg_1.txt defaultcfgtemp.txt | grep '^<') - if [ "${diffoutput}" ]; then - echo "File with errors:" - echo "${line}" - echo -e "=================================" - echo "${diffoutput}" - echo "" - fi - rm -f defaultcfgtemp.txt - done diff --git a/tests/tests_fctrserver.sh b/tests/tests_fctrserver.sh deleted file mode 100644 index a63023dc8a..0000000000 --- a/tests/tests_fctrserver.sh +++ /dev/null @@ -1,1186 +0,0 @@ -#!/bin/bash -# Project: Game Server Managers - LinuxGSM -# Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2020 Daniel Gibbs -# Purpose: Travis CI Tests: Factorio | Linux Game Server Management Script -# Contributors: https://linuxgsm.com/contrib -# Documentation: https://docs.linuxgsm.com -# Website: https://linuxgsm.com - -# DO NOT EDIT THIS FILE -# LinuxGSM configuration is no longer edited here -# To update your LinuxGSM config go to: -# lgsm/config-lgsm -# https://docs.linuxgsm.com/configuration/linuxgsm-config - -# Debugging -if [ -f ".dev-debug" ]; then - exec 5> dev-debug.log - BASH_XTRACEFD="5" - set -x -fi - -version="v23.5.3" -shortname="fctr" -gameservername="fctrserver" -commandname="CORE" -rootdir=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")") -selfname=$(basename "$(readlink -f "${BASH_SOURCE[0]}")") -sessionname=$(echo "${selfname}" | cut -f1 -d".") -lgsmdir="${rootdir}/lgsm" -logdir="${rootdir}/log" -lgsmlogdir="${logdir}/lgsm" -steamcmddir="${HOME}/.steam/steamcmd" -serverfiles="${rootdir}/serverfiles" -modulesdir="${lgsmdir}/modules" -tmpdir="${lgsmdir}/tmp" -datadir="${lgsmdir}/data" -lockdir="${lgsmdir}/lock" -serverlist="${datadir}/serverlist.csv" -serverlistmenu="${datadir}/serverlistmenu.csv" -configdir="${lgsmdir}/config-lgsm" -configdirserver="${configdir}/${gameservername}" -configdirdefault="${lgsmdir}/config-default" -userinput="${1}" - -# Allows for testing not on Travis CI. -# if using travis for tests -if [ -z "${TRAVIS}" ]; then - TRAVIS_BRANCH="develop" - TRAVIS_BUILD_DIR="${rootdir}" -fi -travistest="1" -## GitHub Branch Select -# Allows for the use of different module files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="${TRAVIS_BRANCH}" - -# Core module that is required first. -core_modules.sh() { - modulefile="${FUNCNAME[0]}" - fn_bootstrap_fetch_file_github "lgsm/modules" "core_modules.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash" -} - -# Bootstrap -# Fetches the core modules required before passed off to core_dl.sh. -fn_bootstrap_fetch_file() { - remote_fileurl="${1}" - remote_fileurl_backup="${2}" - remote_fileurl_name="${3}" - remote_fileurl_backup_name="${4}" - local_filedir="${5}" - local_filename="${6}" - chmodx="${7:-0}" - run="${8:-0}" - forcedl="${9:-0}" - md5="${10:-0}" - # Download file if missing or download forced. - if [ ! -f "${local_filedir}/${local_filename}" ] || [ "${forcedl}" == "forcedl" ]; then - # If backup fileurl exists include it. - if [ -n "${remote_fileurl_backup}" ]; then - # counter set to 0 to allow second try - counter=0 - remote_fileurls_array=(remote_fileurl remote_fileurl_backup) - else - # counter set to 1 to not allow second try - counter=1 - remote_fileurls_array=(remote_fileurl) - fi - - for remote_fileurl_array in "${remote_fileurls_array[@]}"; do - if [ "${remote_fileurl_array}" == "remote_fileurl" ]; then - fileurl="${remote_fileurl}" - fileurl_name="${remote_fileurl_name}" - elif [ "${remote_fileurl_array}" == "remote_fileurl_backup" ]; then - fileurl="${remote_fileurl_backup}" - fileurl_name="${remote_fileurl_backup_name}" - fi - counter=$((counter + 1)) - if [ ! -d "${local_filedir}" ]; then - mkdir -p "${local_filedir}" - fi - # Trap will remove part downloaded files if canceled. - trap fn_fetch_trap INT - # Larger files show a progress bar. - - echo -en "fetching ${fileurl_name} ${local_filename}...\c" - curlcmd=$(curl -s --fail -L -o "${local_filedir}/${local_filename}" "${fileurl}" 2>&1) - - local exitcode=$? - # Download will fail if downloads a html file. - if [ -f "${local_filedir}/${local_filename}" ]; then - if [ -n "$(head "${local_filedir}/${local_filename}" | grep "DOCTYPE")" ]; then - rm -f "${local_filedir:?}/${local_filename:?}" - local exitcode=2 - fi - fi - - # On first try will error. On second try will fail. - if [ "${exitcode}" != 0 ]; then - if [ ${counter} -ge 2 ]; then - echo -e "FAIL" - if [ -f "${lgsmlog}" ]; then - fn_script_log_fatal "Downloading ${local_filename}" - fn_script_log_fatal "${fileurl}" - fi - core_exit.sh - else - echo -e "ERROR" - if [ -f "${lgsmlog}" ]; then - fn_script_log_error "Downloading ${local_filename}" - fn_script_log_error "${fileurl}" - fi - fi - - else - echo -en "OK" - sleep 0.3 - echo -en "\033[2K\\r" - if [ -f "${lgsmlog}" ]; then - fn_script_log_pass "Downloading ${local_filename}" - fi - - # Make file executable if chmodx is set. - if [ "${chmodx}" == "chmodx" ]; then - chmod +x "${local_filedir}/${local_filename}" - fi - - # Remove trap. - trap - INT - - break - fi - done - fi - - if [ -f "${local_filedir}/${local_filename}" ]; then - # Execute file if run is set. - if [ "${run}" == "run" ]; then - # shellcheck source=/dev/null - source "${local_filedir}/${local_filename}" - fi - fi -} - -fn_bootstrap_fetch_file_github() { - github_file_url_dir="${1}" - github_file_url_name="${2}" - # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork. - if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManagers" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_file_url_dir}/${github_file_url_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_file_url_dir}/${github_file_url_name}" - else - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" - fi - remote_fileurl_name="GitHub" - remote_fileurl_backup_name="Bitbucket" - local_filedir="${3}" - local_filename="${github_file_url_name}" - chmodx="${4:-0}" - run="${5:-0}" - forcedl="${6:-0}" - md5="${7:-0}" - # Passes vars to the file download module. - fn_bootstrap_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}" -} - -# Installer menu. - -fn_print_center() { - columns=$(tput cols) - line="$*" - printf "%*s\n" $(((${#line} + columns) / 2)) "${line}" -} - -fn_print_horizontal() { - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' "=" -} - -# Bash menu. -fn_install_menu_bash() { - local resultvar=$1 - title=$2 - caption=$3 - options=$4 - fn_print_horizontal - fn_print_center "${title}" - fn_print_center "${caption}" - fn_print_horizontal - menu_options=() - while read -r line || [[ -n "${line}" ]]; do - var=$(echo -e "${line}" | awk -F "," '{print $2 " - " $3}') - menu_options+=("${var}") - done < "${options}" - menu_options+=("Cancel") - select option in "${menu_options[@]}"; do - if [ "${option}" ] && [ "${option}" != "Cancel" ]; then - eval "$resultvar=\"${option/%\ */}\"" - fi - break - done -} - -# Whiptail/Dialog menu. -fn_install_menu_whiptail() { - local menucmd=$1 - local resultvar=$2 - title=$3 - caption=$4 - options=$5 - height=${6:-40} - width=${7:-80} - menuheight=${8:-30} - IFS="," - menu_options=() - while read -r line; do - key=$(echo -e "${line}" | awk -F "," '{print $3}') - val=$(echo -e "${line}" | awk -F "," '{print $2}') - menu_options+=("${val//\"/}" "${key//\"/}") - done < "${options}" - OPTION=$(${menucmd} --title "${title}" --menu "${caption}" "${height}" "${width}" "${menuheight}" "${menu_options[@]}" 3>&1 1>&2 2>&3) - if [ $? == 0 ]; then - eval "$resultvar=\"${OPTION}\"" - else - eval "$resultvar=" - fi -} - -# Menu selector. -fn_install_menu() { - local resultvar=$1 - local selection="" - title=$2 - caption=$3 - options=$4 - # Get menu command. - for menucmd in whiptail dialog bash; do - if [ "$(command -v "${menucmd}")" ]; then - menucmd=$(command -v "${menucmd}") - break - fi - done - case "$(basename "${menucmd}")" in - whiptail | dialog) - fn_install_menu_whiptail "${menucmd}" selection "${title}" "${caption}" "${options}" 40 80 30 - ;; - *) - fn_install_menu_bash selection "${title}" "${caption}" "${options}" - ;; - esac - eval "$resultvar=\"${selection}\"" -} - -# Gets server info from serverlist.csv and puts in to array. -fn_server_info() { - IFS="," - server_info_array=($(grep -aw "${userinput}" "${serverlist}")) - shortname="${server_info_array[0]}" # csgo - gameservername="${server_info_array[1]}" # csgoserver - gamename="${server_info_array[2]}" # Counter Strike: Global Offensive -} - -fn_install_getopt() { - userinput="empty" - echo -e "Usage: $0 [option]" - echo -e "" - echo -e "Installer - Linux Game Server Managers - Version ${version}" - echo -e "https://linuxgsm.com" - echo -e "" - echo -e "Commands" - echo -e "install\t\t| Select server to install." - echo -e "servername\t| Enter name of game server to install. e.g $0 csgoserver." - echo -e "list\t\t| List all servers available for install." - exit -} - -fn_install_file() { - local_filename="${gameservername}" - if [ -e "${local_filename}" ]; then - i=2 - while [ -e "${local_filename}-${i}" ]; do - ((i++)) - done - local_filename="${local_filename}-${i}" - fi - cp -R "${selfname}" "${local_filename}" - sed -i -e "s/shortname=\"core\"/shortname=\"${shortname}\"/g" "${local_filename}" - sed -i -e "s/gameservername=\"core\"/gameservername=\"${gameservername}\"/g" "${local_filename}" - echo -e "Installed ${gamename} server as ${local_filename}" - echo -e "" - if [ ! -d "${serverfiles}" ]; then - echo -e "./${local_filename} install" - else - echo -e "Remember to check server ports" - echo -e "./${local_filename} details" - fi - echo -e "" - exit -} - -# Prevent LinuxGSM from running as root. Except if doing a dependency install. -if [ "$(whoami)" == "root" ]; then - if [ "${userinput}" == "install" ] || [ "${userinput}" == "auto-install" ] || [ "${userinput}" == "i" ] || [ "${userinput}" == "ai" ]; then - if [ "${shortname}" == "core" ]; then - echo -e "[ FAIL ] Do NOT run this script as root!" - exit 1 - fi - elif [ ! -f "${modulesdir}/core_modules.sh" ] || [ ! -f "${modulesdir}/check_root.sh" ] || [ ! -f "${modulesdir}/core_messages.sh" ]; then - echo -e "[ FAIL ] Do NOT run this script as root!" - exit 1 - else - core_modules.sh - check_root.sh - fi -fi - -# LinuxGSM installer mode. -if [ "${shortname}" == "core" ]; then - # Download the latest serverlist. This is the complete list of all supported servers. - fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash" - if [ ! -f "${serverlist}" ]; then - echo -e "[ FAIL ] serverlist.csv could not be loaded." - exit 1 - fi - - if [ "${userinput}" == "list" ] || [ "${userinput}" == "l" ]; then - { - tail -n +2 "${serverlist}" | awk -F "," '{print $2 "\t" $3}' - } | column -s $'\t' -t | more - exit - elif [ "${userinput}" == "install" ] || [ "${userinput}" == "i" ]; then - tail -n +2 "${serverlist}" | awk -F "," '{print $1 "," $2 "," $3}' > "${serverlistmenu}" - fn_install_menu result "LinuxGSM" "Select game server to install." "${serverlistmenu}" - userinput="${result}" - fn_server_info - if [ "${result}" == "${gameservername}" ]; then - fn_install_file - elif [ "${result}" == "" ]; then - echo -e "Install canceled" - else - echo -e "[ FAIL ] menu result does not match gameservername" - echo -e "result: ${result}" - echo -e "gameservername: ${gameservername}" - fi - elif [ "${userinput}" ]; then - fn_server_info - if [ "${userinput}" == "${gameservername}" ] || [ "${userinput}" == "${gamename}" ] || [ "${userinput}" == "${shortname}" ]; then - fn_install_file - else - echo -e "[ FAIL ] Unknown game server" - fi - else - fn_install_getopt - fi - -# LinuxGSM server mode. -else - core_modules.sh - if [ "${shortname}" != "core-dep" ]; then - # Load LinuxGSM configs. - # These are required to get all the default variables for the specific server. - # Load the default config. If missing download it. If changed reload it. - if [ ! -f "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" ]; then - mkdir -p "${configdirdefault}/config-lgsm/${gameservername}" - fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nohash" - fi - if [ ! -f "${configdirserver}/_default.cfg" ]; then - mkdir -p "${configdirserver}" - echo -en "copying _default.cfg...\c" - cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - echo -e "FAIL" - exit 1 - else - echo -e "OK" - fi - else - module_file_diff=$(diff -q "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg") - if [ "${module_file_diff}" != "" ]; then - fn_print_warn_nl "_default.cfg has been altered. reloading config." - echo -en "copying _default.cfg...\c" - cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - echo -e "FAIL" - exit 1 - else - echo -e "OK" - fi - fi - fi - # shellcheck source=/dev/null - source "${configdirserver}/_default.cfg" - # Load the common.cfg config. If missing download it. - if [ ! -f "${configdirserver}/common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" - # shellcheck source=/dev/null - source "${configdirserver}/common.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/common.cfg" - fi - # Load the secrets-common.cfg config. If missing download it. - if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" - # shellcheck source=/dev/null - source "${configdirserver}/secrets-common.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/secrets-common.cfg" - fi - # Load the instance.cfg config. If missing download it. - if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" - # shellcheck source=/dev/null - source "${configdirserver}/${selfname}.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/${selfname}.cfg" - fi - # Load the secrets-instance.cfg config. If missing download it. - if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" - # shellcheck source=/dev/null - source "${configdirserver}/secrets-${selfname}.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/secrets-${selfname}.cfg" - fi - - # Load the linuxgsm.sh in to tmpdir. If missing download it. - if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then - fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nohash" - fi - fi - # Enables ANSI colours from core_messages.sh. Can be disabled with ansi=off. - fn_ansi_loader - # Prevents running of core_exit.sh for Travis-CI. - if [ "${travistest}" != "1" ]; then - getopt=$1 - core_getopt.sh - fi -fi - -fn_currentstatus_tmux() { - check_status.sh - if [ "${status}" != "0" ]; then - currentstatus="STARTED" - else - currentstatus="STOPPED" - fi -} - -fn_setstatus() { - fn_currentstatus_tmux - echo"" - echo -e "Required status: ${requiredstatus}" - counter=0 - echo -e "Current status: ${currentstatus}" - while [ "${requiredstatus}" != "${currentstatus}" ]; do - counter=$((counter + 1)) - fn_currentstatus_tmux - echo -en "New status: ${currentstatus}\\r" - - if [ "${requiredstatus}" == "STARTED" ]; then - (command_start.sh > /dev/null 2>&1) - else - (command_stop.sh > /dev/null 2>&1) - fi - if [ "${counter}" -gt "5" ]; then - currentstatus="FAIL" - echo -e "Current status: ${currentstatus}" - echo -e "" - echo -e "Unable to start or stop server." - exit 1 - fi - done - echo -en "New status: ${currentstatus}\\r" - echo -e "\n" - echo -e "Test starting:" - echo -e "" -} - -# End of every test will expect the result to either pass or fail -# If the script does not do as intended the whole test will fail -# if expecting a pass -fn_test_result_pass() { - if [ $? != 0 ]; then - echo -e "=================================" - echo -e "Expected result: PASS" - echo -e "Actual result: FAIL" - fn_print_fail_nl "TEST FAILED" - exitcode=1 - core_exit.sh - else - echo -e "=================================" - echo -e "Expected result: PASS" - echo -e "Actual result: PASS" - fn_print_ok_nl "TEST PASSED" - echo -e "" - fi -} - -# if expecting a fail -fn_test_result_fail() { - if [ $? == 0 ]; then - echo -e "=================================" - echo -e "Expected result: FAIL" - echo -e "Actual result: PASS" - fn_print_fail_nl "TEST FAILED" - exitcode=1 - core_exit.sh - else - echo -e "=================================" - echo -e "Expected result: FAIL" - echo -e "Actual result: FAIL" - fn_print_ok_nl "TEST PASSED" - echo -e "" - fi -} - -# test result n/a -fn_test_result_na() { - echo -e "=================================" - echo -e "Expected result: N/A" - echo -e "Actual result: N/A" - fn_print_fail_nl "TEST N/A" -} - -sleeptime="0" - -echo -e "=================================" -echo -e "Travis CI Tests" -echo -e "Linux Game Server Manager" -echo -e "by Daniel Gibbs" -echo -e "Contributors: http://goo.gl/qLmitD" -echo -e "https://linuxgsm.com" -echo -e "=================================" -echo -e "" -echo -e "=================================" -echo -e "Server Tests" -echo -e "Using: ${gamename}" -echo -e "Testing Branch: ${TRAVIS_BRANCH}" -echo -e "=================================" - -echo -e "" -echo -e "Tests Summary" -echo -e "=================================" -echo -e "0.0 - Pre-test Tasks" -echo -e "0.1 - Create log dir's" -echo -e "0.2 - Enable dev-debug" -echo -e "" -echo -e "1.0 - Pre-install tests" -echo -e "1.1 - start - no files" -echo -e "1.2 - getopt" -echo -e "1.3 - getopt with incorrect args" -echo -e "" -echo -e "2.0 - Installation" -echo -e "2.1 - install" -echo -e "" -echo -e "3.0 - Start/Stop/Restart Tests" -echo -e "3.1 - start" -echo -e "3.2 - start - online" -echo -e "3.3 - start - updateonstart" -echo -e "3.4 - stop" -echo -e "3.5 - stop - offline" -echo -e "3.6 - restart" -echo -e "3.7 - restart - offline" -echo -e "" -echo -e "4.0 - Update Tests" -echo -e "4.1 - update" -echo -e "4.2 - update-lgsm" -echo -e "" -echo -e "5.0 - Monitor Tests" -echo -e "5.1 - monitor - online" -echo -e "5.2 - monitor - offline - with lockfile" -echo -e "5.3 - monitor - offline - no lockfile" -echo -e "5.4 - test-alert" -echo -e "" -echo -e "6.0 - Details Tests" -echo -e "6.1 - details" -echo -e "6.2 - postdetails" -echo -e "" -echo -e "7.0 - Backup Tests" -echo -e "7.1 - backup" -echo -e "" -echo -e "8.0 - Development Tools Tests" -echo -e "8.1 - dev - detect glibc" -echo -e "8.2 - dev - detect ldd" -echo -e "8.3 - dev - detect deps" -echo -e "8.4 - dev - query-raw" - -echo -e "" -echo -e "9.0 - Sponsor" -echo -e "9.1 - sponsor" -echo -e "" - -echo -e "0.0 - Pre-test Tasks" -echo -e "==================================================================" -echo -e "Description:" -echo -e "Create log dir's" -echo -e "" - -echo -e "" -echo -e "0.1 - Create log dir's" -echo -e "=================================" -echo -e "" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - install_logs.sh -) -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "0.2 - Enable dev-debug" -echo -e "=================================" -echo -e "Description:" -echo -e "Enable dev-debug" -echo -e "" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_debug.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "1.0 - Pre-install tests" -echo -e "==================================================================" -echo -e "" - -echo -e "1.1 - start - no files" -echo -e "=================================" -echo -e "Description:" -echo -e "test script reaction to missing server files." -echo -e "Command: ./${gameservername} start" -echo -e "" -# Allows for testing not on Travis CI -if [ -z "${TRAVIS}" ]; then - ( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_start.sh - ) - fn_test_result_fail -else - echo -e "Test bypassed" -fi - -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "1.2 - getopt" -echo -e "=================================" -echo -e "Description:" -echo -e "displaying options messages." -echo -e "Command: ./${gameservername}" -echo -e "" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - core_getopt.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "1.3 - getopt with incorrect args" -echo -e "=================================" -echo -e "Description:" -echo -e "displaying options messages." -echo -e "Command: ./${gameservername} abc123" -echo -e "" -getopt="abc123" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - core_getopt.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "2.0 - Installation" -echo -e "==================================================================" - -echo -e "" -echo -e "2.1 - install" -echo -e "=================================" -echo -e "Description:" -echo -e "install ${gamename} server." -echo -e "Command: ./${gameservername} auto-install" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - fn_autoinstall -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.0 - Start/Stop/Restart Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "3.1 - start" -echo -e "=================================" -echo -e "Description:" -echo -e "start ${gamename} server." -echo -e "Command: ./${gameservername} start" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_start.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.2 - start - online" -echo -e "=================================" -echo -e "Description:" -echo -e "start ${gamename} server while already running." -echo -e "Command: ./${gameservername} start" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_start.sh -) -fn_test_result_fail -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.3 - start - updateonstart" -echo -e "=================================" -echo -e "Description:" -echo -e "will update server on start." -echo -e "Command: ./${gameservername} start" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - updateonstart="on" - command_start.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.4 - stop" -echo -e "=================================" -echo -e "Description:" -echo -e "stop ${gamename} server." -echo -e "Command: ./${gameservername} stop" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_stop.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.5 - stop - offline" -echo -e "=================================" -echo -e "Description:" -echo -e "stop ${gamename} server while already stopped." -echo -e "Command: ./${gameservername} stop" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_stop.sh -) -fn_test_result_fail -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.6 - restart" -echo -e "=================================" -echo -e "Description:" -echo -e "restart ${gamename}." -echo -e "Command: ./${gameservername} restart" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_restart.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.7 - restart - offline" -echo -e "=================================" -echo -e "Description:" -echo -e "restart ${gamename} while already stopped." -echo -e "Command: ./${gameservername} restart" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_restart.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "4.0 - Update Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "4.1 - update" -echo -e "=================================" -echo -e "Description:" -echo -e "check for updates." -echo -e "Command: ./${gameservername} update" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_update.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "4.2 - update-lgsm" -echo -e "=================================" -echo -e "Description:" -echo -e "update LinuxGSM." -echo -e "" -echo -e "Command: ./jc2server update-lgam" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_update_linuxgsm.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "5.0 - Monitor Tests" -echo -e "==================================================================" -echo -e "" -info_game.sh -echo -e "Server IP - Port: ${ip}:${port}" -echo -e "Server IP - Query Port: ${ip}:${queryport}" - -echo -e "" -echo -e "5.1 - monitor - online" -echo -e "=================================" -echo -e "Description:" -echo -e "run monitor server while already running." -echo -e "Command: ./${gameservername} monitor" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_monitor.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "5.2 - monitor - offline - with lockfile" -echo -e "=================================" -echo -e "Description:" -echo -e "run monitor while server is offline with lockfile." -echo -e "Command: ./${gameservername} monitor" -requiredstatus="STOPPED" -fn_setstatus -fn_print_info_nl "creating lockfile." -date '+%s' > "${lockdir}/${selfname}.lock" -echo "${version}" >> "${lockdir}/${selfname}.lock" -echo "${port}" >> "${lockdir}/${selfname}.lock" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_monitor.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "5.3 - monitor - offline - no lockfile" -echo -e "=================================" -echo -e "Description:" -echo -e "run monitor while server is offline with no lockfile." -echo -e "Command: ./${gameservername} monitor" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_monitor.sh -) -fn_test_result_fail -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "5.4 - test-alert" -echo -e "=================================" -echo -e "Description:" -echo -e "run monitor while server is offline with no lockfile." -echo -e "Command: ./${gameservername} test-alert" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_test_alert.sh -) -fn_test_result_fail -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "6.0 - Details Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "6.1 - details" -echo -e "=================================" -echo -e "Description:" -echo -e "display details." -echo -e "Command: ./${gameservername} details" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_details.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "6.2 - postdetails" -echo -e "=================================" -echo -e "Description:" -echo -e "post details." -echo -e "Command: ./${gameservername} postdetails" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_postdetails.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "7.0 - Backup Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "7.1 - backup" -echo -e "=================================" -echo -e "Description:" -echo -e "run a backup." -echo -e "Command: ./${gameservername} backup" -requiredstatus="STARTED" -fn_setstatus -echo -e "test de-activated until issue #1839 fixed" -#(command_backup.sh) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "8.0 - Development Tools Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "8.1 - dev - detect glibc" -echo -e "=================================" -echo -e "Description:" -echo -e "detect glibc." -echo -e "Command: ./${gameservername} detect-glibc" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_detect_glibc.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "8.2 - dev - detect ldd" -echo -e "=================================" -echo -e "Description:" -echo -e "detect ldd." -echo -e "Command: ./${gameservername} detect-ldd" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_detect_ldd.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "8.3 - dev - detect deps" -echo -e "=================================" -echo -e "Description:" -echo -e "detect dependencies." -echo -e "Command: ./${gameservername} detect-deps" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_detect_deps.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "8.4 - dev - query-raw" -echo -e "=================================" -echo -e "Description:" -echo -e "raw query output." -echo -e "Command: ./${gameservername} query-raw" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_query_raw.sh -) -fn_test_result_na -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" - -echo -e "9.0 - Sponsor" -echo -e "==================================================================" - -echo -e "" -echo -e "9.1 - sponsor" -echo -e "=================================" -echo -e "Description:" -echo -e "sponsor." -echo -e "Command: ./${gameservername} sponsor" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_sponsor.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "=================================" -echo -e "Server Tests - Complete!" -echo -e "Using: ${gamename}" -echo -e "=================================" -requiredstatus="STOPPED" -fn_setstatus - -core_exit.sh diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh deleted file mode 100644 index b921de2749..0000000000 --- a/tests/tests_jc2server.sh +++ /dev/null @@ -1,1352 +0,0 @@ -#!/bin/bash -# Project: Game Server Managers - LinuxGSM -# Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2020 Daniel Gibbs -# Purpose: Travis CI Tests: Just Cause 2 | Linux Game Server Management Script -# Contributors: https://linuxgsm.com/contrib -# Documentation: https://docs.linuxgsm.com -# Website: https://linuxgsm.com - -# DO NOT EDIT THIS FILE -# LinuxGSM configuration is no longer edited here -# To update your LinuxGSM config go to: -# lgsm/config-lgsm -# https://docs.linuxgsm.com/configuration/linuxgsm-config - -# Debugging -if [ -f ".dev-debug" ]; then - exec 5> dev-debug.log - BASH_XTRACEFD="5" - set -x -fi - -version="v23.5.3" -shortname="jc2" -gameservername="jc2server" -commandname="CORE" -rootdir=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")") -selfname=$(basename "$(readlink -f "${BASH_SOURCE[0]}")") -sessionname=$(echo "${selfname}" | cut -f1 -d".") -lgsmdir="${rootdir}/lgsm" -logdir="${rootdir}/log" -lgsmlogdir="${logdir}/lgsm" -steamcmddir="${HOME}/.steam/steamcmd" -serverfiles="${rootdir}/serverfiles" -modulesdir="${lgsmdir}/modules" -tmpdir="${lgsmdir}/tmp" -datadir="${lgsmdir}/data" -lockdir="${lgsmdir}/lock" -serverlist="${datadir}/serverlist.csv" -serverlistmenu="${datadir}/serverlistmenu.csv" -configdir="${lgsmdir}/config-lgsm" -configdirserver="${configdir}/${gameservername}" -configdirdefault="${lgsmdir}/config-default" -userinput="${1}" - -# Allows for testing not on Travis CI. -# if using travis for tests -if [ -z "${TRAVIS}" ]; then - TRAVIS_BRANCH="develop" - TRAVIS_BUILD_DIR="${rootdir}" -fi -travistest="1" - -## GitHub Branch Select -# Allows for the use of different module files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="${TRAVIS_BRANCH}" - -# Core module that is required first. -core_modules.sh() { - modulefile="${FUNCNAME[0]}" - fn_bootstrap_fetch_file_github "lgsm/modules" "core_modules.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash" -} - -# Bootstrap -# Fetches the core modules required before passed off to core_dl.sh. -fn_bootstrap_fetch_file() { - remote_fileurl="${1}" - remote_fileurl_backup="${2}" - remote_fileurl_name="${3}" - remote_fileurl_backup_name="${4}" - local_filedir="${5}" - local_filename="${6}" - chmodx="${7:-0}" - run="${8:-0}" - forcedl="${9:-0}" - md5="${10:-0}" - # Download file if missing or download forced. - if [ ! -f "${local_filedir}/${local_filename}" ] || [ "${forcedl}" == "forcedl" ]; then - # If backup fileurl exists include it. - if [ -n "${remote_fileurl_backup}" ]; then - # counter set to 0 to allow second try - counter=0 - remote_fileurls_array=(remote_fileurl remote_fileurl_backup) - else - # counter set to 1 to not allow second try - counter=1 - remote_fileurls_array=(remote_fileurl) - fi - - for remote_fileurl_array in "${remote_fileurls_array[@]}"; do - if [ "${remote_fileurl_array}" == "remote_fileurl" ]; then - fileurl="${remote_fileurl}" - fileurl_name="${remote_fileurl_name}" - elif [ "${remote_fileurl_array}" == "remote_fileurl_backup" ]; then - fileurl="${remote_fileurl_backup}" - fileurl_name="${remote_fileurl_backup_name}" - fi - counter=$((counter + 1)) - if [ ! -d "${local_filedir}" ]; then - mkdir -p "${local_filedir}" - fi - # Trap will remove part downloaded files if canceled. - trap fn_fetch_trap INT - # Larger files show a progress bar. - - echo -en "fetching ${fileurl_name} ${local_filename}...\c" - curlcmd=$(curl -s --fail -L -o "${local_filedir}/${local_filename}" "${fileurl}" 2>&1) - - local exitcode=$? - # Download will fail if downloads a html file. - if [ -f "${local_filedir}/${local_filename}" ]; then - if [ -n "$(head "${local_filedir}/${local_filename}" | grep "DOCTYPE")" ]; then - rm -f "${local_filedir:?}/${local_filename:?}" - local exitcode=2 - fi - fi - - # On first try will error. On second try will fail. - if [ "${exitcode}" != 0 ]; then - if [ ${counter} -ge 2 ]; then - echo -e "FAIL" - if [ -f "${lgsmlog}" ]; then - fn_script_log_fatal "Downloading ${local_filename}" - fn_script_log_fatal "${fileurl}" - fi - core_exit.sh - else - echo -e "ERROR" - if [ -f "${lgsmlog}" ]; then - fn_script_log_error "Downloading ${local_filename}" - fn_script_log_error "${fileurl}" - fi - fi - - else - echo -en "OK" - sleep 0.3 - echo -en "\033[2K\\r" - if [ -f "${lgsmlog}" ]; then - fn_script_log_pass "Downloading ${local_filename}" - fi - - # Make file executable if chmodx is set. - if [ "${chmodx}" == "chmodx" ]; then - chmod +x "${local_filedir}/${local_filename}" - fi - - # Remove trap. - trap - INT - - break - fi - done - fi - - if [ -f "${local_filedir}/${local_filename}" ]; then - # Execute file if run is set. - if [ "${run}" == "run" ]; then - # shellcheck source=/dev/null - source "${local_filedir}/${local_filename}" - fi - fi -} - -fn_bootstrap_fetch_file_github() { - github_file_url_dir="${1}" - github_file_url_name="${2}" - # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork. - if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManagers" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_file_url_dir}/${github_file_url_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_file_url_dir}/${github_file_url_name}" - else - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" - fi - remote_fileurl_name="GitHub" - remote_fileurl_backup_name="Bitbucket" - local_filedir="${3}" - local_filename="${github_file_url_name}" - chmodx="${4:-0}" - run="${5:-0}" - forcedl="${6:-0}" - md5="${7:-0}" - # Passes vars to the file download module. - fn_bootstrap_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}" -} - -# Installer menu. - -fn_print_center() { - columns=$(tput cols) - line="$*" - printf "%*s\n" $(((${#line} + columns) / 2)) "${line}" -} - -fn_print_horizontal() { - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' "=" -} - -# Bash menu. -fn_install_menu_bash() { - local resultvar=$1 - title=$2 - caption=$3 - options=$4 - fn_print_horizontal - fn_print_center "${title}" - fn_print_center "${caption}" - fn_print_horizontal - menu_options=() - while read -r line || [[ -n "${line}" ]]; do - var=$(echo -e "${line}" | awk -F "," '{print $2 " - " $3}') - menu_options+=("${var}") - done < "${options}" - menu_options+=("Cancel") - select option in "${menu_options[@]}"; do - if [ "${option}" ] && [ "${option}" != "Cancel" ]; then - eval "$resultvar=\"${option/%\ */}\"" - fi - break - done -} - -# Whiptail/Dialog menu. -fn_install_menu_whiptail() { - local menucmd=$1 - local resultvar=$2 - title=$3 - caption=$4 - options=$5 - height=${6:-40} - width=${7:-80} - menuheight=${8:-30} - IFS="," - menu_options=() - while read -r line; do - key=$(echo -e "${line}" | awk -F "," '{print $3}') - val=$(echo -e "${line}" | awk -F "," '{print $2}') - menu_options+=("${val//\"/}" "${key//\"/}") - done < "${options}" - OPTION=$(${menucmd} --title "${title}" --menu "${caption}" "${height}" "${width}" "${menuheight}" "${menu_options[@]}" 3>&1 1>&2 2>&3) - if [ $? == 0 ]; then - eval "$resultvar=\"${OPTION}\"" - else - eval "$resultvar=" - fi -} - -# Menu selector. -fn_install_menu() { - local resultvar=$1 - local selection="" - title=$2 - caption=$3 - options=$4 - # Get menu command. - for menucmd in whiptail dialog bash; do - if [ "$(command -v "${menucmd}")" ]; then - menucmd=$(command -v "${menucmd}") - break - fi - done - case "$(basename "${menucmd}")" in - whiptail | dialog) - fn_install_menu_whiptail "${menucmd}" selection "${title}" "${caption}" "${options}" 40 80 30 - ;; - *) - fn_install_menu_bash selection "${title}" "${caption}" "${options}" - ;; - esac - eval "$resultvar=\"${selection}\"" -} - -# Gets server info from serverlist.csv and puts in to array. -fn_server_info() { - IFS="," - server_info_array=($(grep -aw "${userinput}" "${serverlist}")) - shortname="${server_info_array[0]}" # csgo - gameservername="${server_info_array[1]}" # csgoserver - gamename="${server_info_array[2]}" # Counter Strike: Global Offensive -} - -fn_install_getopt() { - userinput="empty" - echo -e "Usage: $0 [option]" - echo -e "" - echo -e "Installer - Linux Game Server Managers - Version ${version}" - echo -e "https://linuxgsm.com" - echo -e "" - echo -e "Commands" - echo -e "install\t\t| Select server to install." - echo -e "servername\t| Enter name of game server to install. e.g $0 csgoserver." - echo -e "list\t\t| List all servers available for install." - exit -} - -fn_install_file() { - local_filename="${gameservername}" - if [ -e "${local_filename}" ]; then - i=2 - while [ -e "${local_filename}-${i}" ]; do - ((i++)) - done - local_filename="${local_filename}-${i}" - fi - cp -R "${selfname}" "${local_filename}" - sed -i -e "s/shortname=\"core\"/shortname=\"${shortname}\"/g" "${local_filename}" - sed -i -e "s/gameservername=\"core\"/gameservername=\"${gameservername}\"/g" "${local_filename}" - echo -e "Installed ${gamename} server as ${local_filename}" - echo -e "" - if [ ! -d "${serverfiles}" ]; then - echo -e "./${local_filename} install" - else - echo -e "Remember to check server ports" - echo -e "./${local_filename} details" - fi - echo -e "" - exit -} - -# Prevent LinuxGSM from running as root. Except if doing a dependency install. -if [ "$(whoami)" == "root" ]; then - if [ "${userinput}" == "install" ] || [ "${userinput}" == "auto-install" ] || [ "${userinput}" == "i" ] || [ "${userinput}" == "ai" ]; then - if [ "${shortname}" == "core" ]; then - echo -e "[ FAIL ] Do NOT run this script as root!" - exit 1 - fi - elif [ ! -f "${modulesdir}/core_modules.sh" ] || [ ! -f "${modulesdir}/check_root.sh" ] || [ ! -f "${modulesdir}/core_messages.sh" ]; then - echo -e "[ FAIL ] Do NOT run this script as root!" - exit 1 - else - core_modules.sh - check_root.sh - fi -fi - -# LinuxGSM installer mode. -if [ "${shortname}" == "core" ]; then - # Download the latest serverlist. This is the complete list of all supported servers. - fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash" - if [ ! -f "${serverlist}" ]; then - echo -e "[ FAIL ] serverlist.csv could not be loaded." - exit 1 - fi - - if [ "${userinput}" == "list" ] || [ "${userinput}" == "l" ]; then - { - tail -n +2 "${serverlist}" | awk -F "," '{print $2 "\t" $3}' - } | column -s $'\t' -t | more - exit - elif [ "${userinput}" == "install" ] || [ "${userinput}" == "i" ]; then - tail -n +2 "${serverlist}" | awk -F "," '{print $1 "," $2 "," $3}' > "${serverlistmenu}" - fn_install_menu result "LinuxGSM" "Select game server to install." "${serverlistmenu}" - userinput="${result}" - fn_server_info - if [ "${result}" == "${gameservername}" ]; then - fn_install_file - elif [ "${result}" == "" ]; then - echo -e "Install canceled" - else - echo -e "[ FAIL ] menu result does not match gameservername" - echo -e "result: ${result}" - echo -e "gameservername: ${gameservername}" - fi - elif [ "${userinput}" ]; then - fn_server_info - if [ "${userinput}" == "${gameservername}" ] || [ "${userinput}" == "${gamename}" ] || [ "${userinput}" == "${shortname}" ]; then - fn_install_file - else - echo -e "[ FAIL ] Unknown game server" - fi - else - fn_install_getopt - fi - -# LinuxGSM server mode. -else - core_modules.sh - if [ "${shortname}" != "core-dep" ]; then - # Load LinuxGSM configs. - # These are required to get all the default variables for the specific server. - # Load the default config. If missing download it. If changed reload it. - if [ ! -f "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" ]; then - mkdir -p "${configdirdefault}/config-lgsm/${gameservername}" - fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nohash" - fi - if [ ! -f "${configdirserver}/_default.cfg" ]; then - mkdir -p "${configdirserver}" - echo -en "copying _default.cfg...\c" - cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - echo -e "FAIL" - exit 1 - else - echo -e "OK" - fi - else - module_file_diff=$(diff -q "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg") - if [ "${module_file_diff}" != "" ]; then - fn_print_warn_nl "_default.cfg has been altered. reloading config." - echo -en "copying _default.cfg...\c" - cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - echo -e "FAIL" - exit 1 - else - echo -e "OK" - fi - fi - fi - # shellcheck source=/dev/null - source "${configdirserver}/_default.cfg" - # Load the common.cfg config. If missing download it. - if [ ! -f "${configdirserver}/common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" - # shellcheck source=/dev/null - source "${configdirserver}/common.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/common.cfg" - fi - # Load the secrets-common.cfg config. If missing download it. - if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" - # shellcheck source=/dev/null - source "${configdirserver}/secrets-common.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/secrets-common.cfg" - fi - # Load the instance.cfg config. If missing download it. - if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" - # shellcheck source=/dev/null - source "${configdirserver}/${selfname}.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/${selfname}.cfg" - fi - # Load the secrets-instance.cfg config. If missing download it. - if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" - # shellcheck source=/dev/null - source "${configdirserver}/secrets-${selfname}.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/secrets-${selfname}.cfg" - fi - - # Load the linuxgsm.sh in to tmpdir. If missing download it. - if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then - fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nohash" - fi - fi - # Enables ANSI colours from core_messages.sh. Can be disabled with ansi=off. - fn_ansi_loader - # Prevents running of core_exit.sh for Travis-CI. - if [ "${travistest}" != "1" ]; then - getopt=$1 - core_getopt.sh - fi -fi - -fn_currentstatus_tmux() { - check_status.sh - if [ "${status}" != "0" ]; then - currentstatus="STARTED" - else - currentstatus="STOPPED" - fi -} - -fn_setstatus() { - fn_currentstatus_tmux - echo"" - echo -e "Required status: ${requiredstatus}" - counter=0 - echo -e "Current status: ${currentstatus}" - while [ "${requiredstatus}" != "${currentstatus}" ]; do - counter=$((counter + 1)) - fn_currentstatus_tmux - echo -en "New status: ${currentstatus}\\r" - - if [ "${requiredstatus}" == "STARTED" ]; then - (command_start.sh > /dev/null 2>&1) - else - (command_stop.sh > /dev/null 2>&1) - fi - if [ "${counter}" -gt "5" ]; then - currentstatus="FAIL" - echo -e "Current status: ${currentstatus}" - echo -e "" - echo -e "Unable to start or stop server." - exit 1 - fi - done - echo -en "New status: ${currentstatus}\\r" - echo -e "\n" - echo -e "Test starting:" - echo -e "" -} - -# End of every test will expect the result to either pass or fail -# If the script does not do as intended the whole test will fail -# if expecting a pass -fn_test_result_pass() { - if [ $? != 0 ]; then - echo -e "=================================" - echo -e "Expected result: PASS" - echo -e "Actual result: FAIL" - fn_print_fail_nl "TEST FAILED" - exitcode=1 - core_exit.sh - else - echo -e "=================================" - echo -e "Expected result: PASS" - echo -e "Actual result: PASS" - fn_print_ok_nl "TEST PASSED" - echo -e "" - fi -} - -# if expecting a fail -fn_test_result_fail() { - if [ $? == 0 ]; then - echo -e "=================================" - echo -e "Expected result: FAIL" - echo -e "Actual result: PASS" - fn_print_fail_nl "TEST FAILED" - exitcode=1 - core_exit.sh - else - echo -e "=================================" - echo -e "Expected result: FAIL" - echo -e "Actual result: FAIL" - fn_print_ok_nl "TEST PASSED" - echo -e "" - fi -} - -# test result n/a -fn_test_result_na() { - echo -e "=================================" - echo -e "Expected result: N/A" - echo -e "Actual result: N/A" - fn_print_fail_nl "TEST N/A" -} - -sleeptime="0" - -echo -e "=================================" -echo -e "Travis CI Tests" -echo -e "Linux Game Server Manager" -echo -e "by Daniel Gibbs" -echo -e "Contributors: http://goo.gl/qLmitD" -echo -e "https://linuxgsm.com" -echo -e "=================================" -echo -e "" -echo -e "=================================" -echo -e "Server Tests" -echo -e "Using: ${gamename}" -echo -e "Testing Branch: ${TRAVIS_BRANCH}" -echo -e "=================================" -echo -e "" -echo -e "Tests Summary" -echo -e "=================================" -echo -e "0.0 - Pre-test Tasks" -echo -e "0.1 - Create log dir's" -echo -e "0.2 - Enable dev-debug" -echo -e "" -echo -e "1.0 - Pre-install tests" -echo -e "1.1 - start - no files" -echo -e "1.2 - getopt" -echo -e "1.3 - getopt with incorrect args" -echo -e "" -echo -e "2.0 - Installation" -echo -e "2.1 - install" -echo -e "" -echo -e "3.0 - Start/Stop/Restart Tests" -echo -e "3.1 - start" -echo -e "3.2 - start - online" -echo -e "3.3 - start - updateonstart" -echo -e "3.4 - stop" -echo -e "3.5 - stop - offline" -echo -e "3.6 - restart" -echo -e "3.7 - restart - offline" -echo -e "" -echo -e "4.0 - Update Tests" -echo -e "4.1 - update" -echo -e "4.2 - update - change buildid" -echo -e "4.3 - update - change buildid - online" -echo -e "4.4 - update - remove appmanifest file" -echo -e "4.5 - force-update" -echo -e "4.6 - force-update - online" -echo -e "4.7 - validate" -echo -e "4.8 - validate - online" -echo -e "4.9 - update-lgsm" -echo -e "" -echo -e "5.0 - Monitor Tests" -echo -e "5.1 - monitor - online" -echo -e "5.2 - monitor - offline - with lockfile" -echo -e "5.3 - monitor - offline - no lockfile" -echo -e "5.4 - test-alert" -echo -e "" -echo -e "6.0 - Details Tests" -echo -e "6.1 - details" -echo -e "6.2 - postdetails" -echo -e "" -echo -e "7.0 - Backup Tests" -echo -e "7.1 - backup" -echo -e "" -echo -e "8.0 - Development Tools Tests" -echo -e "8.1 - dev - detect glibc" -echo -e "8.2 - dev - detect ldd" -echo -e "8.3 - dev - detect deps" -echo -e "8.4 - dev - query-raw" -echo -e "" -echo -e "9.0 - Sponsor" -echo -e "9.1 - sponsor" -echo -e "" -echo -e "0.0 - Pre-test Tasks" -echo -e "==================================================================" -echo -e "Description:" -echo -e "Create log dir's" -echo -e "" - -echo -e "" -echo -e "0.1 - Create log dir's" -echo -e "=================================" -echo -e "" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - install_logs.sh -) -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "0.2 - Enable dev-debug" -echo -e "=================================" -echo -e "Description:" -echo -e "Enable dev-debug" -echo -e "" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_debug.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "1.0 - Pre-install tests" -echo -e "==================================================================" -echo -e "" - -echo -e "1.1 - start - no files" -echo -e "=================================" -echo -e "Description:" -echo -e "test script reaction to missing server files." -echo -e "Command: ./${gameservername} start" -echo -e "" -# Allows for testing not on Travis CI -if [ -z "${TRAVIS}" ]; then - ( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_start.sh - ) - fn_test_result_fail -else - echo -e "Test bypassed" -fi - -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "1.2 - getopt" -echo -e "=================================" -echo -e "Description:" -echo -e "displaying options messages." -echo -e "Command: ./${gameservername}" -echo -e "" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - core_getopt.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "1.3 - getopt with incorrect args" -echo -e "=================================" -echo -e "Description:" -echo -e "displaying options messages." -echo -e "Command: ./${gameservername} abc123" -echo -e "" -getopt="abc123" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - core_getopt.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "2.0 - Installation" -echo -e "==================================================================" - -echo -e "" -echo -e "2.1 - install" -echo -e "=================================" -echo -e "Description:" -echo -e "install ${gamename} server." -echo -e "Command: ./${gameservername} auto-install" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - fn_autoinstall -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.0 - Start/Stop/Restart Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "3.1 - start" -echo -e "=================================" -echo -e "Description:" -echo -e "start ${gamename} server." -echo -e "Command: ./${gameservername} start" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_start.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.2 - start - online" -echo -e "=================================" -echo -e "Description:" -echo -e "start ${gamename} server while already running." -echo -e "Command: ./${gameservername} start" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_start.sh -) -fn_test_result_fail -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.3 - start - updateonstart" -echo -e "=================================" -echo -e "Description:" -echo -e "will update server on start." -echo -e "Command: ./${gameservername} start" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - updateonstart="on" - command_start.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.4 - stop" -echo -e "=================================" -echo -e "Description:" -echo -e "stop ${gamename} server." -echo -e "Command: ./${gameservername} stop" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_stop.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.5 - stop - offline" -echo -e "=================================" -echo -e "Description:" -echo -e "stop ${gamename} server while already stopped." -echo -e "Command: ./${gameservername} stop" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_stop.sh -) -fn_test_result_fail -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.6 - restart" -echo -e "=================================" -echo -e "Description:" -echo -e "restart ${gamename}." -echo -e "Command: ./${gameservername} restart" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_restart.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.7 - restart - offline" -echo -e "=================================" -echo -e "Description:" -echo -e "restart ${gamename} while already stopped." -echo -e "Command: ./${gameservername} restart" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_restart.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "4.0 - Update Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "4.1 - update" -echo -e "=================================" -echo -e "Description:" -echo -e "check for updates." -echo -e "Command: ./${gameservername} update" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_update.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "4.2 - update - change buildid" -echo -e "=================================" -echo -e "Description:" -echo -e "change the buildid tricking SteamCMD to update." -echo -e "Command: ./jc2server update" -requiredstatus="STOPPED" -fn_setstatus -fn_print_info_nl "changed buildid to 0." -sed -i 's/[0-9]\+/0/' "${serverfiles}/steamapps/appmanifest_${appid}.acf" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_update.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "4.3 - update - change buildid - online" -echo -e "=================================" -echo -e "Description:" -echo -e "change the buildid tricking SteamCMD to update server while already running." -echo -e "Command: ./jc2server update" -requiredstatus="STARTED" -fn_setstatus -fn_print_info_nl "changed buildid to 0." -sed -i 's/[0-9]\+/0/' "${serverfiles}/steamapps/appmanifest_${appid}.acf" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_update.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "4.4 - update - remove appmanifest file" -echo -e "=================================" -echo -e "Description:" -echo -e "removing appmanifest file will cause script to repair." -echo -e "Command: ./jc2server update" -requiredstatus="STOPPED" -fn_setstatus -fn_print_info_nl "removed appmanifest_${appid}.acf." -rm --verbose "${serverfiles:?}/steamapps/appmanifest_${appid}.acf" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_update.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "4.5 - force-update" -echo -e "=================================" -echo -e "Description:" -echo -e "force-update bypassing update check." -echo -e "Command: ./jc2server force-update" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - forceupdate=1 - command_update.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "4.6 - force-update - online" -echo -e "=================================" -echo -e "Description:" -echo -e "force-update bypassing update check server while already running." -echo -e "Command: ./jc2server force-update" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - forceupdate=1 - command_update.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "4.7 - validate" -echo -e "=================================" -echo -e "Description:" -echo -e "validate server files." -echo -e "Command: ./jc2server validate" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_validate.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "4.8 - validate - online" -echo -e "=================================" -echo -e "Description:" -echo -e "validate server files while server already running." -echo -e "" -echo -e "Command: ./jc2server validate" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_validate.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "4.9 - update-lgsm" -echo -e "=================================" -echo -e "Description:" -echo -e "update LinuxGSM." -echo -e "" -echo -e "Command: ./jc2server update-lgam" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_update_linuxgsm.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "Inserting IP address" -echo -e "=================================" -echo -e "Description:" -echo -e "Inserting Travis IP in to config." -echo -e "Allows monitor to work" -if [ "$(${ipcommand}-o -4 addr | grep eth0)" ]; then - travisip=$(${ipcommand}-o -4 addr | grep eth0 | awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}' | grep -v 127.0.0) -else - travisip=$(${ipcommand}-o -4 addr | grep ens | awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}' | sort -u | grep -v 127.0.0) -fi -sed -i "/BindIP/c\BindIP = \"${travisip}\"," "${serverfiles}/config.lua" -echo -e "IP: ${travisip}" - -echo -e "" -echo -e "5.0 - Monitor Tests" -echo -e "==================================================================" -echo -e "" -info_game.sh -echo -e "Server IP - Port: ${ip}:${port}" -echo -e "Server IP - Query Port: ${ip}:${queryport}" - -echo -e "" -echo -e "5.1 - monitor - online" -echo -e "=================================" -echo -e "Description:" -echo -e "run monitor server while already running." -echo -e "Command: ./${gameservername} monitor" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_monitor.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "5.2 - monitor - offline - with lockfile" -echo -e "=================================" -echo -e "Description:" -echo -e "run monitor while server is offline with lockfile." -echo -e "Command: ./${gameservername} monitor" -requiredstatus="STOPPED" -fn_setstatus -fn_print_info_nl "creating lockfile." -date '+%s' > "${lockdir}/${selfname}.lock" -echo "${version}" >> "${lockdir}/${selfname}.lock" -echo "${port}" >> "${lockdir}/${selfname}.lock" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_monitor.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "5.3 - monitor - offline - no lockfile" -echo -e "=================================" -echo -e "Description:" -echo -e "run monitor while server is offline with no lockfile." -echo -e "Command: ./${gameservername} monitor" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_monitor.sh -) -fn_test_result_fail -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "5.4 - test-alert" -echo -e "=================================" -echo -e "Description:" -echo -e "run monitor while server is offline with no lockfile." -echo -e "Command: ./${gameservername} test-alert" -requiredstatus="STOPPED" -fn_setstatus -cp "${servercfgfullpath}" "config.lua" -sed -i 's/[0-9]\+/0/' "${servercfgfullpath}" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_test_alert.sh -) -fn_test_result_fail -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -fn_print_info_nl "Re-generating ${servercfg}." -cp -v "config.lua" "${servercfgfullpath}" -echo -e "=================================" - -echo -e "" -echo -e "6.0 - Details Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "6.1 - details" -echo -e "=================================" -echo -e "Description:" -echo -e "display details." -echo -e "Command: ./${gameservername} details" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_details.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "6.2 - postdetails" -echo -e "=================================" -echo -e "Description:" -echo -e "post details." -echo -e "Command: ./${gameservername} postdetails" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_postdetails.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "7.0 - Backup Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "7.1 - backup" -echo -e "=================================" -echo -e "Description:" -echo -e "run a backup." -echo -e "Command: ./${gameservername} backup" -requiredstatus="STARTED" -fn_setstatus -echo -e "test de-activated until issue #1839 fixed" -#(command_backup.sh) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "8.0 - Development Tools Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "8.1 - dev - detect glibc" -echo -e "=================================" -echo -e "Description:" -echo -e "detect glibc." -echo -e "Command: ./${gameservername} detect-glibc" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_detect_glibc.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "8.2 - dev - detect ldd" -echo -e "=================================" -echo -e "Description:" -echo -e "detect ldd." -echo -e "Command: ./${gameservername} detect-ldd" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_detect_ldd.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "8.3 - dev - detect deps" -echo -e "=================================" -echo -e "Description:" -echo -e "detect dependencies." -echo -e "Command: ./${gameservername} detect-deps" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_detect_deps.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "8.4 - dev - query-raw" -echo -e "=================================" -echo -e "Description:" -echo -e "raw query output." -echo -e "Command: ./${gameservername} query-raw" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_query_raw.sh -) -fn_test_result_na -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "9.0 - Sponsor" -echo -e "==================================================================" - -echo -e "" -echo -e "9.1 - sponsor" -echo -e "=================================" -echo -e "Description:" -echo -e "sponsor." -echo -e "Command: ./${gameservername} sponsor" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_sponsor.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "=================================" -echo -e "Server Tests - Complete!" -echo -e "Using: ${gamename}" -echo -e "=================================" -requiredstatus="STOPPED" -fn_setstatus -core_exit.sh diff --git a/tests/tests_mcserver.sh b/tests/tests_mcserver.sh deleted file mode 100644 index d173c7d680..0000000000 --- a/tests/tests_mcserver.sh +++ /dev/null @@ -1,1231 +0,0 @@ -#!/bin/bash -# Project: Game Server Managers - LinuxGSM -# Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2020 Daniel Gibbs -# Purpose: Travis CI Tests: Minecraft | Linux Game Server Management Script -# Contributors: https://linuxgsm.com/contrib -# Documentation: https://docs.linuxgsm.com -# Website: https://linuxgsm.com - -# DO NOT EDIT THIS FILE -# LinuxGSM configuration is no longer edited here -# To update your LinuxGSM config go to: -# lgsm/config-lgsm -# https://docs.linuxgsm.com/configuration/linuxgsm-config - -# Debugging -if [ -f ".dev-debug" ]; then - exec 5> dev-debug.log - BASH_XTRACEFD="5" - set -x -fi - -version="v23.5.3" -shortname="mc" -gameservername="mcserver" -commandname="CORE" -rootdir=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")") -selfname=$(basename "$(readlink -f "${BASH_SOURCE[0]}")") -sessionname=$(echo "${selfname}" | cut -f1 -d".") -lgsmdir="${rootdir}/lgsm" -logdir="${rootdir}/log" -lgsmlogdir="${logdir}/lgsm" -steamcmddir="${HOME}/.steam/steamcmd" -serverfiles="${rootdir}/serverfiles" -modulesdir="${lgsmdir}/modules" -tmpdir="${lgsmdir}/tmp" -datadir="${lgsmdir}/data" -lockdir="${lgsmdir}/lock" -serverlist="${datadir}/serverlist.csv" -serverlistmenu="${datadir}/serverlistmenu.csv" -configdir="${lgsmdir}/config-lgsm" -configdirserver="${configdir}/${gameservername}" -configdirdefault="${lgsmdir}/config-default" -userinput="${1}" - -# Allows for testing not on Travis CI. -# if using travis for tests -if [ -z "${TRAVIS}" ]; then - TRAVIS_BRANCH="develop" - TRAVIS_BUILD_DIR="${rootdir}" -fi -travistest="1" - -## GitHub Branch Select -# Allows for the use of different module files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="${TRAVIS_BRANCH}" - -# Core module that is required first. -core_modules.sh() { - modulefile="${FUNCNAME[0]}" - fn_bootstrap_fetch_file_github "lgsm/modules" "core_modules.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash" -} - -# Bootstrap -# Fetches the core modules required before passed off to core_dl.sh. -fn_bootstrap_fetch_file() { - remote_fileurl="${1}" - remote_fileurl_backup="${2}" - remote_fileurl_name="${3}" - remote_fileurl_backup_name="${4}" - local_filedir="${5}" - local_filename="${6}" - chmodx="${7:-0}" - run="${8:-0}" - forcedl="${9:-0}" - md5="${10:-0}" - # Download file if missing or download forced. - if [ ! -f "${local_filedir}/${local_filename}" ] || [ "${forcedl}" == "forcedl" ]; then - # If backup fileurl exists include it. - if [ -n "${remote_fileurl_backup}" ]; then - # counter set to 0 to allow second try - counter=0 - remote_fileurls_array=(remote_fileurl remote_fileurl_backup) - else - # counter set to 1 to not allow second try - counter=1 - remote_fileurls_array=(remote_fileurl) - fi - - for remote_fileurl_array in "${remote_fileurls_array[@]}"; do - if [ "${remote_fileurl_array}" == "remote_fileurl" ]; then - fileurl="${remote_fileurl}" - fileurl_name="${remote_fileurl_name}" - elif [ "${remote_fileurl_array}" == "remote_fileurl_backup" ]; then - fileurl="${remote_fileurl_backup}" - fileurl_name="${remote_fileurl_backup_name}" - fi - counter=$((counter + 1)) - if [ ! -d "${local_filedir}" ]; then - mkdir -p "${local_filedir}" - fi - # Trap will remove part downloaded files if canceled. - trap fn_fetch_trap INT - # Larger files show a progress bar. - - echo -en "fetching ${fileurl_name} ${local_filename}...\c" - curlcmd=$(curl -s --fail -L -o "${local_filedir}/${local_filename}" "${fileurl}" 2>&1) - - local exitcode=$? - # Download will fail if downloads a html file. - if [ -f "${local_filedir}/${local_filename}" ]; then - if [ -n "$(head "${local_filedir}/${local_filename}" | grep "DOCTYPE")" ]; then - rm -f "${local_filedir:?}/${local_filename:?}" - local exitcode=2 - fi - fi - - # On first try will error. On second try will fail. - if [ "${exitcode}" != 0 ]; then - if [ ${counter} -ge 2 ]; then - echo -e "FAIL" - if [ -f "${lgsmlog}" ]; then - fn_script_log_fatal "Downloading ${local_filename}" - fn_script_log_fatal "${fileurl}" - fi - core_exit.sh - else - echo -e "ERROR" - if [ -f "${lgsmlog}" ]; then - fn_script_log_error "Downloading ${local_filename}" - fn_script_log_error "${fileurl}" - fi - fi - - else - echo -en "OK" - sleep 0.3 - echo -en "\033[2K\\r" - if [ -f "${lgsmlog}" ]; then - fn_script_log_pass "Downloading ${local_filename}" - fi - - # Make file executable if chmodx is set. - if [ "${chmodx}" == "chmodx" ]; then - chmod +x "${local_filedir}/${local_filename}" - fi - - # Remove trap. - trap - INT - - break - fi - done - fi - - if [ -f "${local_filedir}/${local_filename}" ]; then - # Execute file if run is set. - if [ "${run}" == "run" ]; then - # shellcheck source=/dev/null - source "${local_filedir}/${local_filename}" - fi - fi -} - -fn_bootstrap_fetch_file_github() { - github_file_url_dir="${1}" - github_file_url_name="${2}" - # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork. - if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManagers" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_file_url_dir}/${github_file_url_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_file_url_dir}/${github_file_url_name}" - else - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" - fi - remote_fileurl_name="GitHub" - remote_fileurl_backup_name="Bitbucket" - local_filedir="${3}" - local_filename="${github_file_url_name}" - chmodx="${4:-0}" - run="${5:-0}" - forcedl="${6:-0}" - md5="${7:-0}" - # Passes vars to the file download module. - fn_bootstrap_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}" -} - -# Installer menu. - -fn_print_center() { - columns=$(tput cols) - line="$*" - printf "%*s\n" $(((${#line} + columns) / 2)) "${line}" -} - -fn_print_horizontal() { - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' "=" -} - -# Bash menu. -fn_install_menu_bash() { - local resultvar=$1 - title=$2 - caption=$3 - options=$4 - fn_print_horizontal - fn_print_center "${title}" - fn_print_center "${caption}" - fn_print_horizontal - menu_options=() - while read -r line || [[ -n "${line}" ]]; do - var=$(echo -e "${line}" | awk -F "," '{print $2 " - " $3}') - menu_options+=("${var}") - done < "${options}" - menu_options+=("Cancel") - select option in "${menu_options[@]}"; do - if [ "${option}" ] && [ "${option}" != "Cancel" ]; then - eval "$resultvar=\"${option/%\ */}\"" - fi - break - done -} - -# Whiptail/Dialog menu. -fn_install_menu_whiptail() { - local menucmd=$1 - local resultvar=$2 - title=$3 - caption=$4 - options=$5 - height=${6:-40} - width=${7:-80} - menuheight=${8:-30} - IFS="," - menu_options=() - while read -r line; do - key=$(echo -e "${line}" | awk -F "," '{print $3}') - val=$(echo -e "${line}" | awk -F "," '{print $2}') - menu_options+=("${val//\"/}" "${key//\"/}") - done < "${options}" - OPTION=$(${menucmd} --title "${title}" --menu "${caption}" "${height}" "${width}" "${menuheight}" "${menu_options[@]}" 3>&1 1>&2 2>&3) - if [ $? == 0 ]; then - eval "$resultvar=\"${OPTION}\"" - else - eval "$resultvar=" - fi -} - -# Menu selector. -fn_install_menu() { - local resultvar=$1 - local selection="" - title=$2 - caption=$3 - options=$4 - # Get menu command. - for menucmd in whiptail dialog bash; do - if [ "$(command -v "${menucmd}")" ]; then - menucmd=$(command -v "${menucmd}") - break - fi - done - case "$(basename "${menucmd}")" in - whiptail | dialog) - fn_install_menu_whiptail "${menucmd}" selection "${title}" "${caption}" "${options}" 40 80 30 - ;; - *) - fn_install_menu_bash selection "${title}" "${caption}" "${options}" - ;; - esac - eval "$resultvar=\"${selection}\"" -} - -# Gets server info from serverlist.csv and puts in to array. -fn_server_info() { - IFS="," - server_info_array=($(grep -aw "${userinput}" "${serverlist}")) - shortname="${server_info_array[0]}" # csgo - gameservername="${server_info_array[1]}" # csgoserver - gamename="${server_info_array[2]}" # Counter Strike: Global Offensive -} - -fn_install_getopt() { - userinput="empty" - echo -e "Usage: $0 [option]" - echo -e "" - echo -e "Installer - Linux Game Server Managers - Version ${version}" - echo -e "https://linuxgsm.com" - echo -e "" - echo -e "Commands" - echo -e "install\t\t| Select server to install." - echo -e "servername\t| Enter name of game server to install. e.g $0 csgoserver." - echo -e "list\t\t| List all servers available for install." - exit -} - -fn_install_file() { - local_filename="${gameservername}" - if [ -e "${local_filename}" ]; then - i=2 - while [ -e "${local_filename}-${i}" ]; do - ((i++)) - done - local_filename="${local_filename}-${i}" - fi - cp -R "${selfname}" "${local_filename}" - sed -i -e "s/shortname=\"core\"/shortname=\"${shortname}\"/g" "${local_filename}" - sed -i -e "s/gameservername=\"core\"/gameservername=\"${gameservername}\"/g" "${local_filename}" - echo -e "Installed ${gamename} server as ${local_filename}" - echo -e "" - if [ ! -d "${serverfiles}" ]; then - echo -e "./${local_filename} install" - else - echo -e "Remember to check server ports" - echo -e "./${local_filename} details" - fi - echo -e "" - exit -} - -# Prevent LinuxGSM from running as root. Except if doing a dependency install. -if [ "$(whoami)" == "root" ]; then - if [ "${userinput}" == "install" ] || [ "${userinput}" == "auto-install" ] || [ "${userinput}" == "i" ] || [ "${userinput}" == "ai" ]; then - if [ "${shortname}" == "core" ]; then - echo -e "[ FAIL ] Do NOT run this script as root!" - exit 1 - fi - elif [ ! -f "${modulesdir}/core_modules.sh" ] || [ ! -f "${modulesdir}/check_root.sh" ] || [ ! -f "${modulesdir}/core_messages.sh" ]; then - echo -e "[ FAIL ] Do NOT run this script as root!" - exit 1 - else - core_modules.sh - check_root.sh - fi -fi - -# LinuxGSM installer mode. -if [ "${shortname}" == "core" ]; then - # Download the latest serverlist. This is the complete list of all supported servers. - fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash" - if [ ! -f "${serverlist}" ]; then - echo -e "[ FAIL ] serverlist.csv could not be loaded." - exit 1 - fi - - if [ "${userinput}" == "list" ] || [ "${userinput}" == "l" ]; then - { - tail -n +2 "${serverlist}" | awk -F "," '{print $2 "\t" $3}' - } | column -s $'\t' -t | more - exit - elif [ "${userinput}" == "install" ] || [ "${userinput}" == "i" ]; then - tail -n +2 "${serverlist}" | awk -F "," '{print $1 "," $2 "," $3}' > "${serverlistmenu}" - fn_install_menu result "LinuxGSM" "Select game server to install." "${serverlistmenu}" - userinput="${result}" - fn_server_info - if [ "${result}" == "${gameservername}" ]; then - fn_install_file - elif [ "${result}" == "" ]; then - echo -e "Install canceled" - else - echo -e "[ FAIL ] menu result does not match gameservername" - echo -e "result: ${result}" - echo -e "gameservername: ${gameservername}" - fi - elif [ "${userinput}" ]; then - fn_server_info - if [ "${userinput}" == "${gameservername}" ] || [ "${userinput}" == "${gamename}" ] || [ "${userinput}" == "${shortname}" ]; then - fn_install_file - else - echo -e "[ FAIL ] Unknown game server" - fi - else - fn_install_getopt - fi - -# LinuxGSM server mode. -else - core_modules.sh - if [ "${shortname}" != "core-dep" ]; then - # Load LinuxGSM configs. - # These are required to get all the default variables for the specific server. - # Load the default config. If missing download it. If changed reload it. - if [ ! -f "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" ]; then - mkdir -p "${configdirdefault}/config-lgsm/${gameservername}" - fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nohash" - fi - if [ ! -f "${configdirserver}/_default.cfg" ]; then - mkdir -p "${configdirserver}" - echo -en "copying _default.cfg...\c" - cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - echo -e "FAIL" - exit 1 - else - echo -e "OK" - fi - else - module_file_diff=$(diff -q "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg") - if [ "${module_file_diff}" != "" ]; then - fn_print_warn_nl "_default.cfg has been altered. reloading config." - echo -en "copying _default.cfg...\c" - cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - echo -e "FAIL" - exit 1 - else - echo -e "OK" - fi - fi - fi - # shellcheck source=/dev/null - source "${configdirserver}/_default.cfg" - # Load the common.cfg config. If missing download it. - if [ ! -f "${configdirserver}/common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" - # shellcheck source=/dev/null - source "${configdirserver}/common.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/common.cfg" - fi - # Load the secrets-common.cfg config. If missing download it. - if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" - # shellcheck source=/dev/null - source "${configdirserver}/secrets-common.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/secrets-common.cfg" - fi - # Load the instance.cfg config. If missing download it. - if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" - # shellcheck source=/dev/null - source "${configdirserver}/${selfname}.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/${selfname}.cfg" - fi - # Load the secrets-instance.cfg config. If missing download it. - if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" - # shellcheck source=/dev/null - source "${configdirserver}/secrets-${selfname}.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/secrets-${selfname}.cfg" - fi - - # Load the linuxgsm.sh in to tmpdir. If missing download it. - if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then - fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nohash" - fi - fi - # Enables ANSI colours from core_messages.sh. Can be disabled with ansi=off. - fn_ansi_loader - # Prevents running of core_exit.sh for Travis-CI. - if [ "${travistest}" != "1" ]; then - getopt=$1 - core_getopt.sh - fi -fi - -fn_currentstatus_tmux() { - check_status.sh - if [ "${status}" != "0" ]; then - currentstatus="STARTED" - else - currentstatus="STOPPED" - fi -} - -fn_setstatus() { - fn_currentstatus_tmux - echo"" - echo -e "Required status: ${requiredstatus}" - counter=0 - echo -e "Current status: ${currentstatus}" - while [ "${requiredstatus}" != "${currentstatus}" ]; do - counter=$((counter + 1)) - fn_currentstatus_tmux - echo -en "New status: ${currentstatus}\\r" - - if [ "${requiredstatus}" == "STARTED" ]; then - (command_start.sh > /dev/null 2>&1) - else - (command_stop.sh > /dev/null 2>&1) - fi - if [ "${counter}" -gt "5" ]; then - currentstatus="FAIL" - echo -e "Current status: ${currentstatus}" - echo -e "" - echo -e "Unable to start or stop server." - exit 1 - fi - done - echo -en "New status: ${currentstatus}\\r" - echo -e "\n" - echo -e "Test starting:" - echo -e "" -} - -# End of every test will expect the result to either pass or fail -# If the script does not do as intended the whole test will fail -# if expecting a pass -fn_test_result_pass() { - if [ $? != 0 ]; then - echo -e "=================================" - echo -e "Expected result: PASS" - echo -e "Actual result: FAIL" - fn_print_fail_nl "TEST FAILED" - exitcode=1 - core_exit.sh - else - echo -e "=================================" - echo -e "Expected result: PASS" - echo -e "Actual result: PASS" - fn_print_ok_nl "TEST PASSED" - echo -e "" - fi -} - -# if expecting a fail -fn_test_result_fail() { - if [ $? == 0 ]; then - echo -e "=================================" - echo -e "Expected result: FAIL" - echo -e "Actual result: PASS" - fn_print_fail_nl "TEST FAILED" - exitcode=1 - core_exit.sh - else - echo -e "=================================" - echo -e "Expected result: FAIL" - echo -e "Actual result: FAIL" - fn_print_ok_nl "TEST PASSED" - echo -e "" - fi -} - -# test result n/a -fn_test_result_na() { - echo -e "=================================" - echo -e "Expected result: N/A" - echo -e "Actual result: N/A" - fn_print_fail_nl "TEST N/A" -} - -sleeptime="0" - -echo -e "=================================" -echo -e "Travis CI Tests" -echo -e "Linux Game Server Manager" -echo -e "by Daniel Gibbs" -echo -e "Contributors: http://goo.gl/qLmitD" -echo -e "https://linuxgsm.com" -echo -e "=================================" -echo -e "" -echo -e "=================================" -echo -e "Server Tests" -echo -e "Using: ${gamename}" -echo -e "Testing Branch: ${TRAVIS_BRANCH}" -echo -e "=================================" -echo -e "" -echo -e "Tests Summary" -echo -e "=================================" -echo -e "0.0 - Pre-test Tasks" -echo -e "0.1 - Create log dir's" -echo -e "0.2 - Enable dev-debug" -echo -e "" -echo -e "1.0 - Pre-install tests" -echo -e "1.1 - start - no files" -echo -e "1.2 - getopt" -echo -e "1.3 - getopt with incorrect args" -echo -e "" -echo -e "2.0 - Installation" -echo -e "2.1 - install" -echo -e "" -echo -e "3.0 - Start/Stop/Restart Tests" -echo -e "3.1 - start" -echo -e "3.2 - start - online" -echo -e "3.3 - start - updateonstart" -echo -e "3.4 - stop" -echo -e "3.5 - stop - offline" -echo -e "3.6 - restart" -echo -e "3.7 - restart - offline" -echo -e "" -echo -e "4.0 - Update Tests" -echo -e "4.1 - update" -echo -e "4.2 - update-lgsm" -echo -e "" -echo -e "5.0 - Monitor Tests" -echo -e "5.1 - monitor - online" -echo -e "5.2 - monitor - offline - with lockfile" -echo -e "5.3 - monitor - offline - no lockfile" -echo -e "5.4 - test-alert" -echo -e "" -echo -e "6.0 - Details Tests" -echo -e "6.1 - details" -echo -e "6.2 - postdetails" -echo -e "" -echo -e "7.0 - Backup Tests" -echo -e "7.1 - backup" -echo -e "" -echo -e "8.0 - Development Tools Tests" -echo -e "8.1 - dev - detect glibc" -echo -e "8.2 - dev - detect ldd" -echo -e "8.3 - dev - detect deps" -echo -e "8.4 - dev - query-raw" -echo -e "" -echo -e "9.0 - Sponsor" -echo -e "9.1 - sponsor" - -echo -e "" -echo -e "0.0 - Pre-test Tasks" -echo -e "==================================================================" -echo -e "Description:" -echo -e "Create log dir's" -echo -e "" - -echo -e "" -echo -e "0.1 - Create log dir's" -echo -e "=================================" -echo -e "" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - install_logs.sh -) -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "0.2 - Enable dev-debug" -echo -e "=================================" -echo -e "Description:" -echo -e "Enable dev-debug" -echo -e "" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_debug.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "1.0 - Pre-install tests" -echo -e "==================================================================" -echo -e "" - -echo -e "1.1 - start - no files" -echo -e "=================================" -echo -e "Description:" -echo -e "test script reaction to missing server files." -echo -e "Command: ./${gameservername} start" -echo -e "" -# Allows for testing not on Travis CI -if [ -z "${TRAVIS}" ]; then - ( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_start.sh - ) - fn_test_result_fail -else - echo -e "Test bypassed" -fi - -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "1.2 - getopt" -echo -e "=================================" -echo -e "Description:" -echo -e "displaying options messages." -echo -e "Command: ./${gameservername}" -echo -e "" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - core_getopt.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "1.3 - getopt with incorrect args" -echo -e "=================================" -echo -e "Description:" -echo -e "displaying options messages." -echo -e "Command: ./${gameservername} abc123" -echo -e "" -getopt="abc123" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - core_getopt.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "2.0 - Installation" -echo -e "==================================================================" - -echo -e "" -echo -e "2.1 - install" -echo -e "=================================" -echo -e "Description:" -echo -e "install ${gamename} server." -echo -e "Command: ./${gameservername} auto-install" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - fn_autoinstall -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.0 - Start/Stop/Restart Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "3.1 - start" -echo -e "=================================" -echo -e "Description:" -echo -e "start ${gamename} server." -echo -e "Command: ./${gameservername} start" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_start.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.2 - start - online" -echo -e "=================================" -echo -e "Description:" -echo -e "start ${gamename} server while already running." -echo -e "Command: ./${gameservername} start" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_start.sh -) -fn_test_result_fail -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.3 - start - updateonstart" -echo -e "=================================" -echo -e "Description:" -echo -e "will update server on start." -echo -e "Command: ./${gameservername} start" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - updateonstart="on" - command_start.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' -echo -e "" -echo -e "30s Pause" -echo -e "=================================" -echo -e "Description:" -echo -e "give time for server to fully start." -echo -e "Command: sleep 30" -requiredstatus="STARTED" -fn_setstatus -sleep 30 - -echo -e "" -echo -e "3.4 - stop" -echo -e "=================================" -echo -e "Description:" -echo -e "stop ${gamename} server." -echo -e "Command: ./${gameservername} stop" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_stop.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.5 - stop - offline" -echo -e "=================================" -echo -e "Description:" -echo -e "stop ${gamename} server while already stopped." -echo -e "Command: ./${gameservername} stop" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_stop.sh -) -fn_test_result_fail -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.6 - restart" -echo -e "=================================" -echo -e "Description:" -echo -e "restart ${gamename}." -echo -e "Command: ./${gameservername} restart" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_restart.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.7 - restart - offline" -echo -e "=================================" -echo -e "Description:" -echo -e "restart ${gamename} while already stopped." -echo -e "Command: ./${gameservername} restart" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_restart.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "4.0 - Update Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "4.1 - update" -echo -e "=================================" -echo -e "Description:" -echo -e "check for updates." -echo -e "Command: ./${gameservername} update" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_update.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "4.2 - update-lgsm" -echo -e "=================================" -echo -e "Description:" -echo -e "update LinuxGSM." -echo -e "" -echo -e "Command: ./jc2server update-lgam" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_update_linuxgsm.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "Inserting IP address" -echo -e "=================================" -echo -e "Description:" -echo -e "Inserting Travis IP in to config." -echo -e "Allows monitor to work" -if [ "$(${ipcommand}-o -4 addr | grep eth0)" ]; then - travisip=$(${ipcommand}-o -4 addr | grep eth0 | awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}' | grep -v 127.0.0) -else - travisip=$(${ipcommand}-o -4 addr | grep ens | awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}' | sort -u | grep -v 127.0.0) -fi -sed -i "/server-ip=/c\server-ip=${travisip}" "${serverfiles}/server.properties" -echo -e "IP: ${travisip}" - -echo -e "" -echo -e "5.0 - Monitor Tests" -echo -e "==================================================================" -echo -e "" -info_game.sh -echo -e "Server IP - Port: ${ip}:${port}" -echo -e "Server IP - Query Port: ${ip}:${queryport}" - -echo -e "" -echo -e "30s Pause" -echo -e "=================================" -echo -e "Description:" -echo -e "give time for server to fully start." -echo -e "Command: sleep 30" -requiredstatus="STARTED" -fn_setstatus -sleep 30 - -echo -e "" -echo -e "5.1 - monitor - online" -echo -e "=================================" -echo -e "Description:" -echo -e "run monitor server while already running." -echo -e "Command: ./${gameservername} monitor" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_monitor.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "5.2 - monitor - offline - with lockfile" -echo -e "=================================" -echo -e "Description:" -echo -e "run monitor while server is offline with lockfile." -echo -e "Command: ./${gameservername} monitor" -requiredstatus="STOPPED" -fn_setstatus -fn_print_info_nl "creating lockfile." -date '+%s' > "${lockdir}/${selfname}.lock" -echo "${version}" >> "${lockdir}/${selfname}.lock" -echo "${port}" >> "${lockdir}/${selfname}.lock" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_monitor.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "5.3 - monitor - offline - no lockfile" -echo -e "=================================" -echo -e "Description:" -echo -e "run monitor while server is offline with no lockfile." -echo -e "Command: ./${gameservername} monitor" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_monitor.sh -) -fn_test_result_fail -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "5.4 - test-alert" -echo -e "=================================" -echo -e "Description:" -echo -e "run monitor while server is offline with no lockfile." -echo -e "Command: ./${gameservername} test-alert" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_test_alert.sh -) -fn_test_result_fail -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "6.0 - Details Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "6.1 - details" -echo -e "=================================" -echo -e "Description:" -echo -e "display details." -echo -e "Command: ./${gameservername} details" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_details.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "6.2 - postdetails" -echo -e "=================================" -echo -e "Description:" -echo -e "post details." -echo -e "Command: ./${gameservername} postdetails" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_postdetails.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "7.0 - Backup Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "7.1 - backup" -echo -e "=================================" -echo -e "Description:" -echo -e "run a backup." -echo -e "Command: ./${gameservername} backup" -requiredstatus="STARTED" -fn_setstatus -echo -e "test de-activated until issue #1839 fixed" -#(command_backup.sh) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "8.0 - Development Tools Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "8.1 - dev - detect glibc" -echo -e "=================================" -echo -e "Description:" -echo -e "detect glibc." -echo -e "Command: ./${gameservername} detect-glibc" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_detect_glibc.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "8.2 - dev - detect ldd" -echo -e "=================================" -echo -e "Description:" -echo -e "detect ldd." -echo -e "Command: ./${gameservername} detect-ldd" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_detect_ldd.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "8.3 - dev - detect deps" -echo -e "=================================" -echo -e "Description:" -echo -e "detect dependencies." -echo -e "Command: ./${gameservername} detect-deps" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_detect_deps.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "Inserting IP address" -echo -e "=================================" -echo -e "Description:" -echo -e "Inserting Travis IP in to config." -echo -e "Allows monitor to work" -if [ "$(${ipcommand}-o -4 addr | grep eth0)" ]; then - travisip=$(${ipcommand}-o -4 addr | grep eth0 | awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}' | grep -v 127.0.0) -else - travisip=$(${ipcommand}-o -4 addr | grep ens | awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}' | sort -u | grep -v 127.0.0) -fi -sed -i "/server-ip=/c\server-ip=${travisip}" "${serverfiles}/server.properties" -echo -e "IP: ${travisip}" - -echo -e "" -echo -e "8.4 - dev - query-raw" -echo -e "=================================" -echo -e "Description:" -echo -e "raw query output." -echo -e "Command: ./${gameservername} query-raw" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_query_raw.sh -) -fn_test_result_na -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "9.0 - Sponsor" -echo -e "==================================================================" - -echo -e "" -echo -e "9.1 - sponsor" -echo -e "=================================" -echo -e "Description:" -echo -e "sponsor." -echo -e "Command: ./${gameservername} sponsor" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_sponsor.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "=================================" -echo -e "Server Tests - Complete!" -echo -e "Using: ${gamename}" -echo -e "=================================" -requiredstatus="STOPPED" -fn_setstatus - -core_exit.sh diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh deleted file mode 100644 index 7363a10254..0000000000 --- a/tests/tests_ts3server.sh +++ /dev/null @@ -1,1184 +0,0 @@ -#!/bin/bash -# Project: Game Server Managers - LinuxGSM -# Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2020 Daniel Gibbs -# Purpose: Travis CI Tests: Teamspeak 3 | Linux Game Server Management Script -# Contributors: https://linuxgsm.com/contrib -# Documentation: https://docs.linuxgsm.com -# Website: https://linuxgsm.com - -# DO NOT EDIT THIS FILE -# LinuxGSM configuration is no longer edited here -# To update your LinuxGSM config go to: -# lgsm/config-lgsm -# https://docs.linuxgsm.com/configuration/linuxgsm-config - -# Debugging -if [ -f ".dev-debug" ]; then - exec 5> dev-debug.log - BASH_XTRACEFD="5" - set -x -fi - -version="v23.5.3" -shortname="ts3" -gameservername="ts3server" -commandname="CORE" -rootdir=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")") -selfname=$(basename "$(readlink -f "${BASH_SOURCE[0]}")") -sessionname=$(echo "${selfname}" | cut -f1 -d".") -lgsmdir="${rootdir}/lgsm" -logdir="${rootdir}/log" -lgsmlogdir="${logdir}/lgsm" -steamcmddir="${HOME}/.steam/steamcmd" -serverfiles="${rootdir}/serverfiles" -modulesdir="${lgsmdir}/modules" -tmpdir="${lgsmdir}/tmp" -datadir="${lgsmdir}/data" -lockdir="${lgsmdir}/lock" -serverlist="${datadir}/serverlist.csv" -serverlistmenu="${datadir}/serverlistmenu.csv" -configdir="${lgsmdir}/config-lgsm" -configdirserver="${configdir}/${gameservername}" -configdirdefault="${lgsmdir}/config-default" -userinput="${1}" - -# Allows for testing not on Travis CI. -# if using travis for tests -if [ -z "${TRAVIS}" ]; then - TRAVIS_BRANCH="develop" - TRAVIS_BUILD_DIR="${rootdir}" -fi -travistest="1" - -## GitHub Branch Select -# Allows for the use of different module files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="${TRAVIS_BRANCH}" - -# Core module that is required first. -core_modules.sh() { - modulefile="${FUNCNAME[0]}" - fn_bootstrap_fetch_file_github "lgsm/modules" "core_modules.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash" -} - -# Bootstrap -# Fetches the core modules required before passed off to core_dl.sh. -fn_bootstrap_fetch_file() { - remote_fileurl="${1}" - remote_fileurl_backup="${2}" - remote_fileurl_name="${3}" - remote_fileurl_backup_name="${4}" - local_filedir="${5}" - local_filename="${6}" - chmodx="${7:-0}" - run="${8:-0}" - forcedl="${9:-0}" - md5="${10:-0}" - # Download file if missing or download forced. - if [ ! -f "${local_filedir}/${local_filename}" ] || [ "${forcedl}" == "forcedl" ]; then - # If backup fileurl exists include it. - if [ -n "${remote_fileurl_backup}" ]; then - # counter set to 0 to allow second try - counter=0 - remote_fileurls_array=(remote_fileurl remote_fileurl_backup) - else - # counter set to 1 to not allow second try - counter=1 - remote_fileurls_array=(remote_fileurl) - fi - - for remote_fileurl_array in "${remote_fileurls_array[@]}"; do - if [ "${remote_fileurl_array}" == "remote_fileurl" ]; then - fileurl="${remote_fileurl}" - fileurl_name="${remote_fileurl_name}" - elif [ "${remote_fileurl_array}" == "remote_fileurl_backup" ]; then - fileurl="${remote_fileurl_backup}" - fileurl_name="${remote_fileurl_backup_name}" - fi - counter=$((counter + 1)) - if [ ! -d "${local_filedir}" ]; then - mkdir -p "${local_filedir}" - fi - # Trap will remove part downloaded files if canceled. - trap fn_fetch_trap INT - # Larger files show a progress bar. - - echo -en "fetching ${fileurl_name} ${local_filename}...\c" - curlcmd=$(curl -s --fail -L -o "${local_filedir}/${local_filename}" "${fileurl}" 2>&1) - - local exitcode=$? - # Download will fail if downloads a html file. - if [ -f "${local_filedir}/${local_filename}" ]; then - if [ -n "$(head "${local_filedir}/${local_filename}" | grep "DOCTYPE")" ]; then - rm -f "${local_filedir:?}/${local_filename:?}" - local exitcode=2 - fi - fi - - # On first try will error. On second try will fail. - if [ "${exitcode}" != 0 ]; then - if [ ${counter} -ge 2 ]; then - echo -e "FAIL" - if [ -f "${lgsmlog}" ]; then - fn_script_log_fatal "Downloading ${local_filename}" - fn_script_log_fatal "${fileurl}" - fi - core_exit.sh - else - echo -e "ERROR" - if [ -f "${lgsmlog}" ]; then - fn_script_log_error "Downloading ${local_filename}" - fn_script_log_error "${fileurl}" - fi - fi - - else - echo -en "OK" - sleep 0.3 - echo -en "\033[2K\\r" - if [ -f "${lgsmlog}" ]; then - fn_script_log_pass "Downloading ${local_filename}" - fi - - # Make file executable if chmodx is set. - if [ "${chmodx}" == "chmodx" ]; then - chmod +x "${local_filedir}/${local_filename}" - fi - - # Remove trap. - trap - INT - - break - fi - done - fi - - if [ -f "${local_filedir}/${local_filename}" ]; then - # Execute file if run is set. - if [ "${run}" == "run" ]; then - # shellcheck source=/dev/null - source "${local_filedir}/${local_filename}" - fi - fi -} - -fn_bootstrap_fetch_file_github() { - github_file_url_dir="${1}" - github_file_url_name="${2}" - # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork. - if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManagers" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_file_url_dir}/${github_file_url_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_file_url_dir}/${github_file_url_name}" - else - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" - fi - remote_fileurl_name="GitHub" - remote_fileurl_backup_name="Bitbucket" - local_filedir="${3}" - local_filename="${github_file_url_name}" - chmodx="${4:-0}" - run="${5:-0}" - forcedl="${6:-0}" - md5="${7:-0}" - # Passes vars to the file download module. - fn_bootstrap_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}" -} - -# Installer menu. - -fn_print_center() { - columns=$(tput cols) - line="$*" - printf "%*s\n" $(((${#line} + columns) / 2)) "${line}" -} - -fn_print_horizontal() { - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' "=" -} - -# Bash menu. -fn_install_menu_bash() { - local resultvar=$1 - title=$2 - caption=$3 - options=$4 - fn_print_horizontal - fn_print_center "${title}" - fn_print_center "${caption}" - fn_print_horizontal - menu_options=() - while read -r line || [[ -n "${line}" ]]; do - var=$(echo -e "${line}" | awk -F "," '{print $2 " - " $3}') - menu_options+=("${var}") - done < "${options}" - menu_options+=("Cancel") - select option in "${menu_options[@]}"; do - if [ "${option}" ] && [ "${option}" != "Cancel" ]; then - eval "$resultvar=\"${option/%\ */}\"" - fi - break - done -} - -# Whiptail/Dialog menu. -fn_install_menu_whiptail() { - local menucmd=$1 - local resultvar=$2 - title=$3 - caption=$4 - options=$5 - height=${6:-40} - width=${7:-80} - menuheight=${8:-30} - IFS="," - menu_options=() - while read -r line; do - key=$(echo -e "${line}" | awk -F "," '{print $3}') - val=$(echo -e "${line}" | awk -F "," '{print $2}') - menu_options+=("${val//\"/}" "${key//\"/}") - done < "${options}" - OPTION=$(${menucmd} --title "${title}" --menu "${caption}" "${height}" "${width}" "${menuheight}" "${menu_options[@]}" 3>&1 1>&2 2>&3) - if [ $? == 0 ]; then - eval "$resultvar=\"${OPTION}\"" - else - eval "$resultvar=" - fi -} - -# Menu selector. -fn_install_menu() { - local resultvar=$1 - local selection="" - title=$2 - caption=$3 - options=$4 - # Get menu command. - for menucmd in whiptail dialog bash; do - if [ "$(command -v "${menucmd}")" ]; then - menucmd=$(command -v "${menucmd}") - break - fi - done - case "$(basename "${menucmd}")" in - whiptail | dialog) - fn_install_menu_whiptail "${menucmd}" selection "${title}" "${caption}" "${options}" 40 80 30 - ;; - *) - fn_install_menu_bash selection "${title}" "${caption}" "${options}" - ;; - esac - eval "$resultvar=\"${selection}\"" -} - -# Gets server info from serverlist.csv and puts in to array. -fn_server_info() { - IFS="," - server_info_array=($(grep -aw "${userinput}" "${serverlist}")) - shortname="${server_info_array[0]}" # csgo - gameservername="${server_info_array[1]}" # csgoserver - gamename="${server_info_array[2]}" # Counter Strike: Global Offensive -} - -fn_install_getopt() { - userinput="empty" - echo -e "Usage: $0 [option]" - echo -e "" - echo -e "Installer - Linux Game Server Managers - Version ${version}" - echo -e "https://linuxgsm.com" - echo -e "" - echo -e "Commands" - echo -e "install\t\t| Select server to install." - echo -e "servername\t| Enter name of game server to install. e.g $0 csgoserver." - echo -e "list\t\t| List all servers available for install." - exit -} - -fn_install_file() { - local_filename="${gameservername}" - if [ -e "${local_filename}" ]; then - i=2 - while [ -e "${local_filename}-${i}" ]; do - ((i++)) - done - local_filename="${local_filename}-${i}" - fi - cp -R "${selfname}" "${local_filename}" - sed -i -e "s/shortname=\"core\"/shortname=\"${shortname}\"/g" "${local_filename}" - sed -i -e "s/gameservername=\"core\"/gameservername=\"${gameservername}\"/g" "${local_filename}" - echo -e "Installed ${gamename} server as ${local_filename}" - echo -e "" - if [ ! -d "${serverfiles}" ]; then - echo -e "./${local_filename} install" - else - echo -e "Remember to check server ports" - echo -e "./${local_filename} details" - fi - echo -e "" - exit -} - -# Prevent LinuxGSM from running as root. Except if doing a dependency install. -if [ "$(whoami)" == "root" ]; then - if [ "${userinput}" == "install" ] || [ "${userinput}" == "auto-install" ] || [ "${userinput}" == "i" ] || [ "${userinput}" == "ai" ]; then - if [ "${shortname}" == "core" ]; then - echo -e "[ FAIL ] Do NOT run this script as root!" - exit 1 - fi - elif [ ! -f "${modulesdir}/core_modules.sh" ] || [ ! -f "${modulesdir}/check_root.sh" ] || [ ! -f "${modulesdir}/core_messages.sh" ]; then - echo -e "[ FAIL ] Do NOT run this script as root!" - exit 1 - else - core_modules.sh - check_root.sh - fi -fi - -# LinuxGSM installer mode. -if [ "${shortname}" == "core" ]; then - # Download the latest serverlist. This is the complete list of all supported servers. - fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash" - if [ ! -f "${serverlist}" ]; then - echo -e "[ FAIL ] serverlist.csv could not be loaded." - exit 1 - fi - - if [ "${userinput}" == "list" ] || [ "${userinput}" == "l" ]; then - { - tail -n +2 "${serverlist}" | awk -F "," '{print $2 "\t" $3}' - } | column -s $'\t' -t | more - exit - elif [ "${userinput}" == "install" ] || [ "${userinput}" == "i" ]; then - tail -n +2 "${serverlist}" | awk -F "," '{print $1 "," $2 "," $3}' > "${serverlistmenu}" - fn_install_menu result "LinuxGSM" "Select game server to install." "${serverlistmenu}" - userinput="${result}" - fn_server_info - if [ "${result}" == "${gameservername}" ]; then - fn_install_file - elif [ "${result}" == "" ]; then - echo -e "Install canceled" - else - echo -e "[ FAIL ] menu result does not match gameservername" - echo -e "result: ${result}" - echo -e "gameservername: ${gameservername}" - fi - elif [ "${userinput}" ]; then - fn_server_info - if [ "${userinput}" == "${gameservername}" ] || [ "${userinput}" == "${gamename}" ] || [ "${userinput}" == "${shortname}" ]; then - fn_install_file - else - echo -e "[ FAIL ] Unknown game server" - fi - else - fn_install_getopt - fi - -# LinuxGSM server mode. -else - core_modules.sh - if [ "${shortname}" != "core-dep" ]; then - # Load LinuxGSM configs. - # These are required to get all the default variables for the specific server. - # Load the default config. If missing download it. If changed reload it. - if [ ! -f "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" ]; then - mkdir -p "${configdirdefault}/config-lgsm/${gameservername}" - fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nohash" - fi - if [ ! -f "${configdirserver}/_default.cfg" ]; then - mkdir -p "${configdirserver}" - echo -en "copying _default.cfg...\c" - cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - echo -e "FAIL" - exit 1 - else - echo -e "OK" - fi - else - module_file_diff=$(diff -q "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg") - if [ "${module_file_diff}" != "" ]; then - fn_print_warn_nl "_default.cfg has been altered. reloading config." - echo -en "copying _default.cfg...\c" - cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - echo -e "FAIL" - exit 1 - else - echo -e "OK" - fi - fi - fi - # shellcheck source=/dev/null - source "${configdirserver}/_default.cfg" - # Load the common.cfg config. If missing download it. - if [ ! -f "${configdirserver}/common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" - # shellcheck source=/dev/null - source "${configdirserver}/common.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/common.cfg" - fi - # Load the secrets-common.cfg config. If missing download it. - if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" - # shellcheck source=/dev/null - source "${configdirserver}/secrets-common.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/secrets-common.cfg" - fi - # Load the instance.cfg config. If missing download it. - if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" - # shellcheck source=/dev/null - source "${configdirserver}/${selfname}.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/${selfname}.cfg" - fi - # Load the secrets-instance.cfg config. If missing download it. - if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" - # shellcheck source=/dev/null - source "${configdirserver}/secrets-${selfname}.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/secrets-${selfname}.cfg" - fi - - # Load the linuxgsm.sh in to tmpdir. If missing download it. - if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then - fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nohash" - fi - fi - # Enables ANSI colours from core_messages.sh. Can be disabled with ansi=off. - fn_ansi_loader - # Prevents running of core_exit.sh for Travis-CI. - if [ "${travistest}" != "1" ]; then - getopt=$1 - core_getopt.sh - fi -fi - -fn_currentstatus_tmux() { - check_status.sh - if [ "${status}" != "0" ]; then - currentstatus="STARTED" - else - currentstatus="STOPPED" - fi -} - -fn_setstatus() { - fn_currentstatus_tmux - echo"" - echo -e "Required status: ${requiredstatus}" - counter=0 - echo -e "Current status: ${currentstatus}" - while [ "${requiredstatus}" != "${currentstatus}" ]; do - counter=$((counter + 1)) - fn_currentstatus_tmux - echo -en "New status: ${currentstatus}\\r" - - if [ "${requiredstatus}" == "STARTED" ]; then - (command_start.sh > /dev/null 2>&1) - else - (command_stop.sh > /dev/null 2>&1) - fi - if [ "${counter}" -gt "5" ]; then - currentstatus="FAIL" - echo -e "Current status: ${currentstatus}" - echo -e "" - echo -e "Unable to start or stop server." - exit 1 - fi - done - echo -en "New status: ${currentstatus}\\r" - echo -e "\n" - echo -e "Test starting:" - echo -e "" -} - -# End of every test will expect the result to either pass or fail -# If the script does not do as intended the whole test will fail -# if expecting a pass -fn_test_result_pass() { - if [ $? != 0 ]; then - echo -e "=================================" - echo -e "Expected result: PASS" - echo -e "Actual result: FAIL" - fn_print_fail_nl "TEST FAILED" - exitcode=1 - core_exit.sh - else - echo -e "=================================" - echo -e "Expected result: PASS" - echo -e "Actual result: PASS" - fn_print_ok_nl "TEST PASSED" - echo -e "" - fi -} - -# if expecting a fail -fn_test_result_fail() { - if [ $? == 0 ]; then - echo -e "=================================" - echo -e "Expected result: FAIL" - echo -e "Actual result: PASS" - fn_print_fail_nl "TEST FAILED" - exitcode=1 - core_exit.sh - else - echo -e "=================================" - echo -e "Expected result: FAIL" - echo -e "Actual result: FAIL" - fn_print_ok_nl "TEST PASSED" - echo -e "" - fi -} - -# test result n/a -fn_test_result_na() { - echo -e "=================================" - echo -e "Expected result: N/A" - echo -e "Actual result: N/A" - fn_print_fail_nl "TEST N/A" -} - -sleeptime="0" - -echo -e "=================================" -echo -e "Travis CI Tests" -echo -e "Linux Game Server Manager" -echo -e "by Daniel Gibbs" -echo -e "Contributors: http://goo.gl/qLmitD" -echo -e "https://linuxgsm.com" -echo -e "=================================" -echo -e "" -echo -e "=================================" -echo -e "Server Tests" -echo -e "Using: ${gamename}" -echo -e "Testing Branch: ${TRAVIS_BRANCH}" -echo -e "=================================" - -echo -e "" -echo -e "Tests Summary" -echo -e "=================================" -echo -e "0.0 - Pre-test Tasks" -echo -e "0.1 - Create log dir's" -echo -e "0.2 - Enable dev-debug" -echo -e "" -echo -e "1.0 - Pre-install tests" -echo -e "1.1 - start - no files" -echo -e "1.2 - getopt" -echo -e "1.3 - getopt with incorrect args" -echo -e "" -echo -e "2.0 - Installation" -echo -e "2.1 - install" -echo -e "" -echo -e "3.0 - Start/Stop/Restart Tests" -echo -e "3.1 - start" -echo -e "3.2 - start - online" -echo -e "3.3 - start - updateonstart" -echo -e "3.4 - stop" -echo -e "3.5 - stop - offline" -echo -e "3.6 - restart" -echo -e "3.7 - restart - offline" -echo -e "" -echo -e "4.0 - Update Tests" -echo -e "4.1 - update" -echo -e "4.2 - update-lgsm" -echo -e "" -echo -e "5.0 - Monitor Tests" -echo -e "5.1 - monitor - online" -echo -e "5.2 - monitor - offline - with lockfile" -echo -e "5.3 - monitor - offline - no lockfile" -echo -e "5.4 - test-alert" -echo -e "" -echo -e "6.0 - Details Tests" -echo -e "6.1 - details" -echo -e "6.2 - postdetails" -echo -e "" -echo -e "7.0 - Backup Tests" -echo -e "7.1 - backup" -echo -e "" -echo -e "8.0 - Development Tools Tests" -echo -e "8.1 - dev - detect glibc" -echo -e "8.2 - dev - detect ldd" -echo -e "8.3 - dev - detect deps" -echo -e "8.4 - dev - query-raw" -echo -e "" -echo -e "9.0 - Sponsor" -echo -e "9.1 - sponsor" -echo -e "" -echo -e "0.0 - Pre-test Tasks" -echo -e "==================================================================" -echo -e "Description:" -echo -e "Create log dir's" -echo -e "" - -echo -e "" -echo -e "0.1 - Create log dir's" -echo -e "=================================" -echo -e "" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - install_logs.sh -) -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "0.2 - Enable dev-debug" -echo -e "=================================" -echo -e "Description:" -echo -e "Enable dev-debug" -echo -e "" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_debug.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "1.0 - Pre-install tests" -echo -e "==================================================================" -echo -e "" - -echo -e "1.1 - start - no files" -echo -e "=================================" -echo -e "Description:" -echo -e "test script reaction to missing server files." -echo -e "Command: ./${gameservername} start" -echo -e "" -# Allows for testing not on Travis CI -if [ -z "${TRAVIS}" ]; then - ( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_start.sh - ) - fn_test_result_fail -else - echo -e "Test bypassed" -fi - -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "1.2 - getopt" -echo -e "=================================" -echo -e "Description:" -echo -e "displaying options messages." -echo -e "Command: ./${gameservername}" -echo -e "" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - core_getopt.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "1.3 - getopt with incorrect args" -echo -e "=================================" -echo -e "Description:" -echo -e "displaying options messages." -echo -e "Command: ./${gameservername} abc123" -echo -e "" -getopt="abc123" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - core_getopt.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "2.0 - Installation" -echo -e "==================================================================" - -echo -e "" -echo -e "2.1 - install" -echo -e "=================================" -echo -e "Description:" -echo -e "install ${gamename} server." -echo -e "Command: ./${gameservername} auto-install" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - fn_autoinstall -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.0 - Start/Stop/Restart Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "3.1 - start" -echo -e "=================================" -echo -e "Description:" -echo -e "start ${gamename} server." -echo -e "Command: ./${gameservername} start" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_start.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.2 - start - online" -echo -e "=================================" -echo -e "Description:" -echo -e "start ${gamename} server while already running." -echo -e "Command: ./${gameservername} start" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_start.sh -) -fn_test_result_fail -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.3 - start - updateonstart" -echo -e "=================================" -echo -e "Description:" -echo -e "will update server on start." -echo -e "Command: ./${gameservername} start" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - updateonstart="on" - command_start.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.4 - stop" -echo -e "=================================" -echo -e "Description:" -echo -e "stop ${gamename} server." -echo -e "Command: ./${gameservername} stop" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_stop.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.5 - stop - offline" -echo -e "=================================" -echo -e "Description:" -echo -e "stop ${gamename} server while already stopped." -echo -e "Command: ./${gameservername} stop" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_stop.sh -) -fn_test_result_fail -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.6 - restart" -echo -e "=================================" -echo -e "Description:" -echo -e "restart ${gamename}." -echo -e "Command: ./${gameservername} restart" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_restart.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "3.7 - restart - offline" -echo -e "=================================" -echo -e "Description:" -echo -e "restart ${gamename} while already stopped." -echo -e "Command: ./${gameservername} restart" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_restart.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "4.0 - Update Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "4.1 - update" -echo -e "=================================" -echo -e "Description:" -echo -e "check for updates." -echo -e "Command: ./${gameservername} update" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_update.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "4.2 - update-lgsm" -echo -e "=================================" -echo -e "Description:" -echo -e "update LinuxGSM." -echo -e "" -echo -e "Command: ./jc2server update-lgam" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_update_linuxgsm.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "5.0 - Monitor Tests" -echo -e "==================================================================" -echo -e "" -info_game.sh -echo -e "Server IP - Port: ${ip}:${port}" -echo -e "Server IP - Query Port: ${ip}:${queryport}" - -echo -e "" -echo -e "5.1 - monitor - online" -echo -e "=================================" -echo -e "Description:" -echo -e "run monitor server while already running." -echo -e "Command: ./${gameservername} monitor" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_monitor.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "5.2 - monitor - offline - with lockfile" -echo -e "=================================" -echo -e "Description:" -echo -e "run monitor while server is offline with lockfile." -echo -e "Command: ./${gameservername} monitor" -requiredstatus="STOPPED" -fn_setstatus -fn_print_info_nl "creating lockfile." -date '+%s' > "${lockdir}/${selfname}.lock" -echo "${version}" >> "${lockdir}/${selfname}.lock" -echo "${port}" >> "${lockdir}/${selfname}.lock" -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_monitor.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "5.3 - monitor - offline - no lockfile" -echo -e "=================================" -echo -e "Description:" -echo -e "run monitor while server is offline with no lockfile." -echo -e "Command: ./${gameservername} monitor" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_monitor.sh -) -fn_test_result_fail -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "5.4 - test-alert" -echo -e "=================================" -echo -e "Description:" -echo -e "run monitor while server is offline with no lockfile." -echo -e "Command: ./${gameservername} test-alert" -requiredstatus="STOPPED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_test_alert.sh -) -fn_test_result_fail -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "6.0 - Details Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "6.1 - details" -echo -e "=================================" -echo -e "Description:" -echo -e "display details." -echo -e "Command: ./${gameservername} details" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_details.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "6.2 - postdetails" -echo -e "=================================" -echo -e "Description:" -echo -e "post details." -echo -e "Command: ./${gameservername} postdetails" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_postdetails.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "7.0 - Backup Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "7.1 - backup" -echo -e "=================================" -echo -e "Description:" -echo -e "run a backup." -echo -e "Command: ./${gameservername} backup" -requiredstatus="STARTED" -fn_setstatus -echo -e "test de-activated until issue #1839 fixed" -#(command_backup.sh) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "8.0 - Development Tools Tests" -echo -e "==================================================================" - -echo -e "" -echo -e "8.1 - dev - detect glibc" -echo -e "=================================" -echo -e "Description:" -echo -e "detect glibc." -echo -e "Command: ./${gameservername} detect-glibc" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_detect_glibc.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "8.2 - dev - detect ldd" -echo -e "=================================" -echo -e "Description:" -echo -e "detect ldd." -echo -e "Command: ./${gameservername} detect-ldd" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_detect_ldd.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "8.3 - dev - detect deps" -echo -e "=================================" -echo -e "Description:" -echo -e "detect dependencies." -echo -e "Command: ./${gameservername} detect-deps" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_detect_deps.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "8.4 - dev - query-raw" -echo -e "=================================" -echo -e "Description:" -echo -e "raw query output." -echo -e "Command: ./${gameservername} query-raw" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_dev_query_raw.sh -) -fn_test_result_na -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "9.0 - Sponsor" -echo -e "==================================================================" - -echo -e "" -echo -e "9.1 - sponsor" -echo -e "=================================" -echo -e "Description:" -echo -e "sponsor." -echo -e "Command: ./${gameservername} sponsor" -requiredstatus="STARTED" -fn_setstatus -( - exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log" - BASH_XTRACEFD="5" - set -x - command_sponsor.sh -) -fn_test_result_pass -echo -e "run order" -echo -e "=================" -grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g' - -echo -e "" -echo -e "=================================" -echo -e "Server Tests - Complete!" -echo -e "Using: ${gamename}" -echo -e "=================================" -requiredstatus="STOPPED" -fn_setstatus - -core_exit.sh