Refactoring of cisco-xr-driver and impl modules.
[unimgr.git] / cisco-xr-driver / src / test / java / org / opendaylight / unimgr / mef / nrp / cisco / xr / common / helper / BandwidthProfileCompositionTest.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 package org.opendaylight.unimgr.mef.nrp.cisco.xr.common.helper;
9
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;
17
18 import java.util.Optional;
19
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;
25
26 public class BandwidthProfileCompositionTest {
27
28     private IngressBwpFlow defaultIngressBwProfileMock;
29
30     private EgressBwpFlow defaultEgressBwProfileMock;
31
32     private IngressBwpFlow ingressBwProfilePerEvcMock;
33
34     private EgressBwpFlow egressBwProfilePerEvcMock;
35
36     private  IngressBwpUni ingressBwProfilePerUniMock;
37
38     private  EgressBwpUni egressBwProfilePerUniMock;
39
40     @Before
41     public void setup() {
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);
48     }
49
50     @Test
51     public void testBuilder() {
52         //given
53         BandwidthProfileComposition.BandwidthProfileCompositionBuilder compositionBuilder = builderWithAllProfiles();
54
55         //when
56         BandwidthProfileComposition composition = compositionBuilder.build();
57
58         //then
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());
65
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());
72     }
73
74     @Test
75     public void testBuilderEmpty() {
76         //given
77         BandwidthProfileComposition.BandwidthProfileCompositionBuilder compositionBuilder = BandwidthProfileComposition.builder();
78
79         //when
80         BandwidthProfileComposition composition = compositionBuilder.build();
81
82         //then
83         assertNotNull(composition.getDefaultIngressBwProfile());
84         assertNotNull(composition.getDefaultEgressBwProfile());
85         assertNotNull(composition.getIngressBwProfilePerEvc());
86         assertNotNull(composition.getEgressBwProfilePerEvc());
87         assertNotNull(composition.getIngressBwProfilePerUni());
88         assertNotNull(composition.getEgressBwProfilePerUni());
89
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());
96     }
97
98     @Test
99     public void testGet() {
100         //given
101         BandwidthProfileComposition composition = builderWithAllProfiles().build();
102
103         //when
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);
110
111         //then
112         assertTrue(actualIngerssDefaultOptional.isPresent());
113         assertTrue(actualIngressEvcOptional.isPresent());
114         assertTrue(actualIngerssUniOptional.isPresent());
115         assertTrue(actualEgerssDefaultOptional.isPresent());
116         assertTrue(actualEgerssEvcOptional.isPresent());
117         assertTrue(actualEgerssUniOptional.isPresent());
118
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());
125     }
126
127     @Test
128     public void testHasAnyProfileDefinedPositive() {
129         //given
130         BandwidthProfileComposition composition = builderWithOneProfile().build();
131
132         //when
133         boolean actual = composition.hasAnyProfileDefined();
134
135         //then
136         assertTrue(actual);
137     }
138
139     @Test
140     public void testHasAnyProfileDefinedNegative() {
141         //given
142         BandwidthProfileComposition composition = builderWithNoProfile().build();
143
144         //when
145         boolean actual = composition.hasAnyProfileDefined();
146
147         //then
148         assertFalse(actual);
149     }
150
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));
159     }
160
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());
169     }
170
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());
179     }
180 }