diff options
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/create-and-run.sh | 39 | ||||
-rwxr-xr-x | tests/dist-upgrades.sh | 55 | ||||
-rw-r--r-- | tests/test_common.sh | 7 |
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 "$@" +} |