First step to add testing of the server to the nightlybuild.

For now, just some simple checks are added.
This commit is contained in:
Marc Olzheim 2004-06-16 16:06:17 +00:00
parent 7db0d77710
commit 3629f0fe1e
2 changed files with 142 additions and 8 deletions

View file

@ -11,3 +11,25 @@ err() {
warn() {
echo "WARNING: $@" >&2
}
trykill() {
[ -n "$1" ] || { warn "INTERNAL ERROR: trykill: no argument ?" ; return 2 ; }
kill -TERM "$1" || { warn "Could not kill pid '${1}'" ; return 1 ; }
sleep 1
/bin/kill -KILL "$1" 2>/dev/null && { warn "Process ${1} would not die" ; }
sleep 1
/bin/kill -KILL "$1" 2>/dev/null && { warn "Process ${1} would not die after -KILL" ; return 1 ; }
return 0
}
runfeed() {
[ -n "$1" ] || { warn "INTERNAL ERROR: No coun/repr given ?" ; return 2 ; }
REP="$2"
[ -n "$REP" ] || REP="$1"
{
cat
echo "quit"
} | ./emp_client "$1" "$REP" || { warn "emp_client not ok ?" ; return 1 ; }
return 0
}

View file

@ -89,6 +89,20 @@ done
echo "Done (CVS)."
echo ""
echo "Applying global patches from patches/All:"
for i in "${SCRIPTDIR}/patches/All"/*.patch
do
[ -r "${i}" ] || continue
if patch -Np0 < "${i}" >/dev/null
then
echo "${i}: OK"
else
echo "========== ${i}: NOT OK! ${?} =========="
fi
done
echo "Done (patch All)."
echo ""
# Run local patches ${LOCALPATCHDIR}/*.patch
case "${LOCALPATCHDIR}"
in
@ -101,7 +115,7 @@ esac
if [ -n "${LOCALPATCHDIR}" -a -d "${LOCALPATCHDIR}/." ]
then
echo "Applying local patches from ${LOCALPATCHDIR}:"
echo "Applying system specific patches from ${LOCALPATCHDIR}:"
for i in "${LOCALPATCHDIR}"/*.patch
do
[ -r "${i}" ] || continue
@ -112,7 +126,7 @@ then
echo "========== ${i}: NOT OK! ${?} =========="
fi
done
echo "Done (patch)."
echo "Done (patch specific)."
echo ""
fi
@ -123,6 +137,7 @@ echo "Preparing build.conf"
sed -e "s,^USERNAME = .*$,USERNAME = ${EMPLOGIN}," \
-e "s,^HOSTNAME = .*$,HOSTNAME = localhost," \
-e "s,^IPADDR = .*$,IPADDR = 127.0.0.1," \
-e "s,^PORTNUM = .*$,PORTNUM = ${EMPPORT}," \
-e "s,^EMPDIR = .*$,EMPDIR = ${BOXDIR}/${WORKDIR}/emp4," \
< build.conf > build.conf.new && \
mv build.conf.new build.conf || \
@ -140,27 +155,124 @@ echo ""
echo "Building server"
if make "${EMPTARGET}" >/dev/null
then
warn "make did not return 0."
warn "make did not return 0"
fi
echo "Done (make)."
echo ""
# Try to run startup utilities
if [ -d ../emp4 -a -d ../emp4/bin -a -d ../emp4/data ]
then
for onetime in 1
do
if [ -d ../emp4 -a -d ../emp4/bin -a -d ../emp4/data ]
then
echo "Directory structure is ok"
else
warn "Directory structure is NOT ok"
break
fi
cd ../emp4/bin || err "Could not cd to ../emp4/bin"
echo "Determining type of files in bindir"
file *
echo "Done (file *)."
echo ""
echo "Running files and fairland"
echo y | ./files || warn "Error running files"
./fairland 10 30 >/dev/null || warn "Error running fairland"
./fairland -R 0 10 30 >/dev/null || { warn "Error running fairland" ; break ; }
[ -s "newcap_script" ] || { warn "fairland did not produce newcap_script" ; break ; }
echo "Done (files & fairland)."
echo ""
fi
# Clean sandbox
echo "Starting server with -d in the background"
./emp_server -d &
PID="$!"
sleep 1
kill -0 "${PID}" || { warn "emp_server not running ?" ; break ; }
echo "Done (emp_server)."
echo ""
echo "Running newcap_script through emp_client"
runfeed POGO peter < newcap_script >/dev/null 2>&1 ||
{
warn "Could not run newcap_script"
echo "Stopping server"
trykill $PID
break
}
echo "Done (newcap_script / emp_client)."
echo ""
# After a platform independent PRNG is used, we can really do some
# useful testing here...
echo "TODO: Replace this with a real test script as soon as"
echo "a platform independent PRNG is used in fairland."
echo ""
echo "Just do some rudimentary testing for now."
echo ""
echo "Preparing to ensure repeatable results"
runfeed POGO peter << EOF
disable
give uw * ?uw>0 5
EOF
echo "Done (preparing)."
echo ""
for PLAYER in 1 2 3 4 5 6 7 8 9 10
do
echo "explore for player ${PLAYER}"
runfeed $PLAYER << EOF >/dev/null 2>&1
break
expl c 0,0 10 uh
mov f 0,0 5 uh
desi 1,-1 +
cen *
EOF
echo "Done (explore)."
echo ""
done
echo "Run an update"
runfeed POGO peter << EOF
power new
cen * ?own#0
enable
force 1
disable
EOF
echo "Done (force)."
echo ""
sleep 10
echo "Check player 1"
runfeed 1 << EOF
cen *
read n
EOF
echo "Done (check)."
echo ""
echo "Check whether the update did anything"
runfeed POGO peter << EOF
cen * ?own#0
read
n
EOF
echo "Done (check update)."
echo ""
echo "Done (Rudimentary tests)."
echo ""
echo "Stopping server"
trykill "${PID}"
echo "Done (kill)."
echo ""
done
Clean sandbox
echo "Cleaning sandbox"
cd "${BOXDIR}" || err "Could not cd back to sanbox root !"
rm -r "${WORKDIR}" || warn "Directory ${WORKDIR} could not be cleanly removed !"