Message ID | 20211206222040.3872253-5-lvivier@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | tests/qtest: add some tests for virtio-net failover | expand |
On 06/12/2021 23.20, Laurent Vivier wrote: > Update the migration test to check we correctly wait the end > of the card unplug before doing the migration. > > Signed-off-by: Laurent Vivier <lvivier@redhat.com> > --- > tests/qtest/virtio-net-failover.c | 34 +++++++++++++++++++++++++++++++ > 1 file changed, 34 insertions(+) > > diff --git a/tests/qtest/virtio-net-failover.c b/tests/qtest/virtio-net-failover.c > index f8f5fbb3c7fe..c88f8ddec39a 100644 > --- a/tests/qtest/virtio-net-failover.c > +++ b/tests/qtest/virtio-net-failover.c > @@ -560,6 +560,40 @@ static void test_migrate_out(gconstpointer opaque) > > qobject_unref(resp); > > + /* wait the end of the migration setup phase */ > + while (true) { > + ret = migrate_status(qts); > + > + status = qdict_get_str(ret, "status"); > + if (strcmp(status, "wait-unplug") == 0) { > + break; > + } > + > + /* The migration must not start if the card is not ejected */ > + g_assert_cmpstr(status, !=, "active"); > + g_assert_cmpstr(status, !=, "completed"); > + g_assert_cmpstr(status, !=, "failed"); > + g_assert_cmpstr(status, !=, "cancelling"); > + g_assert_cmpstr(status, !=, "cancelled"); > + > + qobject_unref(ret); > + } > + qobject_unref(ret); > + > + if (g_test_slow()) { > + /* check we stay in wait-unplug while the card is not ejected */ > + int i; > + > + for (i = 0; i < 10; i++) { 10 seconds is quite long already, even for slow mode... I wouldn't expect any difference after 2 or 3 seconds anymore anyway, so maybe just wait for 5 seconds? > + sleep(1); > + ret = migrate_status(qts); > + status = qdict_get_str(ret, "status"); > + g_assert_cmpstr(status, ==, "wait-unplug"); > + qobject_unref(ret); > + } > + } > + > + /* OS unplugs the cards, QEMU can move from wait-unplug state */ > qtest_outl(qts, ACPI_PCIHP_ADDR_ICH9 + PCI_EJ_BASE, 1); > > while (true) { > Acked-by: Thomas Huth <thuth@redhat.com>
diff --git a/tests/qtest/virtio-net-failover.c b/tests/qtest/virtio-net-failover.c index f8f5fbb3c7fe..c88f8ddec39a 100644 --- a/tests/qtest/virtio-net-failover.c +++ b/tests/qtest/virtio-net-failover.c @@ -560,6 +560,40 @@ static void test_migrate_out(gconstpointer opaque) qobject_unref(resp); + /* wait the end of the migration setup phase */ + while (true) { + ret = migrate_status(qts); + + status = qdict_get_str(ret, "status"); + if (strcmp(status, "wait-unplug") == 0) { + break; + } + + /* The migration must not start if the card is not ejected */ + g_assert_cmpstr(status, !=, "active"); + g_assert_cmpstr(status, !=, "completed"); + g_assert_cmpstr(status, !=, "failed"); + g_assert_cmpstr(status, !=, "cancelling"); + g_assert_cmpstr(status, !=, "cancelled"); + + qobject_unref(ret); + } + qobject_unref(ret); + + if (g_test_slow()) { + /* check we stay in wait-unplug while the card is not ejected */ + int i; + + for (i = 0; i < 10; i++) { + sleep(1); + ret = migrate_status(qts); + status = qdict_get_str(ret, "status"); + g_assert_cmpstr(status, ==, "wait-unplug"); + qobject_unref(ret); + } + } + + /* OS unplugs the cards, QEMU can move from wait-unplug state */ qtest_outl(qts, ACPI_PCIHP_ADDR_ICH9 + PCI_EJ_BASE, 1); while (true) {
Update the migration test to check we correctly wait the end of the card unplug before doing the migration. Signed-off-by: Laurent Vivier <lvivier@redhat.com> --- tests/qtest/virtio-net-failover.c | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+)