mirror of
https://github.com/dynup/kpatch
synced 2025-02-16 17:57:02 +00:00
test/integration: Make multiple.test cleanup after itself
If an error occurs while loading a module or one of the tests, multiple.test will exit leaving the working modules loaded. This leaves the system in an unwanted state and causes the test that previously pass to fail (succeeding before being loaded for multiple.test's point of view). Cleanup the loaded modules before exiting due to errors. Also take this opportunity to factorize the test for the different distros. Signed-off-by: Julien Thierry <jthierry@redhat.com>
This commit is contained in:
parent
df5730076f
commit
e59355c2b7
@ -1,65 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPTDIR="$(readlink -f $(dirname $(type -p $0)))"
|
||||
ROOTDIR="$(readlink -f $SCRIPTDIR/../../..)"
|
||||
KPATCH="sudo $ROOTDIR/kpatch/kpatch"
|
||||
|
||||
MODULE_PREFIX="test-"
|
||||
MODULE_POSTFIX=".ko"
|
||||
TEST_POSTFIX="-LOADED.test"
|
||||
|
||||
set -o errexit
|
||||
|
||||
die() {
|
||||
echo "ERROR: $@" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
ko_to_test() {
|
||||
tmp=${1%${MODULE_POSTFIX}}${TEST_POSTFIX}
|
||||
echo ${tmp#${MODULE_PREFIX}}
|
||||
}
|
||||
|
||||
# make sure any modules added here are disjoint
|
||||
declare -a modules
|
||||
declare -a blacklist=(data-new-LOADED.test)
|
||||
|
||||
for file in "${SCRIPTDIR}"/*"${TEST_POSTFIX}"; do
|
||||
name=$(basename ${file})
|
||||
skip=0
|
||||
for bname in "${blacklist[@]}"; do
|
||||
if [ "${bname}" == "${name}" ]; then
|
||||
skip=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ ${skip} -eq 0 ]; then
|
||||
modules+=(${MODULE_PREFIX}${name%${TEST_POSTFIX}}${MODULE_POSTFIX})
|
||||
fi
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog && die "$SCRIPTDIR/$testprog succeeded before loading any modules"
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
$KPATCH load $mod
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog || die "$SCRIPTDIR/$testprog failed after loading modules"
|
||||
done
|
||||
|
||||
for ((idx=${#modules[@]}-1 ; idx>=0 ; idx--)); do
|
||||
mod=${modules[idx]}
|
||||
$KPATCH unload $mod
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog && die "$SCRIPTDIR/$testprog succeeded after unloading modules"
|
||||
done
|
||||
|
||||
exit 0
|
||||
source ${SCRIPTDIR}/../common/multiple.template
|
||||
|
74
test/integration/common/multiple.template
Executable file
74
test/integration/common/multiple.template
Executable file
@ -0,0 +1,74 @@
|
||||
SCRIPTDIR="$(readlink -f $(dirname $(type -p $0)))"
|
||||
ROOTDIR="$(readlink -f $SCRIPTDIR/../../..)"
|
||||
KPATCH="sudo $ROOTDIR/kpatch/kpatch"
|
||||
|
||||
MODULE_PREFIX="test-"
|
||||
MODULE_POSTFIX=".ko"
|
||||
TEST_POSTFIX="-LOADED.test"
|
||||
|
||||
set -o errexit
|
||||
|
||||
declare -a loaded_modules
|
||||
|
||||
cleanup_modules() {
|
||||
for ((idx=${#loaded_modules[@]}-1 ; idx>=0 ; idx--)); do
|
||||
mod=${loaded_modules[idx]}
|
||||
$KPATCH unload $mod
|
||||
done
|
||||
}
|
||||
|
||||
die_clean() {
|
||||
cleanup_modules
|
||||
exit 1
|
||||
}
|
||||
|
||||
die() {
|
||||
echo "ERROR: $@" >&2
|
||||
die_clean
|
||||
}
|
||||
|
||||
ko_to_test() {
|
||||
tmp=${1%${MODULE_POSTFIX}}${TEST_POSTFIX}
|
||||
echo ${tmp#${MODULE_PREFIX}}
|
||||
}
|
||||
|
||||
# make sure any modules added here are disjoint
|
||||
declare -a modules
|
||||
|
||||
for file in "${SCRIPTDIR}"/*"${TEST_POSTFIX}"; do
|
||||
name=$(basename ${file})
|
||||
skip=0
|
||||
for bname in "${blacklist[@]}"; do
|
||||
if [ "${bname}" == "${name}" ]; then
|
||||
skip=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ ${skip} -eq 0 ]; then
|
||||
modules+=(${MODULE_PREFIX}${name%${TEST_POSTFIX}}${MODULE_POSTFIX})
|
||||
fi
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog && die "$SCRIPTDIR/$testprog succeeded before loading any modules"
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
$KPATCH load $mod || die_clean
|
||||
loaded_modules+=($mod)
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog || die "$SCRIPTDIR/$testprog failed after loading modules"
|
||||
done
|
||||
|
||||
cleanup_modules
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog && die "$SCRIPTDIR/$testprog succeeded after unloading modules"
|
||||
done
|
||||
|
||||
exit 0
|
@ -1,64 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPTDIR="$(readlink -f $(dirname $(type -p $0)))"
|
||||
ROOTDIR="$(readlink -f $SCRIPTDIR/../../..)"
|
||||
KPATCH="sudo $ROOTDIR/kpatch/kpatch"
|
||||
|
||||
MODULE_PREFIX="test-"
|
||||
MODULE_POSTFIX=".ko"
|
||||
TEST_POSTFIX="-LOADED.test"
|
||||
|
||||
set -o errexit
|
||||
|
||||
die() {
|
||||
echo "ERROR: $@" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
ko_to_test() {
|
||||
tmp=${1%${MODULE_POSTFIX}}${TEST_POSTFIX}
|
||||
echo ${tmp#${MODULE_PREFIX}}
|
||||
}
|
||||
|
||||
# make sure any modules added here are disjoint
|
||||
declare -a modules
|
||||
declare -a blacklist=(meminfo-cmdline-rebuild-SLOW-LOADED.test)
|
||||
|
||||
for file in "${SCRIPTDIR}"/*"${TEST_POSTFIX}"; do
|
||||
name=$(basename ${file})
|
||||
skip=0
|
||||
for bname in "${blacklist[@]}"; do
|
||||
if [ "${bname}" == "${name}" ]; then
|
||||
skip=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ ${skip} -eq 0 ]; then
|
||||
modules+=(${MODULE_PREFIX}${name%${TEST_POSTFIX}}${MODULE_POSTFIX})
|
||||
fi
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog && die "$SCRIPTDIR/$testprog succeeded before loading any modules"
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
$KPATCH load $mod
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog || die "$SCRIPTDIR/$testprog failed after loading modules"
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
$KPATCH unload $mod
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog && die "$SCRIPTDIR/$testprog succeeded after unloading modules"
|
||||
done
|
||||
|
||||
exit 0
|
||||
source ${SCRIPTDIR}/../common/multiple.template
|
||||
|
@ -1,64 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPTDIR="$(readlink -f $(dirname $(type -p $0)))"
|
||||
ROOTDIR="$(readlink -f $SCRIPTDIR/../../..)"
|
||||
KPATCH="sudo $ROOTDIR/kpatch/kpatch"
|
||||
|
||||
MODULE_PREFIX="test-"
|
||||
MODULE_POSTFIX=".ko"
|
||||
TEST_POSTFIX="-LOADED.test"
|
||||
|
||||
set -o errexit
|
||||
|
||||
die() {
|
||||
echo "ERROR: $@" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
ko_to_test() {
|
||||
tmp=${1%${MODULE_POSTFIX}}${TEST_POSTFIX}
|
||||
echo ${tmp#${MODULE_PREFIX}}
|
||||
}
|
||||
|
||||
# make sure any modules added here are disjoint
|
||||
declare -a modules
|
||||
declare -a blacklist=(meminfo-string-LOADED.test)
|
||||
|
||||
for file in "${SCRIPTDIR}"/*"${TEST_POSTFIX}"; do
|
||||
name=$(basename ${file})
|
||||
skip=0
|
||||
for bname in "${blacklist[@]}"; do
|
||||
if [ "${bname}" == "${name}" ]; then
|
||||
skip=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ ${skip} -eq 0 ]; then
|
||||
modules+=(${MODULE_PREFIX}${name%${TEST_POSTFIX}}${MODULE_POSTFIX})
|
||||
fi
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog && die "$SCRIPTDIR/$testprog succeeded before loading any modules"
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
$KPATCH load $mod
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog || die "$SCRIPTDIR/$testprog failed after loading modules"
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
$KPATCH unload $mod
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog && die "$SCRIPTDIR/$testprog succeeded after unloading modules"
|
||||
done
|
||||
|
||||
exit 0
|
||||
source ${SCRIPTDIR}/../common/multiple.template
|
||||
|
@ -1,65 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPTDIR="$(readlink -f $(dirname $(type -p $0)))"
|
||||
ROOTDIR="$(readlink -f $SCRIPTDIR/../../..)"
|
||||
KPATCH="sudo $ROOTDIR/kpatch/kpatch"
|
||||
|
||||
MODULE_PREFIX="test-"
|
||||
MODULE_POSTFIX=".ko"
|
||||
TEST_POSTFIX="-LOADED.test"
|
||||
|
||||
set -o errexit
|
||||
|
||||
die() {
|
||||
echo "ERROR: $@" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
ko_to_test() {
|
||||
tmp=${1%${MODULE_POSTFIX}}${TEST_POSTFIX}
|
||||
echo ${tmp#${MODULE_PREFIX}}
|
||||
}
|
||||
|
||||
# make sure any modules added here are disjoint
|
||||
declare -a modules
|
||||
declare -a blacklist=(meminfo-string-LOADED.test)
|
||||
|
||||
for file in "${SCRIPTDIR}"/*"${TEST_POSTFIX}"; do
|
||||
name=$(basename ${file})
|
||||
skip=0
|
||||
for bname in "${blacklist[@]}"; do
|
||||
if [ "${bname}" == "${name}" ]; then
|
||||
skip=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ ${skip} -eq 0 ]; then
|
||||
modules+=(${MODULE_PREFIX}${name%${TEST_POSTFIX}}${MODULE_POSTFIX})
|
||||
fi
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog && die "$SCRIPTDIR/$testprog succeeded before loading any modules"
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
$KPATCH load $mod
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog || die "$SCRIPTDIR/$testprog failed after loading modules"
|
||||
done
|
||||
|
||||
for ((idx=${#modules[@]}-1 ; idx>=0 ; idx--)); do
|
||||
mod=${modules[idx]}
|
||||
$KPATCH unload $mod
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog && die "$SCRIPTDIR/$testprog succeeded after unloading modules"
|
||||
done
|
||||
|
||||
exit 0
|
||||
source ${SCRIPTDIR}/../common/multiple.template
|
||||
|
@ -1,65 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPTDIR="$(readlink -f $(dirname $(type -p $0)))"
|
||||
ROOTDIR="$(readlink -f $SCRIPTDIR/../../..)"
|
||||
KPATCH="sudo $ROOTDIR/kpatch/kpatch"
|
||||
|
||||
MODULE_PREFIX="test-"
|
||||
MODULE_POSTFIX=".ko"
|
||||
TEST_POSTFIX="-LOADED.test"
|
||||
|
||||
set -o errexit
|
||||
|
||||
die() {
|
||||
echo "ERROR: $@" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
ko_to_test() {
|
||||
tmp=${1%${MODULE_POSTFIX}}${TEST_POSTFIX}
|
||||
echo ${tmp#${MODULE_PREFIX}}
|
||||
}
|
||||
|
||||
# make sure any modules added here are disjoint
|
||||
declare -a modules
|
||||
declare -a blacklist=(meminfo-string-LOADED.test)
|
||||
|
||||
for file in "${SCRIPTDIR}"/*"${TEST_POSTFIX}"; do
|
||||
name=$(basename ${file})
|
||||
skip=0
|
||||
for bname in "${blacklist[@]}"; do
|
||||
if [ "${bname}" == "${name}" ]; then
|
||||
skip=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ ${skip} -eq 0 ]; then
|
||||
modules+=(${MODULE_PREFIX}${name%${TEST_POSTFIX}}${MODULE_POSTFIX})
|
||||
fi
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog && die "$SCRIPTDIR/$testprog succeeded before loading any modules"
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
$KPATCH load $mod
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog || die "$SCRIPTDIR/$testprog failed after loading modules"
|
||||
done
|
||||
|
||||
for ((idx=${#modules[@]}-1 ; idx>=0 ; idx--)); do
|
||||
mod=${modules[idx]}
|
||||
$KPATCH unload $mod
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog && die "$SCRIPTDIR/$testprog succeeded after unloading modules"
|
||||
done
|
||||
|
||||
exit 0
|
||||
source ${SCRIPTDIR}/../common/multiple.template
|
||||
|
@ -1,65 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPTDIR="$(readlink -f $(dirname $(type -p $0)))"
|
||||
ROOTDIR="$(readlink -f $SCRIPTDIR/../../..)"
|
||||
KPATCH="sudo $ROOTDIR/kpatch/kpatch"
|
||||
|
||||
MODULE_PREFIX="test-"
|
||||
MODULE_POSTFIX=".ko"
|
||||
TEST_POSTFIX="-LOADED.test"
|
||||
|
||||
set -o errexit
|
||||
|
||||
die() {
|
||||
echo "ERROR: $@" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
ko_to_test() {
|
||||
tmp=${1%${MODULE_POSTFIX}}${TEST_POSTFIX}
|
||||
echo ${tmp#${MODULE_PREFIX}}
|
||||
}
|
||||
|
||||
# make sure any modules added here are disjoint
|
||||
declare -a modules
|
||||
declare -a blacklist=(meminfo-string-LOADED.test)
|
||||
|
||||
for file in "${SCRIPTDIR}"/*"${TEST_POSTFIX}"; do
|
||||
name=$(basename ${file})
|
||||
skip=0
|
||||
for bname in "${blacklist[@]}"; do
|
||||
if [ "${bname}" == "${name}" ]; then
|
||||
skip=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ ${skip} -eq 0 ]; then
|
||||
modules+=(${MODULE_PREFIX}${name%${TEST_POSTFIX}}${MODULE_POSTFIX})
|
||||
fi
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog && die "$SCRIPTDIR/$testprog succeeded before loading any modules"
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
$KPATCH load $mod
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog || die "$SCRIPTDIR/$testprog failed after loading modules"
|
||||
done
|
||||
|
||||
for ((idx=${#modules[@]}-1 ; idx>=0 ; idx--)); do
|
||||
mod=${modules[idx]}
|
||||
$KPATCH unload $mod
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog && die "$SCRIPTDIR/$testprog succeeded after unloading modules"
|
||||
done
|
||||
|
||||
exit 0
|
||||
source ${SCRIPTDIR}/../common/multiple.template
|
||||
|
@ -1,64 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPTDIR="$(readlink -f $(dirname $(type -p $0)))"
|
||||
ROOTDIR="$(readlink -f $SCRIPTDIR/../../..)"
|
||||
KPATCH="sudo $ROOTDIR/kpatch/kpatch"
|
||||
|
||||
MODULE_PREFIX="test-"
|
||||
MODULE_POSTFIX=".ko"
|
||||
TEST_POSTFIX="-LOADED.test"
|
||||
|
||||
set -o errexit
|
||||
|
||||
die() {
|
||||
echo "ERROR: $@" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
ko_to_test() {
|
||||
tmp=${1%${MODULE_POSTFIX}}${TEST_POSTFIX}
|
||||
echo ${tmp#${MODULE_PREFIX}}
|
||||
}
|
||||
|
||||
# make sure any modules added here are disjoint
|
||||
declare -a modules
|
||||
declare -a blacklist=(data-new-LOADED.test meminfo-cmdline-rebuild-SLOW-LOADED.test)
|
||||
|
||||
for file in "${SCRIPTDIR}"/*"${TEST_POSTFIX}"; do
|
||||
name=$(basename ${file})
|
||||
skip=0
|
||||
for bname in "${blacklist[@]}"; do
|
||||
if [ "${bname}" == "${name}" ]; then
|
||||
skip=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ ${skip} -eq 0 ]; then
|
||||
modules+=(${MODULE_PREFIX}${name%${TEST_POSTFIX}}${MODULE_POSTFIX})
|
||||
fi
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog && die "$SCRIPTDIR/$testprog succeeded before loading any modules"
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
$KPATCH load $mod
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog || die "$SCRIPTDIR/$testprog failed after loading modules"
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
$KPATCH unload $mod
|
||||
done
|
||||
|
||||
for mod in "${modules[@]}"; do
|
||||
testprog=$(ko_to_test $mod)
|
||||
$SCRIPTDIR/$testprog && die "$SCRIPTDIR/$testprog succeeded after unloading modules"
|
||||
done
|
||||
|
||||
exit 0
|
||||
source ${SCRIPTDIR}/../common/multiple.template
|
||||
|
Loading…
Reference in New Issue
Block a user