Browse Source

tests/unit: skip test-nested-aio-poll with io_uring

test-nested-aio-poll relies on internal details of how fdmon-poll.c
handles AioContext polling. Skip it when other fdmon implementations are
in use.

The reason why fdmon-io_uring.c behaves differently from fdmon-poll.c is
that its fdmon_ops->need_wait() function returns true when
io_uring_enter(2) must be called (e.g. to submit pending SQEs).
AioContext polling is skipped when ->need_wait() returns true, so the
test case will never enter AioContext polling mode with
fdmon-io_uring.c.

Restrict this test to fdmon-poll.c and drop the
aio_context_use_g_source() call since it's no longer necessary.

Note that this test is only built on POSIX systems so it is safe to
include "util/aio-posix.h".

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-ID: <20251104022933.618123-6-stefanha@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
pull/307/head
Stefan Hajnoczi 5 months ago
committed by Kevin Wolf
parent
commit
330adf44dc
  1. 13
      tests/unit/test-nested-aio-poll.c

13
tests/unit/test-nested-aio-poll.c

@ -15,6 +15,7 @@
#include "qemu/osdep.h"
#include "block/aio.h"
#include "qapi/error.h"
#include "util/aio-posix.h"
typedef struct {
AioContext *ctx;
@ -71,17 +72,17 @@ static void test(void)
.ctx = aio_context_new(&error_abort),
};
if (td.ctx->fdmon_ops != &fdmon_poll_ops) {
/* This test is tied to fdmon-poll.c */
g_test_skip("fdmon_poll_ops not in use");
return;
}
qemu_set_current_aio_context(td.ctx);
/* Enable polling */
aio_context_set_poll_params(td.ctx, 1000000, 2, 2, &error_abort);
/*
* The GSource is unused but this has the side-effect of changing the fdmon
* that AioContext uses.
*/
aio_get_g_source(td.ctx);
/* Make the event notifier active (set) right away */
event_notifier_init(&td.poll_notifier, 1);
aio_set_event_notifier(td.ctx, &td.poll_notifier,

Loading…
Cancel
Save