2019-02-21 14:34:37 +00:00
|
|
|
#!/bin/bash
|
|
|
|
# Note: execute this file from the project root directory
|
|
|
|
|
|
|
|
#####
|
|
|
|
#
|
|
|
|
# Builds qcow2 images and tests them with QEMU-KVM
|
|
|
|
#
|
|
|
|
#####
|
|
|
|
|
2019-06-02 13:20:42 +00:00
|
|
|
set -e
|
|
|
|
|
2019-02-21 14:34:37 +00:00
|
|
|
. /usr/share/beakerlib/beakerlib.sh
|
2019-05-21 13:39:33 +00:00
|
|
|
. $(dirname $0)/lib/lib.sh
|
2019-02-21 14:34:37 +00:00
|
|
|
|
2019-03-08 10:29:11 +00:00
|
|
|
CLI="${CLI:-./src/bin/composer-cli}"
|
2019-05-24 11:06:44 +00:00
|
|
|
QEMU_BIN="/usr/bin/qemu-system-$(uname -m)"
|
|
|
|
QEMU="$QEMU_BIN -machine accel=kvm:tcg"
|
2019-02-21 14:34:37 +00:00
|
|
|
|
|
|
|
rlJournalStart
|
2019-05-24 11:06:44 +00:00
|
|
|
rlPhaseStartSetup
|
|
|
|
rlAssertExists $QEMU_BIN
|
|
|
|
rlPhaseEnd
|
|
|
|
|
2019-02-21 14:34:37 +00:00
|
|
|
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"
|
|
|
|
|
2019-04-11 06:02:42 +00:00
|
|
|
[[packages]]
|
2019-02-21 14:34:37 +00:00
|
|
|
name = "httpd"
|
|
|
|
version = "*"
|
|
|
|
|
|
|
|
[[packages]]
|
|
|
|
name = "openssh-server"
|
|
|
|
version = "*"
|
|
|
|
|
|
|
|
[[customizations.user]]
|
|
|
|
name = "root"
|
|
|
|
key = "$PUB_KEY"
|
2019-04-08 09:00:41 +00:00
|
|
|
|
|
|
|
[customizations.kernel]
|
|
|
|
append = "custom_cmdline_arg"
|
2019-02-21 14:34:37 +00:00
|
|
|
__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
|
2019-05-20 17:13:16 +00:00
|
|
|
until $CLI compose info $UUID | grep 'FINISHED\|FAILED'; do
|
2019-02-21 14:34:37 +00:00
|
|
|
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"
|
2019-05-24 23:44:37 +00:00
|
|
|
rlRun -t -c "$QEMU -m 2048 -boot c -hda $IMAGE -nographic -monitor none \
|
2019-02-21 14:34:37 +00:00
|
|
|
-net user,id=nic0,hostfwd=tcp::2222-:22 -net nic &"
|
|
|
|
sleep 60
|
|
|
|
rlPhaseEnd
|
|
|
|
|
|
|
|
rlPhaseStartTest "Verify VM instance"
|
2019-04-17 14:12:12 +00:00
|
|
|
# run generic tests to verify the instance
|
|
|
|
verify_image root localhost "-i $SSH_KEY_DIR/id_rsa -p 2222"
|
2019-02-21 14:34:37 +00:00
|
|
|
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
|