[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v3 05/13] qtest: add a few fd-level qmp helpers
From: |
Michael Roth |
Subject: |
[Qemu-devel] [PULL v3 05/13] qtest: add a few fd-level qmp helpers |
Date: |
Sat, 17 Oct 2015 11:59:12 -0500 |
From: Marc-André Lureau <address@hidden>
Add a few functions to interact with qmp via a simple fd.
Signed-off-by: Marc-André Lureau <address@hidden>
Reviewed-by: Michael Roth <address@hidden>
Signed-off-by: Michael Roth <address@hidden>
---
tests/libqtest.c | 45 +++++++++++++++++++++++++++++++++++++++++----
tests/libqtest.h | 7 +++++++
2 files changed, 48 insertions(+), 4 deletions(-)
diff --git a/tests/libqtest.c b/tests/libqtest.c
index 2a396ba..b6d700c 100644
--- a/tests/libqtest.c
+++ b/tests/libqtest.c
@@ -356,7 +356,7 @@ static void qmp_response(JSONMessageParser *parser, QList
*tokens)
qmp->response = (QDict *)obj;
}
-QDict *qtest_qmp_receive(QTestState *s)
+QDict *qmp_fd_receive(int fd)
{
QMPResponseParser qmp;
bool log = getenv("QTEST_LOG") != NULL;
@@ -367,7 +367,7 @@ QDict *qtest_qmp_receive(QTestState *s)
ssize_t len;
char c;
- len = read(s->qmp_fd, &c, 1);
+ len = read(fd, &c, 1);
if (len == -1 && errno == EINTR) {
continue;
}
@@ -387,12 +387,17 @@ QDict *qtest_qmp_receive(QTestState *s)
return qmp.response;
}
+QDict *qtest_qmp_receive(QTestState *s)
+{
+ return qmp_fd_receive(s->qmp_fd);
+}
+
/**
* Allow users to send a message without waiting for the reply,
* in the case that they choose to discard all replies up until
* a particular EVENT is received.
*/
-void qtest_async_qmpv(QTestState *s, const char *fmt, va_list ap)
+void qmp_fd_sendv(int fd, const char *fmt, va_list ap)
{
va_list ap_copy;
QObject *qobj;
@@ -416,13 +421,25 @@ void qtest_async_qmpv(QTestState *s, const char *fmt,
va_list ap)
fprintf(stderr, "%s", str);
}
/* Send QMP request */
- socket_send(s->qmp_fd, str, size);
+ socket_send(fd, str, size);
QDECREF(qstr);
qobject_decref(qobj);
}
}
+void qtest_async_qmpv(QTestState *s, const char *fmt, va_list ap)
+{
+ qmp_fd_sendv(s->qmp_fd, fmt, ap);
+}
+
+QDict *qmp_fdv(int fd, const char *fmt, va_list ap)
+{
+ qmp_fd_sendv(fd, fmt, ap);
+
+ return qmp_fd_receive(fd);
+}
+
QDict *qtest_qmpv(QTestState *s, const char *fmt, va_list ap)
{
qtest_async_qmpv(s, fmt, ap);
@@ -431,6 +448,26 @@ QDict *qtest_qmpv(QTestState *s, const char *fmt, va_list
ap)
return qtest_qmp_receive(s);
}
+QDict *qmp_fd(int fd, const char *fmt, ...)
+{
+ va_list ap;
+ QDict *response;
+
+ va_start(ap, fmt);
+ response = qmp_fdv(fd, fmt, ap);
+ va_end(ap);
+ return response;
+}
+
+void qmp_fd_send(int fd, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ qmp_fd_sendv(fd, fmt, ap);
+ va_end(ap);
+}
+
QDict *qtest_qmp(QTestState *s, const char *fmt, ...)
{
va_list ap;
diff --git a/tests/libqtest.h b/tests/libqtest.h
index 55bccbf..9818ef7 100644
--- a/tests/libqtest.h
+++ b/tests/libqtest.h
@@ -851,4 +851,11 @@ static inline int64_t clock_set(int64_t val)
*/
bool qtest_big_endian(void);
+
+QDict *qmp_fd_receive(int fd);
+void qmp_fd_sendv(int fd, const char *fmt, va_list ap);
+void qmp_fd_send(int fd, const char *fmt, ...);
+QDict *qmp_fdv(int fd, const char *fmt, va_list ap);
+QDict *qmp_fd(int fd, const char *fmt, ...);
+
#endif
--
1.9.1
- [Qemu-devel] [PULL v3 00/13] qemu-ga patch queue, Michael Roth, 2015/10/17
- [Qemu-devel] [PULL v3 10/13] qga: handle possible SIGPIPE in guest-file-write, Michael Roth, 2015/10/17
- [Qemu-devel] [PULL v3 11/13] qga: handle G_IO_STATUS_AGAIN in ga_channel_write_all(), Michael Roth, 2015/10/17
- [Qemu-devel] [PULL v3 13/13] qga: fix uninitialized value warning for win32, Michael Roth, 2015/10/17
- [Qemu-devel] [PULL v3 12/13] qga: guest-exec simple stdin/stdout/stderr redirection, Michael Roth, 2015/10/17
- [Qemu-devel] [PULL v3 09/13] qga: guest exec functionality, Michael Roth, 2015/10/17
- [Qemu-devel] [PULL v3 02/13] qga: Use g_new() & friends where that makes obvious sense, Michael Roth, 2015/10/17
- [Qemu-devel] [PULL v3 05/13] qtest: add a few fd-level qmp helpers,
Michael Roth <=
- [Qemu-devel] [PULL v3 06/13] glib-compat: add 2.38/2.40/2.46 asserts, Michael Roth, 2015/10/17
- [Qemu-devel] [PULL v3 03/13] qga: add QGA_CONF environment variable, Michael Roth, 2015/10/17
- [Qemu-devel] [PULL v3 01/13] build: qemu-ga: add 'qemu-ga' build target for w32, Michael Roth, 2015/10/17
- [Qemu-devel] [PULL v3 04/13] qga: do not override configuration verbosity, Michael Roth, 2015/10/17
- [Qemu-devel] [PULL v3 07/13] tests: add a local test for guest agent, Michael Roth, 2015/10/17
- [Qemu-devel] [PULL v3 08/13] qga: drop guest_file_init helper and replace it with static initializers, Michael Roth, 2015/10/17
- Re: [Qemu-devel] [PULL v3 00/13] qemu-ga patch queue, Peter Maydell, 2015/10/18