summaryrefslogtreecommitdiff
path: root/neutron/tests/common/net_helpers.py
diff options
context:
space:
mode:
Diffstat (limited to 'neutron/tests/common/net_helpers.py')
-rw-r--r--neutron/tests/common/net_helpers.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/neutron/tests/common/net_helpers.py b/neutron/tests/common/net_helpers.py
index a070ec4eb4..43f3a40094 100644
--- a/neutron/tests/common/net_helpers.py
+++ b/neutron/tests/common/net_helpers.py
@@ -738,6 +738,19 @@ class PortFixture(fixtures.Fixture):
return VethPortFixture(bridge, namespace)
tools.fail('Unexpected bridge type: %s' % type(bridge))
+ def set_port_mac_address(self):
+
+ def set_mac_address():
+ self.port.link.set_address(self.mac)
+ return self.port.link.address.lower() == self.mac.lower()
+
+ try:
+ common_utils.wait_until_true(set_mac_address, timeout=10)
+ except common_utils.WaitTimeout:
+ LOG.error("MAC address of the port %s not set properly. "
+ "Requested MAC: %s; Actual MAC: %s",
+ self.port, self.mac, self.port.link.address)
+
class OVSBridgeFixture(fixtures.Fixture):
"""Create an OVS bridge.
@@ -850,7 +863,7 @@ class OVSPortFixture(PortFixture):
bridge_port.link.set_up()
self.qbr.addif(bridge_port)
- self.port.link.set_address(self.mac)
+ self.set_port_mac_address()
self.port.link.set_up()
# NOTE(jlibosva): Methods below are taken from nova.virt.libvirt.vif
@@ -941,8 +954,7 @@ class LinuxBridgePortFixture(PortFixture):
self.veth_fixture = self.useFixture(VethFixture())
self.br_port, self.port = self.veth_fixture.ports
- if self.mac:
- self.port.link.set_address(self.mac)
+ self.set_port_mac_address()
# bridge side
br_ip_wrapper = ip_lib.IPWrapper(self.bridge.namespace)