lorax/tests/test_cli.sh
Lars Karlitski 8e5140dc8d tests: Set BLUEPRINTS_DIR in all cases
`setup_tests()` expected BLUEPRINTS_DIR to be set, but it wasn't when
running in automated mode (with $CLI set).

Fix this and move share and blueprint dirs to function arguments.

Related: rhbz#1714298
2019-06-12 13:40:57 +03:00

102 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
# Note: execute this file from the project root directory
# setup
rm -rf /var/tmp/beakerlib-*/
function setup_tests {
local share_dir=$1
local blueprints_dir=$2
# explicitly enable sshd for live-iso b/c it is disabled by default
# due to security concerns (no root password required)
sed -i.orig 's/^services.*/services --disabled="network" --enabled="NetworkManager,sshd"/' $share_dir/composer/live-iso.ks
# explicitly enable logging in with empty passwords via ssh, because
# the default sshd setting for PermitEmptyPasswords is 'no'
awk -i inplace "
/%post/ && FLAG != 2 {FLAG=1}
/%end/ && FLAG == 1 {print \"sed -i 's/.*PermitEmptyPasswords.*/PermitEmptyPasswords yes/' /etc/ssh/sshd_config\"; FLAG=2}
{print}" \
$share_dir/composer/live-iso.ks
# append a section with additional option on kernel command line to example-http-server blueprint
# which is used for building of most of the images
cat >> $blueprints_dir/example-http-server.toml << __EOF__
[customizations.kernel]
append = "custom_cmdline_arg"
__EOF__
}
function teardown_tests {
mv $1/composer/live-iso.ks.orig $1/composer/live-iso.ks
}
if [ -z "$CLI" ]; then
export top_srcdir=`pwd`
. ./tests/testenv.sh
BLUEPRINTS_DIR=`mktemp -d '/tmp/composer-blueprints.XXXXX'`
cp ./tests/pylorax/blueprints/*.toml $BLUEPRINTS_DIR
SHARE_DIR=`mktemp -d '/tmp/composer-share.XXXXX'`
cp -R ./share/* $SHARE_DIR
chmod a+rx -R $SHARE_DIR
setup_tests $SHARE_DIR $BLUEPRINTS_DIR
# start the lorax-composer daemon
./src/sbin/lorax-composer --sharedir $SHARE_DIR $BLUEPRINTS_DIR &
else
export PACKAGE="composer-cli"
setup_tests /usr/share/lorax /var/lib/lorax/composer/blueprints
systemctl restart lorax-composer
fi
# wait for the backend to become ready
tries=0
until curl -m 15 --unix-socket /run/weldr/api.socket http://localhost:4000/api/status | grep 'db_supported.*true'; do
tries=$((tries + 1))
if [ $tries -gt 20 ]; then
exit 1
fi
sleep 2
echo "DEBUG: Waiting for backend API to become ready before testing ..."
done;
export BEAKERLIB_JOURNAL=0
export PATH="/usr/local/bin:$PATH"
if [ -z "$*" ]; then
# invoke cli/ tests which can be executed without special preparation
./tests/cli/test_blueprints_sanity.sh
./tests/cli/test_compose_sanity.sh
else
# execute other cli tests which need more adjustments in the calling environment
# or can't be executed inside Travis CI
for TEST in "$@"; do
./$TEST
done
fi
if [ -z "$CLI" ]; then
# stop lorax-composer and remove /run/weldr/api.socket
# only if running against source
pkill -9 lorax-composer
rm -f /run/weldr/api.socket
teardown_tests $SHARE_DIR
else
systemctl stop lorax-composer
teardown_tests /usr/share/lorax
# start lorax-composer again so we can continue with manual or other kinds
# of testing on the same system
systemctl start lorax-composer
fi
# look for failures
grep RESULT_STRING /var/tmp/beakerlib-*/TestResults | grep -v PASS && exit 1
# explicit return code for Makefile
exit 0