From 8619f585387d022fd45b1fa153102f3409d9f144 Mon Sep 17 00:00:00 2001 From: Coiby Xu Date: Mar 24 2021 07:51:02 +0000 Subject: selftest: replace qemu-kvm with one based on dracut's run-qemu Dracut's run-qemu could find which virtualization technology to the user in the order of kvm, kqemu, userspace. Using run-qemu could allow running tests where qemu-kvm doesn't exist. Signed-off-by: Coiby Xu Acked-by: Kairui Song --- diff --git a/tests/scripts/run-qemu b/tests/scripts/run-qemu new file mode 100755 index 0000000..836387a --- /dev/null +++ b/tests/scripts/run-qemu @@ -0,0 +1,23 @@ +#!/bin/bash +# Check which virtualization technology to use +# We prefer kvm, kqemu, userspace in that order. + +# This script is based on https://github.com/dracutdevs/dracut/blob/master/test/run-qemu + +export PATH=/sbin:/bin:/usr/sbin:/usr/bin + +[[ -x /usr/bin/qemu ]] && BIN=/usr/bin/qemu && ARGS="-cpu max" +$(lsmod | grep -q '^kqemu ') && BIN=/usr/bin/qemu && ARGS="-kernel-kqemu -cpu host" +[[ -c /dev/kvm && -x /usr/bin/kvm ]] && BIN=/usr/bin/kvm && ARGS="-cpu host" +[[ -c /dev/kvm && -x /usr/bin/qemu-kvm ]] && BIN=/usr/bin/qemu-kvm && ARGS="-cpu host" +[[ -c /dev/kvm && -x /usr/libexec/qemu-kvm ]] && BIN=/usr/libexec/qemu-kvm && ARGS="-cpu host" +[[ -x /usr/bin/qemu-system-$(uname -i) ]] && BIN=/usr/bin/qemu-system-$(uname -i) && ARGS="-cpu max" +[[ -c /dev/kvm && -x /usr/bin/qemu-system-$(uname -i) ]] && BIN=/usr/bin/qemu-system-$(uname -i) && ARGS="-enable-kvm -cpu host" + +[[ $BIN ]] || { + echo "Could not find a working KVM or QEMU to test with!" >&2 + echo "Please install kvm or qemu." >&2 + exit 1 +} + +exec $BIN $ARGS "$@" diff --git a/tests/scripts/test-lib.sh b/tests/scripts/test-lib.sh index aff5cd3..f8a2249 100644 --- a/tests/scripts/test-lib.sh +++ b/tests/scripts/test-lib.sh @@ -89,7 +89,7 @@ run_test_sync() { local qemu_cmd=$(get_test_qemu_cmd $1) if [ -n "$qemu_cmd" ]; then - timeout --foreground 10m qemu-kvm $(get_test_qemu_cmd $1) + timeout --foreground 10m $BASEDIR/run-qemu $(get_test_qemu_cmd $1) else echo "error: test qemu command line is not configured" > /dev/stderr return 1