2 * Copyright (c) 2018 AT&T Intellectual Property. 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.protocol.bgp.openconfig.routing.policy.spi;
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;
15 import java.util.Arrays;
16 import java.util.Collections;
17 import java.util.List;
18 import org.junit.Before;
19 import org.junit.Test;
20 import org.mockito.Mock;
21 import org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.registry.RouteAttributeContainer;
22 import org.opendaylight.protocol.bgp.rib.spi.policy.BGPRouteEntryExportParameters;
23 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.IPV4UNICAST;
24 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.routing.policy.rev151009.routing.policy.top.routing.policy.policy.definitions.policy.definition.statements.Statement;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
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.AsPathBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.attributes.as.path.SegmentsBuilder;
30 public class AsPathLengthTest extends AbstractStatementRegistryTest {
32 private BGPRouteEntryExportParameters exportParameters;
33 private List<Statement> basicStatements;
35 private RouteEntryBaseAttributes baseAttributes;
39 public void setUp() throws Exception {
41 basicStatements = loadStatement("basic-statements-test");
42 doReturn(CLUSTER).when(baseAttributes).getClusterId();
43 doReturn(LOCAL_AS).when(baseAttributes).getLocalAs();
44 doReturn(IPV4).when(baseAttributes).getOriginatorId();
48 public void testASPathLengthEq() {
49 final AsPathBuilder asPath = new AsPathBuilder();
50 asPath.setSegments(Collections.singletonList(new SegmentsBuilder()
51 .setAsSequence(Arrays.asList(
52 AsNumber.getDefaultInstance("1"),
53 AsNumber.getDefaultInstance("2"),
54 AsNumber.getDefaultInstance("3")))
57 Statement statement = basicStatements.stream()
58 .filter(st -> st.getName().equals("as-path-eq-length-test")).findFirst().get();
59 RouteAttributeContainer attributeContainer = routeAttributeContainerFalse(new AttributesBuilder()
60 .setAsPath(asPath.build())
63 RouteAttributeContainer result = statementRegistry.applyExportStatement(
69 assertNotNull(result.getAttributes());
71 asPath.setSegments(Collections.singletonList(new SegmentsBuilder()
72 .setAsSequence(Arrays.asList(
73 AsNumber.getDefaultInstance("1"),
74 AsNumber.getDefaultInstance("3")))
77 attributeContainer = routeAttributeContainerFalse(new AttributesBuilder().setAsPath(asPath.build()).build());
78 result = statementRegistry.applyExportStatement(
84 assertNull(result.getAttributes());
88 public void testASPathLengthGe() {
89 final AsPathBuilder asPath = new AsPathBuilder();
90 asPath.setSegments(Collections.singletonList(new SegmentsBuilder()
91 .setAsSequence(Arrays.asList(
92 AsNumber.getDefaultInstance("1"),
93 AsNumber.getDefaultInstance("2"),
94 AsNumber.getDefaultInstance("3")))
97 Statement statement = basicStatements.stream()
98 .filter(st -> st.getName().equals("as-path-ge-length-test")).findFirst().get();
99 RouteAttributeContainer attributeContainer = routeAttributeContainerFalse(new AttributesBuilder()
100 .setAsPath(asPath.build())
103 RouteAttributeContainer result = statementRegistry.applyExportStatement(
109 assertNull(result.getAttributes());
111 asPath.setSegments(Collections.singletonList(new SegmentsBuilder()
112 .setAsSequence(Collections.singletonList(
113 AsNumber.getDefaultInstance("3")))
116 attributeContainer = routeAttributeContainerFalse(new AttributesBuilder().setAsPath(asPath.build()).build());
117 result = statementRegistry.applyExportStatement(
123 assertNotNull(result.getAttributes());
127 public void testASPathLengthLe() {
128 final AsPathBuilder asPath = new AsPathBuilder();
129 asPath.setSegments(Collections.singletonList(new SegmentsBuilder()
130 .setAsSequence(Arrays.asList(
131 AsNumber.getDefaultInstance("1"),
132 AsNumber.getDefaultInstance("2"),
133 AsNumber.getDefaultInstance("3")))
136 Statement statement = basicStatements.stream()
137 .filter(st -> st.getName().equals("as-path-le-length-test")).findFirst().get();
138 RouteAttributeContainer attributeContainer = routeAttributeContainerFalse(new AttributesBuilder()
139 .setAsPath(asPath.build())
142 RouteAttributeContainer result = statementRegistry.applyExportStatement(
148 assertNotNull(result.getAttributes());
150 asPath.setSegments(Collections.singletonList(new SegmentsBuilder()
151 .setAsSequence(Collections.singletonList(AsNumber.getDefaultInstance("3"))).build()));
153 attributeContainer = routeAttributeContainerFalse(new AttributesBuilder().setAsPath(asPath.build()).build());
154 result = statementRegistry.applyExportStatement(
160 assertNull(result.getAttributes());