#!/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 SCHEDS["scx_simple"]="" SCHEDS["scx_central"]="" SCHEDS["scx_nest"]="" SCHEDS["scx_rusty"]="" SCHEDS["scx_rustland"]="" SCHEDS["scx_bpfland"]="" SCHEDS["scx_layered"]="--run-example" 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 --force-9p -v -r ${kernel} -- \ "timeout --foreground --preserve-status ${TEST_TIMEOUT} ${sched_path} ${args}" \ 2> >(tee /tmp/output)