[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v6 11/21] libqtest: make bufwrite rely on the TransportOps

From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v6 11/21] libqtest: make bufwrite rely on the TransportOps
Date: Fri, 3 Jan 2020 17:45:03 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2

On 11/29/19 10:34 PM, Oleinik, Alexander wrote:
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 <address@hidden>
  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 ac4b6ab5f0..a7df92319a 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");

Ah, is this the send_line() from patch #5?

Now it makes sense to move the send("\n") there and call it send_line().

Moving the send(\n) we get this in patch #5:

 static void qtest_client_socket_send_line(QTestState *s,
                                           const char *bufline)
     socket_send(s->fd, bufline, strlen(bufline));
     socket_send(s->fd, "\n", 1);

      qtest_rsp(s, 0);
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);

reply via email to

[Prev in Thread] Current Thread [Next in Thread]