aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLaurent Vivier <lvivier@redhat.com>2022-02-03 15:15:34 +0100
committerThomas Huth <thuth@redhat.com>2022-02-21 10:15:55 +0100
commit78475083f7352ff54b078d2b2e758bc55ff60453 (patch)
tree106a88024218a62e241424b886b06289f99c95fe /tests
parent93262464d2587d2f256f3be838cab11a34cf7912 (diff)
downloadqemu-78475083f7352ff54b078d2b2e758bc55ff60453.zip
qemu-78475083f7352ff54b078d2b2e758bc55ff60453.tar.gz
qemu-78475083f7352ff54b078d2b2e758bc55ff60453.tar.bz2
tests/qtest: failover: check missing guest feature
If QEMU provides the VIRTIO_NET_F_STANDBY feature but the guest doesn't the primary device must be kept hidden Signed-off-by: Laurent Vivier <lvivier@redhat.com> Message-Id: <20220203141537.972317-5-lvivier@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/qtest/virtio-net-failover.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/qtest/virtio-net-failover.c b/tests/qtest/virtio-net-failover.c
index 4236796..cbd8585 100644
--- a/tests/qtest/virtio-net-failover.c
+++ b/tests/qtest/virtio-net-failover.c
@@ -404,6 +404,38 @@ static void test_enabled(void)
machine_stop(qts);
}
+static void test_guest_off(void)
+{
+ QTestState *qts;
+ QVirtioPCIDevice *vdev;
+ uint64_t features;
+
+ qts = machine_start(BASE_MACHINE
+ "-netdev user,id=hs0 "
+ "-device virtio-net,bus=root0,id=standby0,"
+ "failover=on,netdev=hs0,mac="MAC_STANDBY0" "
+ "-netdev user,id=hs1 "
+ "-device virtio-net,bus=root1,id=primary0,"
+ "failover_pair_id=standby0,netdev=hs1,mac="MAC_PRIMARY0" ",
+ 2);
+
+ check_one_card(qts, true, "standby0", MAC_STANDBY0);
+ check_one_card(qts, false, "primary0", MAC_PRIMARY0);
+
+ features = ~(QVIRTIO_F_BAD_FEATURE |
+ (1ull << VIRTIO_RING_F_INDIRECT_DESC) |
+ (1ull << VIRTIO_RING_F_EVENT_IDX) |
+ (1ull << VIRTIO_NET_F_STANDBY));
+
+ vdev = start_virtio_net_internal(qts, 1, 0, &features);
+
+ check_one_card(qts, true, "standby0", MAC_STANDBY0);
+ check_one_card(qts, false, "primary0", MAC_PRIMARY0);
+
+ qos_object_destroy((QOSGraphObject *)vdev);
+ machine_stop(qts);
+}
+
static void test_hotplug_1(void)
{
QTestState *qts;
@@ -1351,6 +1383,7 @@ int main(int argc, char **argv)
test_on_mismatch);
qtest_add_func("failover-virtio-net/params/off", test_off);
qtest_add_func("failover-virtio-net/params/enabled", test_enabled);
+ qtest_add_func("failover-virtio-net/params/guest_off", test_guest_off);
/* hotplug tests */
qtest_add_func("failover-virtio-net/hotplug/1", test_hotplug_1);