Wait to ipv6 accept_ra be really changed by L3 agent

In functional tests for L3 HA agent, like e.g.
L3HATestFailover.test_ha_router_failover
it may happen that L3 agent will not change ipv6 accept_ra
knob and test fails because it checks that only once just
after router state is change.

This patch fixes that race by adding wait for 60 seconds to
ipv6 accept_ra change.

Conflicts:
    neutron/tests/functional/agent/l3/framework.py

Change-Id: I459ce4b791c27b1e3d977e0de9fbdb21a8a379f5
Closes-Bug: #1829889
(cherry picked from commit 62b2f2b1b1)
This commit is contained in:
Slawek Kaplonski 2019-05-22 13:49:55 +02:00
parent 5505517295
commit 21f150dc5d
1 changed files with 15 additions and 4 deletions

View File

@ -224,14 +224,25 @@ class L3AgentTestFramework(base.BaseSudoTestCase):
def _assert_external_device(self, router):
self.assertTrue(self._check_external_device(router))
def _wait_until_ipv6_accept_ra_has_state(
self, ns_name, device_name, enabled):
ip_wrapper = ip_lib.IPWrapper(namespace=ns_name)
def _ipv6_accept_ra_state():
ra_state = ip_wrapper.netns.execute(['sysctl', '-b',
'net.ipv6.conf.%s.accept_ra' % device_name])
return (
enabled == (int(ra_state) != n_const.ACCEPT_RA_DISABLED))
common_utils.wait_until_true(_ipv6_accept_ra_state)
def _assert_ipv6_accept_ra(self, router, enabled=True):
external_port = router.get_ex_gw_port()
external_device_name = router.get_external_device_name(
external_port['id'])
ip_wrapper = ip_lib.IPWrapper(namespace=router.ns_name)
ra_state = ip_wrapper.netns.execute(['sysctl', '-b',
'net.ipv6.conf.%s.accept_ra' % external_device_name])
self.assertEqual(enabled, int(ra_state) != n_const.ACCEPT_RA_DISABLED)
self._wait_until_ipv6_accept_ra_has_state(
router.ns_name, external_device_name, enabled)
def _wait_until_ipv6_forwarding_has_state(self, ns_name, dev_name, state):