Mass-convert all compontents to use -no-zone addresses
[bgpcep.git] / bgp / parser-impl / src / test / java / org / opendaylight / protocol / bgp / parser / impl / OpenTest.java
1 /*
2  * Copyright (c) 2013 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.protocol.bgp.parser.impl;
9
10 import static org.junit.Assert.assertEquals;
11
12 import com.google.common.collect.ImmutableList;
13 import io.netty.buffer.ByteBuf;
14 import io.netty.buffer.Unpooled;
15 import java.util.ArrayList;
16 import java.util.List;
17 import org.junit.Test;
18 import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
19 import org.opendaylight.protocol.bgp.parser.impl.message.BGPOpenMessageParser;
20 import org.opendaylight.protocol.bgp.parser.spi.pojo.ServiceLoaderBGPExtensionProviderContext;
21 import org.opendaylight.protocol.util.ByteArray;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.Open;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.OpenBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.ProtocolVersion;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.BgpParametersBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.bgp.parameters.OptionalCapabilities;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.bgp.parameters.OptionalCapabilitiesBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.bgp.parameters.optional.capabilities.CParametersBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.bgp.parameters.optional.capabilities.c.parameters.As4BytesCapabilityBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.CParameters1;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.CParameters1Builder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.GracefulRestartCapability;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.GracefulRestartCapabilityBuilder;
36 import org.opendaylight.yangtools.yang.common.Uint16;
37 import org.opendaylight.yangtools.yang.common.Uint32;
38 import org.opendaylight.yangtools.yang.common.Uint8;
39
40 public class OpenTest {
41
42     @Test
43     public void testSerializeOpen() throws BGPDocumentedException {
44         final Open open = new OpenBuilder()
45                 .setBgpIdentifier(new Ipv4AddressNoZone("127.0.0.1"))
46                 .setMyAsNumber(Uint16.valueOf(30))
47                 .setHoldTimer(Uint16.valueOf(3))
48                 .setVersion(new ProtocolVersion(Uint8.valueOf(4)))
49                 .setBgpParameters(ImmutableList.of(new BgpParametersBuilder()
50                     .setOptionalCapabilities(ImmutableList.of(new OptionalCapabilitiesBuilder()
51                         .setCParameters(new CParametersBuilder()
52                             .setAs4BytesCapability(new As4BytesCapabilityBuilder()
53                                 .setAsNumber(new AsNumber(Uint32.valueOf(1000))).build())
54                             .addAugmentation(CParameters1.class, new CParameters1Builder()
55                                 .setGracefulRestartCapability(new GracefulRestartCapabilityBuilder()
56                                     .setRestartFlags(new GracefulRestartCapability.RestartFlags(false))
57                                     .setRestartTime(Uint16.ZERO)
58                                     .setTables(ImmutableList.of()).build())
59                                 .build())
60                             .build())
61                         .build())).build()))
62                 .build();
63         final ByteBuf msg = Unpooled.buffer();
64         new BGPOpenMessageParser(ServiceLoaderBGPExtensionProviderContext.getSingletonInstance().getParameterRegistry())
65             .serializeMessage(open, msg);
66         final byte[] temp = ByteArray.cutBytes(ByteArray.getAllBytes(msg), 19);
67         final Open openResult = new BGPOpenMessageParser(ServiceLoaderBGPExtensionProviderContext.getSingletonInstance()
68             .getParameterRegistry()).parseMessageBody(Unpooled.copiedBuffer(temp), temp.length, null);
69
70         assertEquals(open.getBgpIdentifier(),openResult.getBgpIdentifier());
71         assertEquals(open.getHoldTimer(), openResult.getHoldTimer());
72         assertEquals(open.getMyAsNumber(), openResult.getMyAsNumber());
73         boolean grace = false;
74         if (openResult.getBgpParameters().get(0).getOptionalCapabilities().get(0).getCParameters()
75                 .getAs4BytesCapability() != null) {
76             grace = true;
77         }
78         assertEquals(open.getBgpParameters().get(0).getOptionalCapabilities().get(0).getCParameters()
79             .getAs4BytesCapability(),
80             openResult.getBgpParameters().get(0).getOptionalCapabilities().get(grace ? 0 : 1).getCParameters()
81             .getAs4BytesCapability());
82         assertEquals(open.getBgpParameters().get(0).getOptionalCapabilities().get(0).getCParameters()
83             .augmentation(CParameters1.class).getGracefulRestartCapability(),
84             openResult.getBgpParameters().get(0).getOptionalCapabilities().get(grace ? 1 : 0).getCParameters()
85                 .augmentation(CParameters1.class).getGracefulRestartCapability());
86
87     }
88
89     @Test
90     public void testSerializeLongOpen() throws BGPDocumentedException {
91         final List<OptionalCapabilities> capabilities = new ArrayList<>();
92         for (int i = 0; i < 200; ++i) {
93             capabilities.add(new OptionalCapabilitiesBuilder()
94                 .setCParameters(new CParametersBuilder()
95                     .setAs4BytesCapability(new As4BytesCapabilityBuilder()
96                         .setAsNumber(new AsNumber(Uint32.valueOf(1000))).build())
97                     .build())
98                 .build());
99         }
100
101         final Open open = new OpenBuilder()
102                 .setBgpIdentifier(new Ipv4AddressNoZone("127.0.0.1"))
103                 .setMyAsNumber(Uint16.valueOf(30))
104                 .setHoldTimer(Uint16.valueOf(3))
105                 .setVersion(new ProtocolVersion(Uint8.valueOf(4)))
106                 .setBgpParameters(ImmutableList.of(
107                     new BgpParametersBuilder().setOptionalCapabilities(capabilities).build()))
108                 .build();
109
110         final ByteBuf msg = Unpooled.buffer();
111         new BGPOpenMessageParser(ServiceLoaderBGPExtensionProviderContext.getSingletonInstance().getParameterRegistry())
112             .serializeMessage(open, msg);
113
114         assertEquals(1235, msg.readableBytes());
115
116         final byte[] temp = ByteArray.cutBytes(ByteArray.getAllBytes(msg), 19);
117         final Open openResult = new BGPOpenMessageParser(ServiceLoaderBGPExtensionProviderContext.getSingletonInstance()
118             .getParameterRegistry()).parseMessageBody(Unpooled.copiedBuffer(temp), temp.length, null);
119
120         assertEquals(200, openResult.getBgpParameters().get(0).getOptionalCapabilities().size());
121     }
122 }