
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@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