On Wed, Apr 18, 2018 at 11:38:43AM +0200, Peter Krempa wrote:
Allow testing of XML->argv conversion with using a real capability
map
as used in the qemucapabilitiestest. This allows specifying the required
qemu version with the test rather than having to enumerate all the
required capabilities or allows to use the newest capabilities present.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
tests/qemuxml2argvtest.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 69 insertions(+)
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 31218652ce..75a9d0b908 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -593,6 +593,7 @@ mymain(void)
int ret = 0;
char *fakerootdir;
bool skipLegacyCPUs = false;
+ char *capsnew_x86_64 = NULL;
if (VIR_STRDUP_QUIET(fakerootdir, FAKEROOTDIRTEMPLATE) < 0) {
fprintf(stderr, "Out of memory\n");
@@ -658,6 +659,73 @@ mymain(void)
if (VIR_STRDUP_QUIET(driver.config->memoryBackingDir,
"/var/lib/libvirt/qemu/ram") < 0)
return EXIT_FAILURE;
+ if (!(capsnew_x86_64 = testQemuGetNewestCapsForArch(abs_srcdir
"/qemucapabilitiesdata",
+ "x86_64",
".xml")))
+ return EXIT_FAILURE;
+
+ VIR_TEST_VERBOSE("\ncaps x86_64: %s\n", capsnew_x86_64);
+
+
+/**
+ * The following set of macros allows testing of XML -> argv conversion with a
+ * real set of capabilities gathered from a real qemu copy. It is desired to use
+ * these for positive test cases as it provides combinations of flags which
+ * can be met in real life.
+ *
+ * The capabilities are taken from the real capabilities stored in
+ * tests/qemucapabilitiesdata.
+ *
+ * It is suggested to use the DO_TEST_CAPS_NEW macro which always takes the
+ * newest capability set. In cases when the new capabilities would remove a
+ * feature for some reason, the test should be forked by using DO_TEST_CAPS_VER
+ * with the old version. New version of the capabilities can then be changed to
+ * the new format.
The main point of these unit tests so far was to check whether changes
and refactors of the libvirt code do not affect the .args output for old
QEMUs.
Even introducting new capabilities could cause libvirt to take different
code paths, therefore we should prefer DO_TEST_CAPS_VER.
I do not find DO_TEST_CAPS_NEW that beneficial - if QEMU introduced a
new capability that needs to be handled by libvirt, the code author
should introduce a new DO_TEST_CAPS_VER test for that.
Otherwise it would just be checking whether QEMU did not break something
for us. And since the soonest we update capabilities is at the time of
QEMU freeze, that might be later than needed.
With the comment fixed to encourage DO_TEST_CAPS_VER:
Reviewed-by: Ján Tomko <jtomko(a)redhat.com>
Jano