summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHelmut Grohne <helmutg@debian.org>2022-12-31 09:42:30 +0000
committerHelmut Grohne <helmutg@debian.org>2022-12-31 09:42:30 +0000
commit029a4c90e783517b7023f32b93fea7f698f81ce8 (patch)
treef72796e76465bc41ccee67b3164f2f9de0307ff1
parent947506522176e2b966fa1dc6389fa366322dec12 (diff)
parent2f6269b1b7bea50797594113797416862552aae5 (diff)
downloaddebvm-029a4c90e783517b7023f32b93fea7f698f81ce8.tar.gz
Merge branch 'dist-ugrade' into 'main'
Dist ugrade Closes #3 See merge request helmutg/debvm!8
-rw-r--r--.gitlab-ci.yml4
-rwxr-xr-xtests/create-and-run.sh39
-rwxr-xr-xtests/dist-upgrades.sh55
-rw-r--r--tests/test_common.sh18
4 files changed, 92 insertions, 24 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6427330..d2a1bbf 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -5,14 +5,14 @@ shellcheck:
- apt-get update
- apt-get dist-upgrade --yes
- apt-get --no-install-recommends --yes install shellcheck
- - shellcheck debvm-*
+ - shellcheck -P tests debvm-* tests/*.sh
codespell:
script:
- apt-get update
- apt-get dist-upgrade --yes
- apt-get --no-install-recommends --yes install codespell
- - codespell debvm-*
+ - codespell debvm-* tests/*.sh
release_test:
parallel:
diff --git a/tests/create-and-run.sh b/tests/create-and-run.sh
index aafd41d..540e6c4 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 "$@"
+wait_ssh "$@"
+run_ssh "$@" poweroff
wait
diff --git a/tests/dist-upgrades.sh b/tests/dist-upgrades.sh
new file mode 100755
index 0000000..85c9f4a
--- /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 -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 "$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 "$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
+}