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.
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}
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
17 fb1a36c0 2022-01-09 op # gencerts name
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" \
26 fb1a36c0 2022-01-09 op -subj "/CN=$1"
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' | \
37 fb1a36c0 2022-01-09 op if [ ! -f client.pem -o ! -f client.key ]; then
38 fb1a36c0 2022-01-09 op gencerts client
41 fb1a36c0 2022-01-09 op if [ ! -f kamid.pem -o ! -f kamid.key ]; then
42 fb1a36c0 2022-01-09 op gencerts kamid
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"
49 fb1a36c0 2022-01-09 op cp -R ../root/ "$tmpdir"
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"
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" }
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>
65 fb1a36c0 2022-01-09 op logfile="$tmpdir/$(date +%Y-%m-%d-%H-%M).log"
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"
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"
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 &
86 fb1a36c0 2022-01-09 op cd 9p-test/ && \
87 fb1a36c0 2022-01-09 op ${SBCL} --noinform \
88 fb1a36c0 2022-01-09 op --eval "(require 'asdf)" \
89 fb1a36c0 2022-01-09 op --eval "(push \"$(pwd)/\" asdf:*central-registry*)" \
90 fb1a36c0 2022-01-09 op --eval "(asdf:make \"9p-test\")" \
91 fb1a36c0 2022-01-09 op --eval "(all-tests:run-all-tests)"
94 fb1a36c0 2022-01-09 op if [ $ret -ne 0 ]; then
96 fb1a36c0 2022-01-09 op echo "Test failed, leaving root at $testroot"
99 fb1a36c0 2022-01-09 op rm -rf "$testroot"
102 fb1a36c0 2022-01-09 op ${SUDO} pkill kamid