[ONOS-2613] Unit test the BGP Update message(LinkStateAttribute)
Change-Id: Id9545296612bed858459c8386368c66cb2159173
diff --git a/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpUpdateLinkStateAttrTest.java b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpUpdateLinkStateAttrTest.java
new file mode 100644
index 0000000..eda343f
--- /dev/null
+++ b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpUpdateLinkStateAttrTest.java
@@ -0,0 +1,1975 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.bgpio.protocol;
+
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
+import static org.hamcrest.core.Is.is;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+import org.onlab.packet.IpPrefix;
+import org.onosproject.bgpio.exceptions.BgpParseException;
+import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4.ProtocolType;
+import org.onosproject.bgpio.protocol.ver4.BgpPathAttributes;
+import org.onosproject.bgpio.types.AsPath;
+import org.onosproject.bgpio.types.BgpHeader;
+import org.onosproject.bgpio.types.BgpValueType;
+import org.onosproject.bgpio.types.LinkStateAttributes;
+import org.onosproject.bgpio.types.Med;
+import org.onosproject.bgpio.types.MpReachNlri;
+import org.onosproject.bgpio.types.Origin;
+import org.onosproject.bgpio.types.Origin.ORIGINTYPE;
+import org.onosproject.bgpio.types.attr.BgpAttrNodeFlagBitTlv;
+import org.onosproject.bgpio.types.attr.BgpAttrNodeIsIsAreaId;
+import org.onosproject.bgpio.types.attr.BgpAttrNodeMultiTopologyId;
+import org.onosproject.bgpio.types.attr.BgpAttrNodeName;
+import org.onosproject.bgpio.types.attr.BgpAttrRouterIdV4;
+import org.onosproject.bgpio.types.attr.BgpAttrOpaqueNode;
+import org.onosproject.bgpio.types.attr.BgpLinkAttrIsIsAdminstGrp;
+import org.onosproject.bgpio.types.attr.BgpLinkAttrMplsProtocolMask;
+import org.onosproject.bgpio.types.attr.BgpLinkAttrOpaqLnkAttrib;
+import org.onosproject.bgpio.types.attr.BgpLinkAttrProtectionType.ProtectionType;
+import org.onosproject.bgpio.types.attr.BgpLinkAttrSrlg;
+import org.onosproject.bgpio.types.attr.BgpLinkAttrTeDefaultMetric;
+import org.onosproject.bgpio.types.attr.BgpPrefixAttrOpaqueData;
+import org.onosproject.bgpio.types.attr.BgpLinkAttrProtectionType;
+import org.onosproject.bgpio.types.attr.BgpPrefixAttrRouteTag;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
+/**
+ * UT for Update Message (Link State Attribute and all its TLVs).
+ */
+public class BgpUpdateLinkStateAttrTest {
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpLinkAttrIGPMetric.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest1() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0x95,
+ 0x02, 0x00, 0x04,
+ 0x18, 0x0a, 0x01, 0x01, //withdrawn routes
+ 0x00, 0x7A, //path attribute len
+ 0x04, 0x01, 0x01, 0x00, //origin
+ 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med
+ (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop
+ 0x00, //reserved
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, //link nlri
+ (byte) 0x80, 0x1d, 0x0f, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, (byte) 0xbd, 0x59, 0x4c, 0x62, //BgpAttrNodeRouterId
+ 0x04, 0x47, 0x00, 0x03, 0x00, 0x00, 0x0a}; //BgpLinkAttrIGPMetric
+
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 149));
+
+ ListIterator<IpPrefix> listIterator1 = other.withdrawnRoutes().listIterator();
+ byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00};
+
+ while (listIterator1.hasNext()) {
+ IpPrefix testPrefixValue = listIterator1.next();
+ assertThat(testPrefixValue.prefixLength(), is((int) 24));
+ assertThat(testPrefixValue.address().toOctets(), is(prefix));
+ }
+
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath aspath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ //compare Origin
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ //compare Aspath
+ testPathAttribute = listIterator.next();
+ aspath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = aspath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ //compare MED
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ //compare Mpreach
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ assertThat(mpReach.mpReachNlriLen(), is((int) 83));
+ assertThat(mpReach.getType(), is((short) 14));
+
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.LINK;
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getIdentifier(), is((long) 0));
+ assertThat(testnlri.getNlriType(), is(nlriType));
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ //compare LinkStateAttributes
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+ byte[] linkAttrbs = new byte[] {(byte) 0x80, 0x1d, 0x0f, 0x04, 0x04, 0x00, 0x04, (byte) 0xbd, 0x59, 0x4c,
+ 0x62, 0x04, 0x47, 0x00, 0x03, 0x00, 0x00, 0x0a };
+ ChannelBuffer cb = ChannelBuffers.dynamicBuffer();
+ cb.writeBytes(linkAttrbs);
+ LinkStateAttributes obj = LinkStateAttributes.read(cb);
+
+ assertThat(linkStateAttr.linkStateAttributes(), is(obj.linkStateAttributes()));
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ }
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpAttrNodeRouterId.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest2() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0x96,
+ 0x02, 0x00, 0x04,
+ 0x18, 0x0a, 0x01, 0x01, //withdrawn routes
+ 0x00, 0x7b, //path attribute len
+ 0x04, 0x01, 0x01, 0x00, //origin
+ 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med
+ (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop
+ 0x00, //reserved
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, //link nlri
+ (byte) 0x80, 0x1d, 0x10, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15, 0x15, //BgpAttrNodeRouterId
+ 0x04, 0x06, 0x00, 0x04, 0x16, 0x16, 0x16, 0x16}; //BgpAttrNodeRouterId
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 150));
+
+ ListIterator<IpPrefix> listIterator1 = other.withdrawnRoutes().listIterator();
+ byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00};
+
+ while (listIterator1.hasNext()) {
+ IpPrefix testPrefixValue = listIterator1.next();
+ assertThat(testPrefixValue.prefixLength(), is((int) 24));
+ assertThat(testPrefixValue.address().toOctets(), is(prefix));
+ }
+
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath asPath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ testPathAttribute = listIterator.next();
+ asPath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = asPath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ assertThat(mpReach.mpReachNlriLen(), is((int) 83));
+ assertThat(mpReach.getType(), is((short) 14));
+
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.LINK;
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getIdentifier(), is((long) 0));
+ assertThat(testnlri.getNlriType(), is(nlriType));
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+ byte[] linkAttrbs = new byte[] {(byte) 0x80, 0x1d, 0x10, 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15,
+ 0x15, 0x04, 0x06, 0x00, 0x04, 0x16, 0x16, 0x16, 0x16 };
+ ChannelBuffer cb = ChannelBuffers.dynamicBuffer();
+ cb.writeBytes(linkAttrbs);
+ LinkStateAttributes obj = LinkStateAttributes.read(cb);
+
+ assertThat(linkStateAttr.linkStateAttributes(), is(obj.linkStateAttributes()));
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ }
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpPrefixAttrMetric.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest3() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0x96,
+ 0x02, 0x00, 0x04,
+ 0x18, 0x0a, 0x01, 0x01, //withdrawn routes
+ 0x00, 0x7b, //path attribute len
+ 0x04, 0x01, 0x01, 0x00, //origin
+ 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med
+ (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop
+ 0x00, //reserved
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, //link nlri
+ (byte) 0x80, 0x1d, 0x10, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15, 0x15, //BgpAttrNodeRouterId
+ 0x04, (byte) 0x83, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00}; //BgpPrefixAttrMetric
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 150));
+
+ ListIterator<IpPrefix> listIterator1 = other.withdrawnRoutes().listIterator();
+ byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00};
+
+ while (listIterator1.hasNext()) {
+ IpPrefix testPrefixValue = listIterator1.next();
+ assertThat(testPrefixValue.prefixLength(), is((int) 24));
+ assertThat(testPrefixValue.address().toOctets(), is(prefix));
+ }
+
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath aspath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ testPathAttribute = listIterator.next();
+ aspath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = aspath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ assertThat(mpReach.mpReachNlriLen(), is((int) 83));
+ assertThat(mpReach.getType(), is((short) 14));
+
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.LINK;
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getIdentifier(), is((long) 0));
+ assertThat(testnlri.getNlriType(), is(nlriType));
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+ byte[] linkAttrbs = new byte[] {(byte) 0x80, 0x1d, 0x10, 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15,
+ 0x15, 0x04, (byte) 0x83, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00 };
+ ChannelBuffer cb = ChannelBuffers.dynamicBuffer();
+ cb.writeBytes(linkAttrbs);
+ LinkStateAttributes obj = LinkStateAttributes.read(cb);
+
+ assertThat(linkStateAttr.linkStateAttributes(), is(obj.linkStateAttributes()));
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ }
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpAttrNodeName.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest4() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0x98,
+ 0x02, 0x00, 0x04,
+ 0x18, 0x0a, 0x01, 0x01, //withdrawn routes
+ 0x00, 0x7d, //path attribute len
+ 0x04, 0x01, 0x01, 0x00, //origin
+ 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med
+ (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop
+ 0x00, //reserved
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, //link nlri
+ (byte) 0x80, 0x1d, 0x12, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, 0x15, 0x15, 0x15, 0x15, //BgpAttrNodeRouterId
+ 0x04, 0x02, 0x00, 0x06, 0x37, 0x37, 0x35, 0x30, 0x2d, 0x31 }; //BgpAttrNodeName
+
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 152));
+
+ ListIterator<IpPrefix> listIterator1 = other.withdrawnRoutes().listIterator();
+ byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00};
+
+ while (listIterator1.hasNext()) {
+ IpPrefix testPrefixValue = listIterator1.next();
+ assertThat(testPrefixValue.prefixLength(), is((int) 24));
+ assertThat(testPrefixValue.address().toOctets(), is(prefix));
+ }
+
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath aspath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ testPathAttribute = listIterator.next();
+ aspath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = aspath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ assertThat(mpReach.mpReachNlriLen(), is((int) 83));
+ assertThat(mpReach.getType(), is((short) 14));
+
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.LINK;
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getIdentifier(), is((long) 0));
+ assertThat(testnlri.getNlriType(), is(nlriType));
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+ byte[] linkAttrbs = new byte[] {(byte) 0x80, 0x1d, 0x12, 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15,
+ 0x15, 0x04, 0x02, 0x00, 0x06, 0x37, 0x37, 0x35, 0x30, 0x2d, 0x31 };
+ ChannelBuffer cb = ChannelBuffers.dynamicBuffer();
+ cb.writeBytes(linkAttrbs);
+ LinkStateAttributes obj = LinkStateAttributes.read(cb);
+
+ ListIterator<BgpValueType> list = obj.linkStateAttributes().listIterator();
+ ListIterator<BgpValueType> list2 = linkStateAttr.linkStateAttributes().listIterator();
+ assertThat(list.next(), is(list2.next()));
+ assertThat(((BgpAttrNodeName) list2.next()).attrNodeName(), is(((BgpAttrNodeName) list.next()).attrNodeName()));
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ }
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpAttrNodeIsIsAreaId.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest5() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0x95,
+ 0x02, 0x00, 0x04,
+ 0x18, 0x0a, 0x01, 0x01, //withdrawn routes
+ 0x00, 0x7A, //path attribute len
+ 0x04, 0x01, 0x01, 0x00, //origin
+ 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med
+ (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop
+ 0x00, //reserved
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, //link nlri
+ (byte) 0x80, 0x1d, 0x0f, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, (byte) 0xbd, 0x59, 0x4c, 0x62, //BgpAttrNodeRouterId
+ 0x04, 0x03, 0x00, 0x03, 0x40, 0x01, 0x00}; //BgpAttrNodeIsIsAreaId
+
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 149));
+
+ ListIterator<IpPrefix> listIterator1 = other.withdrawnRoutes().listIterator();
+ byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00};
+
+ while (listIterator1.hasNext()) {
+ IpPrefix testPrefixValue = listIterator1.next();
+ assertThat(testPrefixValue.prefixLength(), is((int) 24));
+ assertThat(testPrefixValue.address().toOctets(), is(prefix));
+ }
+
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath aspath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ testPathAttribute = listIterator.next();
+ aspath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = aspath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ assertThat(mpReach.mpReachNlriLen(), is((int) 83));
+ assertThat(mpReach.getType(), is((short) 14));
+
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.LINK;
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getIdentifier(), is((long) 0));
+ assertThat(testnlri.getNlriType(), is(nlriType));
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+ byte[] linkAttrbs = new byte[] {(byte) 0x80, 0x1d, 0x0f, 0x04, 0x04, 0x00, 0x04, (byte) 0xbd, 0x59, 0x4c,
+ 0x62, 0x04, 0x03, 0x00, 0x03, 0x40, 0x01, 0x00 };
+ ChannelBuffer cb = ChannelBuffers.dynamicBuffer();
+ cb.writeBytes(linkAttrbs);
+ LinkStateAttributes obj = LinkStateAttributes.read(cb);
+
+ ListIterator<BgpValueType> list = obj.linkStateAttributes().listIterator();
+ ListIterator<BgpValueType> list2 = linkStateAttr.linkStateAttributes().listIterator();
+ assertThat(list.next(), is(list2.next()));
+ assertThat(((BgpAttrNodeIsIsAreaId) list2.next()).attrNodeIsIsAreaId(),
+ is(((BgpAttrNodeIsIsAreaId) list.next()).attrNodeIsIsAreaId()));
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ }
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpAttrRouterIdV6.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest6() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0xA2,
+ 0x02, 0x00, 0x04,
+ 0x18, 0x0a, 0x01, 0x01, //withdrawn routes
+ 0x00, (byte) 0x87, //path attribute len
+ 0x04, 0x01, 0x01, 0x00, //origin
+ 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med
+ (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop
+ 0x00, //reserved
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, //link nlri
+ (byte) 0x80, 0x1d, 0x1C, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, 0x15, 0x15, 0x15, 0x15, //BgpAttrNodeRouterId
+ 0x04, 0x05, 0x00, 0x10, 0x01, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01}; //BgpAttrRouterIdV6
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 162));
+
+ ListIterator<IpPrefix> listIterator1 = other.withdrawnRoutes().listIterator();
+ byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00};
+
+ while (listIterator1.hasNext()) {
+ IpPrefix testPrefixValue = listIterator1.next();
+ assertThat(testPrefixValue.prefixLength(), is((int) 24));
+ assertThat(testPrefixValue.address().toOctets(), is(prefix));
+ }
+
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath aspath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ testPathAttribute = listIterator.next();
+ aspath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = aspath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ assertThat(mpReach.mpReachNlriLen(), is((int) 83));
+ assertThat(mpReach.getType(), is((short) 14));
+
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.LINK;
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getIdentifier(), is((long) 0));
+ assertThat(testnlri.getNlriType(), is(nlriType));
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+ byte[] linkAttrbs = new byte[] {(byte) 0x80, 0x1d, 0x1C, 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15,
+ 0x15, 0x04, 0x05, 0x00, 0x10, 0x01, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01 };
+ ChannelBuffer cb = ChannelBuffers.dynamicBuffer();
+ cb.writeBytes(linkAttrbs);
+ LinkStateAttributes obj = LinkStateAttributes.read(cb);
+
+ assertThat(linkStateAttr.linkStateAttributes(), is(obj.linkStateAttributes()));
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ }
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpAttrNodeMultiTopologyId.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest7() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0x96,
+ 0x02, 0x00, 0x04,
+ 0x18, 0x0a, 0x01, 0x01, //withdrawn routes
+ 0x00, 0x7b, //path attribute len
+ 0x04, 0x01, 0x01, 0x00, //origin
+ 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med
+ (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop
+ 0x00, //reserved
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, //link nlri
+ (byte) 0x80, 0x1d, 0x10, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15, 0x15, //BgpAttrNodeRouterId
+ 0x01, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02}; //BgpAttrNodeMultiTopologyId
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 150));
+
+ ListIterator<IpPrefix> listIterator1 = other.withdrawnRoutes().listIterator();
+ byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00};
+
+ while (listIterator1.hasNext()) {
+ IpPrefix testPrefixValue = listIterator1.next();
+ assertThat(testPrefixValue.prefixLength(), is((int) 24));
+ assertThat(testPrefixValue.address().toOctets(), is(prefix));
+ }
+
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath aspath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ testPathAttribute = listIterator.next();
+ aspath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = aspath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ assertThat(mpReach.mpReachNlriLen(), is((int) 83));
+ assertThat(mpReach.getType(), is((short) 14));
+
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.LINK;
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getIdentifier(), is((long) 0));
+ assertThat(testnlri.getNlriType(), is(nlriType));
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+ byte[] linkAttrbs = new byte[] {(byte) 0x80, 0x1d, 0x10, 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15,
+ 0x15, 0x01, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02 };
+ ChannelBuffer cb = ChannelBuffers.dynamicBuffer();
+ cb.writeBytes(linkAttrbs);
+ LinkStateAttributes obj = LinkStateAttributes.read(cb);
+
+ ListIterator<BgpValueType> list = obj.linkStateAttributes().listIterator();
+ ListIterator<BgpValueType> list2 = linkStateAttr.linkStateAttributes().listIterator();
+ assertThat(list.next(), is(list2.next()));
+ assertThat(((BgpAttrNodeMultiTopologyId) list2.next()).attrMultiTopologyId(),
+ is(((BgpAttrNodeMultiTopologyId) list.next()).attrMultiTopologyId()));
+
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ }
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpPrefixAttrRouteTag.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest8() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0x96,
+ 0x02, 0x00, 0x04,
+ 0x18, 0x0a, 0x01, 0x01, //withdrawn routes
+ 0x00, 0x7b, //path attribute len
+ 0x04, 0x01, 0x01, 0x00, //origin
+ 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med
+ (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop
+ 0x00, //reserved
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, //link nlri
+ (byte) 0x80, 0x1d, 0x10, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15, 0x15, //BgpAttrNodeRouterId
+ 0x04, (byte) 0x81, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01}; //BgpPrefixAttrRouteTag
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 150));
+
+ ListIterator<IpPrefix> listIterator1 = other.withdrawnRoutes().listIterator();
+ byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00};
+
+ while (listIterator1.hasNext()) {
+ IpPrefix testPrefixValue = listIterator1.next();
+ assertThat(testPrefixValue.prefixLength(), is((int) 24));
+ assertThat(testPrefixValue.address().toOctets(), is(prefix));
+ }
+
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath aspath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ testPathAttribute = listIterator.next();
+ aspath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = aspath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ assertThat(mpReach.mpReachNlriLen(), is((int) 83));
+ assertThat(mpReach.getType(), is((short) 14));
+
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.LINK;
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getIdentifier(), is((long) 0));
+ assertThat(testnlri.getNlriType(), is(nlriType));
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+ byte[] linkAttrbs = new byte[] {(byte) 0x80, 0x1d, 0x10, 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15,
+ 0x15, 0x04, (byte) 0x81, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01 };
+ ChannelBuffer cb = ChannelBuffers.dynamicBuffer();
+ cb.writeBytes(linkAttrbs);
+ LinkStateAttributes obj = LinkStateAttributes.read(cb);
+
+ ListIterator<BgpValueType> list = obj.linkStateAttributes().listIterator();
+ ListIterator<BgpValueType> list2 = linkStateAttr.linkStateAttributes().listIterator();
+ assertThat(list.next(), is(list2.next()));
+ assertThat(((BgpPrefixAttrRouteTag) list2.next()).getPfxRouteTag(),
+ is(((BgpPrefixAttrRouteTag) list.next()).getPfxRouteTag()));
+
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ }
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpLinkAttrIsIsAdminstGrp.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest9() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0x96,
+ 0x02, 0x00, 0x04,
+ 0x18, 0x0a, 0x01, 0x01, //withdrawn routes
+ 0x00, 0x7b, //path attribute len
+ 0x04, 0x01, 0x01, 0x00, //origin
+ 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med
+ (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop
+ 0x00, //reserved
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, //link nlri
+ (byte) 0x80, 0x1d, 0x10, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15, 0x15, //BgpAttrNodeRouterId
+ 0x04, 0x40, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00}; //BgpLinkAttrIsIsAdminstGrp
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 150));
+
+ ListIterator<IpPrefix> listIterator1 = other.withdrawnRoutes().listIterator();
+ byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00};
+
+ while (listIterator1.hasNext()) {
+ IpPrefix testPrefixValue = listIterator1.next();
+ assertThat(testPrefixValue.prefixLength(), is((int) 24));
+ assertThat(testPrefixValue.address().toOctets(), is(prefix));
+ }
+
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath aspath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ testPathAttribute = listIterator.next();
+ aspath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = aspath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ assertThat(mpReach.mpReachNlriLen(), is((int) 83));
+ assertThat(mpReach.getType(), is((short) 14));
+
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.LINK;
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getIdentifier(), is((long) 0));
+ assertThat(testnlri.getNlriType(), is(nlriType));
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ ListIterator<BgpValueType> list = linkStateAttr.linkStateAttributes().listIterator();
+ byte[] ipBytes = new byte[] {(byte) 0x15, 0x15, 0x15, 0x15 };
+ Ip4Address ip4RouterId = Ip4Address.valueOf(ipBytes);
+ assertThat(((BgpAttrRouterIdV4) list.next()).attrRouterId(), is(ip4RouterId));
+ assertThat(((BgpLinkAttrIsIsAdminstGrp) list.next()).linkAttrIsIsAdminGrp(), is((long) 0));
+ }
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpAttrNodeFlagBitTlv.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest10() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0x93,
+ 0x02, 0x00, 0x04,
+ 0x18, 0x0a, 0x01, 0x01, //withdrawn routes
+ 0x00, 0x78, //path attribute len
+ 0x04, 0x01, 0x01, 0x00, //origin
+ 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med
+ (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop
+ 0x00, //reserved
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, //link nlri
+ (byte) 0x80, 0x1d, 0x0D, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15, 0x15, //BgpAttrNodeRouterId
+ 0x04, 0x00, 0x00, 0x01, 0x20}; //BgpAttrNodeFlagBitTlv
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 147));
+
+ ListIterator<IpPrefix> listIterator1 = other.withdrawnRoutes().listIterator();
+ byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00};
+
+ while (listIterator1.hasNext()) {
+ IpPrefix testPrefixValue = listIterator1.next();
+ assertThat(testPrefixValue.prefixLength(), is((int) 24));
+ assertThat(testPrefixValue.address().toOctets(), is(prefix));
+ }
+
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath aspath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ testPathAttribute = listIterator.next();
+ aspath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = aspath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ assertThat(mpReach.mpReachNlriLen(), is((int) 83));
+ assertThat(mpReach.getType(), is((short) 14));
+
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.LINK;
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getIdentifier(), is((long) 0));
+ assertThat(testnlri.getNlriType(), is(nlriType));
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ ListIterator<BgpValueType> list = linkStateAttr.linkStateAttributes().listIterator();
+ byte[] ipBytes = new byte[] {(byte) 0x15, 0x15, 0x15, 0x15 };
+ Ip4Address ip4RouterId = Ip4Address.valueOf(ipBytes);
+ assertThat(((BgpAttrRouterIdV4) list.next()).attrRouterId(), is(ip4RouterId));
+ BgpAttrNodeFlagBitTlv obj = new BgpAttrNodeFlagBitTlv(false, false, true, false);
+ assertThat(((BgpAttrNodeFlagBitTlv) list.next()).equals(obj), is(true));
+ }
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpLinkAttrTeDefaultMetric.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest11() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0x96,
+ 0x02, 0x00, 0x04,
+ 0x18, 0x0a, 0x01, 0x01, //withdrawn routes
+ 0x00, 0x7B, //path attribute len
+ 0x04, 0x01, 0x01, 0x00, //origin
+ 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med
+ (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop
+ 0x00, //reserved
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, //link nlri
+ (byte) 0x80, 0x1d, 0x10, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15, 0x15, //BgpAttrNodeRouterId
+ 0x04, 0x44, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0a}; //BgpLinkAttrTeDefaultMetric
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 150));
+
+ ListIterator<IpPrefix> listIterator1 = other.withdrawnRoutes().listIterator();
+ byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00};
+
+ while (listIterator1.hasNext()) {
+ IpPrefix testPrefixValue = listIterator1.next();
+ assertThat(testPrefixValue.prefixLength(), is((int) 24));
+ assertThat(testPrefixValue.address().toOctets(), is(prefix));
+ }
+
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath aspath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ testPathAttribute = listIterator.next();
+ aspath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = aspath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ assertThat(mpReach.mpReachNlriLen(), is((int) 83));
+ assertThat(mpReach.getType(), is((short) 14));
+
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.LINK;
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getIdentifier(), is((long) 0));
+ assertThat(testnlri.getNlriType(), is(nlriType));
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ ListIterator<BgpValueType> list = linkStateAttr.linkStateAttributes().listIterator();
+ byte[] ipBytes = new byte[] {(byte) 0x15, 0x15, 0x15, 0x15 };
+ Ip4Address ip4RouterId = Ip4Address.valueOf(ipBytes);
+ assertThat(((BgpAttrRouterIdV4) list.next()).attrRouterId(), is(ip4RouterId));
+ assertThat(((BgpLinkAttrTeDefaultMetric) list.next()).attrLinkDefTeMetric(), is(10));
+ }
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpAttrOpaqueNode.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest12() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0x96,
+ 0x02, 0x00, 0x04,
+ 0x18, 0x0a, 0x01, 0x01, //withdrawn routes
+ 0x00, 0x7B, //path attribute len
+ 0x04, 0x01, 0x01, 0x00, //origin
+ 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med
+ (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop
+ 0x00, //reserved
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, //link nlri
+ (byte) 0x80, 0x1d, 0x10, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15, 0x15, //BgpAttrRouterIdV4
+ 0x04, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0a}; //BgpAttrOpaqueNode
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 150));
+
+ ListIterator<IpPrefix> listIterator1 = other.withdrawnRoutes().listIterator();
+ byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00};
+
+ while (listIterator1.hasNext()) {
+ IpPrefix testPrefixValue = listIterator1.next();
+ assertThat(testPrefixValue.prefixLength(), is((int) 24));
+ assertThat(testPrefixValue.address().toOctets(), is(prefix));
+ }
+
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath aspath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ testPathAttribute = listIterator.next();
+ aspath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = aspath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ assertThat(mpReach.mpReachNlriLen(), is((int) 83));
+ assertThat(mpReach.getType(), is((short) 14));
+
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.LINK;
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getIdentifier(), is((long) 0));
+ assertThat(testnlri.getNlriType(), is(nlriType));
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ ListIterator<BgpValueType> list = linkStateAttr.linkStateAttributes().listIterator();
+ byte[] ipBytes = new byte[] {(byte) 0x15, 0x15, 0x15, 0x15 };
+ Ip4Address ip4RouterId = Ip4Address.valueOf(ipBytes);
+ assertThat(((BgpAttrRouterIdV4) list.next()).attrRouterId(), is(ip4RouterId));
+ byte[] opaqueNode = new byte[] {0x00, 0x00, 0x00, 0x0a };
+ assertThat(((BgpAttrOpaqueNode) list.next()).attrOpaqueNode(), is(opaqueNode));
+ }
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpLinkAttrProtectionType.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest13() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0x94,
+ 0x02, 0x00, 0x04,
+ 0x18, 0x0a, 0x01, 0x01, //withdrawn routes
+ 0x00, 0x79, //path attribute len
+ 0x04, 0x01, 0x01, 0x00, //origin
+ 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med
+ (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop
+ 0x00, //reserved
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, //link nlri
+ (byte) 0x80, 0x1d, 0x0E, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15, 0x15, //BgpAttrRouterIdV4
+ 0x04, 0x45, 0x00, 0x02, 0x10, 0x00}; //BgpLinkAttrProtectionType
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 148));
+
+ ListIterator<IpPrefix> listIterator1 = other.withdrawnRoutes().listIterator();
+ byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00};
+
+ while (listIterator1.hasNext()) {
+ IpPrefix testPrefixValue = listIterator1.next();
+ assertThat(testPrefixValue.prefixLength(), is((int) 24));
+ assertThat(testPrefixValue.address().toOctets(), is(prefix));
+ }
+
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath aspath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ testPathAttribute = listIterator.next();
+ aspath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = aspath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ assertThat(mpReach.mpReachNlriLen(), is((int) 83));
+ assertThat(mpReach.getType(), is((short) 14));
+
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.LINK;
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getIdentifier(), is((long) 0));
+ assertThat(testnlri.getNlriType(), is(nlriType));
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ ListIterator<BgpValueType> list = linkStateAttr.linkStateAttributes().listIterator();
+ byte[] ipBytes = new byte[] {(byte) 0x15, 0x15, 0x15, 0x15 };
+ Ip4Address ip4RouterId = Ip4Address.valueOf(ipBytes);
+ assertThat(((BgpAttrRouterIdV4) list.next()).attrRouterId(), is(ip4RouterId));
+ assertThat(((BgpLinkAttrProtectionType) list.next()).protectionType(),
+ is(ProtectionType.DEDICATED_ONE_PLUS_ONE));
+ }
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpLinkAttrMplsProtocolMask.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest14() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0x93,
+ 0x02, 0x00, 0x04,
+ 0x18, 0x0a, 0x01, 0x01, //withdrawn routes
+ 0x00, 0x78, //path attribute len
+ 0x04, 0x01, 0x01, 0x00, //origin
+ 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med
+ (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop
+ 0x00, //reserved
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, //link nlri
+ (byte) 0x80, 0x1d, 0x0D, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15, 0x15, //BgpAttrRouterIdV4
+ 0x04, 0x46, 0x00, 0x01, (byte) 0xC0}; //BgpLinkAttrMplsProtocolMask
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 147));
+
+ ListIterator<IpPrefix> listIterator1 = other.withdrawnRoutes().listIterator();
+ byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00};
+
+ while (listIterator1.hasNext()) {
+ IpPrefix testPrefixValue = listIterator1.next();
+ assertThat(testPrefixValue.prefixLength(), is((int) 24));
+ assertThat(testPrefixValue.address().toOctets(), is(prefix));
+ }
+
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath aspath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ testPathAttribute = listIterator.next();
+ aspath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = aspath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ assertThat(mpReach.mpReachNlriLen(), is((int) 83));
+ assertThat(mpReach.getType(), is((short) 14));
+
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.LINK;
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getIdentifier(), is((long) 0));
+ assertThat(testnlri.getNlriType(), is(nlriType));
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ ListIterator<BgpValueType> list = linkStateAttr.linkStateAttributes().listIterator();
+ byte[] ipBytes = new byte[] {(byte) 0x15, 0x15, 0x15, 0x15 };
+ Ip4Address ip4RouterId = Ip4Address.valueOf(ipBytes);
+ assertThat(((BgpAttrRouterIdV4) list.next()).attrRouterId(), is(ip4RouterId));
+ BgpLinkAttrMplsProtocolMask obj = new BgpLinkAttrMplsProtocolMask(true, true);
+ assertThat(((BgpLinkAttrMplsProtocolMask) list.next()).equals(obj), is(true));
+ }
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpLinkAttrSRLG.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest15() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0x9A,
+ 0x02, 0x00, 0x04,
+ 0x18, 0x0a, 0x01, 0x01, //withdrawn routes
+ 0x00, 0x7F, //path attribute len
+ 0x04, 0x01, 0x01, 0x00, //origin
+ 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med
+ (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop
+ 0x00, //reserved
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, //link nlri
+ (byte) 0x80, 0x1d, 0x14, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15, 0x15, //BgpAttrRouterIdV4
+ 0x04, 0x48, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b}; //BgpLinkAttrSRLG
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 154));
+
+ ListIterator<IpPrefix> listIterator1 = other.withdrawnRoutes().listIterator();
+ byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00};
+
+ while (listIterator1.hasNext()) {
+ IpPrefix testPrefixValue = listIterator1.next();
+ assertThat(testPrefixValue.prefixLength(), is((int) 24));
+ assertThat(testPrefixValue.address().toOctets(), is(prefix));
+ }
+
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath aspath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ testPathAttribute = listIterator.next();
+ aspath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = aspath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ assertThat(mpReach.mpReachNlriLen(), is((int) 83));
+ assertThat(mpReach.getType(), is((short) 14));
+
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.LINK;
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getIdentifier(), is((long) 0));
+ assertThat(testnlri.getNlriType(), is(nlriType));
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ ListIterator<BgpValueType> list = linkStateAttr.linkStateAttributes().listIterator();
+ byte[] ipBytes = new byte[] {(byte) 0x15, 0x15, 0x15, 0x15 };
+ Ip4Address ip4RouterId = Ip4Address.valueOf(ipBytes);
+ assertThat(((BgpAttrRouterIdV4) list.next()).attrRouterId(), is(ip4RouterId));
+ List<Integer> attrSrlg = new ArrayList<Integer>();
+ attrSrlg.add(10);
+ attrSrlg.add(11);
+ assertThat(((BgpLinkAttrSrlg) list.next()).attrSrlg(), is(attrSrlg));
+ }
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpLinkAttrOpaqLnkAttrib.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest16() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0x9A,
+ 0x02, 0x00, 0x04, 0x18, 0x0a, 0x01, 0x01, //withdrawn routes
+ 0x00, 0x7F, 0x04, 0x01, 0x01, 0x00, //origin
+ 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, (byte) 0x80, 0x1d, 0x14, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, (byte) 0x15, 0x15, 0x15, 0x15, //BgpAttrRouterIdV4
+ 0x04, 0x49, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b}; //BgpLinkAttrOpaqLnkAttrib
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 154));
+
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath aspath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ testPathAttribute = listIterator.next();
+ aspath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = aspath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ assertThat(mpReach.mpReachNlriLen(), is((int) 83));
+ assertThat(mpReach.getType(), is((short) 14));
+
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ ListIterator<BgpValueType> list = linkStateAttr.linkStateAttributes().listIterator();
+ byte[] ipBytes = new byte[] {(byte) 0x15, 0x15, 0x15, 0x15 };
+ Ip4Address ip4RouterId = Ip4Address.valueOf(ipBytes);
+ assertThat(((BgpAttrRouterIdV4) list.next()).attrRouterId(), is(ip4RouterId));
+ byte[] attrOpaqLnkAttrib = new byte[] {0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b };
+ assertThat(((BgpLinkAttrOpaqLnkAttrib) list.next()).attrOpaqueLnk(), is(attrOpaqLnkAttrib));
+ }
+
+ /**
+ * Test for LinkStateattribute BgpAttrNodeRouterId and BgpPrefixAttrOpaqueData.
+ *
+ * @throws BgpParseException while parsing update message
+ */
+ @Test
+ public void bgpUpdateMessageTest17() throws BgpParseException {
+ byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, 0x00, (byte) 0x96, 0x02, 0x00, 0x04,
+ 0x18, 0x0a, 0x01, 0x01, 0x00, 0x7B, //path attribute len
+ 0x04, 0x01, 0x01, 0x00, 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path
+ (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med
+ (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach
+ 0x04, 0x04, 0x00, 0x00, 0x01, 0x00, //reserved
+ 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00,
+ (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19,
+ 0x00, (byte) 0x95, 0x02, 0x50, 0x21, (byte) 0x80, 0x1d, 0x10, //linkstate attr
+ 0x04, 0x04, 0x00, 0x04, 0x15, 0x15, 0x15, 0x15, //BgpAttrRouterIdV4
+ 0x04, (byte) 0x85, 0x00, 0x04, 0x0a, 0x0a, 0x0a, 0x0a}; //BgpPrefixAttrOpaqueData
+ ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+ buffer.writeBytes(updateMsg);
+
+ BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
+ BgpMessage message = null;
+ BgpHeader bgpHeader = new BgpHeader();
+
+ message = reader.readFrom(buffer, bgpHeader);
+
+ assertThat(message, instanceOf(BgpUpdateMsg.class));
+ BgpUpdateMsg other = (BgpUpdateMsg) message;
+
+ byte[] marker = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertThat(other.getHeader().getMarker(), is(marker));
+ assertThat(other.getHeader().getType(), is((byte) 2));
+ assertThat(other.getHeader().getLength(), is((short) 150));
+ BgpValueType testPathAttribute = null;
+ Origin origin;
+ AsPath aspath;
+ Med med;
+ MpReachNlri mpReach;
+ LinkStateAttributes linkStateAttr;
+ List<BgpValueType> pathAttributeList = new LinkedList<>();
+ BgpPathAttributes pathAttribute = other.bgpPathAttributes();
+ pathAttributeList = pathAttribute.pathAttributes();
+ ListIterator<BgpValueType> listIterator = pathAttributeList.listIterator();
+ ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP;
+
+ testPathAttribute = listIterator.next();
+ origin = (Origin) testPathAttribute;
+ assertThat(origin.origin(), is(originValue));
+
+ testPathAttribute = listIterator.next();
+ aspath = (AsPath) testPathAttribute;
+ ListIterator<Short> listIterator2 = aspath.asPathSeq().listIterator();
+ assertThat(listIterator2.next(), is((short) 65001));
+
+ testPathAttribute = listIterator.next();
+ med = (Med) testPathAttribute;
+ assertThat(med.med(), is(0));
+
+ testPathAttribute = listIterator.next();
+ mpReach = (MpReachNlri) testPathAttribute;
+ List<BgpLSNlri> testMpReachNlri = new LinkedList<>();
+ testMpReachNlri = mpReach.mpReachNlri();
+
+ ListIterator<BgpLSNlri> list1 = testMpReachNlri.listIterator();
+ BgpLSNlri testnlri = list1.next();
+ ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate.
+ BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO;
+ assertThat(testnlri.getProtocolId(), is(protocolId));
+
+ testPathAttribute = listIterator.next();
+ linkStateAttr = (LinkStateAttributes) testPathAttribute;
+
+ assertThat(linkStateAttr.getType(), is((short) 29));
+ ListIterator<BgpValueType> list = linkStateAttr.linkStateAttributes().listIterator();
+ byte[] ipBytes = new byte[] {(byte) 0x15, 0x15, 0x15, 0x15 };
+ Ip4Address ip4RouterId = Ip4Address.valueOf(ipBytes);
+ assertThat(((BgpAttrRouterIdV4) list.next()).attrRouterId(), is(ip4RouterId));
+ byte[] opaquePrefixAttr = new byte[] {0x0a, 0x0a, 0x0a, 0x0a };
+ assertThat(((BgpPrefixAttrOpaqueData) list.next()).getOpaquePrefixAttribute(), is(opaquePrefixAttr));
+ }
+}