From 53db4358b7279beaf22b4e9e6a1c44a42a622c66 Mon Sep 17 00:00:00 2001 From: lighta Date: Fri, 1 Dec 2017 14:46:09 -0400 Subject: [PATCH] Add few test to travis and appveyor. (#2641) * Add few test to travis and appveyor. * Update runserver.bat to be more alike athena-start. (nb terminating cmd.bat would be better) --- .travis.yml | 2 + appveyor.yml | 4 ++ tools/charserv.bat | 2 +- tools/logserv.bat | 2 +- tools/mapserv.bat | 2 +- tools/runserver.bat | 130 +++++++++++++++++++++++++++++++++++++++++++- tools/serv.bat | 5 ++ 7 files changed, 141 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 461a9d8ba9..eae91345af 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,6 +37,8 @@ script: - ./tools/ci/npc.sh - make clean - make server + - ./login-server --run-once + - ./char-server --run-once - ./map-server --run-once env: diff --git a/appveyor.yml b/appveyor.yml index 03a26634bb..3d29eedf9f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -108,4 +108,8 @@ test_script: rem Start the map server + login-server.exe --run-once + + char-server.exe --run-once + map-server.exe --run-once diff --git a/tools/charserv.bat b/tools/charserv.bat index b21efac35e..39dbedb1d5 100644 --- a/tools/charserv.bat +++ b/tools/charserv.bat @@ -1,2 +1,2 @@ @ECHO OFF -CALL serv.bat char-server.exe Char-Server +CALL serv.bat char-server.exe Char-Server %* diff --git a/tools/logserv.bat b/tools/logserv.bat index a36e07f17b..5b7d05aa3a 100644 --- a/tools/logserv.bat +++ b/tools/logserv.bat @@ -1,2 +1,2 @@ @ECHO OFF -CALL serv.bat login-server.exe Login-Server +CALL serv.bat login-server.exe Login-Server %* diff --git a/tools/mapserv.bat b/tools/mapserv.bat index fc6235092d..bb30f42ed5 100644 --- a/tools/mapserv.bat +++ b/tools/mapserv.bat @@ -1,2 +1,2 @@ @ECHO OFF -CALL serv.bat map-server.exe Map-Server +CALL serv.bat map-server.exe Map-Server %* diff --git a/tools/runserver.bat b/tools/runserver.bat index f7e23b62f5..5dc8132081 100644 --- a/tools/runserver.bat +++ b/tools/runserver.bat @@ -3,6 +3,130 @@ rem This is and auto-restart script for the rAthena Ragnarok Online Server Emula rem It will also keep the map server OPEN after it crashes to that errors may be rem more easily identified rem Writen by Jbain -start cmd /k logserv.bat -start cmd /k charserv.bat -start cmd /k mapserv.bat +rem modified by lighta + +set SOURCE_DIR=%~dp0 +cd %SOURCE_DIR% + +if ["%~1"]==[""] ( + REM this is for backward compatibility + set "target=watch" +) else set target=%~1 +echo "target=%target%" + +REM to avoid any localization issue +set "login_running=false" +set "char_running=false" +set "map_running=false" + + +if "%target%" == "status" ( + call :getStatus +) else if "%target%" == "watch" ( + call :Watch +) else if "%target%" == "stop" ( + call :Stop +) else if "%target%" == "stop" ( + call :Stop +) else if "%target%" == "start" ( + call :Start +) +goto :EOF + + +:Stop +echo "Stoping all serv" +call :stopLogin +call :stopChar +call :stopMap +goto :EOF + +:Watch +REM this is to align terminology with athena-start, (start with restart mode) +echo "Starting all serv" +set "resart_mode=on" +call :startLogin +call :startChar +call :startMap +goto :EOF + +:Start +echo "Starting all serv" +set "resart_mode=off" +call :startLogin +call :startChar +call :startMap +goto :EOF + +:getStatus +echo "Getting status of all serv" +call :getLoginStatus +call :getCharStatus +call :getMapStatus + +if "%login_running%" == "false" ( echo "login_serv is not running" +) else echo "login_serv is running pid=%LoginServPID%" +if "%char_running%" == "false" ( echo "char_serv is not running" +) else echo "char_serv is running pid=%CharServPID%" +if "%map_running%" == "false" ( echo "map_serv is not running" +) else echo "map_serv is running pid=%MapServPID%" + +goto :EOF + + + +REM ==== +REM sub targets (a target per serv) +REM ==== + +REM stop sub targets +:stopLogin +call :getLoginStatus +if "%login_running%" == "true" Taskkill /PID %LoginServPID% /F +goto :EOF + +:stopChar +call :getCharStatus +if "%char_running%" == "true" Taskkill /PID %CharServPID% /F +goto :EOF + +:stopMap +call :getMapStatus +if "%map_running%" == "true" Taskkill /PID %MapServPID% /F +goto :EOF + +REM start sub targets +:startLogin +call :getLoginStatus +if "%login_running%" == "false" ( start cmd /k logserv.bat %resart_mode% +) else echo "Login serv is already running pid=%LoginServPID%" +goto :EOF + +:startChar +call :getCharStatus +if "%char_running%" == "false" ( start cmd /k charserv.bat %resart_mode% +) else echo "Char serv is already running, pid=%CharServPID%" +goto :EOF + +:startMap +call :getMapStatus +if "%map_running%" == "false" ( start cmd /k mapserv.bat %resart_mode% +) else echo "Map serv is already running, pid=%MapServPID%" +goto :EOF + +REM status sub targets + +:getLoginStatus +for /F "TOKENS=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq login-server.exe"') do set LoginServPID=%%b +echo(%LoginServPID%|findstr "^[-][1-9][0-9]*$ ^[1-9][0-9]*$ ^0$">nul&& set "login_running=true" || set "login_running=false" +goto :EOF + +:getCharStatus +for /F "TOKENS=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq char-server.exe"') do set CharServPID=%%b +echo(%CharServPID%|findstr "^[-][1-9][0-9]*$ ^[1-9][0-9]*$ ^0$">nul&& set "char_running=true" || set "char_running=false" +goto :EOF + +:getMapStatus +for /F "TOKENS=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq map-server.exe"') do set MapServPID=%%b +echo(%MapServPID%|findstr "^[-][1-9][0-9]*$ ^[1-9][0-9]*$ ^0$">nul&& set "map_running=true" || set "map_running=false" +goto :EOF diff --git a/tools/serv.bat b/tools/serv.bat index e33f84f13d..15dfde6106 100644 --- a/tools/serv.bat +++ b/tools/serv.bat @@ -2,6 +2,10 @@ IF "%1"=="" GOTO DIRECT IF "%2"=="" GOTO DIRECT IF NOT EXIST "%1" GOTO NOTFOUND + +IF "%3"=="" ( set "restart_mode=on" +) else set "restart_mode=%~3" +echo "restart_mode=%restart_mode%" GOTO START REM == How RESTART_9X and RESTART_NT works ========================= @@ -25,6 +29,7 @@ REM Windows 2000, XP, Vista, 7 REM There is no CHOICE in 2000 and XP, but you get asked whether to REM abort the batch file, when pressing Ctrl+C in PING. IF "%1"=="mapcache.exe" GOTO END +if "%restart_mode%" == "off" GOTO END ECHO Restarting in 15 seconds, press Ctrl+C to cancel. PING -n 15 127.0.0.1 > NUL