From 2c700bfb82c2fda50fa0b2477612e88dff31c5e2 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 7 Oct 2015 12:41:21 +0900 Subject: [PATCH] Add some more tests Partial-Bug: #1501792 Change-Id: I6d49546aba5610831842ac720765b045f65b0ae9 --- .../unit/services/taas/test_taas_plugin.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/neutron_taas/tests/unit/services/taas/test_taas_plugin.py b/neutron_taas/tests/unit/services/taas/test_taas_plugin.py index aedd75a..f0e3267 100644 --- a/neutron_taas/tests/unit/services/taas/test_taas_plugin.py +++ b/neutron_taas/tests/unit/services/taas/test_taas_plugin.py @@ -21,6 +21,7 @@ import testtools from oslo_utils import uuidutils import neutron.common.rpc as n_rpc +import neutron.common.utils as n_utils from neutron import context from neutron.tests.unit import testlib_api @@ -45,6 +46,8 @@ class TestTaasPlugin(testlib_api.SqlTestCaseLight): self._port_details = { 'tenant_id': self._tenant_id, 'binding:host_id': self._host_id, + 'mac_address': n_utils.get_random_mac( + 'fa:16:3e:00:00:00'.split(':')), } self._tap_service = { 'tenant_id': self._tenant_id, @@ -53,6 +56,13 @@ class TestTaasPlugin(testlib_api.SqlTestCaseLight): 'port_id': self._port_id, 'network_id': self._network_id, } + self._tap_flow = { + 'description': 'This is my tap flow', + 'direction': 'BOTH', + 'name': 'MyTapFlow', + 'source_port': self._port_id, + 'tenant_id': self._tenant_id, + } @contextlib.contextmanager def tap_service(self): @@ -73,6 +83,30 @@ class TestTaasPlugin(testlib_api.SqlTestCaseLight): self._host_id), ]) + @contextlib.contextmanager + def tap_flow(self, tap_service, tenant_id=None): + self._tap_flow['tap_service_id'] = tap_service + if tenant_id is not None: + self._tap_flow['tenant_id'] = tenant_id + req = { + 'tap_flow': self._tap_flow, + } + with mock.patch.object(self._plugin, '_get_port_details', + return_value=self._port_details): + yield self._plugin.create_tap_flow(self._context, req) + self._tap_flow['id'] = mock.ANY + self._tap_service['id'] = mock.ANY + expected_msg = { + 'tap_flow': self._tap_flow, + 'port_mac': self._port_details['mac_address'], + 'taas_id': mock.ANY, + 'port': self._port_details, + } + self._plugin.agent_rpc.assert_has_calls([ + mock.call.create_tap_flow(self._context, expected_msg, + self._host_id), + ]) + def test_create_tap_service(self): with self.tap_service(): pass @@ -118,3 +152,13 @@ class TestTaasPlugin(testlib_api.SqlTestCaseLight): def test_delete_tap_service_non_existent(self): with testtools.ExpectedException(taas_ext.TapServiceNotFound): self._plugin.delete_tap_service(self._context, 'non-existent') + + def test_create_tap_flow(self): + with self.tap_service() as ts, self.tap_flow(tap_service=ts['id']): + pass + + def test_create_tap_flow_wrong_tenant(self): + with self.tap_service() as ts, \ + testtools.ExpectedException(taas_ext.TapServiceNotBelongToTenant), \ + self.tap_flow(tap_service=ts['id'], tenant_id='other-tenant'): + pass