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
8 package org.opendaylight.unimgr.mef.nrp.cisco.xr.common.helper;
10 import org.junit.Before;
11 import org.junit.Test;
12 import org.opendaylight.yang.gen.v1.urn.mef.nrp.bandwidth.profile.rev160630.GNRPBwpFlow;
13 import org.opendaylight.yang.gen.v1.urn.mef.nrp.specs.rev160630.g_nrp_connadaptspec.EgressBwpFlow;
14 import org.opendaylight.yang.gen.v1.urn.mef.nrp.specs.rev160630.g_nrp_connadaptspec.IngressBwpFlow;
15 import org.opendaylight.yang.gen.v1.urn.mef.nrp.specs.rev160630.g_nrp_uni_terminationspec.EgressBwpUni;
16 import org.opendaylight.yang.gen.v1.urn.mef.nrp.specs.rev160630.g_nrp_uni_terminationspec.IngressBwpUni;
18 import java.util.Optional;
20 import static org.junit.Assert.*;
21 import static org.mockito.Mockito.mock;
22 import static org.opendaylight.unimgr.mef.nrp.cisco.xr.common.helper.BandwidthProfileComposition.BwpApplicability.*;
23 import static org.opendaylight.unimgr.mef.nrp.cisco.xr.common.helper.BandwidthProfileComposition.BwpDirection.EGRESS;
24 import static org.opendaylight.unimgr.mef.nrp.cisco.xr.common.helper.BandwidthProfileComposition.BwpDirection.INGRESS;
26 public class BandwidthProfileCompositionTest {
28 private IngressBwpFlow defaultIngressBwProfileMock;
30 private EgressBwpFlow defaultEgressBwProfileMock;
32 private IngressBwpFlow ingressBwProfilePerEvcMock;
34 private EgressBwpFlow egressBwProfilePerEvcMock;
36 private IngressBwpUni ingressBwProfilePerUniMock;
38 private EgressBwpUni egressBwProfilePerUniMock;
42 defaultIngressBwProfileMock = mock(IngressBwpFlow.class);
43 defaultEgressBwProfileMock = mock(EgressBwpFlow.class);
44 ingressBwProfilePerEvcMock = mock(IngressBwpFlow.class);
45 egressBwProfilePerEvcMock = mock(EgressBwpFlow.class);
46 ingressBwProfilePerUniMock = mock(IngressBwpUni.class);
47 egressBwProfilePerUniMock = mock(EgressBwpUni.class);
51 public void testBuilder() {
53 BandwidthProfileComposition.BandwidthProfileCompositionBuilder compositionBuilder = builderWithAllProfiles();
56 BandwidthProfileComposition composition = compositionBuilder.build();
59 assertTrue(composition.getDefaultIngressBwProfile().isPresent());
60 assertTrue(composition.getDefaultEgressBwProfile().isPresent());
61 assertTrue(composition.getIngressBwProfilePerEvc().isPresent());
62 assertTrue(composition.getEgressBwProfilePerEvc().isPresent());
63 assertTrue(composition.getIngressBwProfilePerUni().isPresent());
64 assertTrue(composition.getEgressBwProfilePerUni().isPresent());
66 assertEquals(defaultIngressBwProfileMock, composition.getDefaultIngressBwProfile().get());
67 assertEquals(defaultEgressBwProfileMock, composition.getDefaultEgressBwProfile().get());
68 assertEquals(ingressBwProfilePerEvcMock, composition.getIngressBwProfilePerEvc().get());
69 assertEquals(egressBwProfilePerEvcMock, composition.getEgressBwProfilePerEvc().get());
70 assertEquals(ingressBwProfilePerUniMock, composition.getIngressBwProfilePerUni().get());
71 assertEquals(egressBwProfilePerUniMock, composition.getEgressBwProfilePerUni().get());
75 public void testBuilderEmpty() {
77 BandwidthProfileComposition.BandwidthProfileCompositionBuilder compositionBuilder = BandwidthProfileComposition.builder();
80 BandwidthProfileComposition composition = compositionBuilder.build();
83 assertNotNull(composition.getDefaultIngressBwProfile());
84 assertNotNull(composition.getDefaultEgressBwProfile());
85 assertNotNull(composition.getIngressBwProfilePerEvc());
86 assertNotNull(composition.getEgressBwProfilePerEvc());
87 assertNotNull(composition.getIngressBwProfilePerUni());
88 assertNotNull(composition.getEgressBwProfilePerUni());
90 assertFalse(composition.getDefaultIngressBwProfile().isPresent());
91 assertFalse(composition.getDefaultEgressBwProfile().isPresent());
92 assertFalse(composition.getIngressBwProfilePerEvc().isPresent());
93 assertFalse(composition.getEgressBwProfilePerEvc().isPresent());
94 assertFalse(composition.getIngressBwProfilePerUni().isPresent());
95 assertFalse(composition.getEgressBwProfilePerUni().isPresent());
99 public void testGet() {
101 BandwidthProfileComposition composition = builderWithAllProfiles().build();
104 Optional<GNRPBwpFlow> actualIngerssDefaultOptional = composition.get(INGRESS, DEFAULT);
105 Optional<GNRPBwpFlow> actualIngressEvcOptional = composition.get(INGRESS, EVC);
106 Optional<GNRPBwpFlow> actualIngerssUniOptional = composition.get(INGRESS, UNI);
107 Optional<GNRPBwpFlow> actualEgerssDefaultOptional = composition.get(EGRESS, DEFAULT);
108 Optional<GNRPBwpFlow> actualEgerssEvcOptional = composition.get(EGRESS, EVC);
109 Optional<GNRPBwpFlow> actualEgerssUniOptional = composition.get(EGRESS, UNI);
112 assertTrue(actualIngerssDefaultOptional.isPresent());
113 assertTrue(actualIngressEvcOptional.isPresent());
114 assertTrue(actualIngerssUniOptional.isPresent());
115 assertTrue(actualEgerssDefaultOptional.isPresent());
116 assertTrue(actualEgerssEvcOptional.isPresent());
117 assertTrue(actualEgerssUniOptional.isPresent());
119 assertEquals(defaultIngressBwProfileMock, actualIngerssDefaultOptional.get());
120 assertEquals(defaultEgressBwProfileMock, actualEgerssDefaultOptional.get());
121 assertEquals(ingressBwProfilePerEvcMock, actualIngressEvcOptional.get());
122 assertEquals(egressBwProfilePerEvcMock, actualEgerssEvcOptional.get());
123 assertEquals(ingressBwProfilePerUniMock, actualIngerssUniOptional.get());
124 assertEquals(egressBwProfilePerUniMock, actualEgerssUniOptional.get());
128 public void testHasAnyProfileDefinedPositive() {
130 BandwidthProfileComposition composition = builderWithOneProfile().build();
133 boolean actual = composition.hasAnyProfileDefined();
140 public void testHasAnyProfileDefinedNegative() {
142 BandwidthProfileComposition composition = builderWithNoProfile().build();
145 boolean actual = composition.hasAnyProfileDefined();
151 private BandwidthProfileComposition.BandwidthProfileCompositionBuilder builderWithAllProfiles() {
152 return BandwidthProfileComposition.builder()
153 .defaultIngressBwProfile(Optional.of(defaultIngressBwProfileMock))
154 .defaultEgressBwProfile(Optional.of(defaultEgressBwProfileMock))
155 .ingressBwProfilePerEvc(Optional.of(ingressBwProfilePerEvcMock))
156 .egressBwProfilePerEvc(Optional.of(egressBwProfilePerEvcMock))
157 .ingressBwProfilePerUni(Optional.of(ingressBwProfilePerUniMock))
158 .egressBwProfilePerUni(Optional.of(egressBwProfilePerUniMock));
161 private BandwidthProfileComposition.BandwidthProfileCompositionBuilder builderWithOneProfile() {
162 return BandwidthProfileComposition.builder()
163 .defaultIngressBwProfile(Optional.empty())
164 .defaultEgressBwProfile(Optional.empty())
165 .ingressBwProfilePerEvc(Optional.empty())
166 .egressBwProfilePerEvc(Optional.of(egressBwProfilePerEvcMock))
167 .ingressBwProfilePerUni(Optional.empty())
168 .egressBwProfilePerUni(Optional.empty());
171 private BandwidthProfileComposition.BandwidthProfileCompositionBuilder builderWithNoProfile() {
172 return BandwidthProfileComposition.builder()
173 .defaultIngressBwProfile(Optional.empty())
174 .defaultEgressBwProfile(Optional.empty())
175 .ingressBwProfilePerEvc(Optional.empty())
176 .egressBwProfilePerEvc(Optional.empty())
177 .ingressBwProfilePerUni(Optional.empty())
178 .egressBwProfilePerUni(Optional.empty());