Blame


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