2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl.util;
11 import com.google.common.collect.Lists;
12 import java.util.Collections;
13 import java.util.List;
14 import java.util.stream.Stream;
15 import org.junit.Assert;
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl.manager.PolicyConfigurationContext;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.AddressEndpointKey;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContextId;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.IpPrefixType;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.EndpointPolicyParticipation;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.rule.group.with.renderer.endpoint.participation.RuleGroupWithRendererEndpointParticipation;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.rule.group.with.renderer.endpoint.participation.RuleGroupWithRendererEndpointParticipationBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.unconfigured.rule.groups.UnconfiguredRuleGroup;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.RendererEndpoint;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.RendererEndpointBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.renderer.endpoint.PeerEndpoint;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.renderer.endpoint.PeerEndpointBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.status.unconfigured.endpoints.UnconfiguredRendererEndpoint;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.status.unconfigured.endpoints.unconfigured.renderer.endpoint.UnconfiguredPeerEndpoint;
38 * Test for {@link StatusUtil}.
40 public class StatusUtilTest {
42 public static final TenantId TENANT_ID = new TenantId("unit-tenant-1");
43 public static final SubjectName SUBJECT_NAME = new SubjectName("unit-subject-1");
44 public static final ContractId CONTRACT_ID = new ContractId("unit-contract-1");
45 public static final String ADDRESS_1 = "unit-address-1";
46 public static final ContextId CONTEXT_ID_1 = new ContextId("unit-context-1");
47 public static final String ADDRESS_2 = "unit-address-2";
48 public static final ContextId CONTEXT_ID_2 = new ContextId("unit-context-2");
49 public static final String INFO_MESSAGE = "unit-info-1";
50 private PolicyConfigurationContext context;
53 public void setUp() throws Exception {
54 context = new PolicyConfigurationContext();
58 public void testAssembleFullyNotConfigurableRendererEP() throws Exception {
59 final PeerEndpoint peer1 = createPeer(ADDRESS_1, CONTEXT_ID_1);
60 final PeerEndpoint peer2 = createPeer(ADDRESS_2, CONTEXT_ID_2);
61 final RendererEndpoint rendererEP = createRendererEP(ADDRESS_1, CONTEXT_ID_1,
62 Lists.newArrayList(peer1, peer2)
64 context.setCurrentRendererEP(rendererEP);
66 final UnconfiguredRendererEndpoint actual = StatusUtil.assembleFullyNotConfigurableRendererEP(context, INFO_MESSAGE);
68 compareEPs(rendererEP, actual);
69 Assert.assertNull(actual.getUnconfiguredPeerExternalEndpoint());
70 Assert.assertNull(actual.getUnconfiguredPeerExternalContainmentEndpoint());
72 final List<UnconfiguredPeerEndpoint> unconfiguredPeerEndpoints = actual.getUnconfiguredPeerEndpoint();
73 Assert.assertEquals(2, unconfiguredPeerEndpoints.size());
74 compareEPs(peer1, unconfiguredPeerEndpoints.get(0));
75 Assert.assertTrue(unconfiguredPeerEndpoints.get(0).getUnconfiguredRuleGroup().isEmpty());
76 compareEPs(peer2, unconfiguredPeerEndpoints.get(1));
77 Assert.assertTrue(unconfiguredPeerEndpoints.get(1).getUnconfiguredRuleGroup().isEmpty());
80 private PeerEndpoint createPeer(final String address, final ContextId contextId) {
81 return new PeerEndpointBuilder(createRendererEP(address, contextId, Collections.emptyList()))
82 .setRuleGroupWithRendererEndpointParticipation(Collections.emptyList())
86 private RendererEndpoint createRendererEP(final String address, final ContextId contextId, final List<PeerEndpoint> peerEndpoints) {
87 return new RendererEndpointBuilder()
89 .setAddressType(IpPrefixType.class)
90 .setContextId(contextId)
91 .setContextType(L3Context.class)
92 .setPeerEndpoint(peerEndpoints)
97 public void testAssembleNotConfigurableRendererEPForPeer() throws Exception {
98 final PeerEndpoint peer1 = createPeer(ADDRESS_1, CONTEXT_ID_1);
99 final PeerEndpoint peer2 = createPeer(ADDRESS_2, CONTEXT_ID_2);
100 final RendererEndpoint rendererEP = createRendererEP(ADDRESS_1, CONTEXT_ID_1,
101 Lists.newArrayList(peer1, peer2)
103 context.setCurrentRendererEP(rendererEP);
105 final UnconfiguredRendererEndpoint actual = StatusUtil.assembleNotConfigurableRendererEPForPeer(context, peer1, INFO_MESSAGE);
107 compareEPs(rendererEP, actual);
108 Assert.assertNull(actual.getUnconfiguredPeerExternalEndpoint());
109 Assert.assertNull(actual.getUnconfiguredPeerExternalContainmentEndpoint());
111 final List<UnconfiguredPeerEndpoint> unconfiguredPeerEndpoints = actual.getUnconfiguredPeerEndpoint();
112 Assert.assertEquals(1, unconfiguredPeerEndpoints.size());
113 compareEPs(peer1, unconfiguredPeerEndpoints.get(0));
114 Assert.assertTrue(unconfiguredPeerEndpoints.get(0).getUnconfiguredRuleGroup().isEmpty());
118 public void testAssemblePeerEndpoint() throws Exception {
119 final PeerEndpoint peerEndpoint = createPeer(ADDRESS_1, CONTEXT_ID_1);
120 final List<UnconfiguredPeerEndpoint> gatheredPeers = StatusUtil.assemblePeerEndpoint(Stream.of(peerEndpoint));
122 Assert.assertEquals(1, gatheredPeers.size());
123 final UnconfiguredPeerEndpoint actual = gatheredPeers.get(0);
124 compareEPs(peerEndpoint, actual);
125 Assert.assertTrue(actual.getUnconfiguredRuleGroup().isEmpty());
128 private void compareEPs(final AddressEndpointKey peerEndpoint, final AddressEndpointKey actual) {
129 Assert.assertEquals(peerEndpoint.getAddress(), actual.getAddress());
130 Assert.assertEquals(peerEndpoint.getAddressType(), actual.getAddressType());
131 Assert.assertEquals(peerEndpoint.getContextId(), actual.getContextId());
132 Assert.assertEquals(peerEndpoint.getContextType(), actual.getContextType());
136 public void testAssembleRuleGroups() throws Exception {
137 final RuleGroupWithRendererEndpointParticipation ruleGroup =
138 new RuleGroupWithRendererEndpointParticipationBuilder()
139 .setTenantId(TENANT_ID)
140 .setSubjectName(SUBJECT_NAME)
141 .setContractId(CONTRACT_ID)
142 .setRendererEndpointParticipation(EndpointPolicyParticipation.CONSUMER)
144 final List<UnconfiguredRuleGroup> gatheredRuleGroups = StatusUtil.assembleRuleGroups(Stream.of(ruleGroup));
146 Assert.assertEquals(1, gatheredRuleGroups.size());
147 final UnconfiguredRuleGroup actual = gatheredRuleGroups.get(0);
148 Assert.assertEquals(TENANT_ID, actual.getTenantId());
149 Assert.assertEquals(SUBJECT_NAME, actual.getSubjectName());
150 Assert.assertEquals(CONTRACT_ID, actual.getContractId());
151 Assert.assertEquals(null, actual.getUnconfiguredResolvedRule());
152 Assert.assertEquals(EndpointPolicyParticipation.CONSUMER, actual.getRendererEndpointParticipation());