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 testroot="$(mktemp -d -t kamid-regress.XXXXXXXXXX)"
43 cp -R regress/root/ "$testroot"
45 cat > regress.conf <<EOF
46 pki localhost cert "$PWD/kamid.pem"
47 pki localhost key "$PWD/kamid.key"
49 table users { "$kamid_hash" => "flan" }
50 table virt { "flan" => "$USER" }
51 table data { "flan" => "$testroot" }
53 listen on localhost port 1337 tls pki localhost \
54 auth <users> \
55 virtual <virt> \
56 userdata <data>
57 EOF
59 logfile="kamid-regress-$(date +%Y-%m-%d-%H-%M).log"
61 echo "logging on $logfile"
62 ${DOAS} ./kamid -d -vvv -f regress.conf > "$logfile" 2>&1 &
64 export REGRESS_CERT="$PWD/client.pem"
65 export REGRESS_KEY="$PWD/client.key"
66 export REGRESS_HOSTNAME=localhost
67 export REGRESS_PORT=1337
68 export REGRESS_ROOT="$testroot"
70 ret=0
72 set +e
73 cd regress/lisp/9p-test/ && \
74 ${SBCL} --noinform \
75 --disable-debugger \
76 --eval "(require 'asdf)" \
77 --eval "(push \"$(pwd)/\" asdf:*central-registry*)" \
78 --eval "(asdf:make \"9p-test\")" \
79 --eval "(all-tests:run-all-tests)"
81 ret=$?
82 if [ $ret -ne 0 ]; then
83 echo
84 echo "Test failed, leaving root at $testroot"
85 else
86 rm -rf "$testroot"
87 fi
89 ${DOAS} pkill kamid
91 exit $ret