lorax/tests/cli/test_compose_tar.sh
Lars Karlitski 42c7c0691c Monkey-patch beakerlib to fail on first assert
Beakerlib upstream can't do this yet, but might at some point:

https://github.com/beakerlib/beakerlib/issues/42

This is only enabled in combination with the `--sit` option of the
`test/check-*` scripts. It leaves the system in exacly the state it was
in when an assertion failed. Finishing the test run would run cleanup as
well (such as deleting created images). It also takes longer.
2019-06-04 20:12:54 +02:00

75 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
# Note: execute this file from the project root directory
#####
#
# Builds tar images and tests them with Docker and systemd-nspawn
#
#####
set -e
. /usr/share/beakerlib/beakerlib.sh
. $(dirname $0)/lib/lib.sh
CLI="${CLI:-./src/bin/composer-cli}"
rlJournalStart
rlPhaseStartTest "compose start"
rlAssertEquals "SELinux operates in enforcing mode" "$(getenforce)" "Enforcing"
UUID=`$CLI compose start example-http-server tar`
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\|FAILED'; do
sleep 10
rlLogInfo "Waiting for compose to finish ..."
done;
else
rlFail "Compose UUID is empty!"
fi
# Running a compose can lead to a different selinux policy in the
# kernel, which may break docker. Reload the policy from the host and
# restart docker as a workaround.
# See https://bugzilla.redhat.com/show_bug.cgi?id=1711813
semodule -R
systemctl restart docker
rlRun -t -c "$CLI compose image $UUID"
IMAGE="$UUID-root.tar.xz"
rlPhaseEnd
rlPhaseStartTest "Verify tar image with Docker"
rlRun -t -c "docker import $IMAGE composer/$UUID:latest"
# verify we can run a container with this image
rlRun -t -c "docker run --rm --entrypoint /usr/bin/cat composer/$UUID /etc/redhat-release"
rlPhaseEnd
rlPhaseStartTest "Verify tar image with systemd-nspawn"
if [ -f /usr/bin/systemd-nspawn ]; then
NSPAWN_DIR=`mktemp -d /var/tmp/nspawn.XXXX`
rlRun -t -c "tar -xJf $IMAGE -C $NSPAWN_DIR"
# verify we can run a container with this image
rlRun -t -c "systemd-nspawn -D $NSPAWN_DIR cat /etc/redhat-release"
else
rlLogInfo "systemd-nspawn not found!"
fi
rlPhaseEnd
rlPhaseStartCleanup
rlRun -t -c "rm -rf $IMAGE $NSPAWN_DIR"
rlRun -t -c "$CLI compose delete $UUID"
rlRun -t -c "docker rmi composer/$UUID"
rlPhaseEnd
rlJournalEnd
rlJournalPrintText