New test: Build qcow2 compose and test it with QEMU-KVM

(cherry picked from commit b936dfb198)
(cherry picked from commit 3f000b1fe3)
This commit is contained in:
Alexander Todorov 2019-02-21 16:34:37 +02:00 committed by Brian C. Lane
parent 35faa61f7e
commit 21975b44da
2 changed files with 90 additions and 2 deletions

View File

@ -50,9 +50,10 @@ test:
# need `losetup`, which needs Docker to be in privileged mode (--privileged) # need `losetup`, which needs Docker to be in privileged mode (--privileged)
# but even so fails in Travis CI # but even so fails in Travis CI
test_images: test_images:
sudo -E ./tests/test_cli.sh tests/cli/test_compose_ext4-filesystem.sh \ sudo -E ./tests/test_cli.sh tests/cli/test_compose_ext4-filesystem.sh \
tests/cli/test_compose_partitioned-disk.sh \ tests/cli/test_compose_partitioned-disk.sh \
tests/cli/test_compose_tar.sh tests/cli/test_compose_tar.sh \
tests/cli/test_compose_qcow2.sh
test_aws: test_aws:
sudo -E ./tests/test_cli.sh tests/cli/test_build_and_deploy_aws.sh sudo -E ./tests/test_cli.sh tests/cli/test_build_and_deploy_aws.sh

87
tests/cli/test_compose_qcow2.sh Executable file
View File

@ -0,0 +1,87 @@
#!/bin/bash
# Note: execute this file from the project root directory
#####
#
# Builds qcow2 images and tests them with QEMU-KVM
#
#####
. /usr/share/beakerlib/beakerlib.sh
CLI="./src/bin/composer-cli"
QEMU="/usr/bin/qemu-kvm"
rlJournalStart
rlPhaseStartSetup
rlAssertExists $QEMU
rlPhaseEnd
rlPhaseStartTest "compose start"
rlAssertEquals "SELinux operates in enforcing mode" "$(getenforce)" "Enforcing"
TMP_DIR=`mktemp -d /tmp/composer.XXXXX`
SSH_KEY_DIR=`mktemp -d /tmp/composer-ssh-keys.XXXXXX`
rlRun -t -c "ssh-keygen -t rsa -N '' -f $SSH_KEY_DIR/id_rsa"
PUB_KEY=`cat $SSH_KEY_DIR/id_rsa.pub`
cat > $TMP_DIR/with-ssh.toml << __EOF__
name = "with-ssh"
description = "HTTP image with SSH"
version = "0.0.1"
[[modules]]
name = "httpd"
version = "*"
[[packages]]
name = "openssh-server"
version = "*"
[[customizations.user]]
name = "root"
key = "$PUB_KEY"
__EOF__
rlRun -t -c "$CLI blueprints push $TMP_DIR/with-ssh.toml"
UUID=`$CLI compose start with-ssh qcow2`
rlAssertEquals "exit code should be zero" $? 0
UUID=`echo $UUID | cut -f 2 -d' '`
rlPhaseEnd
rlPhaseStartTest "compose finished"
if [ -n "$UUID" ]; then
until $CLI compose info $UUID | grep FINISHED; do
sleep 20
rlLogInfo "Waiting for compose to finish ..."
done;
else
rlFail "Compose UUID is empty!"
fi
rlRun -t -c "$CLI compose image $UUID"
IMAGE="$UUID-disk.qcow2"
rlPhaseEnd
rlPhaseStartTest "Start VM instance"
rlRun -t -c "$QEMU -m 2048 -boot c -hda $IMAGE -nographic \
-net user,id=nic0,hostfwd=tcp::2222-:22 -net nic &"
sleep 60
rlPhaseEnd
rlPhaseStartTest "Verify VM instance"
# verify we can login into that instance
rlRun -t -c "ssh -oStrictHostKeyChecking=no -i $SSH_KEY_DIR/id_rsa -p 2222 root@localhost 'cat /etc/redhat-release'"
rlPhaseEnd
rlPhaseStartCleanup
rlRun -t -c "killall -9 qemu-system-$(uname -m)"
rlRun -t -c "$CLI compose delete $UUID"
rlRun -t -c "rm -rf $IMAGE $TMP_DIR $SSH_KEY_DIR"
rlPhaseEnd
rlJournalEnd
rlJournalPrintText