Eliminate RouteDistinguisherBuilder
[bgpcep.git] / bgp / topology-provider / src / test / java / org / opendaylight / bgpcep / bgp / topology / provider / UriBuilderTest.java
1 /*
2  * Copyright (c) 2014 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.bgpcep.bgp.topology.provider;
9
10 import static org.junit.Assert.assertEquals;
11
12 import org.junit.Test;
13 import org.opendaylight.bgp.concepts.RouteDistinguisherUtil;
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.AreaIdentifier;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.DomainIdentifier;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.Identifier;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.Ipv4InterfaceIdentifier;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.ProtocolId;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.TopologyIdentifier;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.isis.lan.identifier.IsIsRouterIdentifierBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.object.type.LinkCaseBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.object.type.link._case.LinkDescriptorsBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.object.type.link._case.LocalNodeDescriptorsBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.object.type.link._case.RemoteNodeDescriptorsBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.routes.linkstate.routes.LinkstateRouteBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.node.identifier.c.router.identifier.IsisPseudonodeCaseBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.node.identifier.c.router.identifier.OspfNodeCaseBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.node.identifier.c.router.identifier.isis.pseudonode._case.IsisPseudonodeBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.node.identifier.c.router.identifier.ospf.node._case.OspfNodeBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.PathId;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.RouteDistinguisher;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.concepts.rev131125.IsoSystemIdentifier;
34 import org.opendaylight.yangtools.yang.common.Uint16;
35 import org.opendaylight.yangtools.yang.common.Uint32;
36 import org.opendaylight.yangtools.yang.common.Uint64;
37 import org.opendaylight.yangtools.yang.common.Uint8;
38
39 public class UriBuilderTest {
40     private static final RouteDistinguisher DISTINGUISHER
41             = RouteDistinguisherUtil.parseRouteDistinguisher("1.2.3.4:258");
42
43     @Test
44     public void test() {
45         final LinkstateRouteBuilder routeB = new LinkstateRouteBuilder().setProtocolId(ProtocolId.Direct)
46                 .setIdentifier(new Identifier(Uint64.TEN)).setPathId(new PathId(Uint32.ZERO)).setRouteKey("key");
47         final UriBuilder a = new UriBuilder(routeB.build());
48         assertEquals("bgpls://Direct:10/", a.toString());
49
50         routeB.setRouteDistinguisher(DISTINGUISHER);
51         final UriBuilder b = new UriBuilder(routeB.build());
52         assertEquals("bgpls://1.2.3.4:258:Direct:10/", b.toString());
53
54         final UriBuilder c = new UriBuilder(b, "foo");
55         assertEquals("bgpls://1.2.3.4:258:Direct:10/type=foo", c.toString());
56
57         a.add("foo", 25L);
58         assertEquals("bgpls://Direct:10/&foo=25", a.toString());
59
60         final LinkCaseBuilder linkB = new LinkCaseBuilder();
61         linkB.setLinkDescriptors(new LinkDescriptorsBuilder()
62                 .setIpv4InterfaceAddress(new Ipv4InterfaceIdentifier("127.0.0.1"))
63                 .setIpv4NeighborAddress(new Ipv4InterfaceIdentifier("20.20.20.20"))
64                 .setMultiTopologyId(new TopologyIdentifier(Uint16.valueOf(55)))
65                 .setLinkLocalIdentifier(Uint32.ONE)
66                 .setLinkRemoteIdentifier(Uint32.TWO)
67                 .build());
68         final LocalNodeDescriptorsBuilder nodeB = new LocalNodeDescriptorsBuilder();
69         nodeB.setAsNumber(new AsNumber(Uint32.valueOf(12))).setDomainId(new DomainIdentifier(Uint32.valueOf(15)))
70                 .setAreaId(new AreaIdentifier(Uint32.valueOf(17)));
71         nodeB.setCRouterIdentifier(new OspfNodeCaseBuilder().setOspfNode(new OspfNodeBuilder()
72                 .setOspfRouterId(Uint32.valueOf(22)).build()).build());
73         linkB.setLocalNodeDescriptors(nodeB.build());
74         final RemoteNodeDescriptorsBuilder nodeR = new RemoteNodeDescriptorsBuilder();
75         nodeR.setCRouterIdentifier(new IsisPseudonodeCaseBuilder().setIsisPseudonode(new IsisPseudonodeBuilder()
76                 .setIsIsRouterIdentifier(new IsIsRouterIdentifierBuilder()
77                         .setIsoSystemId(new IsoSystemIdentifier(new byte[]{1, 2, 3, 4, 5, 6}))
78                         .build()).setPsn(Uint8.TWO).build()).build());
79         linkB.setRemoteNodeDescriptors(nodeR.build());
80         c.add(linkB.build());
81         assertEquals("""
82             bgpls://1.2.3.4:258:Direct:10/type=foo&local-as=12&local-domain=15&local-area=17&local-router=22\
83             &remote-router=0102.0304.0506.02&ipv4-iface=127.0.0.1&ipv4-neigh=20.20.20.20&mt=55&local-id=1\
84             &remote-id=2""", c.toString());
85     }
86 }