]> git.pond.sub.org Git - empserver/blob - tests/smoke-test
Switch PRNG from BSD random() to Mersenne Twister
[empserver] / tests / smoke-test
1 #!/bin/sh -e
2 # Smoke test for Empire
3
4 if [ $# -ne 1 ]
5 then echo "Usage: $0 SRCDIR" >&2; exit 1
6 fi
7
8 srcdir="$1"
9
10 . "$srcdir"/tests/test-common.sh
11
12 #
13 # Currently expected to work only with thread package LWP, because:
14
15 # - Thread scheduling is reliably deterministic only with LWP
16 # - Shell builtin kill appears not to do the job in MinGW
17 # - The Windows server tries to run as service when -d isn't
18 #   specified
19 #
20 # TODO address these shortcomings.
21 #
22 if [ `sed -n 's/empthread *:= *\(.*\)/\1/p' <GNUmakefile` != LWP ]
23 then echo "Warning: smoke test not expected to work with this thread package!" >&2
24 fi
25
26 create_sandbox
27
28 exec 3>sandbox/smoke.out
29
30 # Create world and start server
31 src/util/files -e sandbox/etc/empire/econfig -f >&3
32 src/util/empdump -e sandbox/etc/empire/econfig -i "$srcdir"/tests/smoke/fairland.xdump
33 start_server
34 src/client/empire POGO peter <"$srcdir"/tests/smoke/newcap_script >/dev/null
35
36 # Feed player input
37 need_update=
38 for i in "$srcdir"/tests/smoke/[0-9]*
39 do
40     t="${i##*/}"
41     if [ "$need_update" ]
42     then
43         echo "Update Turn $t starting" >&3
44         src/client/empire POGO peter <<EOF >&3
45 power new
46 report *
47 cen * ?own#0
48 comm * ?own#0
49 reso * ?own#0
50 force
51 EOF
52         echo "Update Turn $t completed successfully" >&3
53     fi
54     for j in "$i"/*
55     do
56         p="${j##*/}"
57         echo "Player $p Turn $t starting" >&3
58         if [ $p -eq 0 ]
59         then c=POGO r=peter
60         else c="${p#0}"; r="$c"
61         fi
62         src/client/empire "$c" "$r" <$j >&3
63         echo "Player $p Turn $t completed successfully" >&3
64     done
65     need_update=y
66 done
67
68 # Stop server
69 stop_server
70
71 exec 3>&-
72
73 src/util/empdump -e sandbox/etc/empire/econfig -x >sandbox/smoke.xdump
74
75 # Smoke test completed; compare results
76 cmp_out smoke.out var/empire/server.log var/empire/journal.log smoke.xdump