xref: /qemu/tests/qtest/virtio-ccw-test.c (revision 66997c42e02c84481fc162a5b7bd6ad6c643bae2)
106d09a01SPaolo Bonzini /*
206d09a01SPaolo Bonzini  * QTest testcase for VirtIO CCW
306d09a01SPaolo Bonzini  *
406d09a01SPaolo Bonzini  * Copyright (c) 2014 SUSE LINUX Products GmbH
506d09a01SPaolo Bonzini  * Copyright (c) 2018 Red Hat, Inc.
606d09a01SPaolo Bonzini  *
706d09a01SPaolo Bonzini  * This work is licensed under the terms of the GNU GPL, version 2 or later.
806d09a01SPaolo Bonzini  * See the COPYING file in the top-level directory.
906d09a01SPaolo Bonzini  */
1006d09a01SPaolo Bonzini 
1106d09a01SPaolo Bonzini /* Until we have a full libqos implementation of virtio-ccw (which requires
1206d09a01SPaolo Bonzini  * also to add support for I/O channels to qtest), we can only do simple
1306d09a01SPaolo Bonzini  * tests that initialize the devices.
1406d09a01SPaolo Bonzini  */
1506d09a01SPaolo Bonzini 
1606d09a01SPaolo Bonzini #include "qemu/osdep.h"
17dd210749SThomas Huth #include "libqtest-single.h"
1806d09a01SPaolo Bonzini #include "libqos/virtio.h"
1906d09a01SPaolo Bonzini 
2006d09a01SPaolo Bonzini static void virtio_balloon_nop(void)
2106d09a01SPaolo Bonzini {
2206d09a01SPaolo Bonzini     global_qtest = qtest_initf("-device virtio-balloon-ccw");
2306d09a01SPaolo Bonzini     qtest_end();
2406d09a01SPaolo Bonzini }
2506d09a01SPaolo Bonzini 
2606d09a01SPaolo Bonzini static void virtconsole_nop(void)
2706d09a01SPaolo Bonzini {
2806d09a01SPaolo Bonzini     global_qtest = qtest_initf("-device virtio-serial-ccw,id=vser0 "
2906d09a01SPaolo Bonzini                                 "-device virtconsole,bus=vser0.0");
3006d09a01SPaolo Bonzini     qtest_end();
3106d09a01SPaolo Bonzini }
3206d09a01SPaolo Bonzini 
3306d09a01SPaolo Bonzini static void virtserialport_nop(void)
3406d09a01SPaolo Bonzini {
3506d09a01SPaolo Bonzini     global_qtest = qtest_initf("-device virtio-serial-ccw,id=vser0 "
3606d09a01SPaolo Bonzini                                 "-device virtserialport,bus=vser0.0");
3706d09a01SPaolo Bonzini     qtest_end();
3806d09a01SPaolo Bonzini }
3906d09a01SPaolo Bonzini 
4006d09a01SPaolo Bonzini static void virtio_serial_nop(void)
4106d09a01SPaolo Bonzini {
4206d09a01SPaolo Bonzini     global_qtest = qtest_initf("-device virtio-serial-ccw");
4306d09a01SPaolo Bonzini     qtest_end();
4406d09a01SPaolo Bonzini }
4506d09a01SPaolo Bonzini 
4606d09a01SPaolo Bonzini static void virtio_serial_hotplug(void)
4706d09a01SPaolo Bonzini {
48e5758de4SThomas Huth     QTestState *qts = qtest_initf("-device virtio-serial-ccw");
49e5758de4SThomas Huth 
50e5758de4SThomas Huth     qtest_qmp_device_add(qts, "virtserialport", "hp-port", "{}");
51e5758de4SThomas Huth     qtest_qmp_device_del(qts, "hp-port");
52e5758de4SThomas Huth 
53e5758de4SThomas Huth     qtest_quit(qts);
5406d09a01SPaolo Bonzini }
5506d09a01SPaolo Bonzini 
5606d09a01SPaolo Bonzini static void virtio_blk_nop(void)
5706d09a01SPaolo Bonzini {
58ca1ef1e6SAndrey Shinkevich     global_qtest = qtest_initf("-drive if=none,id=drv0,file=null-co://,"
59ca1ef1e6SAndrey Shinkevich                                "file.read-zeroes=on,format=raw "
6006d09a01SPaolo Bonzini                                 "-device virtio-blk-ccw,drive=drv0");
6106d09a01SPaolo Bonzini     qtest_end();
6206d09a01SPaolo Bonzini }
6306d09a01SPaolo Bonzini 
6406d09a01SPaolo Bonzini static void virtio_net_nop(void)
6506d09a01SPaolo Bonzini {
6606d09a01SPaolo Bonzini     global_qtest = qtest_initf("-device virtio-net-ccw");
6706d09a01SPaolo Bonzini     qtest_end();
6806d09a01SPaolo Bonzini }
6906d09a01SPaolo Bonzini 
7006d09a01SPaolo Bonzini static void virtio_rng_nop(void)
7106d09a01SPaolo Bonzini {
7206d09a01SPaolo Bonzini     global_qtest = qtest_initf("-device virtio-rng-ccw");
7306d09a01SPaolo Bonzini     qtest_end();
7406d09a01SPaolo Bonzini }
7506d09a01SPaolo Bonzini 
7606d09a01SPaolo Bonzini static void virtio_scsi_nop(void)
7706d09a01SPaolo Bonzini {
7806d09a01SPaolo Bonzini     global_qtest = qtest_initf("-device virtio-scsi-ccw");
7906d09a01SPaolo Bonzini     qtest_end();
8006d09a01SPaolo Bonzini }
8106d09a01SPaolo Bonzini 
8206d09a01SPaolo Bonzini static void virtio_scsi_hotplug(void)
8306d09a01SPaolo Bonzini {
84e5758de4SThomas Huth     QTestState *s = qtest_initf("-drive if=none,id=drv0,file=null-co://,"
85ca1ef1e6SAndrey Shinkevich                                 "file.read-zeroes=on,format=raw "
86ca1ef1e6SAndrey Shinkevich                                 "-drive if=none,id=drv1,file=null-co://,"
87ca1ef1e6SAndrey Shinkevich                                 "file.read-zeroes=on,format=raw "
8806d09a01SPaolo Bonzini                                 "-device virtio-scsi-ccw "
8906d09a01SPaolo Bonzini                                 "-device scsi-hd,drive=drv0");
90e5758de4SThomas Huth     qtest_qmp_device_add(s, "scsi-hd", "scsihd", "{'drive': 'drv1'}");
91e5758de4SThomas Huth     qtest_qmp_device_del(s, "scsihd");
9206d09a01SPaolo Bonzini 
93e5758de4SThomas Huth     qtest_quit(s);
9406d09a01SPaolo Bonzini }
9506d09a01SPaolo Bonzini 
9606d09a01SPaolo Bonzini int main(int argc, char **argv)
9706d09a01SPaolo Bonzini {
9806d09a01SPaolo Bonzini     g_test_init(&argc, &argv, NULL);
9906d09a01SPaolo Bonzini     qtest_add_func("/virtio/balloon/nop", virtio_balloon_nop);
10006d09a01SPaolo Bonzini     qtest_add_func("/virtio/console/nop", virtconsole_nop);
10106d09a01SPaolo Bonzini     qtest_add_func("/virtio/serialport/nop", virtserialport_nop);
10206d09a01SPaolo Bonzini     qtest_add_func("/virtio/serial/nop", virtio_serial_nop);
10306d09a01SPaolo Bonzini     qtest_add_func("/virtio/serial/hotplug", virtio_serial_hotplug);
10406d09a01SPaolo Bonzini     qtest_add_func("/virtio/block/nop", virtio_blk_nop);
10506d09a01SPaolo Bonzini     qtest_add_func("/virtio/net/nop", virtio_net_nop);
10606d09a01SPaolo Bonzini     qtest_add_func("/virtio/rng/nop", virtio_rng_nop);
10706d09a01SPaolo Bonzini     qtest_add_func("/virtio/scsi/nop", virtio_scsi_nop);
10806d09a01SPaolo Bonzini     qtest_add_func("/virtio/scsi/hotplug", virtio_scsi_hotplug);
10906d09a01SPaolo Bonzini 
110*66997c42SMarkus Armbruster     return g_test_run();
11106d09a01SPaolo Bonzini }
112