[libvirt] [PATCH v2] tests: Partly fix networkxml2argvtest being configure result dependent

Matthias Bolte matthias.bolte at googlemail.com
Mon Jun 27 15:08:56 UTC 2011


Convert networkDnsmasqLeaseFileName to a replaceable function pointer
that allow the testsuite to use a version of that function that is not
depending on configure --localstatedir.

This fixes 5 of 6 test failures, when configure --localstatedir isn't
set to /var.
---

The last failure is related to networkBuildDhcpDaemonCommandLine
trying to indirectly write dnsmasq config files to disk. This needs
a larger rewrite to separate the config file writing out of
networkBuildDhcpDaemonCommandLine.

 src/network/bridge_driver.c |    5 ++++-
 src/network/bridge_driver.h |    5 +++++
 tests/networkxml2argvtest.c |   13 +++++++++++++
 3 files changed, 22 insertions(+), 1 deletions(-)

diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 1b11132..d009627 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -108,7 +108,7 @@ static void networkReloadIptablesRules(struct network_driver *driver);
 static struct network_driver *driverState = NULL;
 
 static char *
-networkDnsmasqLeaseFileName(const char *netname)
+networkDnsmasqLeaseFileNameDefault(const char *netname)
 {
     char *leasefile;
 
@@ -117,6 +117,9 @@ networkDnsmasqLeaseFileName(const char *netname)
     return leasefile;
 }
 
+networkDnsmasqLeaseFileNameFunc networkDnsmasqLeaseFileName =
+    networkDnsmasqLeaseFileNameDefault;
+
 static char *
 networkRadvdPidfileBasename(const char *netname)
 {
diff --git a/src/network/bridge_driver.h b/src/network/bridge_driver.h
index 8d82b67..a106e3d 100644
--- a/src/network/bridge_driver.h
+++ b/src/network/bridge_driver.h
@@ -34,4 +34,9 @@
 int networkRegister(void);
 int networkBuildDhcpDaemonCommandLine(virNetworkObjPtr network, virCommandPtr *cmdout, char *pidfile);
 
+typedef char *(*networkDnsmasqLeaseFileNameFunc)(const char *netname);
+
+/* this allows the testsuite to replace the lease filename resolver function */
+extern networkDnsmasqLeaseFileNameFunc networkDnsmasqLeaseFileName;
+
 #endif /* __VIR_NETWORK__DRIVER_H */
diff --git a/tests/networkxml2argvtest.c b/tests/networkxml2argvtest.c
index 16d57a9..62de191 100644
--- a/tests/networkxml2argvtest.c
+++ b/tests/networkxml2argvtest.c
@@ -85,11 +85,24 @@ cleanup:
     return result;
 }
 
+static char *
+testDnsmasqLeaseFileName(const char *netname)
+{
+    char *leasefile;
+
+    virAsprintf(&leasefile, "/var/lib/libvirt/dnsmasq/%s.leases",
+                netname);
+
+    return leasefile;
+}
+
 static int
 mymain(void)
 {
     int ret = 0;
 
+    networkDnsmasqLeaseFileName = testDnsmasqLeaseFileName;
+
 #define DO_TEST(name) \
     if (virtTestRun("Network XML-2-Argv " name, \
                     1, testCompareXMLToArgvHelper, (name)) < 0) \
-- 
1.7.0.4




More information about the libvir-list mailing list