mirror of
https://git.code.sf.net/p/linux-ima/ima-evm-utils
synced 2025-04-27 06:12:32 +02:00
Add support for creating a new testing environment in functions.sh
Add the new functions _run_env(), _exit_env(), _init_env() and _cleanup_env() to run the tests inside a new environment specified with the TST_ENV environment variable. A typical structure of a script with tests is: trap '_report_exit_and_cleanup _cleanup_env cleanup' \ SIGINT SIGTERM SIGSEGV EXIT cleanup() { <test cleanup> } <tests implementations> _run_env "$TST_KERNEL" "$PWD/$(basename "$0")" "env_var1=$env_var1 ..." _exit_env "$TST_KERNEL" _init_env <tests init> <tests call> If TST_ENV is not set or empty, don't create a new testing environment and perform the cleanup in the current environment. Don't create a new testing environment also if the script is already executed in a new environment, to avoid loops. Instead, for cleanup, do it in the new environment and skip it in the host environment (if the cleanup function is passed to _cleanup_env()). Signal to the creator of the environment failures of tests or of the script itself run in the new environment (if the exit code is 1 ($FAIL) or 99 ($HARDFAIL)) with an unclean shutdown of the system. Add haveged and systemd as dependencies for the tests in ci/fedora.sh, respectively for initializing the random number generator and for shutting down the system in the new environment. Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com> Reviewed-by: Stefan Berger <stefanb@linux.ibm.com> Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
This commit is contained in:
parent
03b5d159ca
commit
f106a9022d
@ -45,7 +45,9 @@ yum -y install \
|
||||
vim-common \
|
||||
wget \
|
||||
which \
|
||||
zstd
|
||||
zstd \
|
||||
haveged \
|
||||
systemd
|
||||
|
||||
yum -y install docbook5-style-xsl || true
|
||||
yum -y install swtpm || true
|
||||
|
@ -271,6 +271,25 @@ _report_exit_and_cleanup() {
|
||||
[ $testsfail -gt 0 ] && echo -n "$RED" || echo -n "$NORM"
|
||||
echo " FAIL: $testsfail"
|
||||
echo "$NORM"
|
||||
# Signal failure to the testing environment creator with an unclean shutdown.
|
||||
if [ -n "$TST_ENV" ] && [ $$ -eq 1 ]; then
|
||||
if [ -z "$(command -v poweroff)" ]; then
|
||||
echo "Warning: cannot properly shutdown system"
|
||||
fi
|
||||
|
||||
# If no test was executed and the script was successful,
|
||||
# do a clean shutdown.
|
||||
if [ $testsfail -eq 0 ] && [ $testspass -eq 0 ] && [ $testsskip -eq 0 ] &&
|
||||
[ $exit_code -ne "$FAIL" ] && [ $exit_code -ne "$HARDFAIL" ]; then
|
||||
poweroff -f
|
||||
fi
|
||||
|
||||
# If tests were executed and no test failed, do a clean shutdown.
|
||||
if { [ $testspass -gt 0 ] || [ $testsskip -gt 0 ]; } &&
|
||||
[ $testsfail -eq 0 ]; then
|
||||
poweroff -f
|
||||
fi
|
||||
fi
|
||||
if [ $testsfail -gt 0 ]; then
|
||||
exit "$FAIL"
|
||||
elif [ $testspass -gt 0 ]; then
|
||||
@ -319,3 +338,75 @@ _softhsm_teardown() {
|
||||
unset SOFTHSM_SETUP_CONFIGDIR SOFTHSM2_CONF PKCS11_KEYURI \
|
||||
EVMCTL_ENGINE OPENSSL_ENGINE OPENSSL_KEYFORM
|
||||
}
|
||||
|
||||
# Syntax: _run_env <kernel> <init> <additional kernel parameters>
|
||||
_run_env() {
|
||||
if [ -z "$TST_ENV" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
if [ $$ -eq 1 ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
if [ "$TST_ENV" = "um" ]; then
|
||||
expect_pass "$1" rootfstype=hostfs rw init="$2" quiet mem=2048M "$3"
|
||||
else
|
||||
echo $RED"Testing environment $TST_ENV not supported"$NORM
|
||||
exit "$FAIL"
|
||||
fi
|
||||
}
|
||||
|
||||
# Syntax: _exit_env <kernel>
|
||||
_exit_env() {
|
||||
if [ -z "$TST_ENV" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
if [ $$ -eq 1 ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
exit "$OK"
|
||||
}
|
||||
|
||||
# Syntax: _init_env
|
||||
_init_env() {
|
||||
if [ -z "$TST_ENV" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
if [ $$ -ne 1 ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
mount -t tmpfs tmpfs /tmp
|
||||
mount -t proc proc /proc
|
||||
mount -t sysfs sysfs /sys
|
||||
mount -t securityfs securityfs /sys/kernel/security
|
||||
|
||||
if [ -n "$(command -v haveged 2> /dev/null)" ]; then
|
||||
$(command -v haveged) -w 1024 &> /dev/null
|
||||
fi
|
||||
|
||||
pushd "$PWD" > /dev/null || exit "$FAIL"
|
||||
}
|
||||
|
||||
# Syntax: _cleanup_env <cleanup function>
|
||||
_cleanup_env() {
|
||||
if [ -z "$TST_ENV" ]; then
|
||||
$1
|
||||
return
|
||||
fi
|
||||
|
||||
if [ $$ -ne 1 ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
$1
|
||||
|
||||
umount /sys/kernel/security
|
||||
umount /sys
|
||||
umount /proc
|
||||
umount /tmp
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user