tests: Use a loop to wait for VM and sshd to start

Related: rhbz#1733975
This commit is contained in:
Brian C. Lane 2019-07-23 09:42:41 -07:00 committed by Alexander Todorov
parent 1a08cbf374
commit 3b0bb5718c
3 changed files with 26 additions and 12 deletions

View File

@ -16,6 +16,28 @@ if [ "$COMPOSER_TEST_FAIL_FAST" == "1" ]; then
}
fi
export QEMU_BIN="/usr/libexec/qemu-kvm"
export QEMU="$QEMU_BIN -machine accel=kvm:tcg"
export SSH_PORT=2222
boot_image() {
QEMU_BOOT=$1
TIMEOUT=$2
rlRun -t -c "$QEMU -m 2048 $QEMU_BOOT -nographic -monitor none \
-net user,id=nic0,hostfwd=tcp::$SSH_PORT-:22 -net nic &"
# wait for ssh to become ready (yes, http is the wrong protocol, but it returns the header)
tries=0
until curl -sS -m 15 "http://localhost:$SSH_PORT/" | grep 'OpenSSH'; do
tries=$((tries + 1))
if [ $tries -gt $TIMEOUT ]; then
exit 1
fi
sleep 1
echo "DEBUG: Waiting for ssh become ready before testing ..."
done;
}
# a generic helper function unifying the specific checks executed on a running
# image instance
verify_image() {

View File

@ -13,7 +13,6 @@ set -e
. $(dirname $0)/lib/lib.sh
CLI="${CLI:-./src/bin/composer-cli}"
QEMU="/usr/libexec/qemu-kvm"
rlJournalStart
rlPhaseStartSetup
@ -46,16 +45,12 @@ rlJournalStart
rlPhaseEnd
rlPhaseStartTest "Start VM instance"
rlRun -t -c "$QEMU -m 2048 -boot d -cdrom $IMAGE -nographic -monitor none \
-net user,id=nic0,hostfwd=tcp::2222-:22 -net nic &"
# 60 seconds timeout at boot menu screen
# then media check + boot ~ 30 seconds
sleep 120
boot_image "-boot d -cdrom $IMAGE" 120
rlPhaseEnd
rlPhaseStartTest "Verify VM instance"
# run generic tests to verify the instance
ROOT_ACCOUNT_LOCKED=0 verify_image root localhost "-p 2222"
ROOT_ACCOUNT_LOCKED=0 verify_image liveuser localhost "-p $SSH_PORT"
rlPhaseEnd
rlPhaseStartCleanup

View File

@ -13,7 +13,6 @@ set -e
. $(dirname $0)/lib/lib.sh
CLI="${CLI:-./src/bin/composer-cli}"
QEMU="/usr/libexec/qemu-kvm"
rlJournalStart
rlPhaseStartSetup
@ -74,14 +73,12 @@ __EOF__
rlPhaseEnd
rlPhaseStartTest "Start VM instance"
rlRun -t -c "$QEMU -m 2048 -boot c -hda $IMAGE -nographic -monitor none \
-net user,id=nic0,hostfwd=tcp::2222-:22 -net nic &"
sleep 60
boot_image "-boot c -hda $IMAGE" 60
rlPhaseEnd
rlPhaseStartTest "Verify VM instance"
# run generic tests to verify the instance
verify_image root localhost "-i $SSH_KEY_DIR/id_rsa -p 2222"
verify_image root localhost "-i $SSH_KEY_DIR/id_rsa -p $SSH_PORT"
rlPhaseEnd
rlPhaseStartCleanup