def test_get_l7policy_rules_no_policies(): """Test that an empty policies input list returns an empty rule list.""" context = mock.MagicMock() driver = mock.MagicMock() l7policies = [] service_builder = LBaaSv2ServiceBuilder(driver) rules = service_builder._get_l7policy_rules(context, l7policies) assert not rules
def test_get_l7policies_no_listeners(): """Test that an empty listener list input returns an empty policy list.""" context = mock.MagicMock() driver = mock.MagicMock() listeners = [] service_builder = LBaaSv2ServiceBuilder(driver) l7policies = service_builder._get_l7policies(context, listeners) assert not l7policies
def test_get_l7policy_rules_filter(l7policies): """Test that get_l7policy_rules() is called with filter of l7policy IDs""" context = mock.MagicMock() driver = mock.MagicMock() service_builder = LBaaSv2ServiceBuilder(driver) service_builder._get_l7policy_rules(context, l7policies) assert service_builder.driver.plugin.db.get_l7policy_rules.call_args_list \ == [mock.call(context, l7policies[0]['id']), mock.call(context, l7policies[1]['id'])]
def test_get_extended_member_one_port(mock_log): context = mock.MagicMock() driver = mock.MagicMock() member = FakeDict() driver.plugin.db._core_plugin.get_ports.return_value = [1] service_builder = LBaaSv2ServiceBuilder(driver) member_dict, subnet, net = \ service_builder._get_extended_member(context, member) assert mock_log.warning.call_args_list == [] assert 'port' in member_dict
def test__pool_to_dict(): '''Ensure function does not add listeners or listener_id to pool dict.''' driver = mock.MagicMock() fake_pool = FakeDict() fake_pool.members = [] fake_pool.l7_policies = [] sb = LBaaSv2ServiceBuilder(driver) pool_dict = sb._pool_to_dict(fake_pool) assert 'listener_id' not in pool_dict assert 'listeners' not in pool_dict
def test_get_listeners(loadbalancer, listeners): context = mock.MagicMock() driver = mock.MagicMock() service_builder = LBaaSv2ServiceBuilder(driver) service_builder.driver.plugin.db.get_listeners = mock.MagicMock( return_value=listeners) test_listeners = service_builder._get_listeners(context, loadbalancer) assert len(test_listeners) == len(listeners) assert test_listeners[0] == listeners[0].to_api_dict() assert test_listeners[1] == listeners[1].to_api_dict()
def test_get_l7policies(listeners, l7policies): """Test that get_l7policies returns valid list of dict""" context = mock.MagicMock() driver = mock.MagicMock() service_builder = LBaaSv2ServiceBuilder(driver) service_builder.driver.plugin.db.get_l7policies = \ mock.MagicMock(return_value=l7policies) policies = service_builder._get_l7policies(context, listeners) assert len(policies) > 0 assert policies[0] is l7policies[0]
def test_get_l7policy_rules(l7policies, l7rules): """Test that get_l7policies returns valid list of dict""" context = mock.MagicMock() driver = mock.MagicMock() service_builder = LBaaSv2ServiceBuilder(driver) service_builder.driver.plugin.db.get_l7policy_rules = mock.MagicMock( return_value=l7rules) rules = service_builder._get_l7policy_rules(context, l7policies) assert len(rules) > 0 assert rules[0] is l7rules[0].to_api_dict()
def test_get_extended_member_several_ports(mock_log): context = mock.MagicMock() driver = mock.MagicMock() member = FakeDict() member.address = "10.2.2.10" driver.plugin.db._core_plugin.get_ports.return_value = [1, 2, 3, 4] service_builder = LBaaSv2ServiceBuilder(driver) member_dict, subnet, net = \ service_builder._get_extended_member(context, member) assert mock_log.warning.call_args_list == \ [mock.call("Multiple ports found for member: 10.2.2.10")] assert 'port' not in member_dict
def test_get_l7policy_rules_more_than_one_policy(l7policies, two_policy_l7rules): """Exception is raised when > 1 policy for a rule.""" context = mock.MagicMock() driver = mock.MagicMock() service_builder = LBaaSv2ServiceBuilder(driver) service_builder.driver.plugin.db.get_l7policy_rules = mock.MagicMock( return_value=two_policy_l7rules) with pytest.raises(f5_exc.RuleHasMoreThanOnePolicy) as ex: service_builder._get_l7policy_rules(context, l7policies) assert 'A rule should have only one policy, but found 2 for rule ' + \ two_policy_l7rules[0].id in ex.value.message
def test_get_l7policies_more_than_one_listener_error(listeners, two_listener_l7policies): """Exception is raised when > 1 listener for a policy.""" context = mock.MagicMock() driver = mock.MagicMock() service_builder = LBaaSv2ServiceBuilder(driver) service_builder.driver.plugin.db.get_l7policies = mock.MagicMock( return_value=two_listener_l7policies) with pytest.raises(f5_exc.PolicyHasMoreThanOneListener) as ex: service_builder._get_l7policies(context, listeners) assert 'A policy should have only one listener, but found 2 for policy ' +\ two_listener_l7policies[0].id in ex.value.message
def test_get_l7policies_filter(listeners): """Test that get_l7policies() is called with filter of listener IDs""" context = mock.MagicMock() driver = mock.MagicMock() # construct an equivalent filter to what service_builder should use filters = {'listener_id': [l['id'] for l in listeners]} service_builder = LBaaSv2ServiceBuilder(driver) service_builder._get_l7policies(context, listeners) # assert that the expected filter was used service_builder.driver.plugin.db.get_l7policies.assert_called_with( context, filters=filters)
def test_get_extended_member_no_port(mock_log): context = mock.MagicMock() driver = mock.MagicMock() member = FakeDict() member.address = "10.2.2.10" driver.plugin.db._core_plugin.get_ports.return_value = [] service_builder = LBaaSv2ServiceBuilder(driver) member_dict, subnet, net = \ service_builder._get_extended_member(context, member) assert mock_log.warning.call_args_list == \ [mock.call('Lbaas member 10.2.2.10 has no associated neutron port')] assert 'port' not in member_dict
def test_get_members(pools, members): context = mock.MagicMock() driver = mock.MagicMock() subnet_map = mock.MagicMock() network_map = mock.MagicMock() service_builder = LBaaSv2ServiceBuilder(driver) service_builder.driver.plugin.db._get_members = \ mock.MagicMock(return_value=members) test_members = service_builder._get_members(context, pools, subnet_map, network_map) for test_member, member in zip(test_members, members): assert test_member is member
def test_get_pools(loadbalancer, pools, monitors): context = mock.MagicMock() driver = mock.MagicMock() service_builder = LBaaSv2ServiceBuilder(driver) service_builder.driver.plugin.db.get_pools_and_healthmonitors = \ mock.MagicMock(return_value=(pools, monitors)) test_pools, test_monitors = \ service_builder._get_pools_and_healthmonitors( context, loadbalancer) for pool, test_pool, monitor in zip(pools, test_pools, monitors): assert test_pool is pool assert test_pool['healthmonitor_id'] == monitor['id']