vhost-user-test: skip if there is no memory at address 0
The virt machine cannot run the vhost-user qtests because they hardcode the presence of memory at address 0. Report the tests as a skip so that they can be converted to use qgraph. Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <1543851204-41186-11-git-send-email-pbonzini@redhat.com>
This commit is contained in:
parent
5a583cc555
commit
3b72ca381f
@ -228,9 +228,11 @@ static void uninit_virtio_dev(TestServer *s)
|
|||||||
qvirtio_pci_device_free(s->dev);
|
qvirtio_pci_device_free(s->dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wait_for_fds(TestServer *s)
|
static bool wait_for_fds(TestServer *s)
|
||||||
{
|
{
|
||||||
gint64 end_time;
|
gint64 end_time;
|
||||||
|
bool got_region;
|
||||||
|
int i;
|
||||||
|
|
||||||
g_mutex_lock(&s->data_mutex);
|
g_mutex_lock(&s->data_mutex);
|
||||||
|
|
||||||
@ -248,6 +250,19 @@ static void wait_for_fds(TestServer *s)
|
|||||||
g_assert_cmpint(s->fds_num, ==, s->memory.nregions);
|
g_assert_cmpint(s->fds_num, ==, s->memory.nregions);
|
||||||
|
|
||||||
g_mutex_unlock(&s->data_mutex);
|
g_mutex_unlock(&s->data_mutex);
|
||||||
|
|
||||||
|
got_region = false;
|
||||||
|
for (i = 0; i < s->memory.nregions; ++i) {
|
||||||
|
VhostUserMemoryRegion *reg = &s->memory.regions[i];
|
||||||
|
if (reg->guest_phys_addr == 0) {
|
||||||
|
got_region = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!got_region) {
|
||||||
|
g_test_skip("No memory at address 0x0");
|
||||||
|
}
|
||||||
|
return got_region;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void read_guest_mem_server(TestServer *s)
|
static void read_guest_mem_server(TestServer *s)
|
||||||
@ -256,8 +271,6 @@ static void read_guest_mem_server(TestServer *s)
|
|||||||
int i, j;
|
int i, j;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
|
||||||
wait_for_fds(s);
|
|
||||||
|
|
||||||
g_mutex_lock(&s->data_mutex);
|
g_mutex_lock(&s->data_mutex);
|
||||||
|
|
||||||
/* iterate all regions */
|
/* iterate all regions */
|
||||||
@ -577,8 +590,6 @@ static void write_guest_mem(TestServer *s, uint32_t seed)
|
|||||||
int i, j;
|
int i, j;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
|
||||||
wait_for_fds(s);
|
|
||||||
|
|
||||||
/* iterate all regions */
|
/* iterate all regions */
|
||||||
for (i = 0; i < s->fds_num; i++) {
|
for (i = 0; i < s->fds_num; i++) {
|
||||||
|
|
||||||
@ -661,8 +672,13 @@ static void test_read_guest_mem(const void *arg)
|
|||||||
|
|
||||||
init_virtio_dev(server, 1u << VIRTIO_NET_F_MAC);
|
init_virtio_dev(server, 1u << VIRTIO_NET_F_MAC);
|
||||||
|
|
||||||
|
if (!wait_for_fds(server)) {
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
read_guest_mem_server(server);
|
read_guest_mem_server(server);
|
||||||
|
|
||||||
|
exit:
|
||||||
uninit_virtio_dev(server);
|
uninit_virtio_dev(server);
|
||||||
|
|
||||||
qtest_quit(s);
|
qtest_quit(s);
|
||||||
@ -689,8 +705,10 @@ static void test_migrate(void)
|
|||||||
g_free(cmd);
|
g_free(cmd);
|
||||||
|
|
||||||
init_virtio_dev(s, 1u << VIRTIO_NET_F_MAC);
|
init_virtio_dev(s, 1u << VIRTIO_NET_F_MAC);
|
||||||
init_virtio_dev(dest, 1u << VIRTIO_NET_F_MAC);
|
if (!wait_for_fds(s)) {
|
||||||
wait_for_fds(s);
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
size = get_log_size(s);
|
size = get_log_size(s);
|
||||||
g_assert_cmpint(size, ==, (2 * 1024 * 1024) / (VHOST_LOG_PAGE * 8));
|
g_assert_cmpint(size, ==, (2 * 1024 * 1024) / (VHOST_LOG_PAGE * 8));
|
||||||
|
|
||||||
@ -699,6 +717,7 @@ static void test_migrate(void)
|
|||||||
g_free(tmp);
|
g_free(tmp);
|
||||||
to = qtest_init(cmd);
|
to = qtest_init(cmd);
|
||||||
g_free(cmd);
|
g_free(cmd);
|
||||||
|
init_virtio_dev(dest, 1u << VIRTIO_NET_F_MAC);
|
||||||
|
|
||||||
source = g_source_new(&test_migrate_source_funcs,
|
source = g_source_new(&test_migrate_source_funcs,
|
||||||
sizeof(TestMigrateSource));
|
sizeof(TestMigrateSource));
|
||||||
@ -738,15 +757,18 @@ static void test_migrate(void)
|
|||||||
global_qtest = to;
|
global_qtest = to;
|
||||||
qmp_eventwait("RESUME");
|
qmp_eventwait("RESUME");
|
||||||
|
|
||||||
|
g_assert(wait_for_fds(s));
|
||||||
read_guest_mem_server(dest);
|
read_guest_mem_server(dest);
|
||||||
|
|
||||||
uninit_virtio_dev(s);
|
|
||||||
uninit_virtio_dev(dest);
|
uninit_virtio_dev(dest);
|
||||||
|
qtest_quit(to);
|
||||||
|
|
||||||
g_source_destroy(source);
|
g_source_destroy(source);
|
||||||
g_source_unref(source);
|
g_source_unref(source);
|
||||||
|
|
||||||
qtest_quit(to);
|
exit:
|
||||||
|
uninit_virtio_dev(s);
|
||||||
|
|
||||||
test_server_free(dest);
|
test_server_free(dest);
|
||||||
qtest_quit(from);
|
qtest_quit(from);
|
||||||
test_server_free(s);
|
test_server_free(s);
|
||||||
@ -810,16 +832,20 @@ static void test_reconnect_subprocess(void)
|
|||||||
g_free(cmd);
|
g_free(cmd);
|
||||||
|
|
||||||
init_virtio_dev(s, 1u << VIRTIO_NET_F_MAC);
|
init_virtio_dev(s, 1u << VIRTIO_NET_F_MAC);
|
||||||
wait_for_fds(s);
|
if (!wait_for_fds(s)) {
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
wait_for_rings_started(s, 2);
|
wait_for_rings_started(s, 2);
|
||||||
|
|
||||||
/* reconnect */
|
/* reconnect */
|
||||||
s->fds_num = 0;
|
s->fds_num = 0;
|
||||||
s->rings = 0;
|
s->rings = 0;
|
||||||
g_idle_add(reconnect_cb, s);
|
g_idle_add(reconnect_cb, s);
|
||||||
wait_for_fds(s);
|
g_assert(wait_for_fds(s));
|
||||||
wait_for_rings_started(s, 2);
|
wait_for_rings_started(s, 2);
|
||||||
|
|
||||||
|
exit:
|
||||||
uninit_virtio_dev(s);
|
uninit_virtio_dev(s);
|
||||||
|
|
||||||
qtest_end();
|
qtest_end();
|
||||||
@ -848,9 +874,12 @@ static void test_connect_fail_subprocess(void)
|
|||||||
g_free(cmd);
|
g_free(cmd);
|
||||||
|
|
||||||
init_virtio_dev(s, 1u << VIRTIO_NET_F_MAC);
|
init_virtio_dev(s, 1u << VIRTIO_NET_F_MAC);
|
||||||
wait_for_fds(s);
|
if (!wait_for_fds(s)) {
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
wait_for_rings_started(s, 2);
|
wait_for_rings_started(s, 2);
|
||||||
|
|
||||||
|
exit:
|
||||||
uninit_virtio_dev(s);
|
uninit_virtio_dev(s);
|
||||||
|
|
||||||
qtest_end();
|
qtest_end();
|
||||||
@ -878,9 +907,12 @@ static void test_flags_mismatch_subprocess(void)
|
|||||||
g_free(cmd);
|
g_free(cmd);
|
||||||
|
|
||||||
init_virtio_dev(s, 1u << VIRTIO_NET_F_MAC);
|
init_virtio_dev(s, 1u << VIRTIO_NET_F_MAC);
|
||||||
wait_for_fds(s);
|
if (!wait_for_fds(s)) {
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
wait_for_rings_started(s, 2);
|
wait_for_rings_started(s, 2);
|
||||||
|
|
||||||
|
exit:
|
||||||
uninit_virtio_dev(s);
|
uninit_virtio_dev(s);
|
||||||
|
|
||||||
qtest_end();
|
qtest_end();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user