summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rwxr-xr-xtests/create-and-run.sh39
-rwxr-xr-xtests/dist-upgrades.sh55
-rw-r--r--tests/test_common.sh7
3 files changed, 79 insertions, 22 deletions
diff --git a/tests/create-and-run.sh b/tests/create-and-run.sh
index aafd41d..f978052 100755
--- a/tests/create-and-run.sh
+++ b/tests/create-and-run.sh
@@ -1,36 +1,31 @@
#!/bin/sh
-# shellcheck disable=SC2086
-
if test "$#" -ne 2; then
- echo "$(basename $0) takes two positional arguments. architecture and release" 1>&2
+ echo "$(basename "$0") takes two positional arguments: architecture and release" 1>&2
exit 1
fi
+ARCHITECTURE=$1
+RELEASE=$2
+SSH_KEYPATH=ssh_id
+IMAGE=test.ext4
+
+set -eux
-set -ex
+. "$(dirname "$0")/test_common.sh"
cleanup() {
- rm -f ssh_id ssh_id.pub test.ext4
+ rm -f "$SSH_KEYPATH" "$SSH_KEYPATH.pub" "$IMAGE"
}
trap cleanup EXIT INT TERM QUIT
-ssh-keygen -f ssh_id -N ''
-debvm-create -k ssh_id.pub -o test.ext4 -a "$1" -r "$2"
+ssh-keygen -f "$SSH_KEYPATH" -N ''
+debvm-create -k "$SSH_KEYPATH.pub" -o "$IMAGE" -a "$ARCHITECTURE" -r "$RELEASE"
-timeout 240s debvm-run -s 2222 -i test.ext4 &
-timeout=5
-sshopt="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $(if test "$2" = jessie; then echo -o PubkeyAcceptedKeyTypes=+ssh-rsa; fi)"
-ts=$(sleepenh 0 || [ $? -eq 1 ])
-for i in $(seq 30); do
- rv=0
- ssh $sshopt -o ConnectTimeout="$timeout" -i ssh_id -p 2222 root@localhost echo success || rv=$?
- test $rv -eq 0 && break
- ts=$(sleepenh "$ts" "$timeout" || [ $? -eq 1 ]);
- if test "$i" -eq 30; then
- echo "timeout reached" >&2
- exit 1
- fi
-done
-ssh $sshopt -i ssh_id -p 2222 root@localhost poweroff
+SSH_PORT=2222
+timeout 240s debvm-run -s "$SSH_PORT" -i "$IMAGE" &
+set -- localhost
+test "$RELEASE" = jessie && set -- -o PubkeyAcceptedKeyTypes=+ssh-rsa "$@"
+debvm-waitssh -t 150 "$SSH_PORT"
+run_ssh "$@" poweroff
wait
diff --git a/tests/dist-upgrades.sh b/tests/dist-upgrades.sh
new file mode 100755
index 0000000..b90f17b
--- /dev/null
+++ b/tests/dist-upgrades.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+# Copyright 2022 Jochen Sprickerhof <debvm@jochen.sprickerhof.de>
+# SPDX-License-Identifier: MIT
+#
+# apt install e2fsprogs genext2fs mmdebstrap openssh-client qemu-kvm
+
+set -x
+
+. "$(dirname "$0")/test_common.sh"
+
+SSH_KEYPATH=ssh_id
+
+cleanup() {
+ rm -f "$SSH_KEYPATH" "$SSH_KEYPATH.pub" upgrade
+}
+
+trap cleanup EXIT INT TERM QUIT
+
+cat > upgrade << "EOF"
+#!/bin/sh
+
+set -ex
+
+export DEBIAN_FRONTEND=noninteractive
+
+sed -i "s/\([^ ]*\) \([^ ]*\) [^ ]* \(.*\)/\1 \2 $1 \3/" /etc/apt/sources.list
+apt update
+apt dist-upgrade -y
+
+test "$1" = stretch && apt install libnss-resolve
+
+apt autoremove --purge -y
+apt clean
+poweroff
+EOF
+
+chmod +x upgrade
+ssh-keygen -f "$SSH_KEYPATH" -N ''
+
+debvm-create --sshkey="$SSH_KEYPATH.pub" -r jessie --size=3G -- --customize-hook="copy-in upgrade /usr/local/bin"
+
+SSH_PORT=2222
+for RELEASE in stretch buster bullseye bookworm sid; do
+ timeout 15m debvm-run -s "$SSH_PORT" &
+ set -- localhost
+ test "$RELEASE" = stretch && set -- -o PubkeyAcceptedKeyTypes=+ssh-rsa "$@"
+ debvm-waitssh -t 150 "$SSH_PORT"
+ run_ssh "$@" "upgrade $RELEASE"
+ wait
+done
+
+timeout 5m debvm-run -s "$SSH_PORT" &
+debvm-waitssh -t 150 "$SSH_PORT"
+run_ssh localhost poweroff
+wait
diff --git a/tests/test_common.sh b/tests/test_common.sh
new file mode 100644
index 0000000..cba9693
--- /dev/null
+++ b/tests/test_common.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+run_ssh() {
+ test -n "${SSH_KEYPATH:-}" && set -- -i "$SSH_KEYPATH" "$@"
+ test -n "${SSH_PORT:-}" && set -- -p "$SSH_PORT" "$@"
+ ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -l root "$@"
+}