From 9d6584120003f50782461677d1b783bd07131444 Mon Sep 17 00:00:00 2001 From: Hong Hui Xiao Date: Fri, 16 Oct 2015 12:39:32 -0400 Subject: [PATCH] The exception type is wrong and makes the except block not work According to the context, it should be KeyError here to catch. AttributeError will not happen here. More details could be found in the bug report. Change-Id: Id6351172703ac492e86475f75bf1be03f4e4e8a3 Closes-bug: #1506934 --- neutron/agent/l3/ha.py | 2 +- neutron/tests/unit/agent/l3/test_agent.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/neutron/agent/l3/ha.py b/neutron/agent/l3/ha.py index bafc7e71c..93e078935 100644 --- a/neutron/agent/l3/ha.py +++ b/neutron/agent/l3/ha.py @@ -117,7 +117,7 @@ class AgentMixin(object): try: ri = self.router_info[router_id] - except AttributeError: + except KeyError: LOG.info(_LI('Router %s is not managed by this agent. It was ' 'possibly deleted concurrently.'), router_id) return diff --git a/neutron/tests/unit/agent/l3/test_agent.py b/neutron/tests/unit/agent/l3/test_agent.py index a3649d9ee..88c9d4fec 100644 --- a/neutron/tests/unit/agent/l3/test_agent.py +++ b/neutron/tests/unit/agent/l3/test_agent.py @@ -178,6 +178,13 @@ class TestBasicRouterOperations(BasicRouterOperationsFramework): l3_agent.L3NATAgent(HOSTNAME, self.conf) self.ensure_dir.assert_called_once_with('/etc/ha/') + def test_enqueue_state_change_router_not_found(self): + agent = l3_agent.L3NATAgent(HOSTNAME, self.conf) + non_existent_router = 42 + + # Make sure the exceptional code path has coverage + agent.enqueue_state_change(non_existent_router, 'master') + def test_periodic_sync_routers_task_raise_exception(self): agent = l3_agent.L3NATAgent(HOSTNAME, self.conf) self.plugin_api.get_routers.side_effect = ValueError -- 2.45.2