Merge "Unit tests for NeutronSubnetAware"
[groupbasedpolicy.git] / renderers / ios-xe / src / test / java / org / opendaylight / groupbasedpolicy / renderer / ios_xe_provider / impl / util / StatusUtilTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl.util;
10
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;
36
37 /**
38  * Test for {@link StatusUtil}.
39  */
40 public class StatusUtilTest {
41
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;
51
52     @Before
53     public void setUp() throws Exception {
54         context = new PolicyConfigurationContext();
55     }
56
57     @Test
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)
63         );
64         context.setCurrentRendererEP(rendererEP);
65
66         final UnconfiguredRendererEndpoint actual = StatusUtil.assembleFullyNotConfigurableRendererEP(context, INFO_MESSAGE);
67
68         compareEPs(rendererEP, actual);
69         Assert.assertNull(actual.getUnconfiguredPeerExternalEndpoint());
70         Assert.assertNull(actual.getUnconfiguredPeerExternalContainmentEndpoint());
71
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());
78     }
79
80     private PeerEndpoint createPeer(final String address, final ContextId contextId) {
81         return new PeerEndpointBuilder(createRendererEP(address, contextId, Collections.emptyList()))
82                 .setRuleGroupWithRendererEndpointParticipation(Collections.emptyList())
83                 .build();
84     }
85
86     private RendererEndpoint createRendererEP(final String address, final ContextId contextId, final List<PeerEndpoint> peerEndpoints) {
87         return new RendererEndpointBuilder()
88                 .setAddress(address)
89                 .setAddressType(IpPrefixType.class)
90                 .setContextId(contextId)
91                 .setContextType(L3Context.class)
92                 .setPeerEndpoint(peerEndpoints)
93                 .build();
94     }
95
96     @Test
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)
102         );
103         context.setCurrentRendererEP(rendererEP);
104
105         final UnconfiguredRendererEndpoint actual = StatusUtil.assembleNotConfigurableRendererEPForPeer(context, peer1, INFO_MESSAGE);
106
107         compareEPs(rendererEP, actual);
108         Assert.assertNull(actual.getUnconfiguredPeerExternalEndpoint());
109         Assert.assertNull(actual.getUnconfiguredPeerExternalContainmentEndpoint());
110
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());
115     }
116
117     @Test
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));
121
122         Assert.assertEquals(1, gatheredPeers.size());
123         final UnconfiguredPeerEndpoint actual = gatheredPeers.get(0);
124         compareEPs(peerEndpoint, actual);
125         Assert.assertTrue(actual.getUnconfiguredRuleGroup().isEmpty());
126     }
127
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());
133     }
134
135     @Test
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)
143                         .build();
144         final List<UnconfiguredRuleGroup> gatheredRuleGroups = StatusUtil.assembleRuleGroups(Stream.of(ruleGroup));
145
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());
153     }
154 }