Do not assume order of lvm.tun_ofports set elements
This fixes the test_fdb_add_flows unit test that breaks with a randomized PYTHONHASHSEED (see the bug report). The test assumed that the lvm.tun_ofports set had elements in a particular order. Found with PYTHONHASHSEED=2455351445 and 1595538922. The fix sorts the actions output string so that it is always sorted when the outputs are compared. Partial-bug: #1348818 Note: There are several other unrelated unit tests that also break with a randomized PYTHONHASHSEED, but they are not addressed here. They will be addressed in separate patches. Change-Id: I86b453a93f3ba09212709caf462cf3bfc5b21ee9
This commit is contained in:
parent
baa572ab8d
commit
ffd5650eb5
@ -1049,6 +1049,20 @@ class TestOvsNeutronAgent(base.BaseTestCase):
|
||||
{'2.2.2.2':
|
||||
[[FAKE_MAC, FAKE_IP1],
|
||||
n_const.FLOODING_ENTRY]}}}
|
||||
|
||||
class ActionMatcher(object):
|
||||
def __init__(self, action_str):
|
||||
self.ordered = self.order_ports(action_str)
|
||||
|
||||
def order_ports(self, action_str):
|
||||
halves = action_str.split('output:')
|
||||
ports = sorted(halves.pop().split(','))
|
||||
halves.append(','.join(ports))
|
||||
return 'output:'.join(halves)
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.ordered == self.order_ports(other)
|
||||
|
||||
with contextlib.nested(
|
||||
mock.patch.object(self.agent.tun_br, 'deferred'),
|
||||
mock.patch.object(self.agent.tun_br, 'do_action_flows'),
|
||||
@ -1076,8 +1090,8 @@ class TestOvsNeutronAgent(base.BaseTestCase):
|
||||
'set_tunnel:seg1,output:2')]),
|
||||
mock.call('mod', [dict(table=constants.FLOOD_TO_TUN,
|
||||
dl_vlan='vlan1',
|
||||
actions='strip_vlan,'
|
||||
'set_tunnel:seg1,output:1,2')]),
|
||||
actions=ActionMatcher('strip_vlan,'
|
||||
'set_tunnel:seg1,output:1,2'))]),
|
||||
]
|
||||
do_action_flows_fn.assert_has_calls(expected_calls)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user