Re: [PATCH v4 2/5] Network: Add regression tests for the command-line arguments

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 06/13/2011 12:55 PM, Michal Novotny wrote:
The regression testing done by comparison of command-line
generated from the network XML file and the expected
command-line arguments (read from file).

For the tests the pidfile should be set to NULL string, i.e.
(null) since no real invocation of the command is being done,
just the command-line is being generated and compared to the
expected one.

Signed-off-by: Michal Novotny<minovotn@xxxxxxxxxx>
---
  src/Makefile.am                                    |   11 ++-
  src/libvirt_network.syms                           |    6 +
  src/network/bridge_driver.c                        |   36 ++++++--
  src/network/bridge_driver.h                        |    3 +
  tests/Makefile.am                                  |   10 ++
  tests/networkxml2argvdata/isolated-network.argv    |    1 +
  tests/networkxml2argvdata/isolated-network.xml     |   11 ++
  .../nat-network-dns-txt-record.argv                |    1 +
  .../nat-network-dns-txt-record.xml                 |   24 +++++
  tests/networkxml2argvdata/nat-network.argv         |    1 +
  tests/networkxml2argvdata/nat-network.xml          |   21 ++++
  tests/networkxml2argvdata/netboot-network.argv     |    1 +
  tests/networkxml2argvdata/netboot-network.xml      |   14 +++
  .../networkxml2argvdata/netboot-proxy-network.argv |    1 +
  .../networkxml2argvdata/netboot-proxy-network.xml  |   13 +++
  tests/networkxml2argvdata/routed-network.argv      |    1 +
  tests/networkxml2argvdata/routed-network.xml       |    9 ++
  tests/networkxml2argvtest.c                        |   99 ++++++++++++++++++++
  18 files changed, 255 insertions(+), 8 deletions(-)
  create mode 100644 src/libvirt_network.syms
  create mode 100644 tests/networkxml2argvdata/isolated-network.argv
  create mode 100644 tests/networkxml2argvdata/isolated-network.xml
  create mode 100644 tests/networkxml2argvdata/nat-network-dns-txt-record.argv
  create mode 100644 tests/networkxml2argvdata/nat-network-dns-txt-record.xml
  create mode 100644 tests/networkxml2argvdata/nat-network.argv
  create mode 100644 tests/networkxml2argvdata/nat-network.xml
  create mode 100644 tests/networkxml2argvdata/netboot-network.argv
  create mode 100644 tests/networkxml2argvdata/netboot-network.xml
  create mode 100644 tests/networkxml2argvdata/netboot-proxy-network.argv
  create mode 100644 tests/networkxml2argvdata/netboot-proxy-network.xml
  create mode 100644 tests/networkxml2argvdata/routed-network.argv
  create mode 100644 tests/networkxml2argvdata/routed-network.xml
  create mode 100644 tests/networkxml2argvtest.c

diff --git a/src/Makefile.am b/src/Makefile.am
index 3612a24..a349f09 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -530,6 +530,10 @@ libvirt_driver_la_LIBADD = $(NUMACTL_LIBS) $(GNUTLS_LIBS)

  USED_SYM_FILES = libvirt_private.syms

+if WITH_NETWORK
+USED_SYM_FILES += libvirt_network.syms
+endif
+


This is an extra, isn't it (you've also done it below)?


  if WITH_TEST
  if WITH_DRIVER_MODULES
  mod_LTLIBRARIES += libvirt_driver_test.la
@@ -1089,6 +1093,10 @@ if WITH_XENXS
  USED_SYM_FILES += libvirt_xenxs.syms
  endif

+if WITH_NETWORK
+USED_SYM_FILES += libvirt_network.syms
+endif
+
  EXTRA_DIST += \
    libvirt_public.syms		\
    libvirt_private.syms		\
@@ -1099,7 +1107,8 @@ EXTRA_DIST += \
    libvirt_daemon.syms		\
    libvirt_nwfilter.syms	\
    libvirt_vmx.syms		\
-  libvirt_xenxs.syms
+  libvirt_xenxs.syms		\
+  libvirt_network.syms

  BUILT_SOURCES += libvirt.syms libvirt.def libvirt_qemu.def

