Change in vdsm[master]: testEnablePromisc: wait for promisc event

danken at redhat.com danken at redhat.com
Wed Jan 6 11:00:41 UTC 2016


Dan Kenigsberg has uploaded a new change for review.

Change subject: testEnablePromisc: wait for promisc event
......................................................................

testEnablePromisc: wait for promisc event

We have seen cases where testEnablePromisc failed on CI. This could have
been caused if the test is faster than the kernel, and tests the promisc
flag before it was applied to the link.

There might be many more similar races in our tests; this patch should
serve only as a proof of concept.

Change-Id: I8ebd26a8f6e2da3aad88a32ff73753926b3e41c3
Signed-off-by: Dan Kenigsberg <danken at redhat.com>
---
M tests/ipwrapperTests.py
1 file changed, 9 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/10/51410/1

diff --git a/tests/ipwrapperTests.py b/tests/ipwrapperTests.py
index e99280d..404295c 100644
--- a/tests/ipwrapperTests.py
+++ b/tests/ipwrapperTests.py
@@ -22,6 +22,7 @@
 from vdsm import ipwrapper
 from vdsm.ipwrapper import Route
 from vdsm.ipwrapper import Rule
+from vdsm.netlink import monitor
 
 from nettestlib import Bridge, requires_brctl
 from testlib import VdsmTestCase as TestCaseBase
@@ -125,9 +126,14 @@
                          ipwrapper.LinkType.BRIDGE)
 
     def testEnablePromisc(self):
-        ipwrapper.getLink(self._bridge.devName).promisc = True
-        self.assertTrue(ipwrapper.getLink(self._bridge.devName).promisc,
-                        "Could not enable promiscuous mode.")
+        link = ipwrapper.getLink(self._bridge.devName)
+        with monitor.Monitor(timeout=2, silent_timeout=True) as mon:
+            link.promisc = True
+            for event in mon:
+                if (event['event'] == 'new_link' and
+                        event.get('flags', 0) & ipwrapper.Link.IFF_PROMISC):
+                    return
+        self.fail("Could not enable promiscuous mode.")
 
     def testDisablePromisc(self):
         ipwrapper.getLink(self._bridge.devName).promisc = True


-- 
To view, visit https://gerrit.ovirt.org/51410
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8ebd26a8f6e2da3aad88a32ff73753926b3e41c3
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Dan Kenigsberg <danken at redhat.com>


More information about the vdsm-patches mailing list