From: Assaf Muller Date: Thu, 23 Apr 2015 17:43:29 +0000 (-0400) Subject: Fix L3 agent functional tests random failures X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=e2d5be1cb3094ffbfc979aa04262f3dbc43f38ec;p=openstack-build%2Fneutron-build.git Fix L3 agent functional tests random failures The test_ha_router_failover tests were not being unmocked. This is because the same object was being mocked twice, but unmocked once. The mock.patch.stopall call in the tests base class was rewinding the value of the object from the second mock to the first mock. Follow up tests in the same worker were using namespace names defined via the first mock in the failover test. Closes-Bug: #1446261 Change-Id: I8f24b8bb3a6a501dbe210c2cc67c47fa4b76257c --- diff --git a/neutron/tests/functional/agent/test_l3_agent.py b/neutron/tests/functional/agent/test_l3_agent.py index 87cef79c1..f628e4b00 100755 --- a/neutron/tests/functional/agent/test_l3_agent.py +++ b/neutron/tests/functional/agent/test_l3_agent.py @@ -719,11 +719,11 @@ class L3HATestFramework(L3AgentTestFramework): def test_ha_router_failover(self): router_info = self.generate_router_info(enable_ha=True) - ns_name = "%s%s%s" % ( - namespaces.RouterNamespace._get_ns_name(router_info['id']), - self.NESTED_NAMESPACE_SEPARATOR, self.agent.host) - mock.patch.object(namespaces.RouterNamespace, '_get_ns_name', - return_value=ns_name).start() + get_ns_name = mock.patch.object( + namespaces.RouterNamespace, '_get_ns_name').start() + get_ns_name.return_value = "%s%s%s" % ( + namespaces.RouterNamespace._get_ns_name(router_info['id']), + self.NESTED_NAMESPACE_SEPARATOR, self.agent.host) router1 = self.manage_router(self.agent, router_info) router_info_2 = copy.deepcopy(router_info) @@ -731,19 +731,15 @@ class L3HATestFramework(L3AgentTestFramework): test_l3_agent.get_ha_interface(ip='169.254.192.2', mac='22:22:22:22:22:22')) - ns_name = "%s%s%s" % ( - namespaces.RouterNamespace._get_ns_name(router_info_2['id']), - self.NESTED_NAMESPACE_SEPARATOR, self.failover_agent.host) - mock.patch.object(namespaces.RouterNamespace, '_get_ns_name', - return_value=ns_name).start() + get_ns_name.return_value = "%s%s%s" % ( + namespaces.RouterNamespace._get_ns_name(router_info_2['id']), + self.NESTED_NAMESPACE_SEPARATOR, self.failover_agent.host) router2 = self.manage_router(self.failover_agent, router_info_2) utils.wait_until_true(lambda: router1.ha_state == 'master') utils.wait_until_true(lambda: router2.ha_state == 'backup') - device_name = router1.get_ha_device_name() - ha_device = ip_lib.IPDevice(device_name, namespace=router1.ns_name) - ha_device.link.set_down() + self.fail_ha_router(router1) utils.wait_until_true(lambda: router2.ha_state == 'master') utils.wait_until_true(lambda: router1.ha_state == 'backup')