summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorHelmut Grohne <helmut@subdivi.de>2022-12-31 07:34:10 +0100
committerHelmut Grohne <helmut@subdivi.de>2022-12-31 07:37:06 +0100
commit45a8428a30c2aebeb5163913c8167b318ff65c81 (patch)
tree96c5acba0384e030908f35f400baa69dc562f961 /tests
parentb7af04e9262142e953e487e75d91b610f1001ab4 (diff)
downloaddebvm-45a8428a30c2aebeb5163913c8167b318ff65c81.tar.gz
tests: rework common code
Turn try-ssh.sh script into a shell function library.
Diffstat (limited to 'tests')
-rwxr-xr-xtests/create-and-run.sh21
-rwxr-xr-xtests/dist-upgrades.sh22
-rw-r--r--tests/test_common.sh18
-rwxr-xr-xtests/try-ssh.sh22
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