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