Blame


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