diff --git a/neutron/tests/functional/agent/l3/framework.py b/neutron/tests/functional/agent/l3/framework.py index e4f5e6daf73..e2fd86fa651 100644 --- a/neutron/tests/functional/agent/l3/framework.py +++ b/neutron/tests/functional/agent/l3/framework.py @@ -609,26 +609,30 @@ class L3AgentTestFramework(base.BaseSudoTestCase): return (router1, router2) - def _get_master_and_slave_routers(self, router1, router2): + def _get_master_and_slave_routers(self, router1, router2, + check_external_device=True): try: common_utils.wait_until_true( lambda: router1.ha_state == 'master') - common_utils.wait_until_true( - lambda: self._check_external_device(router1)) + if check_external_device: + common_utils.wait_until_true( + lambda: self._check_external_device(router1)) master_router = router1 slave_router = router2 except common_utils.WaitTimeout: common_utils.wait_until_true( lambda: router2.ha_state == 'master') - common_utils.wait_until_true( - lambda: self._check_external_device(router2)) + if check_external_device: + common_utils.wait_until_true( + lambda: self._check_external_device(router2)) master_router = router2 slave_router = router1 common_utils.wait_until_true( lambda: master_router.ha_state == 'master') - common_utils.wait_until_true( + if check_external_device: + common_utils.wait_until_true( lambda: self._check_external_device(master_router)) common_utils.wait_until_true( lambda: slave_router.ha_state == 'backup') diff --git a/neutron/tests/functional/agent/l3/test_dvr_router.py b/neutron/tests/functional/agent/l3/test_dvr_router.py index d87b9783941..910abe8c497 100644 --- a/neutron/tests/functional/agent/l3/test_dvr_router.py +++ b/neutron/tests/functional/agent/l3/test_dvr_router.py @@ -1483,18 +1483,18 @@ class TestDvrRouter(framework.L3AgentTestFramework): self.failover_agent, enable_gw=enable_gw, enable_centralized_fip=enable_centralized_fip, snat_bound_fip=snat_bound_fip) - utils.wait_until_true(lambda: router1.ha_state == 'master') - utils.wait_until_true(lambda: router2.ha_state == 'backup') + master, backup = self._get_master_and_slave_routers( + router1, router2, check_external_device=False) - self._assert_ip_addresses_in_dvr_ha_snat_namespace_with_fip(router1) - self._assert_no_ip_addresses_in_dvr_ha_snat_namespace_with_fip(router2) - self.fail_ha_router(router1) + self._assert_ip_addresses_in_dvr_ha_snat_namespace_with_fip(master) + self._assert_no_ip_addresses_in_dvr_ha_snat_namespace_with_fip(backup) + self.fail_ha_router(master) - utils.wait_until_true(lambda: router2.ha_state == 'master') - utils.wait_until_true(lambda: router1.ha_state == 'backup') + utils.wait_until_true(lambda: backup.ha_state == 'master') + utils.wait_until_true(lambda: master.ha_state == 'backup') - self._assert_ip_addresses_in_dvr_ha_snat_namespace_with_fip(router2) - self._assert_no_ip_addresses_in_dvr_ha_snat_namespace_with_fip(router1) + self._assert_ip_addresses_in_dvr_ha_snat_namespace_with_fip(backup) + self._assert_no_ip_addresses_in_dvr_ha_snat_namespace_with_fip(master) def _test_dvr_ha_router_failover(self, enable_gw): self._setup_dvr_ha_agents() @@ -1503,19 +1503,19 @@ class TestDvrRouter(framework.L3AgentTestFramework): router1 = self._create_dvr_ha_router(self.agent, enable_gw=enable_gw) router2 = self._create_dvr_ha_router(self.failover_agent, enable_gw) - utils.wait_until_true(lambda: router1.ha_state == 'master') - utils.wait_until_true(lambda: router2.ha_state == 'backup') + master, backup = self._get_master_and_slave_routers( + router1, router2, check_external_device=False) - self._assert_ip_addresses_in_dvr_ha_snat_namespace(router1) - self._assert_no_ip_addresses_in_dvr_ha_snat_namespace(router2) + self._assert_ip_addresses_in_dvr_ha_snat_namespace(master) + self._assert_no_ip_addresses_in_dvr_ha_snat_namespace(backup) - self.fail_ha_router(router1) + self.fail_ha_router(master) - utils.wait_until_true(lambda: router2.ha_state == 'master') - utils.wait_until_true(lambda: router1.ha_state == 'backup') + utils.wait_until_true(lambda: backup.ha_state == 'master') + utils.wait_until_true(lambda: master.ha_state == 'backup') - self._assert_ip_addresses_in_dvr_ha_snat_namespace(router2) - self._assert_no_ip_addresses_in_dvr_ha_snat_namespace(router1) + self._assert_ip_addresses_in_dvr_ha_snat_namespace(backup) + self._assert_no_ip_addresses_in_dvr_ha_snat_namespace(master) def test_dvr_ha_router_failover_with_gw(self): self._test_dvr_ha_router_failover(enable_gw=True)