Files
libvirt/tests/networkxml2conftest.c
T

135 lines
3.7 KiB
C
Raw Normal View History

#include <config.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <fcntl.h>
#include "internal.h"
#include "testutils.h"
#include "network_conf.h"
2012-12-12 16:27:01 +00:00
#include "vircommand.h"
2012-12-12 18:06:53 +00:00
#include "viralloc.h"
#include "network/bridge_driver.h"
#include "virstring.h"
2013-06-07 10:37:25 +02:00
#define VIR_FROM_THIS VIR_FROM_NONE
2012-11-20 12:22:15 -05:00
static int
testCompareXMLToConfFiles(const char *inxml, const char *outconf, dnsmasqCapsPtr caps)
2012-11-20 12:22:15 -05:00
{
char *actual = NULL;
int ret = -1;
virNetworkDefPtr dev = NULL;
virNetworkObjPtr obj = NULL;
virCommandPtr cmd = NULL;
char *pidfile = NULL;
dnsmasqContext *dctx = NULL;
2015-04-23 11:10:15 -04:00
if (!(dev = virNetworkDefParseFile(inxml)))
goto fail;
if (!(obj = virNetworkObjNew()))
goto fail;
obj->def = dev;
dctx = dnsmasqContextNew(dev->name, "/var/lib/libvirt/dnsmasq");
if (dctx == NULL)
goto fail;
if (networkDnsmasqConfContents(obj, pidfile, &actual,
dctx, caps) < 0)
goto fail;
2015-04-23 11:14:26 -04:00
if (virtTestCompareToFile(actual, outconf) < 0)
goto fail;
ret = 0;
fail:
2012-02-02 16:16:43 -07:00
VIR_FREE(actual);
VIR_FREE(pidfile);
virCommandFree(cmd);
virObjectUnref(obj);
dnsmasqContextFree(dctx);
return ret;
}
2012-11-20 12:22:15 -05:00
typedef struct {
const char *name;
dnsmasqCapsPtr caps;
} testInfo;
static int
testCompareXMLToConfHelper(const void *data)
{
int result = -1;
2012-11-20 12:22:15 -05:00
const testInfo *info = data;
char *inxml = NULL;
char *outxml = NULL;
if (virAsprintf(&inxml, "%s/networkxml2confdata/%s.xml",
2012-11-20 12:22:15 -05:00
abs_srcdir, info->name) < 0 ||
virAsprintf(&outxml, "%s/networkxml2confdata/%s.conf",
2012-11-20 12:22:15 -05:00
abs_srcdir, info->name) < 0) {
goto cleanup;
}
result = testCompareXMLToConfFiles(inxml, outxml, info->caps);
cleanup:
2012-02-02 16:16:43 -07:00
VIR_FREE(inxml);
VIR_FREE(outxml);
return result;
}
static int
mymain(void)
{
int ret = 0;
2012-11-20 12:22:15 -05:00
dnsmasqCapsPtr restricted
= dnsmasqCapsNewFromBuffer("Dnsmasq version 2.48", DNSMASQ);
dnsmasqCapsPtr full
= dnsmasqCapsNewFromBuffer("Dnsmasq version 2.63\n--bind-dynamic", DNSMASQ);
2012-12-06 12:20:38 -05:00
dnsmasqCapsPtr dhcpv6
= dnsmasqCapsNewFromBuffer("Dnsmasq version 2.64\n--bind-dynamic", DNSMASQ);
2012-11-20 12:22:15 -05:00
#define DO_TEST(xname, xcaps) \
do { \
static testInfo info; \
\
info.name = xname; \
info.caps = xcaps; \
if (virtTestRun("Network XML-2-Conf " xname, \
2013-09-20 19:13:35 +01:00
testCompareXMLToConfHelper, &info) < 0) { \
2012-11-20 12:22:15 -05:00
ret = -1; \
} \
} while (0)
DO_TEST("isolated-network", restricted);
DO_TEST("netboot-network", restricted);
DO_TEST("netboot-proxy-network", restricted);
DO_TEST("nat-network-dns-srv-record-minimal", restricted);
DO_TEST("nat-network-name-with-quotes", restricted);
2012-11-20 12:22:15 -05:00
DO_TEST("routed-network", full);
2012-12-06 12:20:38 -05:00
DO_TEST("nat-network", dhcpv6);
2012-11-20 12:22:15 -05:00
DO_TEST("nat-network-dns-txt-record", full);
DO_TEST("nat-network-dns-srv-record", full);
DO_TEST("nat-network-dns-hosts", full);
DO_TEST("nat-network-dns-forward-plain", full);
2013-09-13 13:31:07 -03:00
DO_TEST("nat-network-dns-forwarders", full);
DO_TEST("nat-network-dns-local-domain", full);
2012-12-06 12:20:38 -05:00
DO_TEST("dhcp6-network", dhcpv6);
DO_TEST("dhcp6-nat-network", dhcpv6);
DO_TEST("dhcp6host-routed-network", dhcpv6);
2014-03-17 10:38:38 +01:00
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
VIRT_TEST_MAIN(mymain)