lorax/tests/cli/test_compose_live-iso.sh
Brian C. Lane 5cdd01be36 tests: Split testing the image into a separate script
Nested virt is not reliable enough, especially on other arches, to rely
on for testing the created images. This moves the test code into
test_boot_* scripts to be run from inside the booted images.

It also adds copying the results of the build into
/var/tmp/test-results/, and includes the generated ssh key so that
whatever boots the image can also log in.

The tests/test_image.sh script has been added to handle running the
test_boot_* scripts without any of the extra lorax-composer specific
setup.

Cherry-picked from b8bf258a3c

Related: rhbz#1770193
2019-11-19 09:59:58 -08:00

98 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# Note: execute this file from the project root directory
#####
#
# Builds live-iso image and test it with QEMU-KVM
#
#####
set -e
. /usr/share/beakerlib/beakerlib.sh
. $(dirname $0)/lib/lib.sh
CLI="${CLI:-./src/bin/composer-cli}"
rlJournalStart
rlPhaseStartSetup
OPTIONAL_REPO="/etc/yum.repos.d/rhel7-rel-eng-optional.repo"
if [ ! -f "$OPTIONAL_REPO" ]; then
cat > $OPTIONAL_REPO << __EOF__
[rhel7-rel-eng-optional]
gpgcheck=0
enabled=1
skip_if_unavailable=0
name=rhel7-rel-eng-optional
baseurl=http://download-node-02.eng.bos.redhat.com/rhel-7/rel-eng/latest-RHEL-7/compose/Server-optional/\$basearch/os/
__EOF__
fi
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"
[[packages]]
name = "httpd"
version = "*"
[[packages]]
name = "openssh-server"
version = "*"
[[packages]]
name = "beakerlib"
version = "*"
[customizations.services]
enabled = ["sshd"]
[[customizations.user]]
name = "root"
key = "$PUB_KEY"
[customizations.kernel]
append = "custom_cmdline_arg"
__EOF__
rlRun -t -c "$CLI blueprints push $TMP_DIR/with-ssh.toml"
# NOTE: live-iso.ks explicitly disables sshd but test_cli.sh enables it
UUID=$($CLI compose start with-ssh live-iso)
rlAssertEquals "exit code should be zero" $? 0
UUID=$(echo "$UUID" | cut -f 2 -d' ')
rlPhaseEnd
rlPhaseStartTest "compose finished"
wait_for_compose "$UUID"
# Save the results for boot test
rlAssertExists "/var/lib/lorax/composer/results/$UUID/live.iso"
rlRun -t -c "mkdir -p /var/tmp/test-results/"
rlRun -t -c "cp /var/lib/lorax/composer/results/$UUID/live.iso /var/tmp/test-results/"
# Include the ssh key needed to log into the image
rlRun -t -c "cp $SSH_KEY_DIR/* /var/tmp/test-results"
rlPhaseEnd
rlPhaseStartCleanup
rlRun -t -c "$CLI compose delete $UUID"
rlRun -t -c "rm -rf $OPTIONAL_REPO $TMP_DIR $SSH_KEY_DIR"
rlPhaseEnd
rlJournalEnd
rlJournalPrintText