mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-11-03 20:01:16 +00:00
212da33f81
In preparation of removing the legacy Xen driver, move the sexpr2xml tests from WITH_XEN to WITH_LIBXL. Even though the legacy driver will be removed, we'll want to maintain the ability to convert sexpr to XML. Requires fixing up the tests to account for different behavior of Xen vs libxl post parse functions. There is some test file fallout due to differences in handling of default values between xend and libxl. Signed-off-by: Jim Fehlig <jfehlig@suse.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
173 lines
4.5 KiB
C
173 lines
4.5 KiB
C
#include <config.h>
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
|
|
#include "internal.h"
|
|
#include "virxml.h"
|
|
#include "datatypes.h"
|
|
#include "xenconfig/xen_sxpr.h"
|
|
#include "testutils.h"
|
|
#include "testutilsxen.h"
|
|
#include "virstring.h"
|
|
#include "libxl/libxl_conf.h"
|
|
|
|
#define VIR_FROM_THIS VIR_FROM_NONE
|
|
|
|
static virCapsPtr caps;
|
|
static virDomainXMLOptionPtr xmlopt;
|
|
|
|
static int
|
|
testCompareFiles(const char *xml, const char *sexpr)
|
|
{
|
|
char *sexprData = NULL;
|
|
char *gotxml = NULL;
|
|
int ret = -1;
|
|
virDomainDefPtr def = NULL;
|
|
|
|
if (virTestLoadFile(sexpr, &sexprData) < 0)
|
|
goto fail;
|
|
|
|
if (!(def = xenParseSxprString(sexprData,
|
|
NULL, -1, caps, xmlopt)))
|
|
goto fail;
|
|
|
|
if (!virDomainDefCheckABIStability(def, def, xmlopt)) {
|
|
fprintf(stderr, "ABI stability check failed on %s", xml);
|
|
goto fail;
|
|
}
|
|
|
|
if (!(gotxml = virDomainDefFormat(def, caps, 0)))
|
|
goto fail;
|
|
|
|
if (virTestCompareToFile(gotxml, xml) < 0)
|
|
goto fail;
|
|
|
|
ret = 0;
|
|
|
|
fail:
|
|
VIR_FREE(sexprData);
|
|
VIR_FREE(gotxml);
|
|
virDomainDefFree(def);
|
|
|
|
return ret;
|
|
}
|
|
|
|
struct testInfo {
|
|
const char *input;
|
|
const char *output;
|
|
};
|
|
|
|
static int
|
|
testCompareHelper(const void *data)
|
|
{
|
|
int result = -1;
|
|
const struct testInfo *info = data;
|
|
char *xml = NULL;
|
|
char *args = NULL;
|
|
|
|
if (virAsprintf(&xml, "%s/sexpr2xmldata/sexpr2xml-%s.xml",
|
|
abs_srcdir, info->input) < 0 ||
|
|
virAsprintf(&args, "%s/sexpr2xmldata/sexpr2xml-%s.sexpr",
|
|
abs_srcdir, info->output) < 0) {
|
|
goto cleanup;
|
|
}
|
|
|
|
result = testCompareFiles(xml, args);
|
|
|
|
cleanup:
|
|
VIR_FREE(xml);
|
|
VIR_FREE(args);
|
|
|
|
return result;
|
|
}
|
|
|
|
static int
|
|
mymain(void)
|
|
{
|
|
int ret = 0;
|
|
|
|
if (!(caps = testXLInitCaps()))
|
|
return EXIT_FAILURE;
|
|
|
|
if (!(xmlopt = libxlCreateXMLConf()))
|
|
return EXIT_FAILURE;
|
|
|
|
#define DO_TEST(in, out) \
|
|
do { \
|
|
struct testInfo info = { in, out }; \
|
|
virResetLastError(); \
|
|
if (virTestRun("Xen SEXPR-2-XML " in " -> " out, \
|
|
testCompareHelper, &info) < 0) \
|
|
ret = -1; \
|
|
} while (0)
|
|
|
|
DO_TEST("pv", "pv");
|
|
DO_TEST("fv", "fv");
|
|
DO_TEST("pv", "pv");
|
|
DO_TEST("fv-v2", "fv-v2");
|
|
DO_TEST("pv-vfb-new", "pv-vfb-new");
|
|
DO_TEST("pv-vfb-new-vncdisplay", "pv-vfb-new-vncdisplay");
|
|
DO_TEST("pv-vfb-type-crash", "pv-vfb-type-crash");
|
|
DO_TEST("fv-autoport", "fv-autoport");
|
|
DO_TEST("pv-bootloader", "pv-bootloader");
|
|
DO_TEST("pv-bootloader-cmdline", "pv-bootloader-cmdline");
|
|
DO_TEST("pv-vcpus", "pv-vcpus");
|
|
|
|
DO_TEST("disk-file", "disk-file");
|
|
DO_TEST("disk-block", "disk-block");
|
|
DO_TEST("disk-block-shareable", "disk-block-shareable");
|
|
DO_TEST("disk-drv-blktap-raw", "disk-drv-blktap-raw");
|
|
DO_TEST("disk-drv-blktap-qcow", "disk-drv-blktap-qcow");
|
|
DO_TEST("disk-drv-blktap2-raw", "disk-drv-blktap2-raw");
|
|
|
|
DO_TEST("curmem", "curmem");
|
|
DO_TEST("net-routed", "net-routed");
|
|
DO_TEST("net-bridged", "net-bridged");
|
|
DO_TEST("net-e1000", "net-e1000");
|
|
DO_TEST("bridge-ipaddr", "bridge-ipaddr");
|
|
DO_TEST("no-source-cdrom", "no-source-cdrom");
|
|
DO_TEST("pv-localtime", "pv-localtime");
|
|
DO_TEST("pci-devs", "pci-devs");
|
|
|
|
DO_TEST("fv-utc", "fv-utc");
|
|
DO_TEST("fv-localtime", "fv-localtime");
|
|
DO_TEST("fv-usbmouse", "fv-usbmouse");
|
|
DO_TEST("fv-usbtablet", "fv-usbtablet");
|
|
DO_TEST("fv-kernel", "fv-kernel");
|
|
DO_TEST("fv-force-hpet", "fv-force-hpet");
|
|
DO_TEST("fv-force-nohpet", "fv-force-nohpet");
|
|
|
|
DO_TEST("fv-serial-null", "fv-serial-null");
|
|
DO_TEST("fv-serial-file", "fv-serial-file");
|
|
DO_TEST("fv-serial-dev-2-ports", "fv-serial-dev-2-ports");
|
|
DO_TEST("fv-serial-dev-2nd-port", "fv-serial-dev-2nd-port");
|
|
DO_TEST("fv-serial-stdio", "fv-serial-stdio");
|
|
DO_TEST("fv-serial-pty", "fv-serial-pty");
|
|
DO_TEST("fv-serial-pipe", "fv-serial-pipe");
|
|
DO_TEST("fv-serial-tcp", "fv-serial-tcp");
|
|
DO_TEST("fv-serial-udp", "fv-serial-udp");
|
|
DO_TEST("fv-serial-tcp-telnet", "fv-serial-tcp-telnet");
|
|
DO_TEST("fv-serial-unix", "fv-serial-unix");
|
|
DO_TEST("fv-parallel-tcp", "fv-parallel-tcp");
|
|
|
|
DO_TEST("fv-sound", "fv-sound");
|
|
DO_TEST("fv-sound-all", "fv-sound-all");
|
|
|
|
DO_TEST("fv-net-netfront", "fv-net-netfront");
|
|
|
|
DO_TEST("fv-empty-kernel", "fv-empty-kernel");
|
|
|
|
DO_TEST("boot-grub", "boot-grub");
|
|
|
|
DO_TEST("vif-rate", "vif-rate");
|
|
|
|
virObjectUnref(caps);
|
|
virObjectUnref(xmlopt);
|
|
|
|
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
|
}
|
|
|
|
VIR_TEST_MAIN(mymain)
|