From 916e7745166d404f187533de702726aac3ef6eba Mon Sep 17 00:00:00 2001 From: Slawek Kaplonski Date: Tue, 6 Nov 2018 15:36:44 +0100 Subject: [PATCH] Wait to ipv6 forwarding be really changed by L3 agent In test test_ha_router_namespace_has_ipv6_forwarding_disabled functional test it may happen that L3 agent will not change ipv6 forwarding and test fails because it checks that only once just after router state is change to master. This patch fixes that race by adding wait for 60 seconds to ipv6 forwarding change. Change-Id: I85a602561ebe9b7ab135913af49a3f010b09f196 Closes-Bug: #1801930 --- .../functional/agent/l3/test_ha_router.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/neutron/tests/functional/agent/l3/test_ha_router.py b/neutron/tests/functional/agent/l3/test_ha_router.py index 931a0f080d9..eb4dc085e1c 100644 --- a/neutron/tests/functional/agent/l3/test_ha_router.py +++ b/neutron/tests/functional/agent/l3/test_ha_router.py @@ -340,6 +340,14 @@ class L3HATestCase(framework.L3AgentTestFramework): raise self.assertEqual(0, ip_nonlocal_bind_value) + def _wait_until_ipv6_forwarding_has_state(self, ns_name, dev_name, state): + + def _ipv6_forwarding_has_state(): + return ip_lib.get_ipv6_forwarding( + device=dev_name, namespace=ns_name) == state + + common_utils.wait_until_true(_ipv6_forwarding_has_state) + @testtools.skipUnless(ipv6_utils.is_enabled_and_bind_by_default(), "IPv6 is not enabled") def test_ha_router_namespace_has_ipv6_forwarding_disabled(self): @@ -352,17 +360,15 @@ class L3HATestCase(framework.L3AgentTestFramework): external_port['id']) common_utils.wait_until_true(lambda: router.ha_state == 'backup') - self.assertEqual( - 0, ip_lib.get_ipv6_forwarding(device=external_device_name, - namespace=router.ns_name)) + self._wait_until_ipv6_forwarding_has_state( + router.ns_name, external_device_name, 0) router.router[constants.HA_INTERFACE_KEY]['status'] = ( constants.PORT_STATUS_ACTIVE) self.agent._process_updated_router(router.router) common_utils.wait_until_true(lambda: router.ha_state == 'master') - self.assertEqual( - 1, ip_lib.get_ipv6_forwarding(device=external_device_name, - namespace=router.ns_name)) + self._wait_until_ipv6_forwarding_has_state( + router.ns_name, external_device_name, 1) class L3HATestFailover(framework.L3AgentTestFramework):