On 09/27/2013 04:25 AM, Michal Privoznik wrote:
This test is there to ensure that our capabilities detection code
isn't
broken somehow.
How to gather test data:
Firstly, the data is split into two separate files. The former (with
suffix .replies) contains all the qemu replies. This is very fragile as
introducing a new device can mean yet another monitor command and hence
edit of this file in the future. But there's no better way of doing
this. To get this data simply turn on debug logs and copy all the
QEMU_MONITOR_IO_PROCESS lines. But be careful to not copy incomplete
ones (yeah, we report some incomplete lines too). Long story short, at
the libvirtd startup, a dummy qemu is spawn to get all the capabilities.
The latter (with suffix .caps) contains capabilities XML. Just start a
domain and copy the corresponding part from its state XML file.
Including <qemuCaps> tag.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
.gitignore | 1 +
tests/Makefile.am | 12 +-
tests/qemucapabilitiesdata/caps_1.5.3-1.caps | 133 ++
tests/qemucapabilitiesdata/caps_1.5.3-1.replies | 2519 +++++++++++++++++++++++
tests/qemucapabilitiestest.c | 241 +++
5 files changed, 2904 insertions(+), 2 deletions(-)
create mode 100644 tests/qemucapabilitiesdata/caps_1.5.3-1.caps
create mode 100644 tests/qemucapabilitiesdata/caps_1.5.3-1.replies
create mode 100644 tests/qemucapabilitiestest.c
+static qemuMonitorTestPtr
+testQemuFeedMonitor(char *replies,
+ virDomainXMLOptionPtr xmlopt)
+{
+ qemuMonitorTestPtr test = NULL;
+ char *tmp = replies;
+ char *singleReply = tmp;
+
+ /* Our JSON parser expects replies to be separated by a newline character.
+ * Hence we must preprocess the file a bit. */
+ while ((tmp = strchr(tmp, '\n'))) {
+ /* It is safe to touch (tmp + 1) since all strings ends with '\0'. */
+ bool eof = *(tmp + 1) == '\0';
More compact as:
bool eof = !tmp[1];
but that's not worth a respin :)
ACK - as this just touches the testsuite, I'm fine with including it in
1.1.3 rather than waiting.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org