Do we really want to add a compat for several distributions ? Because why not Archlinux, Ubuntu,... too ? I used Fedora's path by default because it was in the previous script.
2013/12/8 Shawn Landden <sh...@churchofgit.com>: > On Sat, Dec 7, 2013 at 3:01 PM, Ronny Chevalier > <chevalier.ro...@gmail.com> wrote: >> It tries to find a suitable QEMU binary and will use KVM if present. >> We can now configure QEMU from outside with 4 variables : >> - $QEMU_BIN : path to QEMU's binary >> - $KERNEL_APPEND : arguments appended to kernel cmdline >> - $KERNEL_BIN : path to a kernel >> Default /boot/vmlinuz-$KERNEL_VER >> - $INITRD : path to an initramfs >> Default /boot/initramfs-${KERNEL_VER}.img >> - $QEMU_SMP : number of CPU simulated by QEMU. >> Default 1 >> >> (from Alexander Graf's script: >> http://www.spinics.net/lists/kvm/msg72389.html) >> --- >> TODO | 1 - >> test/README.testsuite | 19 ++++++++++-- >> test/TEST-01-BASIC/test.sh | 8 ++--- >> test/TEST-02-CRYPTSETUP/test.sh | 8 ++--- >> test/TEST-03-JOBS/test.sh | 8 ++--- >> test/test-functions | 65 >> +++++++++++++++++++++++++++++++++++------ >> 6 files changed, 78 insertions(+), 31 deletions(-) >> >> diff --git a/TODO b/TODO >> index 9698082..f493dbb 100644 >> --- a/TODO >> +++ b/TODO >> @@ -168,7 +168,6 @@ Features: >> * test/: >> - add 'set -e' to scripts in test/ >> - make stuff in test/ work with separate output dir >> - - qemu wrapper script: http://www.spinics.net/lists/kvm/msg72389.html >> >> * systemctl delete x.snapshot leaves no trace in logs (at least at default >> level). >> >> diff --git a/test/README.testsuite b/test/README.testsuite >> index 54d0eaa..2ae85a2 100644 >> --- a/test/README.testsuite >> +++ b/test/README.testsuite >> @@ -25,11 +25,24 @@ $ make all >> $ cd test/TEST-01-BASIC >> $ sudo make clean setup run >> >> +QEMU >> +==== >> + >> If you want to log in the testsuite virtual machine, you can specify >> -additional kernel command line parameter with $DEBUGFAIL. >> +additional kernel command line parameter with $KERNEL_APPEND. >> >> -$ sudo make DEBUGFAIL="systemd.unit=multi-user.target" clean setup run >> +$ sudo make KERNEL_APPEND="systemd.unit=multi-user.target" clean setup run >> >> you can even skip the "clean" and "setup" if you want to run the machine >> again. >> >> -$ sudo make DEBUGFAIL="systemd.unit=multi-user.target" run >> +$ sudo make KERNEL_APPEND="systemd.unit=multi-user.target" run >> + >> +You can specify a different kernel and initramfs with $KERNEL_BIN and >> $INITRD. >> +(Fedora's default kernel path and initramfs are used by default) >> + >> +$ sudo make KERNEL_BIN=/boot/vmlinuz-foo INITRD=/boot/initramfs-bar clean >> check >> + >> +A script will try to find your QEMU binary. If you want to specify a >> different >> +one you can use $QEMU_BIN. >> + >> +$ sudo make QEMU_BIN=/path/to/qemu/qemu-kvm clean check >> diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh >> index aaf63f4..84ccf26 100755 >> --- a/test/TEST-01-BASIC/test.sh >> +++ b/test/TEST-01-BASIC/test.sh >> @@ -5,9 +5,6 @@ TEST_DESCRIPTION="Basic systemd setup" >> >> . $TEST_BASE_DIR/test-functions >> >> -# Uncomment this to debug failures >> -#DEBUGFAIL="systemd.unit=multi-user.target" >> - >> check_result_qemu() { >> ret=1 >> mkdir -p $TESTDIR/root >> @@ -23,11 +20,10 @@ check_result_qemu() { >> } >> >> test_run() { >> - if check_qemu ; then >> - run_qemu >> + if run_qemu; then >> check_result_qemu || return 1 >> else >> - dwarn "can't run qemu-kvm, skipping" >> + dwarn "can't run QEMU, skipping" >> fi >> if check_nspawn; then >> run_nspawn >> diff --git a/test/TEST-02-CRYPTSETUP/test.sh >> b/test/TEST-02-CRYPTSETUP/test.sh >> index 86617df..d7e8776 100755 >> --- a/test/TEST-02-CRYPTSETUP/test.sh >> +++ b/test/TEST-02-CRYPTSETUP/test.sh >> @@ -5,9 +5,6 @@ TEST_DESCRIPTION="cryptsetup systemd setup" >> >> . $TEST_BASE_DIR/test-functions >> >> -# Uncomment this to debug failures >> -#DEBUGFAIL="systemd.unit=multi-user.target" >> - >> check_result_qemu() { >> ret=1 >> mkdir -p $TESTDIR/root >> @@ -28,11 +25,10 @@ check_result_qemu() { >> >> >> test_run() { >> - if check_qemu ; then >> - run_qemu >> + if run_qemu; then >> check_result_qemu || return 1 >> else >> - dwarn "can't run qemu-kvm, skipping" >> + dwarn "can't run QEMU, skipping" >> fi >> return 0 >> } >> diff --git a/test/TEST-03-JOBS/test.sh b/test/TEST-03-JOBS/test.sh >> index 6303258..41e02e2 100755 >> --- a/test/TEST-03-JOBS/test.sh >> +++ b/test/TEST-03-JOBS/test.sh >> @@ -5,9 +5,6 @@ TEST_DESCRIPTION="Job-related tests" >> >> . $TEST_BASE_DIR/test-functions >> >> -# Uncomment this to debug failures >> -#DEBUGFAIL="systemd.unit=multi-user.target" >> - >> check_result_qemu() { >> ret=1 >> mkdir -p $TESTDIR/root >> @@ -23,11 +20,10 @@ check_result_qemu() { >> } >> >> test_run() { >> - if check_qemu ; then >> - run_qemu >> + if run_qemu; then >> check_result_qemu || return 1 >> else >> - dwarn "can't run qemu-kvm, skipping" >> + dwarn "can't run QEMU, skipping" >> fi >> if check_nspawn; then >> run_nspawn >> diff --git a/test/test-functions b/test/test-functions >> index a184ed7..87d3a73 100644 >> --- a/test/test-functions >> +++ b/test/test-functions >> @@ -10,12 +10,63 @@ KERNEL_MODS="/lib/modules/$KERNEL_VER/" >> BASICTOOLS="sh bash setsid loadkeys setfont login sushell sulogin gzip >> sleep echo mount umount cryptsetup date dmsetup modprobe" >> DEBUGTOOLS="df free ls stty cat ps ln ip route dmesg dhclient mkdir cp ping >> dhclient strace less grep id tty touch du sort" >> >> +function find_qemu_bin() { >> + # SUSE and Red Hat call the binary qemu-kvm >> + # Debian and Gentoo call it kvm >> + [ "$QEMU_BIN" ] || QEMU_BIN=$(which -a kvm qemu-kvm 2>/dev/null | grep >> '^/' -m1) >> + >> + [ "$ARCH" ] || ARCH=$(uname -m) >> + case $ARCH in >> + x86_64) >> + # QEMU's own build system calls it qemu-system-x86_64 >> + [ "$QEMU_BIN" ] || QEMU_BIN=$(which -a qemu-system-x86_64 >> 2>/dev/null | grep '^/' -m1) >> + ;; >> + i*86) >> + # new i386 version of QEMU >> + [ "$QEMU_BIN" ] || QEMU_BIN=$(which -a qemu-system-i386 2>/dev/null >> | grep '^/' -m1) >> + >> + # i386 version of QEMU >> + [ "$QEMU_BIN" ] || QEMU_BIN=$(which -a qemu 2>/dev/null | grep '^/' >> -m1) >> + ;; >> + esac >> + >> + if [ ! -e "$QEMU_BIN" ]; then >> + echo "Could not find a suitable QEMU binary" >&2 >> + return 1 >> + fi >> +} >> + >> run_qemu() { >> - qemu-kvm \ >> - -hda $TESTDIR/rootdisk.img \ >> - -m 512M -nographic \ >> - -net none -kernel /boot/vmlinuz-$KERNEL_VER \ >> - -append "root=/dev/sda1 systemd.log_level=debug raid=noautodetect >> loglevel=2 init=/usr/lib/systemd/systemd ro console=ttyS0,115200n81 >> selinux=0 $DEBUGFAIL" || return 1 >> + [ "$KERNEL_BIN" ] || KERNEL_BIN=/boot/vmlinuz-$KERNEL_VER >> + [ "$INITRD" ] || INITRD=/boot/initramfs-${KERNEL_VER}.img >> + [ "$QEMU_SMP" ] || QEMU_SMP=1 > test -e /boot/initramfd-${KERNEL_VER}.img > and > test -e /boot/initrd.img-${KERNEL_VER} > > for compat with Debian > > (alternatively Debian also has /vmlinuz and /initrd.img ) > >> + >> + find_qemu_bin || return 1 >> + >> + KERNEL_APPEND="root=/dev/sda1 \ >> +systemd.log_level=debug \ >> +raid=noautodetect \ >> +loglevel=2 \ >> +init=/usr/lib/systemd/systemd \ >> +ro \ >> +console=ttyS0 \ >> +selinux=0 \ >> +$KERNEL_APPEND \ >> +" >> + >> + QEMU_OPTIONS="-machine accel=kvm:tcg \ >> +-smp $QEMU_SMP \ >> +-net none \ >> +-m 512M \ >> +-nographic \ >> +-kernel $KERNEL_BIN \ >> +" >> + >> + if [ "$INITRD" ]; then >> + QEMU_OPTIONS="$QEMU_OPTIONS -initrd $INITRD" >> + fi >> + >> + $QEMU_BIN $QEMU_OPTIONS -append "$KERNEL_APPEND" $TESTDIR/rootdisk.img >> || return 1 >> } >> >> run_nspawn() { >> @@ -1043,10 +1094,6 @@ inst_libdir_file() { >> fi >> } >> >> -check_qemu() { >> - command -v qemu-kvm &>/dev/null && [[ -c /dev/kvm ]] >> -} >> - >> check_nspawn() { >> [[ -d /sys/fs/cgroup/systemd ]] >> } >> -- >> 1.8.4.2 >> >> _______________________________________________ >> systemd-devel mailing list >> systemd-devel@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/systemd-devel _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel