2b2ca7d1e89228804b5beb94157fb13bddedd43d
[bgpcep.git] / bgp / openconfig-rp-spi / src / test / java / org / opendaylight / protocol / bgp / openconfig / routing / policy / spi / AttributesEqualTests.java
1 /*
2  * Copyright (c) 2018 AT&T Intellectual Property. 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.protocol.bgp.openconfig.routing.policy.spi;
9
10 import static org.junit.Assert.assertNotNull;
11 import static org.junit.Assert.assertNull;
12 import static org.mockito.Mockito.doReturn;
13 import static org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.registry.RouteAttributeContainer.routeAttributeContainerFalse;
14
15 import java.util.List;
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.mockito.Mock;
19 import org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.registry.RouteAttributeContainer;
20 import org.opendaylight.protocol.bgp.rib.spi.policy.BGPRouteEntryExportParameters;
21 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.IPV4UNICAST;
22 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.IPV6UNICAST;
23 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.routing.policy.rev151009.routing.policy.top.routing.policy.policy.definitions.policy.definition.statements.Statement;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6AddressNoZone;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.AttributesBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.attributes.LocalPrefBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.attributes.MultiExitDiscBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.attributes.OriginBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.BgpOrigin;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.next.hop.c.next.hop.Ipv4NextHopCaseBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.next.hop.c.next.hop.Ipv6NextHopCaseBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.next.hop.c.next.hop.ipv4.next.hop._case.Ipv4NextHopBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.next.hop.c.next.hop.ipv6.next.hop._case.Ipv6NextHopBuilder;
35 import org.opendaylight.yangtools.yang.common.Uint32;
36
37 public class AttributesEqualTests extends AbstractStatementRegistryTest {
38     @Mock
39     private BGPRouteEntryExportParameters exportParameters;
40     private List<Statement> basicStatements;
41     @Mock
42     private RouteEntryBaseAttributes baseAttributes;
43
44     @Before
45     @Override
46     public void setUp() throws Exception {
47         super.setUp();
48         basicStatements = loadStatement("basic-statements-test");
49         doReturn(CLUSTER).when(baseAttributes).getClusterId();
50         doReturn(LOCAL_AS).when(baseAttributes).getLocalAs();
51         doReturn(IPV4).when(baseAttributes).getOriginatorId();
52     }
53
54     @Test
55     public void testMedEq() {
56         Statement statement = basicStatements.stream()
57                 .filter(st -> st.getName().equals("med-eq-test")).findFirst().get();
58         RouteAttributeContainer attributeContainer = routeAttributeContainerFalse(new AttributesBuilder()
59                 .setMultiExitDisc(new MultiExitDiscBuilder().setMed(Uint32.valueOf(200)).build())
60                 .build());
61
62         RouteAttributeContainer result = statementRegistry.applyExportStatement(
63                 baseAttributes,
64                 IPV4UNICAST.VALUE,
65                 exportParameters,
66                 attributeContainer,
67                 statement);
68         assertNotNull(result.getAttributes());
69
70
71         attributeContainer = routeAttributeContainerFalse(new AttributesBuilder()
72                 .setMultiExitDisc(new MultiExitDiscBuilder().setMed(Uint32.valueOf(100)).build())
73                 .build());
74         result = statementRegistry.applyExportStatement(
75                 baseAttributes,
76                 IPV4UNICAST.VALUE,
77                 exportParameters,
78                 attributeContainer,
79                 statement);
80         assertNull(result.getAttributes());
81     }
82
83     @Test
84     public void testOriginEq() {
85         Statement statement = basicStatements.stream()
86                 .filter(st -> st.getName().equals("origin-eq-test")).findFirst().get();
87         RouteAttributeContainer attributeContainer = routeAttributeContainerFalse(new AttributesBuilder()
88                 .setOrigin(new OriginBuilder().setValue(BgpOrigin.Egp).build())
89                 .build());
90
91         RouteAttributeContainer result = statementRegistry.applyExportStatement(
92                 baseAttributes,
93                 IPV4UNICAST.VALUE,
94                 exportParameters,
95                 attributeContainer,
96                 statement);
97         assertNotNull(result.getAttributes());
98
99
100         attributeContainer = routeAttributeContainerFalse(new AttributesBuilder()
101                 .setOrigin(new OriginBuilder().setValue(BgpOrigin.Igp).build())
102                 .build());
103         result = statementRegistry.applyExportStatement(
104                 baseAttributes,
105                 IPV4UNICAST.VALUE,
106                 exportParameters,
107                 attributeContainer,
108                 statement);
109         assertNull(result.getAttributes());
110     }
111
112     @Test
113     public void testNextHopIn() {
114         Statement statement = basicStatements.stream()
115                 .filter(st -> st.getName().equals("nexthop-in-test")).findFirst().get();
116         RouteAttributeContainer attributeContainer = routeAttributeContainerFalse(new AttributesBuilder()
117                 .setCNextHop(new Ipv6NextHopCaseBuilder().setIpv6NextHop(new Ipv6NextHopBuilder()
118                         .setGlobal(new Ipv6AddressNoZone("2001:db8::1")).build()).build())
119                 .build());
120
121         RouteAttributeContainer result = statementRegistry.applyExportStatement(
122                 baseAttributes,
123                 IPV4UNICAST.VALUE,
124                 exportParameters,
125                 attributeContainer,
126                 statement);
127         assertNotNull(result.getAttributes());
128
129
130         attributeContainer = routeAttributeContainerFalse(new AttributesBuilder()
131                 .setCNextHop(new Ipv4NextHopCaseBuilder().setIpv4NextHop(new Ipv4NextHopBuilder()
132                         .setGlobal(new Ipv4AddressNoZone("42.42.42.42")).build()).build())
133                 .build());
134         result = statementRegistry.applyExportStatement(
135                 baseAttributes,
136                 IPV4UNICAST.VALUE,
137                 exportParameters,
138                 attributeContainer,
139                 statement);
140         assertNull(result.getAttributes());
141     }
142
143     @Test
144     public void testLocalPref() {
145         Statement statement = basicStatements.stream()
146                 .filter(st -> st.getName().equals("local-pref-eq-test")).findFirst().get();
147         RouteAttributeContainer attributeContainer = routeAttributeContainerFalse(new AttributesBuilder()
148                 .setLocalPref(new LocalPrefBuilder().setPref(Uint32.valueOf(350)).build())
149                 .build());
150
151         RouteAttributeContainer result = statementRegistry.applyExportStatement(
152                 baseAttributes,
153                 IPV4UNICAST.VALUE,
154                 exportParameters,
155                 attributeContainer,
156                 statement);
157         assertNotNull(result.getAttributes());
158
159
160         attributeContainer = routeAttributeContainerFalse(new AttributesBuilder()
161                 .setLocalPref(new LocalPrefBuilder().setPref(Uint32.valueOf(100)).build())
162                 .build());
163         result = statementRegistry.applyExportStatement(
164                 baseAttributes,
165                 IPV4UNICAST.VALUE,
166                 exportParameters,
167                 attributeContainer,
168                 statement);
169         assertNull(result.getAttributes());
170     }
171
172     @Test
173     public void testAfiSafiIn() {
174         Statement statement = basicStatements.stream()
175                 .filter(st -> st.getName().equals("afi-safi-in-test")).findFirst().get();
176         RouteAttributeContainer attributeContainer = routeAttributeContainerFalse(new AttributesBuilder()
177                 .setLocalPref(new LocalPrefBuilder().setPref(Uint32.valueOf(350)).build())
178                 .build());
179
180         RouteAttributeContainer result = statementRegistry.applyExportStatement(
181                 baseAttributes,
182                 IPV6UNICAST.VALUE,
183                 exportParameters,
184                 attributeContainer,
185                 statement);
186         assertNotNull(result.getAttributes());
187
188
189         attributeContainer = routeAttributeContainerFalse(new AttributesBuilder()
190                 .setLocalPref(new LocalPrefBuilder().setPref(Uint32.valueOf(100)).build())
191                 .build());
192         result = statementRegistry.applyExportStatement(
193                 baseAttributes,
194                 IPV4UNICAST.VALUE,
195                 exportParameters,
196                 attributeContainer,
197                 statement);
198         assertNull(result.getAttributes());
199     }
200 }