lorax/tests/cli/test_compose_tar.sh

64 lines
1.7 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
rlPhaseStartSetup
rlAssertExists /usr/bin/docker
rlPhaseEnd
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"
wait_for_compose $UUID
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