Message ID | e7c62e6286f6199b1c3caf60cbe225f10ed04846.1599211479.git.dimastep@yandex-team.ru |
---|---|
State | Superseded |
Headers | show |
Series | vhost-user-blk: fix the migration issue and enhance qtests | expand |
On Fri, Sep 4, 2020 at 5:36 AM Dima Stepanov <dimastep@yandex-team.ru> wrote: > > Add new migrate_reconnect test for the vhost-user-blk device. Perform a > disconnect after sending response for the VHOST_USER_SET_LOG_BASE > command. > > Signed-off-by: Dima Stepanov <dimastep@yandex-team.ru> Reviewed-by: Raphael Norwitz <raphael.norwitz@nutanix.com> > --- > tests/qtest/vhost-user-test.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/tests/qtest/vhost-user-test.c b/tests/qtest/vhost-user-test.c > index a8af613..4b715d3 100644 > --- a/tests/qtest/vhost-user-test.c > +++ b/tests/qtest/vhost-user-test.c > @@ -146,6 +146,7 @@ static VhostUserMsg m __attribute__ ((unused)); > enum { > TEST_FLAGS_OK, > TEST_FLAGS_DISCONNECT, > + TEST_FLAGS_MIGRATE_DISCONNECT, > TEST_FLAGS_BAD, > TEST_FLAGS_END, > }; > @@ -436,6 +437,15 @@ static void chr_read(void *opaque, const uint8_t *buf, int size) > qemu_chr_fe_write_all(chr, p, VHOST_USER_HDR_SIZE); > > g_cond_broadcast(&s->data_cond); > + /* > + * Perform disconnect after sending a response. In this > + * case the next write command on the QEMU side (for now > + * it is SET_FEATURES will return -1, because of disconnect. > + */ > + if (s->test_flags == TEST_FLAGS_MIGRATE_DISCONNECT) { > + qemu_chr_fe_disconnect(chr); > + s->test_flags = TEST_FLAGS_BAD; > + } > break; > > case VHOST_USER_SET_VRING_BASE: > @@ -737,6 +747,17 @@ static void *vhost_user_test_setup_memfd(GString *cmd_line, void *arg) > return server; > } > > +static void *vhost_user_test_setup_migrate_reconnect(GString *cmd_line, > + void *arg) > +{ > + TestServer *server; > + > + server = vhost_user_test_setup_memfd(cmd_line, arg); > + server->test_flags = TEST_FLAGS_MIGRATE_DISCONNECT; > + > + return server; > +} > + > static void test_read_guest_mem(void *obj, void *arg, QGuestAllocator *alloc) > { > TestServer *server = arg; > @@ -1150,5 +1171,9 @@ static void register_vhost_user_test(void) > opts.before = vhost_user_test_setup_memfd; > qos_add_test("migrate", "vhost-user-blk", > test_migrate, &opts); > + > + opts.before = vhost_user_test_setup_migrate_reconnect; > + qos_add_test("migrate_reconnect", "vhost-user-blk", > + test_migrate, &opts); > } > libqos_init(register_vhost_user_test); > -- > 2.7.4 > >
diff --git a/tests/qtest/vhost-user-test.c b/tests/qtest/vhost-user-test.c index a8af613..4b715d3 100644 --- a/tests/qtest/vhost-user-test.c +++ b/tests/qtest/vhost-user-test.c @@ -146,6 +146,7 @@ static VhostUserMsg m __attribute__ ((unused)); enum { TEST_FLAGS_OK, TEST_FLAGS_DISCONNECT, + TEST_FLAGS_MIGRATE_DISCONNECT, TEST_FLAGS_BAD, TEST_FLAGS_END, }; @@ -436,6 +437,15 @@ static void chr_read(void *opaque, const uint8_t *buf, int size) qemu_chr_fe_write_all(chr, p, VHOST_USER_HDR_SIZE); g_cond_broadcast(&s->data_cond); + /* + * Perform disconnect after sending a response. In this + * case the next write command on the QEMU side (for now + * it is SET_FEATURES will return -1, because of disconnect. + */ + if (s->test_flags == TEST_FLAGS_MIGRATE_DISCONNECT) { + qemu_chr_fe_disconnect(chr); + s->test_flags = TEST_FLAGS_BAD; + } break; case VHOST_USER_SET_VRING_BASE: @@ -737,6 +747,17 @@ static void *vhost_user_test_setup_memfd(GString *cmd_line, void *arg) return server; } +static void *vhost_user_test_setup_migrate_reconnect(GString *cmd_line, + void *arg) +{ + TestServer *server; + + server = vhost_user_test_setup_memfd(cmd_line, arg); + server->test_flags = TEST_FLAGS_MIGRATE_DISCONNECT; + + return server; +} + static void test_read_guest_mem(void *obj, void *arg, QGuestAllocator *alloc) { TestServer *server = arg; @@ -1150,5 +1171,9 @@ static void register_vhost_user_test(void) opts.before = vhost_user_test_setup_memfd; qos_add_test("migrate", "vhost-user-blk", test_migrate, &opts); + + opts.before = vhost_user_test_setup_migrate_reconnect; + qos_add_test("migrate_reconnect", "vhost-user-blk", + test_migrate, &opts); } libqos_init(register_vhost_user_test);
Add new migrate_reconnect test for the vhost-user-blk device. Perform a disconnect after sending response for the VHOST_USER_SET_LOG_BASE command. Signed-off-by: Dima Stepanov <dimastep@yandex-team.ru> --- tests/qtest/vhost-user-test.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)