1 export EMPIREHOST=127.0.0.1 LOGNAME=tester
3 if [ -x ./config.status ] && ./config.status --version | grep -q '^Wolfpack Empire'
5 else echo "$0: Must be run in root of build tree" >&2; exit 1
11 empthread=`sed -n 's/empthread *:= *\(.*\)/\1/p' <GNUmakefile`
16 if [ "$warn_empthread" ] && [ "$empthread" != "LWP" ]
18 echo "Warning: test not expected to work with thread package $empthread!" >&2
26 mkdir -p sandbox/etc/empire sandbox/share/empire/builtin sandbox/var/empire
27 touch sandbox/etc/empire/schedule
28 cat >sandbox/etc/empire/econfig <<EOF
29 data "../../var/empire"
30 info "../../../../info.nr"
31 builtin "../../share/empire/builtin"
32 listen_addr "$EMPIREHOST"
37 cp `git ls-files "$srcdir"/src/lib/global | uniq | grep '\.config$'` sandbox/share/empire/builtin
42 # date +%s isn't portable...
43 perl -e 'printf "%s\n", time'
48 local pidfile=sandbox/var/empire/server.pid
52 # Currently expected to work only with thread package LWP,
55 # - Thread scheduling is reliably deterministic only with LWP
56 # - Shell builtin kill appears not to do the job in MinGW
57 # - The Windows server tries to run as service when -d isn't
59 # - The Windows server does not implement -E crash-dump
61 # TODO address these shortcomings.
66 trap 'if [ "$pid" ]; then kill -9 "$pid" 2>/dev/null || true; fi' EXIT
67 src/server/emp_server -e sandbox/etc/empire/econfig -R 1 -s -E crash-dump
69 until pid=`cat $pidfile 2>/dev/null` && [ -n "$pid" ]
71 if [ `now` -gt $timeout ]
73 echo "Timed out waiting for server to create $pidfile" >&2
77 while src/client/empire red herring 2>&1 | grep -q "Connection refused"
79 if [ `now` -gt $timeout ]
81 echo "Timed out waiting for server to accept connections" >&2
92 while kill -0 "$pid" 2>/dev/null
94 if [ `now` -gt $timeout ]
96 echo "Timed out waiting for server to terminate" >&2
107 sed '/^|/d' "$@" | src/client/empire "$c" "$r" >/dev/null
115 r=`echo $c | sed 's/^POGO$/peter/'`
116 feed_input "$c" "$r" "$i"
122 feed_files `git ls-files "$@" | uniq | grep '/[0-9][0-9]-[^/]*$'`
127 src/util/files -e sandbox/etc/empire/econfig -f >/dev/null
132 src/util/empdump -e sandbox/etc/empire/econfig -i "$xd"
136 if [ -z "$xd" ] || [ "$#" -ne 0 ]
138 cp -r sandbox/var/empire/tel sandbox/var/empire/empty.tel
141 then feed_input POGO peter
144 echo 'edit c * ?tgms>0 t 0' | feed_input POGO peter
146 mv sandbox/var/empire/tel sandbox/var/empire/setup.tel
147 mv sandbox/var/empire/empty.tel sandbox/var/empire/tel
148 mv sandbox/var/empire/news sandbox/var/empire/setup.news
149 >sandbox/var/empire/news
150 mv sandbox/var/empire/lostitems sandbox/var/empire/setup.lostitems
151 >sandbox/var/empire/lostitems
152 mv sandbox/var/empire/journal.log sandbox/var/empire/setup.journal.log
153 mv sandbox/var/empire/server.log sandbox/var/empire/setup.server.log
161 src/util/empdump -e sandbox/etc/empire/econfig -x >sandbox/final.xdump
166 local opt exp act nrm msg ret=0
170 */journal.log) opt=-j ;;
171 */server.log) opt=-s ;;
174 exp="$srcdir/tests/$test/${i##*/}"
176 nrm="sandbox/normalized-${i##*/}"
177 perl "$srcdir"/tests/normalize.pl $opt "$act" >"$nrm"
178 if msg=`diff -q "$exp" "$nrm"`
181 elif [ "$EMPIRE_CHECK_ACCEPT" ]