Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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'])]
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
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()
Esempio n. 7
0
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]
Esempio n. 8
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()
Esempio n. 9
0
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
Esempio n. 10
0
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
Esempio n. 11
0
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
Esempio n. 12
0
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)
Esempio n. 13
0
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
Esempio n. 14
0
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
Esempio n. 15
0
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']