Merge changes I3277d48b,I11a91825
authorRobert Varga <rovarga@cisco.com>
Sun, 1 Dec 2013 11:09:27 +0000 (11:09 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Sun, 1 Dec 2013 11:09:27 +0000 (11:09 +0000)
* changes:
  Created bugs for FIXMEs.
  Fixed extended communities not setting type & sub-type.

bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/update/CommunitiesParser.java
bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/update/ExtendedCommunitiesAttributeParser.java
bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/BGPParserTest.java
bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/ComplementaryTest.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPObjectComparator.java
pcep/impl/src/test/java/org/opendaylight/protocol/pcep/impl/PCEPObjectParserTest.java

index 5a73c6b34737ce97f53cb28e443099b184475f1f..fce26f9b62872484ef2eab2a0b1e351e0e3be279 100644 (file)
@@ -15,8 +15,9 @@ import org.opendaylight.protocol.bgp.parser.BGPError;
 import org.opendaylight.protocol.concepts.Ipv4Util;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ExtendedCommunities;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ExtendedCommunitiesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Community;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.extended.community.ExtendedCommunity;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.extended.community.extended.community.CAsSpecificExtendedCommunityBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.extended.community.extended.community.CInet4SpecificExtendedCommunityBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.extended.community.extended.community.COpaqueExtendedCommunityBuilder;
@@ -36,9 +37,9 @@ import com.google.common.primitives.UnsignedBytes;
  */
 public final class CommunitiesParser {
 
-       public static final int EXTENDED_COMMUNITY_LENGTH = 8;
+       protected static final int EXTENDED_COMMUNITY_LENGTH = 8;
 
-       public static final int COMMUNITY_LENGTH = 4;
+       protected static final int COMMUNITY_LENGTH = 4;
 
        private static final int TYPE_LENGTH = 2;
 
@@ -46,6 +47,24 @@ public final class CommunitiesParser {
 
        private static final int AS_LOCAL_ADMIN_LENGTH = 4;
 
+       protected static final short AS_TYPE_TRANS = 0;
+
+       protected static final short AS_TYPE_NON_TRANS = 40;
+
+       protected static final short INET_TYPE_TRANS = 1;
+
+       protected static final short INET_TYPE_NON_TRANS = 41;
+
+       protected static final short OPAQUE_TYPE_TRANS = 3;
+
+       protected static final short OPAQUE_TYPE_NON_TRANS = 43;
+
+       protected static final short ROUTE_TYPE_ONLY = 2;
+
+       protected static final short ROUTE_TARGET_SUBTYPE = 2;
+
+       protected static final short ROUTE_ORIGIN_SUBTYPE = 3;
+
        private CommunitiesParser() {
 
        }
@@ -80,78 +99,99 @@ public final class CommunitiesParser {
         * @throws BGPDocumentedException if the type is not recognized
         */
        @VisibleForTesting
-       // FIXME: switch to return ExtendedCommunities with setType and subtype
-       public static ExtendedCommunity parseExtendedCommunity(final byte[] bytes) throws BGPDocumentedException {
+       public static ExtendedCommunities parseExtendedCommunity(final byte[] bytes) throws BGPDocumentedException {
                final int type = UnsignedBytes.toInt(bytes[0]);
                final int subType = UnsignedBytes.toInt(bytes[1]);
                final byte[] value = ByteArray.subByte(bytes, TYPE_LENGTH, bytes.length - TYPE_LENGTH);
 
+               ExtendedCommunities comm;
                switch (type) {
-               case 0:
-                       if (subType == 2) {
-                               return new CRouteTargetExtendedCommunityBuilder().setRouteTargetExtendedCommunity(
-                                               new RouteTargetExtendedCommunityBuilder().setGlobalAdministrator(
-                                                               new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
-                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
-                       } else if (subType == 3) {
-                               return new CRouteOriginExtendedCommunityBuilder().setRouteOriginExtendedCommunity(
-                                               new RouteOriginExtendedCommunityBuilder().setGlobalAdministrator(
-                                                               new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
-                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
+               case AS_TYPE_TRANS:
+                       if (subType == ROUTE_TARGET_SUBTYPE) {
+                               comm = new ExtendedCommunitiesBuilder().setCommType(AS_TYPE_TRANS).setCommSubType(ROUTE_TARGET_SUBTYPE).setExtendedCommunity(
+                                               new CRouteTargetExtendedCommunityBuilder().setRouteTargetExtendedCommunity(
+                                                               new RouteTargetExtendedCommunityBuilder().setGlobalAdministrator(
+                                                                               new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
+                                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build()).build();
+                       } else if (subType == ROUTE_ORIGIN_SUBTYPE) {
+                               comm = new ExtendedCommunitiesBuilder().setCommType(AS_TYPE_TRANS).setCommSubType(ROUTE_ORIGIN_SUBTYPE).setExtendedCommunity(
+                                               new CRouteOriginExtendedCommunityBuilder().setRouteOriginExtendedCommunity(
+                                                               new RouteOriginExtendedCommunityBuilder().setGlobalAdministrator(
+                                                                               new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
+                                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build()).build();
                        } else {
-                               return new CAsSpecificExtendedCommunityBuilder().setAsSpecificExtendedCommunity(
-                                               new AsSpecificExtendedCommunityBuilder().setTransitive(false).setGlobalAdministrator(
-                                                               new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
-                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
+                               comm = new ExtendedCommunitiesBuilder().setCommType(AS_TYPE_TRANS).setExtendedCommunity(
+                                               new CAsSpecificExtendedCommunityBuilder().setAsSpecificExtendedCommunity(
+                                                               new AsSpecificExtendedCommunityBuilder().setTransitive(false).setGlobalAdministrator(
+                                                                               new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
+                                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build()).build();
                        }
-               case 40:
-                       return new CAsSpecificExtendedCommunityBuilder().setAsSpecificExtendedCommunity(
-                                       new AsSpecificExtendedCommunityBuilder().setTransitive(true).setGlobalAdministrator(
-                                                       new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
-                                                       ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
-               case 2:
-                       if (subType == 2) {
-                               return new CRouteTargetExtendedCommunityBuilder().setRouteTargetExtendedCommunity(
-                                               new RouteTargetExtendedCommunityBuilder().setGlobalAdministrator(
-                                                               new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
-                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
-                       } else if (subType == 3) {
-                               return new CRouteOriginExtendedCommunityBuilder().setRouteOriginExtendedCommunity(
-                                               new RouteOriginExtendedCommunityBuilder().setGlobalAdministrator(
-                                                               new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
-                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
+                       break;
+               case AS_TYPE_NON_TRANS:
+                       comm = new ExtendedCommunitiesBuilder().setCommType(AS_TYPE_NON_TRANS).setExtendedCommunity(
+                                       new CAsSpecificExtendedCommunityBuilder().setAsSpecificExtendedCommunity(
+                                                       new AsSpecificExtendedCommunityBuilder().setTransitive(true).setGlobalAdministrator(
+                                                                       new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
+                                                                       ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build()).build();
+                       break;
+               case ROUTE_TYPE_ONLY:
+                       if (subType == ROUTE_TARGET_SUBTYPE) {
+                               comm = new ExtendedCommunitiesBuilder().setCommType(ROUTE_TYPE_ONLY).setCommSubType(ROUTE_TARGET_SUBTYPE).setExtendedCommunity(
+                                               new CRouteTargetExtendedCommunityBuilder().setRouteTargetExtendedCommunity(
+                                                               new RouteTargetExtendedCommunityBuilder().setGlobalAdministrator(
+                                                                               new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
+                                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build()).build();
+                       } else if (subType == ROUTE_ORIGIN_SUBTYPE) {
+                               comm = new ExtendedCommunitiesBuilder().setCommType(ROUTE_TYPE_ONLY).setCommSubType(ROUTE_ORIGIN_SUBTYPE).setExtendedCommunity(
+                                               new CRouteOriginExtendedCommunityBuilder().setRouteOriginExtendedCommunity(
+                                                               new RouteOriginExtendedCommunityBuilder().setGlobalAdministrator(
+                                                                               new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
+                                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build()).build();
                        } else {
                                throw new BGPDocumentedException("Could not parse Extended Community subtype: " + subType, BGPError.OPT_ATTR_ERROR);
                        }
-               case 1:
-                       if (subType == 2) {
-                               return new CRouteTargetExtendedCommunityBuilder().setRouteTargetExtendedCommunity(
-                                               new RouteTargetExtendedCommunityBuilder().setGlobalAdministrator(
-                                                               new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
-                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
-                       } else if (subType == 3) {
-                               return new CRouteOriginExtendedCommunityBuilder().setRouteOriginExtendedCommunity(
-                                               new RouteOriginExtendedCommunityBuilder().setGlobalAdministrator(
-                                                               new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
-                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
+                       break;
+               case INET_TYPE_TRANS:
+                       if (subType == ROUTE_TARGET_SUBTYPE) {
+                               comm = new ExtendedCommunitiesBuilder().setCommType(INET_TYPE_TRANS).setCommSubType(ROUTE_TARGET_SUBTYPE).setExtendedCommunity(
+                                               new CRouteTargetExtendedCommunityBuilder().setRouteTargetExtendedCommunity(
+                                                               new RouteTargetExtendedCommunityBuilder().setGlobalAdministrator(
+                                                                               new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
+                                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build()).build();
+                       } else if (subType == ROUTE_ORIGIN_SUBTYPE) {
+                               comm = new ExtendedCommunitiesBuilder().setCommType(INET_TYPE_TRANS).setCommSubType(ROUTE_ORIGIN_SUBTYPE).setExtendedCommunity(
+                                               new CRouteOriginExtendedCommunityBuilder().setRouteOriginExtendedCommunity(
+                                                               new RouteOriginExtendedCommunityBuilder().setGlobalAdministrator(
+                                                                               new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
+                                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build()).build();
                        } else {
-                               return new CInet4SpecificExtendedCommunityBuilder().setInet4SpecificExtendedCommunity(
-                                               new Inet4SpecificExtendedCommunityBuilder().setTransitive(false).setGlobalAdministrator(
-                                                               Ipv4Util.addressForBytes(ByteArray.subByte(value, 0, 4))).setLocalAdministrator(
-                                                               ByteArray.subByte(value, 4, 2)).build()).build();
+                               comm = new ExtendedCommunitiesBuilder().setCommType(INET_TYPE_TRANS).setExtendedCommunity(
+                                               new CInet4SpecificExtendedCommunityBuilder().setInet4SpecificExtendedCommunity(
+                                                               new Inet4SpecificExtendedCommunityBuilder().setTransitive(false).setGlobalAdministrator(
+                                                                               Ipv4Util.addressForBytes(ByteArray.subByte(value, 0, 4))).setLocalAdministrator(
+                                                                               ByteArray.subByte(value, 4, 2)).build()).build()).build();
                        }
-               case 41:
-                       return new CInet4SpecificExtendedCommunityBuilder().setInet4SpecificExtendedCommunity(
-                                       new Inet4SpecificExtendedCommunityBuilder().setTransitive(true).setGlobalAdministrator(
-                                                       Ipv4Util.addressForBytes(ByteArray.subByte(value, 0, 4))).setLocalAdministrator(ByteArray.subByte(value, 4, 2)).build()).build();
-               case 3:
-                       return new COpaqueExtendedCommunityBuilder().setOpaqueExtendedCommunity(
-                                       new OpaqueExtendedCommunityBuilder().setTransitive(false).setValue(value).build()).build();
-               case 43:
-                       return new COpaqueExtendedCommunityBuilder().setOpaqueExtendedCommunity(
-                                       new OpaqueExtendedCommunityBuilder().setTransitive(true).setValue(value).build()).build();
+                       break;
+               case INET_TYPE_NON_TRANS:
+                       comm = new ExtendedCommunitiesBuilder().setCommType(INET_TYPE_NON_TRANS).setExtendedCommunity(
+                                       new CInet4SpecificExtendedCommunityBuilder().setInet4SpecificExtendedCommunity(
+                                                       new Inet4SpecificExtendedCommunityBuilder().setTransitive(true).setGlobalAdministrator(
+                                                                       Ipv4Util.addressForBytes(ByteArray.subByte(value, 0, 4))).setLocalAdministrator(
+                                                                       ByteArray.subByte(value, 4, 2)).build()).build()).build();
+                       break;
+               case OPAQUE_TYPE_TRANS:
+                       comm = new ExtendedCommunitiesBuilder().setCommType(OPAQUE_TYPE_TRANS).setExtendedCommunity(
+                                       new COpaqueExtendedCommunityBuilder().setOpaqueExtendedCommunity(
+                                                       new OpaqueExtendedCommunityBuilder().setTransitive(false).setValue(value).build()).build()).build();
+                       break;
+               case OPAQUE_TYPE_NON_TRANS:
+                       comm = new ExtendedCommunitiesBuilder().setCommType(OPAQUE_TYPE_NON_TRANS).setExtendedCommunity(
+                                       new COpaqueExtendedCommunityBuilder().setOpaqueExtendedCommunity(
+                                                       new OpaqueExtendedCommunityBuilder().setTransitive(true).setValue(value).build()).build()).build();
+                       break;
                default:
                        throw new BGPDocumentedException("Could not parse Extended Community type: " + type, BGPError.OPT_ATTR_ERROR);
                }
+               return comm;
        }
 }
index e64a57b94106626e57fc0723a99a1675ea72121b..a997f6fc890dacabc27492136609a9a7d3b33fad 100644 (file)
@@ -13,9 +13,7 @@ import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
 import org.opendaylight.protocol.bgp.parser.spi.AttributeParser;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ExtendedCommunities;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ExtendedCommunitiesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.update.PathAttributesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.extended.community.ExtendedCommunity;
 
 import com.google.common.collect.Lists;
 
@@ -27,10 +25,10 @@ public final class ExtendedCommunitiesAttributeParser implements AttributeParser
                final List<ExtendedCommunities> set = Lists.newArrayList();
                int i = 0;
                while (i < bytes.length) {
-                       ExtendedCommunity comm = CommunitiesParser.parseExtendedCommunity(ByteArray.subByte(bytes, i,
+                       final ExtendedCommunities comm = CommunitiesParser.parseExtendedCommunity(ByteArray.subByte(bytes, i,
                                        CommunitiesParser.EXTENDED_COMMUNITY_LENGTH));
                        i += CommunitiesParser.EXTENDED_COMMUNITY_LENGTH;
-                       set.add(new ExtendedCommunitiesBuilder().setExtendedCommunity(comm).build());
+                       set.add(comm);
                }
 
                builder.setExtendedCommunities(set);
index 20e6e8996adc55f68bc8fe698cdc21582c3c0c04..7eef7f0dce4d5e0d797f1df501da590b229cf2c3 100644 (file)
@@ -543,7 +543,7 @@ public class BGPParserTest {
                                new Ipv4NextHopBuilder().setGlobal(new Ipv4Address("3.3.3.3")).build()).build();
 
                final List<ExtendedCommunities> comms = Lists.newArrayList();
-               comms.add(new ExtendedCommunitiesBuilder().setExtendedCommunity(
+               comms.add(new ExtendedCommunitiesBuilder().setCommType((short) 1).setExtendedCommunity(
                                new CInet4SpecificExtendedCommunityBuilder().setInet4SpecificExtendedCommunity(
                                                new Inet4SpecificExtendedCommunityBuilder().setTransitive(false).setGlobalAdministrator(
                                                                new Ipv4Address("192.168.1.0")).setLocalAdministrator(new byte[] { 0x12, 0x34 }).build()).build()).build());
index 7afcc9de0b669de34d9e2a0dd777198f05d45590..6cdca4398f918cd7fefa55d191f0ae918de97d2d 100644 (file)
@@ -30,6 +30,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mess
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.bgp.parameters.c.parameters.CAs4BytesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.bgp.parameters.c.parameters.c.as4.bytes.As4BytesCapabilityBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.AggregatorBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ExtendedCommunities;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.open.bgp.parameters.c.parameters.CMultiprotocolBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.open.bgp.parameters.c.parameters.c.multiprotocol.MultiprotocolCapability;
@@ -75,6 +76,7 @@ public class ComplementaryTest {
                tt.put(t, true);
                tt.put(t1, false);
 
+               // FIXME: revive test for graceful capability tlv
                // final BGPParameter tlv3 = new GracefulCapability(false, 0, tt);
 
                final CParameters tlv4 = new CAs4BytesBuilder().setAs4BytesCapability(
@@ -119,94 +121,111 @@ public class ComplementaryTest {
 
        @Test
        public void testCommunitiesParser() {
-               CAsSpecificExtendedCommunity as = null;
+               ExtendedCommunities as = null;
                try {
-                       as = (CAsSpecificExtendedCommunity) CommunitiesParser.parseExtendedCommunity(new byte[] { 0, 5, 0, 54, 0, 0, 1, 76 });
+                       as = CommunitiesParser.parseExtendedCommunity(new byte[] { 0, 5, 0, 54, 0, 0, 1, 76 });
                } catch (final BGPDocumentedException e1) {
                        fail("Not expected exception: " + e1);
                }
                CAsSpecificExtendedCommunity expected = new CAsSpecificExtendedCommunityBuilder().setAsSpecificExtendedCommunity(
                                new AsSpecificExtendedCommunityBuilder().setTransitive(false).setGlobalAdministrator(new AsNumber(54L)).setLocalAdministrator(
                                                new byte[] { 0, 0, 1, 76 }).build()).build();
-               assertEquals(expected.getAsSpecificExtendedCommunity().isTransitive(), as.getAsSpecificExtendedCommunity().isTransitive());
+               CAsSpecificExtendedCommunity result = (CAsSpecificExtendedCommunity) as.getExtendedCommunity();
+               assertEquals(expected.getAsSpecificExtendedCommunity().isTransitive(), result.getAsSpecificExtendedCommunity().isTransitive());
                assertEquals(expected.getAsSpecificExtendedCommunity().getGlobalAdministrator(),
-                               as.getAsSpecificExtendedCommunity().getGlobalAdministrator());
+                               result.getAsSpecificExtendedCommunity().getGlobalAdministrator());
                assertArrayEquals(expected.getAsSpecificExtendedCommunity().getLocalAdministrator(),
-                               as.getAsSpecificExtendedCommunity().getLocalAdministrator());
+                               result.getAsSpecificExtendedCommunity().getLocalAdministrator());
+               assertEquals(0, as.getCommType().intValue());
 
                try {
-                       as = (CAsSpecificExtendedCommunity) CommunitiesParser.parseExtendedCommunity(new byte[] { 40, 5, 0, 54, 0, 0, 1, 76 });
+                       as = CommunitiesParser.parseExtendedCommunity(new byte[] { 40, 5, 0, 54, 0, 0, 1, 76 });
                } catch (final BGPDocumentedException e1) {
                        fail("Not expected exception: " + e1);
                }
                expected = new CAsSpecificExtendedCommunityBuilder().setAsSpecificExtendedCommunity(
                                new AsSpecificExtendedCommunityBuilder().setTransitive(true).setGlobalAdministrator(new AsNumber(54L)).setLocalAdministrator(
                                                new byte[] { 0, 0, 1, 76 }).build()).build();
-               assertEquals(expected.getAsSpecificExtendedCommunity().isTransitive(), as.getAsSpecificExtendedCommunity().isTransitive());
+               result = (CAsSpecificExtendedCommunity) as.getExtendedCommunity();
+               assertEquals(expected.getAsSpecificExtendedCommunity().isTransitive(), result.getAsSpecificExtendedCommunity().isTransitive());
+               assertEquals(40, as.getCommType().intValue());
 
-               CRouteTargetExtendedCommunity rtc = null;
+               ExtendedCommunities rtc = null;
                try {
-                       rtc = (CRouteTargetExtendedCommunity) CommunitiesParser.parseExtendedCommunity(new byte[] { 1, 2, 0, 35, 4, 2, 8, 7 });
+                       rtc = CommunitiesParser.parseExtendedCommunity(new byte[] { 1, 2, 0, 35, 4, 2, 8, 7 });
                } catch (final BGPDocumentedException e1) {
                        fail("Not expected exception: " + e1);
                }
                final CRouteTargetExtendedCommunity rexpected = new CRouteTargetExtendedCommunityBuilder().setRouteTargetExtendedCommunity(
                                new RouteTargetExtendedCommunityBuilder().setGlobalAdministrator(new AsNumber(35L)).setLocalAdministrator(
                                                new byte[] { 4, 2, 8, 7 }).build()).build();
+               final CRouteTargetExtendedCommunity rresult = (CRouteTargetExtendedCommunity) rtc.getExtendedCommunity();
                assertEquals(rexpected.getRouteTargetExtendedCommunity().getGlobalAdministrator(),
-                               rtc.getRouteTargetExtendedCommunity().getGlobalAdministrator());
+                               rresult.getRouteTargetExtendedCommunity().getGlobalAdministrator());
                assertArrayEquals(rexpected.getRouteTargetExtendedCommunity().getLocalAdministrator(),
-                               rtc.getRouteTargetExtendedCommunity().getLocalAdministrator());
+                               rresult.getRouteTargetExtendedCommunity().getLocalAdministrator());
+               assertEquals(1, rtc.getCommType().intValue());
+               assertEquals(2, rtc.getCommSubType().intValue());
 
-               CRouteOriginExtendedCommunity roc = null;
+               ExtendedCommunities roc = null;
                try {
-                       roc = (CRouteOriginExtendedCommunity) CommunitiesParser.parseExtendedCommunity(new byte[] { 0, 3, 0, 24, 4, 2, 8, 7 });
+                       roc = CommunitiesParser.parseExtendedCommunity(new byte[] { 0, 3, 0, 24, 4, 2, 8, 7 });
                } catch (final BGPDocumentedException e1) {
                        fail("Not expected exception: " + e1);
                }
                final CRouteOriginExtendedCommunity oexpected = new CRouteOriginExtendedCommunityBuilder().setRouteOriginExtendedCommunity(
                                new RouteOriginExtendedCommunityBuilder().setGlobalAdministrator(new AsNumber(24L)).setLocalAdministrator(
                                                new byte[] { 4, 2, 8, 7 }).build()).build();
+               final CRouteOriginExtendedCommunity oresult = (CRouteOriginExtendedCommunity) roc.getExtendedCommunity();
                assertEquals(oexpected.getRouteOriginExtendedCommunity().getGlobalAdministrator(),
-                               roc.getRouteOriginExtendedCommunity().getGlobalAdministrator());
+                               oresult.getRouteOriginExtendedCommunity().getGlobalAdministrator());
                assertArrayEquals(oexpected.getRouteOriginExtendedCommunity().getLocalAdministrator(),
-                               roc.getRouteOriginExtendedCommunity().getLocalAdministrator());
+                               oresult.getRouteOriginExtendedCommunity().getLocalAdministrator());
+               assertEquals(0, roc.getCommType().intValue());
+               assertEquals(3, roc.getCommSubType().intValue());
 
-               CInet4SpecificExtendedCommunity sec = null;
+               ExtendedCommunities sec = null;
                try {
-                       sec = (CInet4SpecificExtendedCommunity) CommunitiesParser.parseExtendedCommunity(new byte[] { 41, 6, 12, 51, 2, 5, 21, 45 });
+                       sec = CommunitiesParser.parseExtendedCommunity(new byte[] { 41, 6, 12, 51, 2, 5, 21, 45 });
                } catch (final BGPDocumentedException e1) {
                        fail("Not expected exception: " + e1);
                }
                final CInet4SpecificExtendedCommunity iexpected = new CInet4SpecificExtendedCommunityBuilder().setInet4SpecificExtendedCommunity(
                                new Inet4SpecificExtendedCommunityBuilder().setTransitive(true).setGlobalAdministrator(new Ipv4Address("12.51.2.5")).setLocalAdministrator(
                                                new byte[] { 21, 45 }).build()).build();
-               assertEquals(iexpected.getInet4SpecificExtendedCommunity().isTransitive(), sec.getInet4SpecificExtendedCommunity().isTransitive());
+               final CInet4SpecificExtendedCommunity iresult = (CInet4SpecificExtendedCommunity) sec.getExtendedCommunity();
+               assertEquals(iexpected.getInet4SpecificExtendedCommunity().isTransitive(),
+                               iresult.getInet4SpecificExtendedCommunity().isTransitive());
                assertEquals(iexpected.getInet4SpecificExtendedCommunity().getGlobalAdministrator(),
-                               sec.getInet4SpecificExtendedCommunity().getGlobalAdministrator());
+                               iresult.getInet4SpecificExtendedCommunity().getGlobalAdministrator());
                assertArrayEquals(iexpected.getInet4SpecificExtendedCommunity().getLocalAdministrator(),
-                               sec.getInet4SpecificExtendedCommunity().getLocalAdministrator());
+                               iresult.getInet4SpecificExtendedCommunity().getLocalAdministrator());
+               assertEquals(41, sec.getCommType().intValue());
 
-               COpaqueExtendedCommunity oec = null;
+               ExtendedCommunities oec = null;
                try {
-                       oec = (COpaqueExtendedCommunity) CommunitiesParser.parseExtendedCommunity(new byte[] { 3, 6, 21, 45, 5, 4, 3, 1 });
+                       oec = CommunitiesParser.parseExtendedCommunity(new byte[] { 3, 6, 21, 45, 5, 4, 3, 1 });
                } catch (final BGPDocumentedException e1) {
                        fail("Not expected exception: " + e1);
                }
                final COpaqueExtendedCommunity oeexpected = new COpaqueExtendedCommunityBuilder().setOpaqueExtendedCommunity(
                                new OpaqueExtendedCommunityBuilder().setTransitive(false).setValue(new byte[] { 21, 45, 5, 4, 3, 1 }).build()).build();
-               assertEquals(oeexpected.getOpaqueExtendedCommunity().isTransitive(), oec.getOpaqueExtendedCommunity().isTransitive());
-               assertArrayEquals(oeexpected.getOpaqueExtendedCommunity().getValue(), oec.getOpaqueExtendedCommunity().getValue());
+               final COpaqueExtendedCommunity oeresult = (COpaqueExtendedCommunity) oec.getExtendedCommunity();
+               assertEquals(oeexpected.getOpaqueExtendedCommunity().isTransitive(), oeresult.getOpaqueExtendedCommunity().isTransitive());
+               assertArrayEquals(oeexpected.getOpaqueExtendedCommunity().getValue(), oeresult.getOpaqueExtendedCommunity().getValue());
+               assertEquals(3, oec.getCommType().intValue());
 
                try {
-                       oec = (COpaqueExtendedCommunity) CommunitiesParser.parseExtendedCommunity(new byte[] { 43, 6, 21, 45, 5, 4, 3, 1 });
+                       oec = CommunitiesParser.parseExtendedCommunity(new byte[] { 43, 6, 21, 45, 5, 4, 3, 1 });
                } catch (final BGPDocumentedException e1) {
                        fail("Not expected exception: " + e1);
                }
                final COpaqueExtendedCommunity oeexpected1 = new COpaqueExtendedCommunityBuilder().setOpaqueExtendedCommunity(
                                new OpaqueExtendedCommunityBuilder().setTransitive(true).setValue(new byte[] { 21, 45, 5, 4, 3, 1 }).build()).build();
-               assertEquals(oeexpected1.getOpaqueExtendedCommunity().isTransitive(), oec.getOpaqueExtendedCommunity().isTransitive());
-               assertArrayEquals(oeexpected1.getOpaqueExtendedCommunity().getValue(), oec.getOpaqueExtendedCommunity().getValue());
+               final COpaqueExtendedCommunity oeresult1 = (COpaqueExtendedCommunity) oec.getExtendedCommunity();
+               assertEquals(oeexpected1.getOpaqueExtendedCommunity().isTransitive(), oeresult1.getOpaqueExtendedCommunity().isTransitive());
+               assertArrayEquals(oeexpected1.getOpaqueExtendedCommunity().getValue(), oeresult1.getOpaqueExtendedCommunity().getValue());
+               assertEquals(43, oec.getCommType().intValue());
 
                try {
                        CommunitiesParser.parseExtendedCommunity(new byte[] { 11, 11, 21, 45, 5, 4, 3, 1 });
index 778e547ae5708f9e9f21b486a6cc7478e3c189a4..d252af29e4d6338bf091be290a1d7f3babc5e540 100644 (file)
@@ -36,8 +36,7 @@ final class BGPObjectComparator implements Comparator<PathAttributes> {
                        return 0;
                }
 
-               // FIXME: look at ASPath
-               // FIXME: look at everything else :-)
+               // FIXME: BUG-185: implement here
 
                return 0;
        }
index 4a091e5f57a54b21c5479221dbacc07b8306eec4..6d002cc9db954cc415479760f1fb16850a285f31 100644 (file)
@@ -242,7 +242,7 @@ public class PCEPObjectParserTest {
                builder.setSubobjects(subs);
 
                assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(false, false), result));
-               // FIXME: fix Ipv6Serializers (getType)
+               // FIXME: BUG-130: fix Ipv6Serializers (getType)
                // assertArrayEquals(result, parser.serializeObject(builder.build()));
        }
 
@@ -263,14 +263,14 @@ public class PCEPObjectParserTest {
                subs.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reported.route.object.rro.SubobjectsBuilder().setSubobjectType(
                                new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.record.route.subobjects.subobject.type.IpPrefixBuilder().setIpPrefix(
                                                new IpPrefix(Ipv6Util.prefixForBytes(ip6PrefixBytes, 22))).build()).setProtectionAvailable(false).setProtectionInUse(
-                                                               false).build());
+                               false).build());
                subs.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reported.route.object.rro.SubobjectsBuilder().setSubobjectType(
                                new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.record.route.subobjects.subobject.type.UnnumberedBuilder().setRouterId(
                                                0x1245678L).setInterfaceId(0x9abcdef0L).build()).setProtectionAvailable(false).setProtectionInUse(false).build());
                builder.setSubobjects(subs);
 
                assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(false, false), result));
-               // FIXME: fix Ipv6Serializers (getType)
+               // FIXME: BUG-130: fix Ipv6Serializers (getType)
                // assertArrayEquals(result, parser.serializeObject(builder.build()));
        }