OCP-Router: Enable the OCP-Route handler unit tests

Although the file that includes the ocp-route handler unit tests exist,
the unit tests don't run in tox command.
The reason for that was missing __init__.py files.
This patch resolves the __init__.py issue and updates the relevant unit
tests.

Change-Id: I690eadb27095fdd531803804f2517f422e62e3ef
Closes-Bug: 1781825
This commit is contained in:
Yossi Boaron 2018-07-15 23:14:43 +03:00
parent 194dfdfb21
commit 0256ed2c4d
4 changed files with 102 additions and 78 deletions

View File

@ -12,7 +12,7 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from kuryr_kubernetes.controller.drivers import l7_router as d_l7_rtr
from kuryr_kubernetes.controller.drivers import base as drv_base
from kuryr_kubernetes.objects import lbaas as obj_lbaas
from kuryr_kubernetes.objects import route as obj_route
from kuryr_kubernetes.platform.ocp.controller.handlers import route as h_route
@ -23,12 +23,12 @@ import mock
class TestOcpRouteHandler(test_base.TestCase):
@mock.patch('kuryr_kubernetes.controller.drivers.base'
'.L7RouterDriver.get_instance')
def test_init(self, m_get_drv_l7_router):
m_get_drv_l7_router.return_value = mock.sentinel.drv_l7_router
'.LBaaSDriver.get_instance')
def test_init(self, m_get_drv_lbaas):
m_get_drv_lbaas.return_value = mock.sentinel.drv_lbaas
handler = h_route.OcpRouteHandler()
self.assertEqual(mock.sentinel.drv_l7_router, handler._drv_l7_router)
self.assertEqual(mock.sentinel.drv_lbaas, handler._drv_lbaas)
self.assertIsNone(handler._l7_router)
self.assertIsNone(handler._l7_router_listeners)
@ -44,6 +44,12 @@ class TestOcpRouteHandler(test_base.TestCase):
m_handler._l7_router = obj_lbaas.LBaaSLoadBalancer(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C4C',
project_id='TEST_PROJECT')
m_handler._l7_router_listeners = obj_lbaas.LBaaSListener(
id='00EE9E11-91C2-41CF-8FD4-7970579E1234',
project_id='TEST_PROJECT',
name='http_listenr',
protocol='http',
port=80)
h_route.OcpRouteHandler.on_present(m_handler, route_event)
m_handler._sync_router_pool.assert_called_once_with(
@ -72,6 +78,13 @@ class TestOcpRouteHandler(test_base.TestCase):
id='00EE9E11-91C2-41CF-8FD4-7970579E5C4C',
project_id='TEST_PROJECT')
m_handler._l7_router_listeners = obj_lbaas.LBaaSListener(
id='00EE9E11-91C2-41CF-8FD4-7970579E1234',
project_id='TEST_PROJECT',
name='http_listenr',
protocol='http',
port=80)
h_route.OcpRouteHandler.on_present(m_handler, route_event)
m_handler._get_route_spec.assert_called_once_with(
route_event)
@ -161,9 +174,10 @@ class TestOcpRouteHandler(test_base.TestCase):
m_handler._l7_router = obj_lbaas.LBaaSLoadBalancer(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C4C',
project_id='TEST_PROJECT')
m_handler._drv_l7_router = mock.Mock(
spec=d_l7_rtr.LBaaSv2L7RouterDriver)
m_handler._drv_l7_router.ensure_pool.return_value = None
m_handler._drv_lbaas = mock.Mock(
spec=drv_base.LBaaSDriver)
m_handler._drv_lbaas.get_pool_by_name.return_value = None
m_handler._drv_lbaas.ensure_pool_attached_to_lb.return_value = None
route = {'metadata': {'namespace': 'namespace'},
'spec': {'host': 'www.test.com', 'path': 'mypath',
@ -184,14 +198,16 @@ class TestOcpRouteHandler(test_base.TestCase):
m_handler._l7_router = obj_lbaas.LBaaSLoadBalancer(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C4C',
project_id='TEST_PROJECT')
m_handler._drv_l7_router = mock.Mock(
spec=d_l7_rtr.LBaaSv2L7RouterDriver)
m_handler._drv_lbaas = mock.Mock(
spec=drv_base.LBaaSDriver)
ret_pool = obj_lbaas.LBaaSPool(
name='TEST_NAME', project_id='TEST_PROJECT', protocol='TCP',
listener_id='A57B7771-6050-4CA8-A63C-443493EC98AB',
loadbalancer_id='00EE9E11-91C2-41CF-8FD4-7970579E5C4C')
m_handler._drv_l7_router.ensure_pool.return_value = ret_pool
m_handler._drv_lbaas.get_pool_by_name.return_value = None
m_handler._drv_lbaas.ensure_pool_attached_to_lb.return_value = ret_pool
route = {'metadata': {'namespace': 'namespace'},
'spec': {'host': 'www.test.com', 'path': 'mypath',
'to': {'name': 'target_service'}}}
@ -211,21 +227,21 @@ class TestOcpRouteHandler(test_base.TestCase):
m_handler._l7_router = obj_lbaas.LBaaSLoadBalancer(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C4C',
project_id='TEST_PROJECT')
m_handler._drv_l7_router = mock.Mock(
spec=d_l7_rtr.LBaaSv2L7RouterDriver)
m_handler._drv_lbaas = mock.Mock(
spec=drv_base.LBaaSDriver)
listener = obj_lbaas.LBaaSListener(
id='123443545',
name='TEST_NAME', project_id='TEST_PROJECT', protocol='TCP',
port=80, loadbalancer_id='00EE9E11-91C2-41CF-8FD4-7970579E5C4C')
m_handler._l7_router_listeners = {'80': listener}
l7_policy = obj_route.RouteL7Policy(
l7_policy = obj_lbaas.LBaaSL7Policy(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C44', name='myname',
listener_id='00EE9E11-91C2-41CF-8FD4-7970579E5C45',
redirect_pool_id='00EE9E11-91C2-41CF-8FD4-7970579E5C46',
project_id='00EE9E11-91C2-41CF-8FD4-7970579E5C46')
route_state = obj_route.RouteState()
m_handler._drv_l7_router.ensure_l7_policy.return_value = l7_policy
m_handler._drv_lbaas.ensure_l7_policy.return_value = l7_policy
route = {'metadata': {'namespace': 'namespace', 'name': 'name'},
'spec': {'host': 'www.test.com', 'path': 'mypath',
@ -244,9 +260,9 @@ class TestOcpRouteHandler(test_base.TestCase):
m_handler._l7_router = obj_lbaas.LBaaSLoadBalancer(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C4C',
project_id='TEST_PROJECT')
m_handler._drv_l7_router = mock.Mock(
spec=d_l7_rtr.LBaaSv2L7RouterDriver)
h_l7_rule = obj_route.RouteL7Rule(
m_handler._drv_lbaas = mock.Mock(
spec=drv_base.LBaaSDriver)
h_l7_rule = obj_lbaas.LBaaSL7Rule(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C44',
compare_type='EQUAL_TO',
l7policy_id='00EE9E11-91C2-41CF-8FD4-7970579E5C45',
@ -272,9 +288,9 @@ class TestOcpRouteHandler(test_base.TestCase):
m_handler._l7_router = obj_lbaas.LBaaSLoadBalancer(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C4C',
project_id='TEST_PROJECT')
m_handler._drv_l7_router = mock.Mock(
spec=d_l7_rtr.LBaaSv2L7RouterDriver)
h_l7_rule = obj_route.RouteL7Rule(
m_handler._drv_lbaas = mock.Mock(
spec=drv_base.LBaaSDriver)
h_l7_rule = obj_lbaas.LBaaSL7Rule(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C44',
compare_type='EQUAL_TO',
l7policy_id='00EE9E11-91C2-41CF-8FD4-7970579E5C45',
@ -291,7 +307,7 @@ class TestOcpRouteHandler(test_base.TestCase):
path='mypath',
to_service='target_service')
m_handler._drv_l7_router.ensure_l7_rule.return_value = h_l7_rule
m_handler._drv_lbaas.ensure_l7_rule.return_value = h_l7_rule
h_route.OcpRouteHandler._sync_host_l7_rule(
m_handler, route, route_spec, route_state)
self.assertEqual(route_state.h_l7_rule.value, route['spec']['host'])
@ -301,90 +317,95 @@ class TestOcpRouteHandler(test_base.TestCase):
m_handler._l7_router = obj_lbaas.LBaaSLoadBalancer(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C4C',
project_id='TEST_PROJECT')
m_handler._drv_l7_router = mock.Mock(
spec=d_l7_rtr.LBaaSv2L7RouterDriver)
m_handler._drv_lbaas = mock.Mock(
spec=drv_base.LBaaSDriver)
old_p_l7_rule = obj_route.RouteL7Rule(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C44',
compare_type='EQUAL_TO',
l7policy_id='00EE9E11-91C2-41CF-8FD4-7970579E5C45',
type='PATH',
value='/nice_path/')
l7_policy = obj_lbaas.LBaaSL7Policy(
id='00EE9E11-91C2-41CF-8FD4-7970579E6666', name='myname',
listener_id='00EE9E11-91C2-41CF-8FD4-7970579E5C45',
redirect_pool_id='00EE9E11-91C2-41CF-8FD4-7970579E5C46',
project_id='00EE9E11-91C2-41CF-8FD4-7970579E5C46')
route_state = obj_route.RouteState(p_l7_rule=old_p_l7_rule)
route_state = obj_route.RouteState(
l7_policy=l7_policy)
route = {'metadata': {'namespace': 'namespace', 'name': 'name'},
'spec': {'host': 'new.www.test.com', 'path': 'mypath',
'spec': {'host': 'new.www.test.com', 'path': '/nice_path',
'to': {'name': 'target_service'}}}
route_spec = obj_route.RouteSpec(
host='www.test.com',
path='mypath',
to_service='target_service')
ret_p_l7_rule = obj_route.RouteL7Rule(
id='55559E11-91C2-41CF-8FD4-7970579E5C44',
compare_type='EQUAL_TO',
l7policy_id='55559E11-91C2-41CF-8FD4-7970579E5C45',
type='PATH',
value='/nice_path/')
m_handler._drv_l7_router.ensure_l7_rule.return_value = ret_p_l7_rule
h_route.OcpRouteHandler._sync_path_l7_rule(
m_handler, route, route_spec, route_state)
self.assertEqual(route_state.p_l7_rule, old_p_l7_rule)
def test_sync_path_l7_rule_route_spec_path_is_none(self):
m_handler = mock.Mock(spec=h_route.OcpRouteHandler)
m_handler._l7_router = obj_lbaas.LBaaSLoadBalancer(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C4C',
project_id='TEST_PROJECT')
m_handler._drv_l7_router = mock.Mock(
spec=d_l7_rtr.LBaaSv2L7RouterDriver)
old_p_l7_rule = obj_route.RouteL7Rule(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C44',
compare_type='EQUAL_TO',
l7policy_id='00EE9E11-91C2-41CF-8FD4-7970579E5C45',
type='PATH',
value='/nice_path/')
route_state = obj_route.RouteState(p_l7_rule=old_p_l7_rule)
route = {'metadata': {'namespace': 'namespace', 'name': 'name'},
'spec': {'host': 'new.www.test.com', 'path': 'mypath',
'to': {'name': 'target_service'}}}
route_spec = obj_route.RouteSpec(
host='www.test.com',
path=None,
to_service='target_service')
ret_p_l7_rule = obj_route.RouteL7Rule(
ret_p_l7_rule = obj_lbaas.LBaaSL7Rule(
id='55559E11-91C2-41CF-8FD4-7970579E5C44',
compare_type='EQUAL_TO',
l7policy_id='55559E11-91C2-41CF-8FD4-7970579E5C45',
type='PATH',
value='/nice_path/')
value='/nice_path')
m_handler._drv_l7_router.ensure_l7_rule.return_value = ret_p_l7_rule
m_handler._drv_lbaas.ensure_l7_rule.return_value = ret_p_l7_rule
h_route.OcpRouteHandler._sync_path_l7_rule(
m_handler, route, route_spec, route_state)
self.assertEqual(route_state.p_l7_rule, ret_p_l7_rule)
m_handler._drv_lbaas.ensure_l7_rule.assert_called_once_with(
m_handler._l7_router, route_state.l7_policy,
'EQUAL_TO', 'PATH', route['spec']['path'])
def test_sync_path_l7_rule_edit_usecase(self):
m_handler = mock.Mock(spec=h_route.OcpRouteHandler)
m_handler._l7_router = obj_lbaas.LBaaSLoadBalancer(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C4C',
project_id='TEST_PROJECT')
m_handler._drv_lbaas = mock.Mock(
spec=drv_base.LBaaSDriver)
old_p_l7_rule = obj_lbaas.LBaaSL7Rule(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C44',
compare_type='EQUAL_TO',
l7policy_id='00EE9E11-91C2-41CF-8FD4-7970579E5C45',
type='PATH',
value='/cur_path')
route_state = obj_route.RouteState(p_l7_rule=old_p_l7_rule)
route = {'metadata': {'namespace': 'namespace', 'name': 'name'},
'spec': {'host': 'new.www.test.com', 'path': '/new_path',
'to': {'name': 'target_service'}}}
route_spec = obj_route.RouteSpec(
host='www.test.com',
path=old_p_l7_rule.value,
to_service='target_service')
ret_p_l7_rule = obj_lbaas.LBaaSL7Rule(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C44',
compare_type='EQUAL_TO',
l7policy_id='00EE9E11-91C2-41CF-8FD4-7970579E5C45',
type='PATH',
value=route['spec']['path'])
m_handler._drv_lbaas.update_l7_rule.return_value = True
h_route.OcpRouteHandler._sync_path_l7_rule(
m_handler, route, route_spec, route_state)
self.assertEqual(route_state.p_l7_rule.value, ret_p_l7_rule.value)
m_handler._drv_lbaas.update_l7_rule.assert_called_once_with(
old_p_l7_rule, route['spec']['path'])
def test_sync_path_l7_rule_route_spec_not_sync(self):
m_handler = mock.Mock(spec=h_route.OcpRouteHandler)
m_handler._l7_router = obj_lbaas.LBaaSLoadBalancer(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C4C',
project_id='TEST_PROJECT')
m_handler._drv_l7_router = mock.Mock(
spec=d_l7_rtr.LBaaSv2L7RouterDriver)
m_handler._drv_lbaas = mock.Mock(
spec=drv_base.LBaaSDriver)
old_p_l7_rule = obj_route.RouteL7Rule(
old_p_l7_rule = obj_lbaas.LBaaSL7Rule(
id='00EE9E11-91C2-41CF-8FD4-7970579E5C44',
compare_type='EQUAL_TO',
l7policy_id='00EE9E11-91C2-41CF-8FD4-7970579E5C45',
type='PATH',
value='/nice_path/')
value='/cur_path')
route_state = obj_route.RouteState(p_l7_rule=old_p_l7_rule)
@ -394,10 +415,11 @@ class TestOcpRouteHandler(test_base.TestCase):
route_spec = obj_route.RouteSpec(
host='www.test.com',
path='path',
path='/not_cur_path',
to_service='target_service')
m_handler._drv_l7_router.update_l7_rule.return_value = None
m_handler._drv_lbaas.update_l7_rule.return_value = None
h_route.OcpRouteHandler._sync_path_l7_rule(
m_handler, route, route_spec, route_state)
self.assertEqual(route_state.p_l7_rule.value, route['spec']['path'])
self.assertEqual(route_spec.path, route['spec']['path'])

View File

@ -35,6 +35,8 @@ object_data = {
'LBaaSRouteState': '1.0-bdf561462a2d337c0e0ae8cb10e9ff20',
'LBaaSServiceSpec': '1.0-d430ecd443f2b1999196bfe531e56f7e',
'LBaaSState': '1.0-a0ff7dce2d3f6ce1ffab4ff95a344361',
'RouteSpec': '1.0-2f02b2e24b1ca2b94c2bbdb718bfc020',
'RouteState': '1.0-2475dbeb6ebedabe2a1e235f9bc6b614',
}