When using qtest "in-process" communication, qtest_sendf directly calls a function in the server (qtest.c). Previously, bufwrite used socket_send, which bypasses the TransportOps enabling the call into qtest.c. This change replaces the socket_send calls with ops->send, maintaining the benefits of the direct socket_send call, while adding support for in-process qtest calls.
Signed-off-by: Alexander Bulekov <alx...@bu.edu> --- tests/libqtest.c | 4 ++-- tests/libqtest.h | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/libqtest.c b/tests/libqtest.c index c406b2ea09..6d3bcb6766 100644 --- a/tests/libqtest.c +++ b/tests/libqtest.c @@ -1080,8 +1080,8 @@ void qtest_bufwrite(QTestState *s, uint64_t addr, const void *data, size_t size) bdata = g_base64_encode(data, size); qtest_sendf(s, "b64write 0x%" PRIx64 " 0x%zx ", addr, size); - socket_send(s->fd, bdata, strlen(bdata)); - socket_send(s->fd, "\n", 1); + s->ops.send(s, bdata); + s->ops.send(s, "\n"); qtest_rsp(s, 0); g_free(bdata); } diff --git a/tests/libqtest.h b/tests/libqtest.h index c9e21e05b3..0e9b8908ef 100644 --- a/tests/libqtest.h +++ b/tests/libqtest.h @@ -729,4 +729,7 @@ bool qtest_probe_child(QTestState *s); */ void qtest_set_expected_status(QTestState *s, int status); +QTestState *qtest_inproc_init(bool log, const char* arch, + void (*send)(void*, const char*)); +void qtest_client_inproc_recv(void *opaque, const char *str); #endif -- 2.23.0