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