Check master/backup router status in DVR functional tests
When two routers are created at the same time, we can't assume the status of each one. Instead of this, the status of each router is first checked and then compared to the other router status. Conflicts: neutron/tests/functional/agent/l3/test_dvr_router.py Change-Id: If20a3a414986ea29fbfd50616761c14e5b249b2c Closes-Bug: #1819160 (cherry picked from commit8f35331c91
) (cherry picked from commit8ba5899942
)
This commit is contained in:
parent
a5ca42d242
commit
9e8ea8edbc
|
@ -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')
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue