From d518c8f39ef7b39cf4508c41e163d1cc89a5571d Mon Sep 17 00:00:00 2001 From: Sridar Kandaswamy Date: Fri, 23 Aug 2013 00:39:18 -0700 Subject: [PATCH] Adding more unit tests for the FWaaS agent Change-Id: Ic3de53ed9fa47f6518cbb25dac4ee7782c97bfbb Fixes: bug #1215771 --- .../l3reference/test_firewall_l3_agent.py | 127 +++++++++++++++++- 1 file changed, 122 insertions(+), 5 deletions(-) diff --git a/neutron/tests/unit/services/firewall/agents/l3reference/test_firewall_l3_agent.py b/neutron/tests/unit/services/firewall/agents/l3reference/test_firewall_l3_agent.py index 04e072518..0aa650486 100644 --- a/neutron/tests/unit/services/firewall/agents/l3reference/test_firewall_l3_agent.py +++ b/neutron/tests/unit/services/firewall/agents/l3reference/test_firewall_l3_agent.py @@ -2,7 +2,6 @@ # # Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. -# # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at @@ -25,6 +24,8 @@ from oslo.config import cfg from neutron.agent.common import config as agent_config from neutron.common import config as base_config +from neutron import context +from neutron.plugins.common import constants from neutron.services.firewall.agents.l3reference import firewall_l3_agent from neutron.tests import base @@ -98,10 +99,10 @@ class TestFwaasL3AgentRpcCallback(base.BaseTestCase): mock.patch.object(self.api.fwaas_driver, 'create_firewall'), mock.patch.object(self.api.fwplugin_rpc, 'set_firewall_status') ) as ( - mock_get_routers, - mock_get_router_info_list_for_tenant, - mock_driver_create_firewall, - mock_set_firewall_status): + mock_get_routers, + mock_get_router_info_list_for_tenant, + mock_driver_create_firewall, + mock_set_firewall_status): mock_driver_create_firewall.return_value = True self.api.create_firewall( @@ -118,3 +119,119 @@ class TestFwaasL3AgentRpcCallback(base.BaseTestCase): mock.sentinel.context, fake_firewall['id'], 'ACTIVE') + + def test_invoke_driver_for_plugin_api_delete(self): + fake_firewall = {'id': 0, 'tenant_id': 1} + self.api.plugin_rpc = mock.Mock() + with contextlib.nested( + mock.patch.object(self.api.plugin_rpc, 'get_routers'), + mock.patch.object(self.api, '_get_router_info_list_for_tenant'), + mock.patch.object(self.api.fwaas_driver, 'delete_firewall'), + mock.patch.object(self.api.fwplugin_rpc, 'firewall_deleted') + ) as ( + mock_get_routers, + mock_get_router_info_list_for_tenant, + mock_driver_delete_firewall, + mock_firewall_deleted): + + mock_driver_delete_firewall.return_value = True + self.api.delete_firewall( + context=mock.sentinel.context, + firewall=fake_firewall, host='host') + + mock_get_routers.assert_called_once_with( + mock.sentinel.context) + + mock_get_router_info_list_for_tenant.assert_called_once_with( + mock_get_routers.return_value, fake_firewall['tenant_id']) + + mock_firewall_deleted.assert_called_once_with( + mock.sentinel.context, + fake_firewall['id']) + + def test_process_router_add_fw_update(self): + fake_firewall_list = [{'id': 0, 'tenant_id': 1, + 'status': constants.PENDING_UPDATE}] + fake_router = {'id': 1111, 'tenant_id': 2} + self.api.plugin_rpc = mock.Mock() + ri = mock.Mock() + ri.router = fake_router + routers = [ri.router] + with contextlib.nested( + mock.patch.object(self.api.plugin_rpc, 'get_routers'), + mock.patch.object(self.api, '_get_router_info_list_for_tenant'), + mock.patch.object(self.api.fwaas_driver, 'update_firewall'), + mock.patch.object(self.api.fwplugin_rpc, 'set_firewall_status'), + mock.patch.object(self.api.fwplugin_rpc, + 'get_firewalls_for_tenant'), + mock.patch.object(context, 'Context') + ) as ( + mock_get_routers, + mock_get_router_info_list_for_tenant, + mock_driver_update_firewall, + mock_set_firewall_status, + mock_get_firewalls_for_tenant, + mock_Context): + + mock_driver_update_firewall.return_value = True + ctx = mock.sentinel.context + mock_Context.return_value = ctx + mock_get_router_info_list_for_tenant.return_value = routers + mock_get_firewalls_for_tenant.return_value = fake_firewall_list + + self.api._process_router_add(ri) + mock_get_router_info_list_for_tenant.assert_called_with( + routers, + ri.router['tenant_id']) + mock_get_firewalls_for_tenant.assert_called_once_with(ctx) + mock_driver_update_firewall.assert_called_once( + routers, + fake_firewall_list[0]) + + mock_set_firewall_status.assert_called_once_with( + ctx, + fake_firewall_list[0]['id'], + constants.ACTIVE) + + def test_process_router_add_fw_delete(self): + fake_firewall_list = [{'id': 0, 'tenant_id': 1, + 'status': constants.PENDING_DELETE}] + fake_router = {'id': 1111, 'tenant_id': 2} + self.api.plugin_rpc = mock.Mock() + ri = mock.Mock() + ri.router = fake_router + routers = [ri.router] + with contextlib.nested( + mock.patch.object(self.api.plugin_rpc, 'get_routers'), + mock.patch.object(self.api, '_get_router_info_list_for_tenant'), + mock.patch.object(self.api.fwaas_driver, 'delete_firewall'), + mock.patch.object(self.api.fwplugin_rpc, 'firewall_deleted'), + mock.patch.object(self.api.fwplugin_rpc, + 'get_firewalls_for_tenant'), + mock.patch.object(context, 'Context') + ) as ( + mock_get_routers, + mock_get_router_info_list_for_tenant, + mock_driver_delete_firewall, + mock_firewall_deleted, + mock_get_firewalls_for_tenant, + mock_Context): + + mock_driver_delete_firewall.return_value = True + ctx = mock.sentinel.context + mock_Context.return_value = ctx + mock_get_router_info_list_for_tenant.return_value = routers + mock_get_firewalls_for_tenant.return_value = fake_firewall_list + + self.api._process_router_add(ri) + mock_get_router_info_list_for_tenant.assert_called_with( + routers, + ri.router['tenant_id']) + mock_get_firewalls_for_tenant.assert_called_once_with(ctx) + mock_driver_delete_firewall.assert_called_once( + routers, + fake_firewall_list[0]) + + mock_firewall_deleted.assert_called_once_with( + ctx, + fake_firewall_list[0]['id']) -- 2.45.2