2 * Copyright (c) 2013 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.protocol.bgp.rib.impl;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertNotNull;
13 import static org.junit.Assert.assertNull;
14 import static org.junit.Assert.assertTrue;
15 import java.util.ArrayList;
16 import java.util.HashMap;
17 import java.util.List;
19 import org.junit.Test;
20 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPSessionPreferences;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.LinkstateAddressFamily;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.LinkstateSubsequentAddressFamily;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.BgpParameters;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.BgpParametersBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.bgp.parameters.OptionalCapabilities;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.bgp.parameters.OptionalCapabilitiesBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.bgp.parameters.optional.capabilities.CParametersBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.bgp.parameters.optional.capabilities.c.parameters.As4BytesCapabilityBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.CParameters1;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.CParameters1Builder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.open.bgp.parameters.optional.capabilities.c.parameters.GracefulRestartCapabilityBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.open.bgp.parameters.optional.capabilities.c.parameters.MultiprotocolCapabilityBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.AddressFamily;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.SubsequentAddressFamily;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.UnicastSubsequentAddressFamily;
39 public class ApiTest {
42 public void testBGPSessionProposalImpl() {
43 final Class<? extends AddressFamily> key = LinkstateAddressFamily.class;
44 final Class<? extends SubsequentAddressFamily> value = LinkstateSubsequentAddressFamily.class;
45 final Map<Class<? extends AddressFamily>, Class<? extends SubsequentAddressFamily>> map = new HashMap<>();
48 final BGPSessionProposalImpl proposal = new BGPSessionProposalImpl((short) 5, new AsNumber(58L), null, map, null);
49 final BGPSessionPreferences sp = proposal.getProposal();
50 assertNull(sp.getBgpId());
51 assertEquals(proposal.getHoldTimer(), sp.getHoldTime());
52 assertEquals(proposal.getAs(), sp.getMyAs());
53 assertNull(proposal.getBgpId());
54 assertNotNull(sp.getParams());
56 final List<OptionalCapabilities> linkstate = new ArrayList<>();
57 final List<OptionalCapabilities> ipv4 = new ArrayList<>();
59 linkstate.add(new OptionalCapabilitiesBuilder().setCParameters(new CParametersBuilder().addAugmentation(
60 CParameters1.class, new CParameters1Builder().setMultiprotocolCapability(new MultiprotocolCapabilityBuilder()
61 .setAfi(key).setSafi(value).build()).build()).build()).build());
63 ipv4.add(new OptionalCapabilitiesBuilder().setCParameters(new CParametersBuilder().addAugmentation(
64 CParameters1.class, new CParameters1Builder().setMultiprotocolCapability(new MultiprotocolCapabilityBuilder()
65 .setAfi(Ipv4AddressFamily.class).setSafi(UnicastSubsequentAddressFamily.class).build()).build()).build()).build());
67 setOptionalCapabilities(linkstate);
68 setOptionalCapabilities(ipv4);
70 final BgpParameters rightInput = new BgpParametersBuilder().setOptionalCapabilities(linkstate).build();
71 final BgpParameters wrongInput = new BgpParametersBuilder().setOptionalCapabilities(ipv4).build();
72 assertNotNull(rightInput);
73 assertTrue(sp.getParams().contains(rightInput));
74 assertFalse(sp.getParams().contains(wrongInput));
77 private void setOptionalCapabilities(final List<OptionalCapabilities> list) {
78 list.add(new OptionalCapabilitiesBuilder().setCParameters(new CParametersBuilder().setAs4BytesCapability(
79 new As4BytesCapabilityBuilder().setAsNumber(new AsNumber(58L)).build()).build()).build());
80 list.add(new OptionalCapabilitiesBuilder().setCParameters(new CParametersBuilder().addAugmentation(
81 CParameters1.class, new CParameters1Builder().setGracefulRestartCapability(
82 new GracefulRestartCapabilityBuilder().build()).build()).build()).build());