scx-upstream/meson-scripts/test_sched
Andrea Righi d1cfe1765d ci: eclude scx_qmap and scx_userland from testing
These two schedulers are provided mostly as examples / PoC, so we should
exclude them from our periodic testing, to prevent triggering false
positives in our CI.

Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
2024-02-24 10:24:06 +01:00

58 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
#
# Run a scheduler for TIMEOUT seconds inside virtme-ng and catch potential
# errors, then unload the scheduler and return the exit status.
# Maximum time for each scheduler run.
TEST_TIMEOUT=30
# Maximum timeout for the guest used for each scheduler run (this is used to
# hard-shutdown the guest in case of system hangs).
GUEST_TIMEOUT=60
# List of schedulers to test
#
# TODO:
# - scx_layered: temporarily excluded because it
# cannot run with a default configuration
#
SCHEDULERS="scx_simple scx_central scx_flatcg scx_nest scx_pair scx_rusty scx_rustland"
if [ ! -x `which vng` ]; then
echo "vng not found, please install virtme-ng to enable testing"
exit 1
fi
if [ $# -lt 1 ]; then
echo "Usage: $0 VMLINUZ"
exit 1
fi
kernel=$1
for sched in ${SCHEDULERS}; do
sched_path=$(find -type f -executable -name ${sched})
if [ ! -n "${sched_path}" ]; then
echo "${sched}: binary not found"
echo "FAIL: ${sched}"
exit 1
fi
echo "testing ${sched_path}"
rm -f /tmp/output
timeout --preserve-status ${GUEST_TIMEOUT} \
vng --force-9p --disable-microvm -v -r ${kernel} -- \
"timeout --foreground --preserve-status ${TEST_TIMEOUT} ${sched_path}" \
2> >(tee /tmp/output) </dev/null
sed -n -e '/\bBUG:/q1' \
-e '/\bWARNING:/q1' \
-e '/\berror\b/Iq1' \
-e '/\bstall/Iq1' \
-e '/\btimeout\b/Iq1' /tmp/output
res=$?
if [ ${res} -ne 0 ]; then
echo "FAIL: ${sched}"
exit 1
else
echo "OK: ${sched}"
fi
done