X-Git-Url: http://git.pond.sub.org/?p=empserver;a=blobdiff_plain;f=tests%2Fsmoke-test;h=682d03b857da2192b21164fa20b3fae6400a0650;hp=fe6d614dbb8fcb67753b6f35fc4d3aadaba76382;hb=HEAD;hpb=56a9d46ab102661db62442871be3233cb8a09b77 diff --git a/tests/smoke-test b/tests/smoke-test index fe6d614db..682d03b85 100755 --- a/tests/smoke-test +++ b/tests/smoke-test @@ -7,126 +7,15 @@ fi srcdir="$1" -export EMPIREHOST=127.0.0.1 LOGNAME=tester +. "$srcdir"/tests/test-common.sh -if [ -x ./config.status ] && ./config.status --version | grep -q '^Wolfpack Empire' -then : -else echo "$0: Must be run in root of build tree" >&2; exit 1 -fi - -# -# Currently expected to work only with thread package LWP and a -# random() that behaves exactly like the one on my development system, -# because: -# -# - Thread scheduling is reliably deterministic only with LWP -# - The PRN sequence produced by random() isn't portable -# - Shell builtin kill appears not to do the job in MinGW -# - The Windows server tries to run as service when -d isn't -# specified -# -# TODO address these shortcomings. -# -if [ "`uname -s`" != "Linux" ] # lame approx. of "random() behaves like mine" -then echo "Warning: smoke test not expected to work on this system!" >&2 -elif [ `sed -n 's/empthread *:= *\(.*\)/\1/p' &2 -fi - -# Create sandbox -rm -rf sandbox -mkdir -p sandbox/etc/empire sandbox/share/empire/builtin sandbox/var/empire -touch sandbox/etc/empire/schedule -cat >sandbox/etc/empire/econfig <sandbox/smoke.out - -pid= -trap 'if [ "$pid" ]; then kill "$pid" 2>/dev/null || true; fi' EXIT - -# Create world and start server -src/util/files -e sandbox/etc/empire/econfig -f >&3 -src/util/fairland -e sandbox/etc/empire/econfig -q -s sandbox/newcap_script -R 1 10 30 -src/server/emp_server -e sandbox/etc/empire/econfig -R 1 -while src/client/empire red herring 2>&1 | grep -q "Connection refused" -do : # FIXME hangs here if server crashes on startup -done -pid=`cat sandbox/var/empire/server.pid` -src/client/empire POGO peter /dev/null - -# Feed player input -need_update= -for i in "$srcdir"/tests/smoke/[0-9]* -do - t="${i##*/}" - if [ "$need_update" ] - then - echo "Update Turn $t starting" >&3 - src/client/empire POGO peter <&3 -power new -report * -cen * ?own#0 -comm * ?own#0 -reso * ?own#0 -force -EOF - echo "Update Turn $t completed successfully" >&3 - fi - for j in "$i"/* - do - p="${j##*/}" - echo "Player $p Turn $t starting" >&3 - if [ $p -eq 0 ] - then c=POGO r=peter - else c="${p#0}"; r="$c" - fi - src/client/empire "$c" "$r" <$j >&3 - echo "Player $p Turn $t completed successfully" >&3 - done - need_update=y -done - -# Stop server -kill "$pid" -while kill -0 "$pid" 2>/dev/null -do : # FIXME hangs here if server fails to exit -done +create_sandbox -exec 3>&- +begin_test "$srcdir"/tests/smoke/fairland.xdump -# Smoke test completed; compare results +feed_input POGO peter "$srcdir"/tests/smoke/newcap_script +feed_dir "$srcdir"/tests/smoke -cmp_out() -{ - local opt exp act nrm msg ret=0 - for i - do - case "$i" in - */journal.log) opt=-j ;; - */server.log) opt=-s ;; - *) opt= ;; - esac - exp="$srcdir/tests/smoke/${i##*/}" - act="sandbox/$i" - nrm="sandbox/normalized-${i##*/}" - perl "$srcdir"/tests/normalize.pl $opt "$act" >"$nrm" - if msg=`diff -q "$exp" "$nrm"` - then - echo "$exp OK" - else - ret=$? - echo "$exp FAIL" - echo $msg - fi - done - return $ret -} +end_test -cmp_out smoke.out var/empire/server.log var/empire/journal.log +cmp_logs_xdump