Blob


1 #!/bin/sh
2 #
3 # Run external tests, requires a common lisp interpreter (sbcl by
4 # default) to be available.
6 DOAS=${DOAS:-doas}
7 USER=${USER?:user not set}
8 SBCL=${SBCL:-sbcl}
10 set -e
12 # gencerts name
13 gencerts() {
14 echo "generating keypairs for $1..."
15 openssl req -x509 \
16 -newkey rsa:4096 \
17 -out "$1.pem" \
18 -keyout "$1.key" \
19 -days 365 \
20 -nodes \
21 -subj "/CN=$1"
22 }
24 # h cert
25 h() {
26 printf "SHA256:"
27 openssl x509 -in "$1" -noout -fingerprint -sha256 | \
28 sed -e 's/^.*=//' -e 's/://g' | \
29 tr A-Z a-z
30 }
32 if [ ! -f client.pem -o ! -f client.key ]; then
33 gencerts client
34 fi
36 if [ ! -f kamid.pem -o ! -f kamid.key ]; then
37 gencerts kamid
38 fi
40 kamid_hash="$(h client.pem)"
41 tmpdir="$(mktemp -d -t kamid-regress.XXXXXXXXXX)"
42 testroot="$tmpdir/root"
44 cp -R regress/root/ "$tmpdir"
46 cat > regress.conf <<EOF
47 pki localhost cert "$PWD/kamid.pem"
48 pki localhost key "$PWD/kamid.key"
50 table users { "$kamid_hash" => "flan" }
51 table virt { "flan" => "$USER" }
52 table data { "flan" => "$testroot" }
54 listen on localhost port 1337 tls pki localhost \
55 auth <users> \
56 virtual <virt> \
57 userdata <data>
58 EOF
60 logfile="$tmpdir/$(date +%Y-%m-%d-%H-%M).log"
62 export REGRESS_CERT="$PWD/client.pem"
63 export REGRESS_KEY="$PWD/client.key"
64 export REGRESS_HOSTNAME=localhost
65 export REGRESS_PORT=1337
66 export REGRESS_ROOT="$testroot"
68 echo "REGRESS_CERT: $REGRESS_CERT"
69 echo "REGRESS_KEY: $REGRESS_KEY"
70 echo "REGRESS_HOSTNAME: $REGRESS_HOSTNAME"
71 echo "REGRESS_PORT: $REGRESS_PORT"
72 echo "REGRESS_ROOT: $REGRESS_ROOT"
73 echo
75 echo "logging on $logfile"
76 ${DOAS} ./kamid -d -vvv -f regress.conf > "$logfile" 2>&1 &
78 ret=0
80 set +e
81 cd regress/lisp/9p-test/ && \
82 ${SBCL} --noinform \
83 --disable-debugger \
84 --eval "(require 'asdf)" \
85 --eval "(push \"$(pwd)/\" asdf:*central-registry*)" \
86 --eval "(asdf:make \"9p-test\")" \
87 --eval "(all-tests:run-all-tests)"
89 ret=$?
90 if [ $ret -ne 0 ]; then
91 echo
92 echo "Test failed, leaving root at $testroot"
93 sleep 1
94 else
95 rm -rf "$testroot"
96 fi
98 ${DOAS} pkill kamid
100 exit $ret