xref: /qemu/tests/qtest/virtio-ccw-test.c (revision ca1ef1e62e581f61c40f8be49d222007739691c4)
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"
1706d09a01SPaolo Bonzini #include "libqtest.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 {
4806d09a01SPaolo Bonzini     global_qtest = qtest_initf("-device virtio-serial-ccw");
4906d09a01SPaolo Bonzini     qtest_qmp_device_add("virtserialport", "hp-port", "{}");
5006d09a01SPaolo Bonzini     qtest_qmp_device_del("hp-port");
5106d09a01SPaolo Bonzini     qtest_end();
5206d09a01SPaolo Bonzini }
5306d09a01SPaolo Bonzini 
5406d09a01SPaolo Bonzini static void virtio_blk_nop(void)
5506d09a01SPaolo Bonzini {
56*ca1ef1e6SAndrey Shinkevich     global_qtest = qtest_initf("-drive if=none,id=drv0,file=null-co://,"
57*ca1ef1e6SAndrey Shinkevich                                "file.read-zeroes=on,format=raw "
5806d09a01SPaolo Bonzini                                 "-device virtio-blk-ccw,drive=drv0");
5906d09a01SPaolo Bonzini     qtest_end();
6006d09a01SPaolo Bonzini }
6106d09a01SPaolo Bonzini 
6206d09a01SPaolo Bonzini static void virtio_net_nop(void)
6306d09a01SPaolo Bonzini {
6406d09a01SPaolo Bonzini     global_qtest = qtest_initf("-device virtio-net-ccw");
6506d09a01SPaolo Bonzini     qtest_end();
6606d09a01SPaolo Bonzini }
6706d09a01SPaolo Bonzini 
6806d09a01SPaolo Bonzini static void virtio_rng_nop(void)
6906d09a01SPaolo Bonzini {
7006d09a01SPaolo Bonzini     global_qtest = qtest_initf("-device virtio-rng-ccw");
7106d09a01SPaolo Bonzini     qtest_end();
7206d09a01SPaolo Bonzini }
7306d09a01SPaolo Bonzini 
7406d09a01SPaolo Bonzini static void virtio_scsi_nop(void)
7506d09a01SPaolo Bonzini {
7606d09a01SPaolo Bonzini     global_qtest = qtest_initf("-device virtio-scsi-ccw");
7706d09a01SPaolo Bonzini     qtest_end();
7806d09a01SPaolo Bonzini }
7906d09a01SPaolo Bonzini 
8006d09a01SPaolo Bonzini static void virtio_scsi_hotplug(void)
8106d09a01SPaolo Bonzini {
82*ca1ef1e6SAndrey Shinkevich     global_qtest = qtest_initf("-drive if=none,id=drv0,file=null-co://,"
83*ca1ef1e6SAndrey Shinkevich                                "file.read-zeroes=on,format=raw "
84*ca1ef1e6SAndrey Shinkevich                                 "-drive if=none,id=drv1,file=null-co://,"
85*ca1ef1e6SAndrey Shinkevich                                 "file.read-zeroes=on,format=raw "
8606d09a01SPaolo Bonzini                                 "-device virtio-scsi-ccw "
8706d09a01SPaolo Bonzini                                 "-device scsi-hd,drive=drv0");
8806d09a01SPaolo Bonzini     qtest_qmp_device_add("scsi-hd", "scsihd", "{'drive': 'drv1'}");
8906d09a01SPaolo Bonzini     qtest_qmp_device_del("scsihd");
9006d09a01SPaolo Bonzini 
9106d09a01SPaolo Bonzini     qtest_end();
9206d09a01SPaolo Bonzini }
9306d09a01SPaolo Bonzini 
9406d09a01SPaolo Bonzini int main(int argc, char **argv)
9506d09a01SPaolo Bonzini {
9606d09a01SPaolo Bonzini     int ret;
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 
11006d09a01SPaolo Bonzini     ret = g_test_run();
11106d09a01SPaolo Bonzini 
11206d09a01SPaolo Bonzini     return ret;
11306d09a01SPaolo Bonzini }
114