[libvirt] [PATCH v2] test: fix nwfilter tests following changes in virfirewall.c

Stefan Berger stefanb at linux.vnet.ibm.com
Wed Nov 26 16:26:47 UTC 2014


Some of the nwfilter tests are now failing since --concurrent shows
up in the ebtables command. To avoid this, implement a function
preventing the probing for lock support in the eb/iptables tools
and use it in the tests.

Signed-off-by: Stefan Berger <stefanb at linux.vnet.ibm.com>
---
 src/libvirt_private.syms         | 1 +
 src/util/virfirewall.c           | 9 +++++++++
 src/util/virfirewall.h           | 2 ++
 tests/nwfilterebiptablestest.c   | 3 +++
 tests/nwfilterxml2firewalltest.c | 2 ++
 5 files changed, 17 insertions(+)

diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 2647d36..22d9116 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1362,6 +1362,7 @@ virFirewallRuleAddArgList;
 virFirewallRuleAddArgSet;
 virFirewallRuleGetArgCount;
 virFirewallSetBackend;
+virFirewallSetLockOverride;
 virFirewallStartRollback;
 virFirewallStartTransaction;
 
diff --git a/src/util/virfirewall.c b/src/util/virfirewall.c
index 8496062..b536912 100644
--- a/src/util/virfirewall.c
+++ b/src/util/virfirewall.c
@@ -107,6 +107,13 @@ VIR_ONCE_GLOBAL_INIT(virFirewall)
 static bool iptablesUseLock;
 static bool ip6tablesUseLock;
 static bool ebtablesUseLock;
+static bool lockOverride; /* true to avoid lock probes */
+
+void
+virFirewallSetLockOverride(bool avoid)
+{
+    lockOverride = avoid;
+}
 
 static void
 virFirewallCheckUpdateLock(bool *lockflag,
@@ -135,6 +142,8 @@ virFirewallCheckUpdateLocking(void)
     const char *ebtablesArgs[] = {
         EBTABLES_PATH, "--concurrent", "-L", NULL,
     };
+    if (lockOverride)
+        return;
     virFirewallCheckUpdateLock(&iptablesUseLock,
                                iptablesArgs);
     virFirewallCheckUpdateLock(&ip6tablesUseLock,
diff --git a/src/util/virfirewall.h b/src/util/virfirewall.h
index 1129219..dbf3975 100644
--- a/src/util/virfirewall.h
+++ b/src/util/virfirewall.h
@@ -106,4 +106,6 @@ void virFirewallStartRollback(virFirewallPtr firewall,
 
 int virFirewallApply(virFirewallPtr firewall);
 
+void virFirewallSetLockOverride(bool avoid);
+
 #endif /* __VIR_FIREWALL_H__ */
diff --git a/tests/nwfilterebiptablestest.c b/tests/nwfilterebiptablestest.c
index e04bc21..e1330ef 100644
--- a/tests/nwfilterebiptablestest.c
+++ b/tests/nwfilterebiptablestest.c
@@ -24,6 +24,7 @@
 #include "testutils.h"
 #include "nwfilter/nwfilter_ebiptables_driver.h"
 #include "virbuffer.h"
+#include "virfirewall.h"
 
 #define __VIR_FIREWALL_PRIV_H_ALLOW__
 #include "virfirewallpriv.h"
@@ -522,6 +523,8 @@ mymain(void)
 {
     int ret = 0;
 
+    virFirewallSetLockOverride(true);
+
     if (virFirewallSetBackend(VIR_FIREWALL_BACKEND_DIRECT) < 0) {
         ret = -1;
         goto cleanup;
diff --git a/tests/nwfilterxml2firewalltest.c b/tests/nwfilterxml2firewalltest.c
index 01527f4..167ad42 100644
--- a/tests/nwfilterxml2firewalltest.c
+++ b/tests/nwfilterxml2firewalltest.c
@@ -474,6 +474,8 @@ mymain(void)
             ret = -1;                                                   \
     } while (0)
 
+    virFirewallSetLockOverride(true);
+
     if (virFirewallSetBackend(VIR_FIREWALL_BACKEND_DIRECT) < 0) {
         ret = -1;
         goto cleanup;
-- 
1.9.3




More information about the libvir-list mailing list