diff --git a/src/libvirt_network.syms b/src/libvirt_network.syms
new file mode 100644
index 0000000..6be5e45
--- /dev/null
+++ b/src/libvirt_network.syms
@@ -0,0 +1,6 @@
+#
+# Network-specific symbols
+#
+
+# bridge_driver.h
+networkBuildDhcpDaemonCommandLine;
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 169bc08..2726a5b 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -633,12 +633,12 @@ cleanup:
      return ret;
  }

-static int
-networkStartDhcpDaemon(virNetworkObjPtr network)
+int
+networkBuildDhcpDaemonCommandLine(virNetworkObjPtr network, virCommandPtr *cmdout,
+                                  char *pidfile)
  {
      virCommandPtr cmd = NULL;
-    char *pidfile = NULL;
-    int ret = -1, err, ii;
+    int ret = -1, ii;
      virNetworkIpDefPtr ipdef;

      network->dnsmasqPid = -1;
@@ -663,6 +663,29 @@ networkStartDhcpDaemon(virNetworkObjPtr network)
      if (!virNetworkDefGetIpByIndex(network->def, AF_UNSPEC, 0))
          return 0;

+    cmd = virCommandNew(DNSMASQ);
+    if (networkBuildDnsmasqArgv(network, ipdef, pidfile, cmd)<  0) {
+        goto cleanup;
+    }
+
+    if (cmdout)
+        *cmdout = cmd;
+
+    ret = 0;
+cleanup:
+    if (ret<  0)
+        virCommandFree(cmd);
+    return ret;
+}
+
+static int
+networkStartDhcpDaemon(virNetworkObjPtr network)
+{
+    virCommandPtr cmd = NULL;
+    char *pidfile = NULL;
+    int ret = -1;
+    int err;
+
      if ((err = virFileMakePath(NETWORK_PID_DIR)) != 0) {
          virReportSystemError(err,
                               _("cannot create directory %s"),
@@ -688,10 +711,9 @@ networkStartDhcpDaemon(virNetworkObjPtr network)
          goto cleanup;
      }

-    cmd = virCommandNew(DNSMASQ);
-    if (networkBuildDnsmasqArgv(network, ipdef, pidfile, cmd)<  0) {
+    ret = networkBuildDhcpDaemonCommandLine(network,&cmd, pidfile);
+    if (ret<  0)
          goto cleanup;
-    }

      if (virCommandRun(cmd, NULL)<  0)
          goto cleanup;
diff --git a/src/network/bridge_driver.h b/src/network/bridge_driver.h
index 32d2ae7..8d82b67 100644
--- a/src/network/bridge_driver.h
+++ b/src/network/bridge_driver.h
@@ -28,7 +28,10 @@
  # include<config.h>

  # include "internal.h"
+# include "network_conf.h"
+# include "command.h"

  int networkRegister(void);
+int networkBuildDhcpDaemonCommandLine(virNetworkObjPtr network, virCommandPtr *cmdout, char *pidfile);

  #endif /* __VIR_NETWORK__DRIVER_H */
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7ae50a2..40eb71e 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -50,6 +50,7 @@ EXTRA_DIST =		\
  	networkschematest \
  	networkxml2xmlin \
  	networkxml2xmlout \
+	networkxml2argvdata \
  	nodedevschemadata \
  	nodedevschematest \
  	nodeinfodata     \
@@ -109,6 +110,8 @@ endif

  check_PROGRAMS += networkxml2xmltest

+check_PROGRAMS += networkxml2argvtest
+
  check_PROGRAMS += nwfilterxml2xmltest

  check_PROGRAMS += storagevolxml2xmltest storagepoolxml2xmltest
@@ -220,6 +223,8 @@ endif

  TESTS += networkxml2xmltest

+TESTS += networkxml2argvtest
+
  TESTS += storagevolxml2xmltest storagepoolxml2xmltest

  TESTS += nodedevxml2xmltest
@@ -347,6 +352,11 @@ networkxml2xmltest_SOURCES = \
  	testutils.c testutils.h
  networkxml2xmltest_LDADD = $(LDADDS)

+networkxml2argvtest_SOURCES = \
+	networkxml2argvtest.c \
+	testutils.c testutils.h
+networkxml2argvtest_LDADD = ../src/libvirt_driver_network.la $(LDADDS)
+
  nwfilterxml2xmltest_SOURCES = \
  	nwfilterxml2xmltest.c \
  	testutils.c testutils.h
diff --git a/tests/networkxml2argvdata/isolated-network.argv b/tests/networkxml2argvdata/isolated-network.argv
new file mode 100644
index 0000000..dce6034
--- /dev/null
+++ b/tests/networkxml2argvdata/isolated-network.argv
@@ -0,0 +1 @@
+/usr/sbin/dnsmasq --strict-order --bind-interfaces --pid-file=(null) --conf-file= --except-interface lo --dhcp-option=3 --listen-address 192.168.152.1 --dhcp-range 192.168.152.2,192.168.152.254 --dhcp-leasefile=/var/lib/libvirt/dnsmasq/private.leases --dhcp-lease-max=253 --dhcp-no-override
\ No newline at end of file
diff --git a/tests/networkxml2argvdata/isolated-network.xml b/tests/networkxml2argvdata/isolated-network.xml
new file mode 100644
index 0000000..cc320a9
--- /dev/null
+++ b/tests/networkxml2argvdata/isolated-network.xml
@@ -0,0 +1,11 @@
+<network>
+<name>private</name>
+<uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid>
+<bridge name='virbr2' stp='on' delay='0' />
+<mac address='52:54:00:17:3F:37'/>
+<ip address='192.168.152.1' netmask='255.255.255.0'>
+<dhcp>
+<range start='192.168.152.2' end='192.168.152.254' />
+</dhcp>
+</ip>
+</network>
diff --git a/tests/networkxml2argvdata/nat-network-dns-txt-record.argv b/tests/networkxml2argvdata/nat-network-dns-txt-record.argv
new file mode 100644
index 0000000..96fde34
--- /dev/null
+++ b/tests/networkxml2argvdata/nat-network-dns-txt-record.argv
@@ -0,0 +1 @@
+/usr/sbin/dnsmasq --strict-order --bind-interfaces --pid-file=(null) --conf-file= --except-interface lo --txt-record=example,example value --listen-address 192.168.122.1 --listen-address 192.168.123.1 --listen-


Every time I see your example (with "example value"), I pause for a minute and try to think of how this won't eventually lead to problems. Should we be putting quotes around this? Or escaping the space, or something?


address 2001:db8:ac10:fe01::1 --listen-address 2001:db8:ac10:fd01::1 --listen-address 10.24.10.1 --dhcp-range 192.168.122.2,192.168.122.254 --dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases --dhcp-lease-max=253 --dhcp-no-override --dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
\ No newline at end of file
diff --git a/tests/networkxml2argvdata/nat-network-dns-txt-record.xml b/tests/networkxml2argvdata/nat-network-dns-txt-record.xml
new file mode 100644
index 0000000..bd16976
--- /dev/null
+++ b/tests/networkxml2argvdata/nat-network-dns-txt-record.xml
@@ -0,0 +1,24 @@
+<network>
+<name>default</name>
+<uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid>
+<forward dev='eth1' mode='nat'/>
+<bridge name='virbr0' stp='on' delay='0' />
+<dns>
+<txt name='example' value='example value' />
+</dns>
+<ip address='192.168.122.1' netmask='255.255.255.0'>
+<dhcp>
+<range start='192.168.122.2' end='192.168.122.254' />
+<host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.10' />
+<host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' />
+</dhcp>
+</ip>
+<ip family='ipv4' address='192.168.123.1' netmask='255.255.255.0'>
+</ip>
+<ip family='ipv6' address='2001:db8:ac10:fe01::1' prefix='64'>
+</ip>
+<ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'>
+</ip>
+<ip family='ipv4' address='10.24.10.1'>
+</ip>
+</network>
diff --git a/tests/networkxml2argvdata/nat-network.argv b/tests/networkxml2argvdata/nat-network.argv
new file mode 100644
index 0000000..ccffa67
--- /dev/null
+++ b/tests/networkxml2argvdata/nat-network.argv
@@ -0,0 +1 @@
+/usr/sbin/dnsmasq --strict-order --bind-interfaces --pid-file=(null) --conf-file= --except-interface lo --listen-address 192.168.122.1 --listen-address 192.168.123.1 --listen-address 2001:db8:ac10:fe01::1 --listen-address 2001:db8:ac10:fd01::1 --listen-address 10.24.10.1 --dhcp-range 192.168.122.2,192.168.122.254 --dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases --dhcp-lease-max=253 --dhcp-no-override --dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
\ No newline at end of file
diff --git a/tests/networkxml2argvdata/nat-network.xml b/tests/networkxml2argvdata/nat-network.xml
new file mode 100644
index 0000000..eb71d9e
--- /dev/null
+++ b/tests/networkxml2argvdata/nat-network.xml
@@ -0,0 +1,21 @@
+<network>
+<name>default</name>
+<uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid>
+<forward dev='eth1' mode='nat'/>
+<bridge name='virbr0' stp='on' delay='0' />
+<ip address='192.168.122.1' netmask='255.255.255.0'>
+<dhcp>
+<range start='192.168.122.2' end='192.168.122.254' />
+<host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.10' />
+<host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' />
+</dhcp>
+</ip>
+<ip family='ipv4' address='192.168.123.1' netmask='255.255.255.0'>
+</ip>
+<ip family='ipv6' address='2001:db8:ac10:fe01::1' prefix='64'>
+</ip>
+<ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'>
+</ip>
+<ip family='ipv4' address='10.24.10.1'>
+</ip>
+</network>
diff --git a/tests/networkxml2argvdata/netboot-network.argv b/tests/networkxml2argvdata/netboot-network.argv
new file mode 100644
index 0000000..565c41b
--- /dev/null
+++ b/tests/networkxml2argvdata/netboot-network.argv
@@ -0,0 +1 @@
+/usr/sbin/dnsmasq --strict-order --bind-interfaces --domain example.com --pid-file=(null) --conf-file= --except-interface lo --listen-address 192.168.122.1 --dhcp-range 192.168.122.2,192.168.122.254 --dhcp-leasefile=/var/lib/libvirt/dnsmasq/netboot.leases --dhcp-lease-max=253 --dhcp-no-override --enable-tftp --tftp-root /var/lib/tftproot --dhcp-boot pxeboot.img
\ No newline at end of file
diff --git a/tests/networkxml2argvdata/netboot-network.xml b/tests/networkxml2argvdata/netboot-network.xml
new file mode 100644
index 0000000..b8a4d99
--- /dev/null
+++ b/tests/networkxml2argvdata/netboot-network.xml
@@ -0,0 +1,14 @@
+<network>
+<name>netboot</name>
+<uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid>
+<forward mode='nat'/>
+<bridge name='virbr1' stp='off' delay='1' />
+<domain name='example.com'/>
+<ip address='192.168.122.1' netmask='255.255.255.0'>
+<tftp root='/var/lib/tftproot' />
+<dhcp>
+<range start='192.168.122.2' end='192.168.122.254' />
+<bootp file='pxeboot.img' />
+</dhcp>
+</ip>
+</network>
diff --git a/tests/networkxml2argvdata/netboot-proxy-network.argv b/tests/networkxml2argvdata/netboot-proxy-network.argv
new file mode 100644
index 0000000..019367d
--- /dev/null
+++ b/tests/networkxml2argvdata/netboot-proxy-network.argv
@@ -0,0 +1 @@
+/usr/sbin/dnsmasq --strict-order --bind-interfaces --domain example.com --pid-file=(null) --conf-file= --except-interface lo --listen-address 192.168.122.1 --dhcp-range 192.168.122.2,192.168.122.254 --dhcp-leasefile=/var/lib/libvirt/dnsmasq/netboot.leases --dhcp-lease-max=253 --dhcp-no-override --dhcp-boot pxeboot.img,,10.20.30.40
\ No newline at end of file
diff --git a/tests/networkxml2argvdata/netboot-proxy-network.xml b/tests/networkxml2argvdata/netboot-proxy-network.xml
new file mode 100644
index 0000000..e11c50b
--- /dev/null
+++ b/tests/networkxml2argvdata/netboot-proxy-network.xml
@@ -0,0 +1,13 @@
+<network>
+<name>netboot</name>
+<uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid>
+<forward mode='nat'/>
+<bridge name='virbr1' stp='off' delay='1' />
+<domain name='example.com'/>
+<ip address='192.168.122.1' netmask='255.255.255.0'>
+<dhcp>
+<range start='192.168.122.2' end='192.168.122.254' />
+<bootp file='pxeboot.img' server='10.20.30.40' />
+</dhcp>
+</ip>
+</network>
diff --git a/tests/networkxml2argvdata/routed-network.argv b/tests/networkxml2argvdata/routed-network.argv
new file mode 100644
index 0000000..2b51d90
--- /dev/null
+++ b/tests/networkxml2argvdata/routed-network.argv
@@ -0,0 +1 @@
+/usr/sbin/dnsmasq --strict-order --bind-interfaces --pid-file=(null) --conf-file= --except-interface lo --listen-address 192.168.122.1
\ No newline at end of file
diff --git a/tests/networkxml2argvdata/routed-network.xml b/tests/networkxml2argvdata/routed-network.xml
new file mode 100644
index 0000000..3aa8109
--- /dev/null
+++ b/tests/networkxml2argvdata/routed-network.xml
@@ -0,0 +1,9 @@
+<network>
+<name>local</name>
+<uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid>
+<forward dev='eth1' mode='route'/>
+<bridge name='virbr1' stp='on' delay='0' />
+<mac address='12:34:56:78:9A:BC'/>
+<ip address='192.168.122.1' netmask='255.255.255.0'>
+</ip>
+</network>
diff --git a/tests/networkxml2argvtest.c b/tests/networkxml2argvtest.c
new file mode 100644
index 0000000..5e7f455
--- /dev/null
+++ b/tests/networkxml2argvtest.c
@@ -0,0 +1,99 @@
+#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"
+#include "command.h"
+#include "memory.h"
+#include "network/bridge_driver.h"
+
+static int testCompareXMLToArgvFiles(const char *inxml, const char *outargv) {
+    char *inXmlData = NULL;
+    char *outArgvData = NULL;
+    char *actual = NULL;
+    int ret = -1;
+    virNetworkDefPtr dev = NULL;
+    virNetworkObjPtr obj = NULL;
+    virCommandPtr cmd = NULL;
+    char *pidfile = NULL;
+
+    if (virtTestLoadFile(inxml,&inXmlData)<  0)
+        goto fail;
+
+    if (virtTestLoadFile(outargv,&outArgvData)<  0)
+        goto fail;
+
+    if (!(dev = virNetworkDefParseString(inXmlData)))
+        goto fail;
+
+    if (VIR_ALLOC(obj)<  0)
+        goto fail;
+
+    obj->def = dev;
+
+    if (networkBuildDhcpDaemonCommandLine(obj,&cmd, pidfile) != 0)


Standard practice in libvirt code is to check "< 0" rather than just "!= 0".


+        goto fail;
+
+    if (!(actual = virCommandToString(cmd)))
+        goto fail;
+
+    if (STRNEQ(outArgvData, actual)) {
+        virtTestDifference(stderr, outArgvData, actual);
+        goto fail;
+    }
+
+    ret = 0;
+
+ fail:
+    free(actual);
+    VIR_FREE(pidfile);
+    virCommandFree(cmd);
+    virNetworkObjFree(obj);
+    return ret;
+}
+
+static int testCompareXMLToArgvHelper(const void *data) {
+    char inxml[PATH_MAX];
+    char outargv[PATH_MAX];


cc1: warnings being treated as errors
networkxml2argvtest.c: In function 'testCompareXMLToArgvHelper':
networkxml2argvtest.c:71: error: the frame size of 8224 bytes is larger than 4096

You need to use virAsprintf instead of snprintf. You probably started with qemuxml2argvtest.c, which has a similar function, and was changed awhile back to eliminate large buffers on the stack.


+    snprintf(inxml, PATH_MAX, "%s/networkxml2argvdata/%s.xml",
+             abs_srcdir, (const char*)data);
+    snprintf(outargv, PATH_MAX, "%s/networkxml2argvdata/%s.argv",
+             abs_srcdir, (const char*)data);
+    return testCompareXMLToArgvFiles(inxml, outargv);
+}
+
+
+static int
+mymain(void)
+{
+    int ret = 0;
+    char cwd[PATH_MAX];
+
+    abs_srcdir = getenv("abs_srcdir");
+    if (!abs_srcdir)
+        abs_srcdir = getcwd(cwd, sizeof(cwd));


This code to set abs_srcdir is no longer needed, as it's done in commandhelper.c:main() (a good thing, since the method you're using requires a large stack buffer that triggers the same error as above).


+#define DO_TEST(name) \
+    if (virtTestRun("Network XML-2-Argv " name, \
+                    1, testCompareXMLToArgvHelper, (name))<  0) \
+        ret = -1
+
+    DO_TEST("isolated-network");
+    DO_TEST("routed-network");
+    DO_TEST("nat-network");
+    DO_TEST("netboot-network");
+    DO_TEST("netboot-proxy-network");
+    DO_TEST("nat-network-dns-txt-record");
+
+    return (ret==0 ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+
+VIRT_TEST_MAIN(mymain)

After fixing the above problems, when I run this test as non-root, I get the following error:

3) Network XML-2-Argv nat-network ... 08:46:00.612: 20502: info : libvirt version: 0.9.2 08:46:00.612: 20502: error : hostsfileSave:216 : cannot write config file '/var/lib/libvirt/dnsmasq/default.hostsfile': Unknown error 18446744073709551603

The problem is that the test is calling networkBuildDhcpDaemonCommandLine, which calls networkBuildDnsmasqArgv,
which calls networkSaveDnsmasqHostsfile.

Here's a diff addressing all the above issues *except* the last one (that's beyond the scope of the time that I have :-):
>From f16ca39acfa4bc9c581b73f8a4a0e1855a5f0287 Mon Sep 17 00:00:00 2001
From: Laine Stump <laine@xxxxxxxxx>
Date: Mon, 13 Jun 2011 20:34:41 -0400
Subject: [PATCH] squash into txt record 2/5

---
 src/Makefile.am             |    4 ----
 tests/networkxml2argvtest.c |   28 +++++++++++++++-------------
 2 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/src/Makefile.am b/src/Makefile.am
index edaedec..cba8cae 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -530,10 +530,6 @@ libvirt_driver_la_LIBADD = $(NUMACTL_LIBS) $(GNUTLS_LIBS) $(DLOPEN_LIBS)
 
 USED_SYM_FILES = libvirt_private.syms
 
-if WITH_NETWORK
-USED_SYM_FILES += libvirt_network.syms
-endif
-
 if WITH_TEST
 if WITH_DRIVER_MODULES
 mod_LTLIBRARIES += libvirt_driver_test.la
diff --git a/tests/networkxml2argvtest.c b/tests/networkxml2argvtest.c
index 5e7f455..021539a 100644
--- a/tests/networkxml2argvtest.c
+++ b/tests/networkxml2argvtest.c
@@ -39,7 +39,7 @@ static int testCompareXMLToArgvFiles(const char *inxml, const char *outargv) {
 
     obj->def = dev;
 
-    if (networkBuildDhcpDaemonCommandLine(obj, &cmd, pidfile) != 0)
+    if (networkBuildDhcpDaemonCommandLine(obj, &cmd, pidfile) < 0)
         goto fail;
 
     if (!(actual = virCommandToString(cmd)))
@@ -61,13 +61,20 @@ static int testCompareXMLToArgvFiles(const char *inxml, const char *outargv) {
 }
 
 static int testCompareXMLToArgvHelper(const void *data) {
-    char inxml[PATH_MAX];
-    char outargv[PATH_MAX];
-    snprintf(inxml, PATH_MAX, "%s/networkxml2argvdata/%s.xml",
-             abs_srcdir, (const char*)data);
-    snprintf(outargv, PATH_MAX, "%s/networkxml2argvdata/%s.argv",
-             abs_srcdir, (const char*)data);
-    return testCompareXMLToArgvFiles(inxml, outargv);
+    int result = -1;
+    char *inxml = NULL;
+    char *outargv = NULL;
+    if (virAsprintf(&inxml, "%s/networkxml2argvdata/%s.xml",
+             abs_srcdir, (const char*)data) < 0 ||
+        virAsprintf(&outargv, "%s/networkxml2argvdata/%s.argv",
+                    abs_srcdir, (const char*)data) < 0)
+       goto cleanup;
+    result = testCompareXMLToArgvFiles(inxml, outargv);
+
+cleanup:
+    VIR_FREE(inxml);
+    VIR_FREE(outargv);
+    return result;
 }
 
 
@@ -75,11 +82,6 @@ static int
 mymain(void)
 {
     int ret = 0;
-    char cwd[PATH_MAX];
-
-    abs_srcdir = getenv("abs_srcdir");
-    if (!abs_srcdir)
-        abs_srcdir = getcwd(cwd, sizeof(cwd));
 
 #define DO_TEST(name) \
     if (virtTestRun("Network XML-2-Argv " name, \
-- 
1.7.3.4

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]