From Fedora Project Wiki

The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

VirtioSerial Testing

Test matrix:
Guest (i386 & x86_64): 
Linux – RHEL6
Windows 


virtio console ( virtio serial, vmchannel... ) 
  a simple device for data input and out 

Virtio architecture [1]: 

front end : 
  linux   : kernel >=  2.6.32-13.el6 
  windows : need driver 
backend  :
  qemu-kvm >= 0.12.1.2-2.12.el6 
Virtio-serial is just the transport protocol that will enable such applications to be written.It has two parts: 
  (a) device emulation in qemu that presents a virtio-pci device to the guest and 
  (b) a guest driver that presents a char device interface to userspace applications. 

How it work : 
  guest : 
     install front end driver 
  qemu cli : 
     -device virtio-serial-pci,id=virtio-serial0,max_ports=16,vectors=4,bus=pci.0,addr=0x4    
             ^driver                             ~~~~~~~~~~~~~~~~~~~~~~ 
                                                 device option 
     -chardev pty,id=channel0                                                                 
              
     -device virtserialport,chardev=channel0,name=org.linux-kvm.port.0,bus=virtio-serial0.0   
             ^driver                                                   ^ride on bus 

  check device information from QEMU command line : 
     (QEMU) info qtree 
     (QEMU) info pci 
  check device information from guest : 
     #lspci 
     #/sys/class/virtio-ports/*/name 
  
To Be Test : 
Basic functional testing [3] 
 - Amit's test suite from http://fedorapeople.org/gitweb?p=amitshah/public_git/test-virtserial.git 
 - Spawn a virtioconsole, Work on the console 
 - Spawn multiple virtioconsoles 
 - Transfer files from the host to the guest (and vice-versa) over virtio-serial ports 
 - Try all of the above at the same time 
 - Try the above with different guest smp options 

Survive basic guest operation 
 - live migration 
 - offline migration 
 - guest reboot/shutdown/kdump 
 - guest s3/s4  

Dynamic add/remove 
 - remove/load guest driver 
 - add/remove device from qemu command 
     device add  and survive reboot 
     device delete and survive reboot 
     create MAX number of ports ( default max=31) 
     add existed device 
     remove unexisted device 
Performance 
  - X MB/s 

TBD : 
test window front driver with spice.

Test detail:(many of tests are covered by other testplan, so no need repeat here)

Steps of VirtioSerial/VMchannel Testing:

1. Execute Amit's test script
1.1 Get test program

   $ git clone git://fedorapeople.org/home/fedora/amitshah/public_git/test-virtserial.git

1.2 Copy this program to guest, compile and put the
auto-virtserial-guest program in /etc/init.d/ and put a line in
/etc/rc.local to invoke it upon boot:

<guest /etc/rc.local>:
/etc/init.d/auto-virtserial-guest &

1.3 Do prepare work for running the virtio console port test:

<guest /etc/securetty>:
Add a line saying 'hvc0'

<guest /etc/event.d>:
Copy tty1 to hvc0, replace all tty1 to hvc0 in the new file

To be able to test the udev symlinking rule,

<guest>
mount -t debugfs debugfs /sys/kernel/debug

For the file checksumming test, place a (big) file in
/tmp/amit/big-file on the host.

1.4 Compile, change run-sh.sh by your environment, and execute
run-test.sh on host

   $ ./run-test.sh

2  Hot-plug / Hot-unplug testing

2.1 Using the qemu monitor, hot-unplug port 
(qemu) device_add virtserialport,name=port.0,id=port0 
2.2 Check vports in guest
2.3 Using the qemu monitor, hot-plug port 
(qemu) device_del port0 
2.4 Check vports in guest