#!/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 # - scx_flatcg, scx_pair: excluded until cgroup support lands upstream # - scx_mitosis: not ready yet # SCHEDULERS="scx_simple scx_central scx_nest scx_rusty scx_rustland scx_bpfland" 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 -v -r ${kernel} -- \ "timeout --foreground --preserve-status ${TEST_TIMEOUT} ${sched_path}" \ 2> >(tee /tmp/output)