diff options
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/create-and-run.sh | 21 | ||||
-rwxr-xr-x | tests/dist-upgrades.sh | 22 | ||||
-rw-r--r-- | tests/test_common.sh | 18 | ||||
-rwxr-xr-x | tests/try-ssh.sh | 22 |
4 files changed, 46 insertions, 37 deletions
diff --git a/tests/create-and-run.sh b/tests/create-and-run.sh index 6e8e075..c92ce1f 100755 --- a/tests/create-and-run.sh +++ b/tests/create-and-run.sh @@ -4,8 +4,12 @@ if test "$#" -ne 2; then echo "$(basename "$0") takes two positional arguments. architecture and release" 1>&2 exit 1 fi +ARCHITECTURE=$1 +RELEASE=$2 -set -ex +set -eux + +. "$(dirname "$0")/test_common.sh" cleanup() { rm -f ssh_id ssh_id.pub test.ext4 @@ -13,11 +17,14 @@ cleanup() { 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_KEYPATH=ssh_id +ssh-keygen -f "$SSH_KEYPATH" -N '' +debvm-create -k "$SSH_KEYPATH.pub" -o test.ext4 -a "$ARCHITECTURE" -r "$RELEASE" -timeout 240s debvm-run -s 2222 -i test.ext4 & -SSHOPT="-o ConnectTimeout=5 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" -test "$2" = jessie && SSHOPT="${SSHOPT} -o PubkeyAcceptedKeyTypes=+ssh-rsa" -tests/try-ssh.sh "$SSHOPT -i ssh_id -p 2222 root@localhost" poweroff +SSH_PORT=2222 +timeout 240s debvm-run -s "$SSH_PORT" -i test.ext4 & +set -- localhost +test "$RELEASE" = jessie && set -- -o PubkeyAcceptedKeyTypes=+ssh-rsa "$@" +wait_ssh "$@" +run_ssh "$@" poweroff wait diff --git a/tests/dist-upgrades.sh b/tests/dist-upgrades.sh index e531f1c..b4d61dd 100755 --- a/tests/dist-upgrades.sh +++ b/tests/dist-upgrades.sh @@ -6,6 +6,8 @@ set -x +. "$(dirname "$0")/test_common.sh" + cleanup() { rm -f ssh_id ssh_id.pub upgrade } @@ -31,18 +33,22 @@ poweroff EOF chmod +x upgrade -ssh-keygen -f ssh_id -N '' +SSH_KEYPATH=ssh_id +ssh-keygen -f "$SSH_KEYPATH" -N '' -debvm-create -k ssh_id.pub -r jessie -z 3 -- --customize-hook="copy-in upgrade /usr/local/bin" +debvm-create -k "$SSH_KEYPATH.pub" -r jessie -z 3 -- --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 2222 & - SSHOPT="-o ConnectTimeout=5 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" - test "$RELEASE" = stretch && SSHOPT="${SSHOPT} -o PubkeyAcceptedKeyTypes=+ssh-rsa" - tests/try-ssh.sh "$SSHOPT -i ssh_id -p 2222 root@localhost" "upgrade $RELEASE" + timeout 15m debvm-run -s "$SSH_PORT" & + set -- localhost + test "$RELEASE" = stretch && set -- -o PubkeyAcceptedKeyTypes=+ssh-rsa "$@" + wait_ssh "$@" + run_ssh "$@" "upgrade $RELEASE" wait done -timeout 5m debvm-run -s 2222 & -tests/try-ssh.sh "-o ConnectTimeout=5 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ssh_id -p 2222 root@localhost" poweroff +timeout 5m debvm-run -s "$SSH_PORT" & +wait_ssh localhost +run_ssh localhost poweroff wait diff --git a/tests/test_common.sh b/tests/test_common.sh new file mode 100644 index 0000000..f42a26a --- /dev/null +++ b/tests/test_common.sh @@ -0,0 +1,18 @@ +#!/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 "$@" +} + +wait_ssh() { + wait_ssh_timeout=5 + wait_ssh_ts=$(sleepenh 0 || [ $? -eq 1 ]) + for _ in $(seq 30); do + run_ssh -o ConnectTimeout="$wait_ssh_timeout" "$@" echo success && return 0 + wait_ssh_ts=$(sleepenh "$wait_ssh_ts" "$wait_ssh_timeout" || [ $? -eq 1 ]) + done + echo "timeout reached" >&2 + return 1 +} diff --git a/tests/try-ssh.sh b/tests/try-ssh.sh deleted file mode 100755 index 109299b..0000000 --- a/tests/try-ssh.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -# shellcheck disable=SC2086 - -if test "$#" -ne 2; then - echo "$(basename "$0") takes two positional arguments. options/host and command" 1>&2 - exit 1 -fi - -timeout=5 -ts=$(sleepenh 0 || [ $? -eq 1 ]) -for i in $(seq 30); do - rv=0 - ssh $1 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 $1 $2 |