Edward Haas has uploaded a new change for review.

Change subject: net test: test_ip_info - Wait for IP settingi with address
......................................................................

net test: test_ip_info - Wait for IP settingi with address

This is a second attempt to handle the random failing test on CI run.
This time, we are more specific in the 'waiting' statement, and include
the expected address part.

It is suspected that multiple duplicate netlink events are arriving,
causing a false waiting.

Change-Id: I1c2832c1ec7614e1df9c291a9f3ab2e4a1134242
Signed-off-by: Edward Haas <edwa...@redhat.com>
---
M lib/vdsm/network/netlink/waitfor.py
M tests/network/netinfo_test.py
2 files changed, 15 insertions(+), 11 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/60/63660/1

diff --git a/lib/vdsm/network/netlink/waitfor.py 
b/lib/vdsm/network/netlink/waitfor.py
index 170e00f..0880244 100644
--- a/lib/vdsm/network/netlink/waitfor.py
+++ b/lib/vdsm/network/netlink/waitfor.py
@@ -42,15 +42,19 @@
 
 
 @contextmanager
-def waitfor_ipv4_addr(iface, timeout=10):
+def waitfor_ipv4_addr(iface, address=None, timeout=10):
     expected_event = {'label': iface, 'family': 'inet', 'scope': 'global'}
+    if address:
+        expected_event.update(address=address)
     with _wait_for_event(iface, expected_event, timeout):
         yield
 
 
 @contextmanager
-def waitfor_ipv6_addr(iface, timeout=10):
+def waitfor_ipv6_addr(iface, address=None, timeout=10):
     expected_event = {'label': iface, 'family': 'inet6', 'scope': 'global'}
+    if address:
+        expected_event.update(address=address)
     with _wait_for_event(iface, expected_event, timeout):
         yield
 
diff --git a/tests/network/netinfo_test.py b/tests/network/netinfo_test.py
index 799f9b4..1a6ef22 100644
--- a/tests/network/netinfo_test.py
+++ b/tests/network/netinfo_test.py
@@ -333,41 +333,41 @@
         PREFIX_LENGTH = 24
         IPV6_PREFIX_LENGTH = 64
         IP_ADDR_CIDR = self._cidr_form(IP_ADDR, PREFIX_LENGTH)
-        IP_ADDR_SECOND_CIDR = self._cidr_form(IP_ADDR_SECOND, PREFIX_LENGTH)
+        IP_ADDR_2ND_CIDR = self._cidr_form(IP_ADDR_SECOND, PREFIX_LENGTH)
         IP_ADDR2_CIDR = self._cidr_form(IP_ADDR2, PREFIX_LENGTH)
         IP_ADDR3_CIDR = self._cidr_form(IP_ADDR3, 32)
         IPV6_ADDR_CIDR = self._cidr_form(IPV6_ADDR, IPV6_PREFIX_LENGTH)
         with dummy_device() as device:
-            with waitfor.waitfor_ipv4_addr(device):
+            with waitfor.waitfor_ipv4_addr(device, address=IP_ADDR_CIDR):
                 ipwrapper.addrAdd(device, IP_ADDR, PREFIX_LENGTH)
-            with waitfor.waitfor_ipv4_addr(device):
+            with waitfor.waitfor_ipv4_addr(device, address=IP_ADDR_2ND_CIDR):
                 ipwrapper.addrAdd(device, IP_ADDR_SECOND, PREFIX_LENGTH)
-            with waitfor.waitfor_ipv4_addr(device):
+            with waitfor.waitfor_ipv4_addr(device, address=IP_ADDR2_CIDR):
                 ipwrapper.addrAdd(device, IP_ADDR2, PREFIX_LENGTH)
-            with waitfor.waitfor_ipv6_addr(device):
+            with waitfor.waitfor_ipv6_addr(device, address=IPV6_ADDR_CIDR):
                 ipwrapper.addrAdd(
                     device, IPV6_ADDR, IPV6_PREFIX_LENGTH, family=6)
             # 32 bit addresses are reported slashless by netlink
-            with waitfor.waitfor_ipv4_addr(device):
+            with waitfor.waitfor_ipv4_addr(device, address=IP_ADDR3):
                 ipwrapper.addrAdd(device, IP_ADDR3, 32)
 
             self.assertEqual(
                 get_ip_info(device),
                 (IP_ADDR, NET_MASK,
                  [IP_ADDR_CIDR, IP_ADDR2_CIDR, IP_ADDR3_CIDR,
-                  IP_ADDR_SECOND_CIDR],
+                  IP_ADDR_2ND_CIDR],
                  [IPV6_ADDR_CIDR]))
             self.assertEqual(
                 get_ip_info(device, ipv4_gateway=IP_ADDR_GW),
                 (IP_ADDR, NET_MASK,
                  [IP_ADDR_CIDR, IP_ADDR2_CIDR, IP_ADDR3_CIDR,
-                  IP_ADDR_SECOND_CIDR],
+                  IP_ADDR_2ND_CIDR],
                  [IPV6_ADDR_CIDR]))
             self.assertEqual(
                 get_ip_info(device, ipv4_gateway=IP_ADDR2_GW),
                 (IP_ADDR2, NET_MASK,
                  [IP_ADDR_CIDR, IP_ADDR2_CIDR, IP_ADDR3_CIDR,
-                  IP_ADDR_SECOND_CIDR],
+                  IP_ADDR_2ND_CIDR],
                  [IPV6_ADDR_CIDR]))
 
     def test_netinfo_ignoring_link_scope_ip(self):


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1c2832c1ec7614e1df9c291a9f3ab2e4a1134242
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Edward Haas <edwa...@redhat.com>
_______________________________________________
vdsm-patches mailing list
vdsm-patches@lists.fedorahosted.org
https://lists.fedorahosted.org/admin/lists/vdsm-patches@lists.fedorahosted.org

Reply via email to