From 561302a30aedd84941ee33c4a827dd9c5492e709 Mon Sep 17 00:00:00 2001 From: Alexander Todorov Date: Thu, 21 Feb 2019 16:34:37 +0200 Subject: [PATCH] New test: Build qcow2 compose and test it with QEMU-KVM Related: rhbz#1656105 --- Makefile | 5 +- tests/cli/test_compose_qcow2.sh | 87 +++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+), 2 deletions(-) create mode 100755 tests/cli/test_compose_qcow2.sh diff --git a/Makefile b/Makefile index 1a1e9f52..815d4b7f 100644 --- a/Makefile +++ b/Makefile @@ -49,9 +49,10 @@ test: docs # need `losetup`, which needs Docker to be in privileged mode (--privileged) # but even so fails in Travis CI 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_tar.sh + tests/cli/test_compose_tar.sh \ + tests/cli/test_compose_qcow2.sh test_aws: sudo -E ./tests/test_cli.sh tests/cli/test_build_and_deploy_aws.sh diff --git a/tests/cli/test_compose_qcow2.sh b/tests/cli/test_compose_qcow2.sh new file mode 100755 index 00000000..a119819e --- /dev/null +++ b/tests/cli/test_compose_qcow2.sh @@ -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/libexec/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" + rlRun -t -c "$CLI compose delete $UUID" + rlRun -t -c "rm -rf $IMAGE $TMP_DIR $SSH_KEY_DIR" + rlPhaseEnd + +rlJournalEnd +rlJournalPrintText