mirror of
https://github.com/sched-ext/scx.git
synced 2024-12-13 12:07:17 +00:00
120211d731
split build and test jobs to reduce ci turnaround time and make it clear what is failing when something fails. also add virtiofsd to deps to make test compilation faster (most test time is compliation) and remove all force 9ps.
82 lines
2.1 KiB
Bash
Executable File
82 lines
2.1 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_flatcg, scx_pair: excluded until cgroup support lands upstream
|
|
# - scx_mitosis: not ready yet
|
|
#
|
|
declare -A SCHEDS
|
|
|
|
# enable running tests on individual schedulers
|
|
if [ $# -ge 2 ] ; then
|
|
SCHEDS[$2]=""
|
|
else
|
|
SCHEDS["scx_simple"]=""
|
|
SCHEDS["scx_central"]=""
|
|
SCHEDS["scx_nest"]=""
|
|
SCHEDS["scx_rusty"]=""
|
|
SCHEDS["scx_rustland"]=""
|
|
SCHEDS["scx_bpfland"]=""
|
|
SCHEDS["scx_layered"]="--run-example"
|
|
fi
|
|
|
|
if [[ -v SCHEDS["scx_layered"] ]] ; then
|
|
SCHEDS["scx_layered"]="--run-example"
|
|
fi
|
|
|
|
printf "testing scheds:\n"
|
|
for i in "${!SCHEDS[@]}"; do
|
|
printf "%s=%s\n" "$i" "${SCHEDS[$i]}";
|
|
done
|
|
|
|
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 ${!SCHEDS[@]}; do
|
|
args=${SCHEDS[$sched]}
|
|
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 -m 2G -v -r ${kernel} -- \
|
|
"timeout --foreground --preserve-status ${TEST_TIMEOUT} ${sched_path} ${args}" \
|
|
2> >(tee /tmp/output) </dev/null
|
|
grep -v " Speculative Return Stack Overflow" /tmp/output | \
|
|
sed -n -e '/\bBUG:/q1' \
|
|
-e '/\bWARNING:/q1' \
|
|
-e '/\berror\b/Iq1' \
|
|
-e '/\bstall/Iq1' \
|
|
-e '/\btimeout\b/Iq1'
|
|
res=$?
|
|
if [ ${res} -ne 0 ]; then
|
|
echo "FAIL: ${sched}"
|
|
exit 1
|
|
else
|
|
echo "OK: ${sched}"
|
|
fi
|
|
done
|