summaryrefslogtreecommitdiffstats
path: root/run-test.sh
blob: 8345f59fe68320603524209a4bf532422edde9f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/bin/bash

QEMU_DEF=/home/amit/build/qemu/x86_64-softmmu/qemu-system-x86_64
QEMU_OLD_DEF=/home/amit/build/qemu-0.12/x86_64-softmmu/qemu-system-x86_64
KERNEL_DEF=/home/amit/src/linux/arch/x86/boot/bzImage
VCPUS_DEF=2
GUEST_DEF=/guests/f11-auto.qcow2

QEMU=${QEMU:-$QEMU_DEF}
QEMU_OLD=${QEMU_OLD:-$QEMU_OLD_DEF}
KERNEL=${KERNEL:-$KERNEL_DEF}
VCPUS=${VCPUS:-$VCPUS_DEF}
GUEST=${GUEST:-$GUEST_DEF}

KERNEL="-kernel $KERNEL"
#KERNELARG="-append \"root=/dev/sda2 console=tty0 console=ttyS0\""
KERNELARG="-append root=/dev/vda2"

CHARDEVS="-chardev socket,path=/tmp/amit/test0,server,nowait,id=test0 \
          -chardev socket,path=/tmp/amit/test1,server,nowait,id=test1 \
          -chardev socket,path=/tmp/amit/test2,server,nowait,id=test2 \
          -chardev socket,path=/tmp/amit/test3,server,nowait,id=test3 \
          -chardev socket,path=/tmp/amit/test4,server,nowait,id=test4"
VIRTSER="-device virtio-serial \
         -device virtconsole,chardev=test0,name=console.0 \
         -device virtserialport,chardev=test1,name=test1 \
         -device virtserialport,chardev=test2,name=test2 \
         -device virtserialport,chardev=test3,name=test3 \
         -device virtserialport,chardev=test4,name=test4"
VNC="-vnc :1"
MISCOPT="-net none -enable-kvm -m 1G -serial file:/tmp/amit/test-serial.log \
         -monitor unix:/tmp/amit/test-monitor,server,nowait"
KVMOPT="-smp $VCPUS"
SNAPSHOT="-snapshot"
DRIVE="-drive file=$GUEST,if=none,id=guest,cache=unsafe \
       -device virtio-blk-pci,drive=guest"

QEMU_PIDFILE=/tmp/amit/qemu.pid

function kill_qemu {

    if [ -s $QEMU_PIDFILE ]; then
	# If file exists and has size greater than zero
	declare -i qemu_pid

	qemu_pid=`cat $QEMU_PIDFILE`
	rm $QEMU_PIDFILE
	kill -9 $qemu_pid
	qemu_pid=
    fi
}

function do_test {
    declare -i qemu_pid

    pkill -9 auto-virtserial
    kill_qemu

    # Let prev. instance of qemu be killed, if any.  Without this
    # sleep, the prev. qemu / auto-virtserial instance could be killed
    # after we start our next test, which is a bad thing.
    sleep 5;

    echo $QEMU $QEMU_OPTS
    $QEMU $QEMU_OPTS &
    qemu_pid=$!
    echo $qemu_pid > $QEMU_PIDFILE
    qemu_pid=

    # Give some time for the guest to come up
    sleep 5

    > /tmp/amit/guest-big-file
    > /tmp/amit/guest-csumfile
    time ./auto-virtserial

    kill_qemu
}

# -- Iteration 1: new kernel, new qemu --
QEMU_OPTS="$DRIVE $KERNEL $KERNELARG $CHARDEVS $VIRTSER $VNC $MISCOPT \
           $SNAPSHOT $KVMOPT"

do_test

# -- Iteration 2: old kernel, new qemu --

QEMU_OPTS="$DRIVE $CHARDEVS $VIRTSER $VNC $MISCOPT $SNAPSHOT $KVMOPT"

do_test

# -- Iteration 3: new kernel, old qemu --

CHARDEVS=
VIRTSER="-virtioconsole unix:/tmp/amit/test0,server,nowait"

QEMU_OPTS="$DRIVE $KERNEL $KERNELARG $CHARDEVS $VIRTSER $VNC $MISCOPT $SNAPSHOT"

do_test