BUG-50: added more object tests. 15/2315/1
authorDana Kutenicsova <dkutenic@cisco.com>
Thu, 31 Oct 2013 13:38:42 +0000 (14:38 +0100)
committerDana Kutenicsova <dkutenic@cisco.com>
Fri, 1 Nov 2013 11:11:31 +0000 (12:11 +0100)
Change-Id: Ic27f06ba299bbaf70b71a9c2fd566b9a983955b0
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
21 files changed:
pcep/api/src/main/yang/pcep-types.yang
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/Util.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/AbstractObjectWithTlvsParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPClassTypeObjectParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPCloseObjectParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPErrorObjectParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPGlobalConstraintsObjectParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPLspaObjectParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPNoPathObjectParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPNotificationObjectParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPObjectiveFunctionObjectParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPOpenObjectParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPRequestParameterObjectParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPSrpObjectParser.java
pcep/impl/src/test/java/org/opendaylight/protocol/pcep/impl/PCEPObjectParserTest.java
pcep/impl/src/test/resources/PCEPCloseObject1.bin
pcep/impl/src/test/resources/PCEPGlobalConstraintsObject.1.bin
pcep/impl/src/test/resources/PCEPLspaObject1LowerBounds.bin
pcep/impl/src/test/resources/PCEPLspaObject2UpperBounds.bin
pcep/impl/src/test/resources/PCEPLspaObject3RandVals.bin
pcep/impl/src/test/resources/PCEPObjectiveFunctionObject.1.bin

index 9d407d8e434794e4ef4c6cbf8dd5f7d65b18b1a0..ed8b20ba0b21cccc8a36ea8a64a16363f19f0e40 100644 (file)
@@ -702,7 +702,6 @@ module pcep-types {
                description "NOTIFICATION Object";
                reference "https://tools.ietf.org/html/rfc5440#section-7.14";
 
-               // No possibility of TLVs
                uses object;
                container "tlvs" {
                        container overload-duration {
@@ -727,7 +726,6 @@ module pcep-types {
                description "PCEP-ERROR Object";
                reference "https://tools.ietf.org/html/rfc5440#section-7.15";
 
-               // No possibility of TLVs
                uses object;
                container "tlvs" {
                        container req-missing {
@@ -834,7 +832,7 @@ module pcep-types {
        }
 
        grouping lsp-object {
-               description "SRP Object";
+               description "LSP Object";
                reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3";
 
                uses object;
index 25da97caff3a443ccfeb8afd533f6152579f1abe..546006f3063b145ca1c58d61de7f8160c9e6c941 100644 (file)
@@ -63,10 +63,11 @@ public final class Util {
                final List<IpAddress> addresses = Lists.newArrayList();
 
                while (bytes.length > offset) {
-                       if (family instanceof Ipv4)
+                       if (family instanceof Ipv4) {
                                addresses.add(new IpAddress(Ipv4Util.addressForBytes(ByteArray.subByte(bytes, offset, addrLen))));
-                       else
+                       } else {
                                addresses.add(new IpAddress(Ipv6Util.addressForBytes(ByteArray.subByte(bytes, offset, addrLen))));
+                       }
                        offset += addrLen;
                }
 
@@ -75,26 +76,23 @@ public final class Util {
 
        public static void putAddresses(final byte[] destBytes, int offset, final List<IpAddress> addresses, final int addrLen) {
                for (final IpAddress address : addresses) {
-                       if (address.getIpv4Address() != null)
+                       if (address.getIpv4Address() != null) {
                                System.arraycopy(address.getIpv4Address().getValue().getBytes(), 0, destBytes, offset, addrLen);
-                       else
+                       } else {
                                System.arraycopy(address.getIpv6Address().getValue().getBytes(), 0, destBytes, offset, addrLen);
+                       }
                        offset += addrLen;
                }
        }
 
-       public static int getPadding(final int length, final int padding) {
-               return (padding - (length % padding)) % padding;
-       }
-
        public static Message createErrorMessage(final PCEPErrors e, final OpenObject t) {
                final PcerrBuilder errMessageBuilder = new PcerrBuilder();
                final PCEPErrorMapping mapping = PCEPErrorMapping.getInstance();
                final PCEPErrorIdentifier id = mapping.getFromErrorsEnum(e);
                final Errors err = new ErrorsBuilder().setType(id.type).setValue(id.value).build();
-               if (t == null)
+               if (t == null) {
                        return errMessageBuilder.setPcerrMessage(new PcerrMessageBuilder().setErrors(Arrays.asList(err)).build()).build();
-               else {
+               else {
                        final ErrorType type = new SessionBuilder().setOpen((Open) t).build();
                        return errMessageBuilder.setPcerrMessage(new PcerrMessageBuilder().setErrors(Arrays.asList(err)).setErrorType(type).build()).build();
                }
index 3436024c0a91306af5d3f2992fe88d2d62d4654a..4bba7b8315078cffe8b2409cb0b6e50e0ee6277d 100644 (file)
@@ -88,7 +88,7 @@ public abstract class AbstractObjectWithTlvsParser<BUILDER> implements ObjectPar
 
        public abstract void addTlv(final BUILDER builder, final Tlv tlv);
 
-       private static int getPadding(final int length, final int padding) {
+       protected static int getPadding(final int length, final int padding) {
                return (padding - (length % padding)) % padding;
        }
 }
index 3ec9ede227212a4a4f1865cde9309f15116a2a83..81526ad9fdfc1b5e26dcab07b0f36d9a16f0c85f 100644 (file)
@@ -18,8 +18,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.attributes.ClassTypeBuilder;
 
+import com.google.common.primitives.UnsignedBytes;
+
 /**
- * Parser for {@link org.opendaylight.protocol.pcep.object.PCEPClassTypeObject PCEPClassTypeObject}
+ * Parser for {@link ClasstypeObject}
  */
 public class PCEPClassTypeObjectParser extends AbstractObjectWithTlvsParser<ClassTypeBuilder> {
 
@@ -30,17 +32,17 @@ public class PCEPClassTypeObjectParser extends AbstractObjectWithTlvsParser<Clas
        /**
         * Length of Class Type field in bits.
         */
-       public static final int CT_F_LENGTH = 3;
+       private static final int CT_F_LENGTH = 3;
 
        /**
         * Reserved field bit length.
         */
-       public static final int RESERVED = 29;
+       private static final int RESERVED = 29;
 
        /**
         * Size of the object in bytes.
         */
-       public static final int SIZE = (RESERVED + CT_F_LENGTH) / 8;
+       private static final int SIZE = (RESERVED + CT_F_LENGTH) / 8;
 
        public PCEPClassTypeObjectParser(final TlvHandlerRegistry tlvReg) {
                super(tlvReg);
@@ -48,7 +50,7 @@ public class PCEPClassTypeObjectParser extends AbstractObjectWithTlvsParser<Clas
 
        @Override
        public ClasstypeObject parseObject(final ObjectHeader header, final byte[] bytes) throws PCEPDeserializerException,
-       PCEPDocumentedException {
+                       PCEPDocumentedException {
                if (bytes == null) {
                        throw new IllegalArgumentException("Byte array is mandatory.");
                }
@@ -59,13 +61,12 @@ public class PCEPClassTypeObjectParser extends AbstractObjectWithTlvsParser<Clas
                if (!header.isProcessingRule()) {
                        throw new PCEPDocumentedException("Processed bit not set", PCEPErrors.P_FLAG_NOT_SET);
                }
-
                final ClassTypeBuilder builder = new ClassTypeBuilder();
 
                builder.setIgnore(header.isIgnore());
                builder.setProcessingRule(header.isProcessingRule());
 
-               final short ct = (short) (bytes[SIZE - 1] & 0xFF);
+               final short ct = (short) UnsignedBytes.toInt(bytes[SIZE - 1]);
                builder.setClassType(new ClassType(ct));
 
                if (ct < 0 || ct > 8) {
@@ -84,9 +85,8 @@ public class PCEPClassTypeObjectParser extends AbstractObjectWithTlvsParser<Clas
                if (!(object instanceof ClasstypeObject)) {
                        throw new IllegalArgumentException("Wrong instance of PCEPObject. Passed " + object.getClass() + ". Needed ClasstypeObject.");
                }
-
                final byte[] retBytes = new byte[SIZE];
-               retBytes[SIZE - 1] = ((ClasstypeObject) object).getClassType().getValue().byteValue();
+               retBytes[SIZE - 1] = UnsignedBytes.checkedCast(((ClasstypeObject) object).getClassType().getValue());
                return retBytes;
        }
 
index af2ca7ff66bf1d48d265380a2f2d3f0a1e426b78..d6a608b7887c8255d6eedecab05be26f5428a8cd 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.protocol.pcep.impl.object;
 
 import org.opendaylight.protocol.pcep.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.PCEPDocumentedException;
-import org.opendaylight.protocol.pcep.impl.Util;
 import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.CloseObject;
@@ -20,6 +19,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.close.message.c.close.message.CCloseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.close.object.Tlvs;
 
+import com.google.common.primitives.UnsignedBytes;
+
 /**
  * Parser for {@link org.opendaylight.protocol.pcep.object.PCEPCloseObject PCEPCloseObject}
  */
@@ -32,19 +33,19 @@ public class PCEPCloseObjectParser extends AbstractObjectWithTlvsParser<CCloseBu
        /*
         * lengths of fields in bytes
         */
-       public static final int FLAGS_F_LENGTH = 1;
-       public static final int REASON_F_LENGTH = 1;
+       private static final int FLAGS_F_LENGTH = 1;
+       private static final int REASON_F_LENGTH = 1;
 
        /*
         * offsets of fields in bytes
         */
-       public static final int FLAGS_F_OFFSET = 2; // added reserved field of size 2 bytes
-       public static final int REASON_F_OFFSET = FLAGS_F_OFFSET + FLAGS_F_LENGTH;
+       private static final int FLAGS_F_OFFSET = 2;
+       private static final int REASON_F_OFFSET = FLAGS_F_OFFSET + FLAGS_F_LENGTH;
 
        /*
         * total size of object in bytes
         */
-       public static final int TLVS_OFFSET = REASON_F_OFFSET + REASON_F_LENGTH;
+       private static final int TLVS_OFFSET = REASON_F_OFFSET + REASON_F_LENGTH;
 
        public PCEPCloseObjectParser(final TlvHandlerRegistry tlvReg) {
                super(tlvReg);
@@ -55,16 +56,11 @@ public class PCEPCloseObjectParser extends AbstractObjectWithTlvsParser<CCloseBu
                if (bytes == null) {
                        throw new IllegalArgumentException("Byte array is mandatory.");
                }
-
                final CCloseBuilder builder = new CCloseBuilder();
-
                parseTlvs(builder, ByteArray.cutBytes(bytes, TLVS_OFFSET));
-
                builder.setIgnore(header.isIgnore());
                builder.setProcessingRule(header.isProcessingRule());
-
-               builder.setReason((short) (bytes[REASON_F_OFFSET] & 0xFF));
-
+               builder.setReason((short) UnsignedBytes.toInt(bytes[REASON_F_OFFSET]));
                return builder.build();
        }
 
@@ -78,7 +74,6 @@ public class PCEPCloseObjectParser extends AbstractObjectWithTlvsParser<CCloseBu
                if (!(object instanceof CloseObject)) {
                        throw new IllegalArgumentException("Wrong instance of PCEPObject. Passed " + object.getClass() + ". Needed CloseObject.");
                }
-
                final CloseObject obj = (CloseObject) object;
 
                final byte[] tlvs = serializeTlvs(obj.getTlvs());
@@ -86,16 +81,12 @@ public class PCEPCloseObjectParser extends AbstractObjectWithTlvsParser<CCloseBu
                if (tlvs != null) {
                        tlvsLength = tlvs.length;
                }
-               final byte[] retBytes = new byte[TLVS_OFFSET + tlvsLength + Util.getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
+               final byte[] retBytes = new byte[TLVS_OFFSET + tlvsLength + getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
 
                if (tlvs != null) {
                        ByteArray.copyWhole(tlvs, retBytes, TLVS_OFFSET);
                }
-
-               final int reason = ((CClose) obj).getReason().intValue();
-
-               retBytes[REASON_F_OFFSET] = (byte) reason;
-
+               retBytes[REASON_F_OFFSET] = UnsignedBytes.checkedCast(((CClose) obj).getReason());
                return retBytes;
        }
 
index 05e9b4f0a9ed582d655645220506788d1901bfa2..46847cad93a64e3df1b52a206c213b7aad0e3200 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.protocol.pcep.impl.object;
 
 import org.opendaylight.protocol.pcep.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.PCEPDocumentedException;
-import org.opendaylight.protocol.pcep.impl.Util;
 import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
@@ -47,7 +46,7 @@ public class PCEPErrorObjectParser extends AbstractObjectWithTlvsParser<ErrorsBu
 
        @Override
        public PcepErrorObject parseObject(final ObjectHeader header, final byte[] bytes) throws PCEPDeserializerException,
-       PCEPDocumentedException {
+                       PCEPDocumentedException {
                if (bytes == null) {
                        throw new IllegalArgumentException("Array of bytes is mandatory.");
                }
@@ -86,7 +85,7 @@ public class PCEPErrorObjectParser extends AbstractObjectWithTlvsParser<ErrorsBu
                if (tlvs != null) {
                        tlvsLength = tlvs.length;
                }
-               final byte[] retBytes = new byte[TLVS_OFFSET + tlvsLength + Util.getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
+               final byte[] retBytes = new byte[TLVS_OFFSET + tlvsLength + getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
 
                if (tlvs != null) {
                        ByteArray.copyWhole(tlvs, retBytes, TLVS_OFFSET);
index 726ebf79682e27c34eabceaccc829ecfb518685e..c33e6f07b7312564dc149e0cbac19be59278f74a 100644 (file)
@@ -10,13 +10,14 @@ package org.opendaylight.protocol.pcep.impl.object;
 import org.opendaylight.protocol.pcep.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.PCEPDocumentedException;
 import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
-import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.GcObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ObjectHeader;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.svec.GcBuilder;
 
+import com.google.common.primitives.UnsignedBytes;
+
 /**
  * Parser for {@link GcObject}
  */
@@ -26,17 +27,17 @@ public class PCEPGlobalConstraintsObjectParser extends AbstractObjectWithTlvsPar
 
        public static final int TYPE = 1;
 
-       private final static int MAX_HOP_F_LENGTH = 1;
-       private final static int MAX_UTIL_F_LENGTH = 1;
-       private final static int MIN_UTIL_F_LENGTH = 1;
-       private final static int OVER_BOOKING_FACTOR_F_LENGTH = 1;
+       private static final int MAX_HOP_F_LENGTH = 1;
+       private static final int MAX_UTIL_F_LENGTH = 1;
+       private static final int MIN_UTIL_F_LENGTH = 1;
+       private static final int OVER_BOOKING_FACTOR_F_LENGTH = 1;
 
-       private final static int MAX_HOP_F_OFFSET = 0;
-       private final static int MAX_UTIL_F_OFFSET = MAX_HOP_F_OFFSET + MAX_HOP_F_LENGTH;
-       private final static int MIN_UTIL_F_OFFSET = MAX_UTIL_F_OFFSET + MAX_UTIL_F_LENGTH;
-       private final static int OVER_BOOKING_FACTOR_F_OFFSET = MIN_UTIL_F_OFFSET + MIN_UTIL_F_LENGTH;
+       private static final int MAX_HOP_F_OFFSET = 0;
+       private static final int MAX_UTIL_F_OFFSET = MAX_HOP_F_OFFSET + MAX_HOP_F_LENGTH;
+       private static final int MIN_UTIL_F_OFFSET = MAX_UTIL_F_OFFSET + MAX_UTIL_F_LENGTH;
+       private static final int OVER_BOOKING_FACTOR_F_OFFSET = MIN_UTIL_F_OFFSET + MIN_UTIL_F_LENGTH;
 
-       private final static int TLVS_OFFSET = OVER_BOOKING_FACTOR_F_OFFSET + OVER_BOOKING_FACTOR_F_LENGTH;
+       private static final int TLVS_OFFSET = OVER_BOOKING_FACTOR_F_OFFSET + OVER_BOOKING_FACTOR_F_LENGTH;
 
        public PCEPGlobalConstraintsObjectParser(final TlvHandlerRegistry tlvReg) {
                super(tlvReg);
@@ -47,19 +48,15 @@ public class PCEPGlobalConstraintsObjectParser extends AbstractObjectWithTlvsPar
                if (bytes == null || bytes.length == 0) {
                        throw new IllegalArgumentException("Array of bytes is mandatory. Can't be null or empty.");
                }
-
                final GcBuilder builder = new GcBuilder();
 
-               parseTlvs(builder, ByteArray.cutBytes(bytes, TLVS_OFFSET));
-
                builder.setIgnore(header.isIgnore());
                builder.setProcessingRule(header.isProcessingRule());
 
-               builder.setMaxHop((short) (bytes[MAX_HOP_F_OFFSET] & 0xFF));
-               builder.setMinUtilization((short) (bytes[MIN_UTIL_F_OFFSET] & 0xFF));
-               builder.setMaxUtilization((short) (bytes[MAX_UTIL_F_OFFSET] & 0xFF));
-               builder.setOverBookingFactor((short) (bytes[OVER_BOOKING_FACTOR_F_OFFSET] & 0xFF));
-
+               builder.setMaxHop((short) UnsignedBytes.toInt(bytes[MAX_HOP_F_OFFSET]));
+               builder.setMinUtilization((short) UnsignedBytes.toInt(bytes[MIN_UTIL_F_OFFSET]));
+               builder.setMaxUtilization((short) UnsignedBytes.toInt(bytes[MAX_UTIL_F_OFFSET]));
+               builder.setOverBookingFactor((short) UnsignedBytes.toInt(bytes[OVER_BOOKING_FACTOR_F_OFFSET]));
                return builder.build();
        }
 
@@ -73,19 +70,12 @@ public class PCEPGlobalConstraintsObjectParser extends AbstractObjectWithTlvsPar
                if (!(object instanceof GcObject)) {
                        throw new IllegalArgumentException("Wrong instance of PCEPObject. Passed " + object.getClass() + ". Needed GcObject.");
                }
-
                final GcObject specObj = (GcObject) object;
-
-               // final byte[] tlvs = PCEPTlvParser.put(specObj.getTlvs());
                final byte[] retBytes = new byte[TLVS_OFFSET + 0];
-
-               retBytes[MAX_HOP_F_OFFSET] = specObj.getMaxHop().byteValue();
-               retBytes[MAX_UTIL_F_OFFSET] = specObj.getMaxUtilization().byteValue();
-               retBytes[MIN_UTIL_F_OFFSET] = specObj.getMinUtilization().byteValue();
-               retBytes[OVER_BOOKING_FACTOR_F_OFFSET] = specObj.getOverBookingFactor().byteValue();
-
-               // ByteArray.copyWhole(tlvs, retBytes, TLVS_OFFSET);
-
+               retBytes[MAX_HOP_F_OFFSET] = UnsignedBytes.checkedCast(specObj.getMaxHop());
+               retBytes[MAX_UTIL_F_OFFSET] = UnsignedBytes.checkedCast(specObj.getMaxUtilization());
+               retBytes[MIN_UTIL_F_OFFSET] = UnsignedBytes.checkedCast(specObj.getMinUtilization());
+               retBytes[OVER_BOOKING_FACTOR_F_OFFSET] = UnsignedBytes.checkedCast(specObj.getOverBookingFactor());
                return retBytes;
        }
 
index 66d9383f2452e9bb6241601c2e674e04836ae3d7..f2e96c03c413e607a012adbe58a6a69ea7962f68 100644 (file)
@@ -20,6 +20,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.attributes.LspaBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.AttributeFilter;
 
+import com.google.common.primitives.UnsignedBytes;
+
 /**
  * Parser for {@link LspaObject}
  */
@@ -32,29 +34,29 @@ public class PCEPLspaObjectParser extends AbstractObjectWithTlvsParser<LspaBuild
        /*
         * lengths of fields in bytes
         */
-       public static final int EXC_ANY_F_LENGTH = 4;
-       public static final int INC_ANY_F_LENGTH = 4;
-       public static final int INC_ALL_F_LENGTH = 4;
-       public static final int SET_PRIO_F_LENGTH = 1;
-       public static final int HOLD_PRIO_F_LENGTH = 1;
-       public static final int FLAGS_F_LENGTH = 1;
+       private static final int EXC_ANY_F_LENGTH = 4;
+       private static final int INC_ANY_F_LENGTH = 4;
+       private static final int INC_ALL_F_LENGTH = 4;
+       private static final int SET_PRIO_F_LENGTH = 1;
+       private static final int HOLD_PRIO_F_LENGTH = 1;
+       private static final int FLAGS_F_LENGTH = 1;
 
        /*
         * offsets of flags inside flags field in bits
         */
-       public static final int S_FLAG_OFFSET = 6;
-       public static final int L_FLAG_OFFSET = 7;
+       private static final int S_FLAG_OFFSET = 6;
+       private static final int L_FLAG_OFFSET = 7;
 
        /*
         * offsets of fields in bytes
         */
-       public static final int EXC_ANY_F_OFFSET = 0;
-       public static final int INC_ANY_F_OFFSET = EXC_ANY_F_OFFSET + EXC_ANY_F_LENGTH;
-       public static final int INC_ALL_F_OFFSET = INC_ANY_F_OFFSET + INC_ANY_F_LENGTH;
-       public static final int SET_PRIO_F_OFFSET = INC_ALL_F_OFFSET + INC_ALL_F_LENGTH;
-       public static final int HOLD_PRIO_F_OFFSET = SET_PRIO_F_OFFSET + SET_PRIO_F_LENGTH;
-       public static final int FLAGS_F_OFFSET = HOLD_PRIO_F_OFFSET + HOLD_PRIO_F_LENGTH;
-       public static final int TLVS_F_OFFSET = FLAGS_F_OFFSET + FLAGS_F_LENGTH + 1; // added reserved field of length 1B
+       private static final int EXC_ANY_F_OFFSET = 0;
+       private static final int INC_ANY_F_OFFSET = EXC_ANY_F_OFFSET + EXC_ANY_F_LENGTH;
+       private static final int INC_ALL_F_OFFSET = INC_ANY_F_OFFSET + INC_ANY_F_LENGTH;
+       private static final int SET_PRIO_F_OFFSET = INC_ALL_F_OFFSET + INC_ALL_F_LENGTH;
+       private static final int HOLD_PRIO_F_OFFSET = SET_PRIO_F_OFFSET + SET_PRIO_F_LENGTH;
+       private static final int FLAGS_F_OFFSET = HOLD_PRIO_F_OFFSET + HOLD_PRIO_F_LENGTH;
+       private static final int TLVS_F_OFFSET = FLAGS_F_OFFSET + FLAGS_F_LENGTH + 1; // added reserved field of length 1B
 
        public PCEPLspaObjectParser(final TlvHandlerRegistry tlvReg) {
                super(tlvReg);
@@ -65,23 +67,20 @@ public class PCEPLspaObjectParser extends AbstractObjectWithTlvsParser<LspaBuild
                if (bytes == null) {
                        throw new IllegalArgumentException("Bytes array is mandatory.");
                }
-
                final BitSet flags = ByteArray.bytesToBitSet(ByteArray.subByte(bytes, FLAGS_F_OFFSET, FLAGS_F_LENGTH));
 
                final LspaBuilder builder = new LspaBuilder();
-
                parseTlvs(builder, ByteArray.cutBytes(bytes, TLVS_F_OFFSET));
 
                builder.setIgnore(header.isIgnore());
                builder.setProcessingRule(header.isProcessingRule());
 
-               builder.setHoldPriority((short) (bytes[HOLD_PRIO_F_OFFSET] & 0xFF));
-               builder.setSetupPriority((short) (bytes[SET_PRIO_F_OFFSET] & 0xFF));
+               builder.setHoldPriority((short) UnsignedBytes.toInt(bytes[HOLD_PRIO_F_OFFSET]));
+               builder.setSetupPriority((short) UnsignedBytes.toInt(bytes[SET_PRIO_F_OFFSET]));
                builder.setLocalProtectionDesired(flags.get(L_FLAG_OFFSET));
                builder.setExcludeAny(new AttributeFilter(ByteArray.bytesToLong(ByteArray.subByte(bytes, EXC_ANY_F_OFFSET, EXC_ANY_F_LENGTH))));
                builder.setIncludeAll(new AttributeFilter(ByteArray.bytesToLong(ByteArray.subByte(bytes, INC_ALL_F_OFFSET, INC_ALL_F_LENGTH))));
                builder.setIncludeAny(new AttributeFilter(ByteArray.bytesToLong(ByteArray.subByte(bytes, INC_ANY_F_OFFSET, INC_ANY_F_LENGTH))));
-
                return builder.build();
        }
 
@@ -95,26 +94,19 @@ public class PCEPLspaObjectParser extends AbstractObjectWithTlvsParser<LspaBuild
                if (!(object instanceof LspaObject)) {
                        throw new IllegalArgumentException("Wrong instance of PCEPObject. Passed " + object.getClass() + ". Needed LspaObject.");
                }
-
                final LspaObject lspaObj = (LspaObject) object;
 
-               // FIXME, but no Tlvs defined
-               // final byte[] tlvs = PCEPTlvParser.put(lspaObj.getTlvs());
-               // final byte[] retBytes = new byte[TLVS_F_OFFSET + tlvs.length];
-               // ByteArray.copyWhole(tlvs, retBytes, TLVS_F_OFFSET);
-
                final byte[] retBytes = new byte[TLVS_F_OFFSET];
 
                System.arraycopy(ByteArray.longToBytes(lspaObj.getExcludeAny().getValue()), 4, retBytes, EXC_ANY_F_OFFSET, EXC_ANY_F_LENGTH);
                System.arraycopy(ByteArray.longToBytes(lspaObj.getIncludeAny().getValue()), 4, retBytes, INC_ANY_F_OFFSET, INC_ANY_F_LENGTH);
                System.arraycopy(ByteArray.longToBytes(lspaObj.getIncludeAll().getValue()), 4, retBytes, INC_ALL_F_OFFSET, INC_ALL_F_LENGTH);
-               retBytes[SET_PRIO_F_OFFSET] = ByteArray.shortToBytes(lspaObj.getSetupPriority())[Short.SIZE / Byte.SIZE - 1];
-               retBytes[HOLD_PRIO_F_OFFSET] = ByteArray.shortToBytes(lspaObj.getHoldPriority())[Short.SIZE / Byte.SIZE - 1];
+               retBytes[SET_PRIO_F_OFFSET] = UnsignedBytes.checkedCast(lspaObj.getSetupPriority());
+               retBytes[HOLD_PRIO_F_OFFSET] = UnsignedBytes.checkedCast(lspaObj.getHoldPriority());
 
                final BitSet flags = new BitSet(FLAGS_F_LENGTH * Byte.SIZE);
                flags.set(L_FLAG_OFFSET, lspaObj.isLocalProtectionDesired());
                ByteArray.copyWhole(ByteArray.bitSetToBytes(flags, FLAGS_F_LENGTH), retBytes, FLAGS_F_OFFSET);
-
                return retBytes;
        }
 
index 8907138ed6504bdfabaf8caf5714f921fa4a053b..b03de62ff65451dc2000f895850d89b1ee8e5947 100644 (file)
@@ -11,16 +11,15 @@ import java.util.BitSet;
 
 import org.opendaylight.protocol.pcep.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.PCEPDocumentedException;
-import org.opendaylight.protocol.pcep.impl.Util;
 import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
 import org.opendaylight.protocol.util.ByteArray;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.result.failure.NoPath;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.result.failure.no.path.Tlvs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.NoPathObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ObjectHeader;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.result.failure.NoPath;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.result.failure.NoPathBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.result.failure.no.path.Tlvs;
 
 /**
  * Parser for {@link NoPathObject}
@@ -59,7 +58,7 @@ public class PCEPNoPathObjectParser extends AbstractObjectWithTlvsParser<NoPathB
 
        @Override
        public NoPathObject parseObject(final ObjectHeader header, final byte[] bytes) throws PCEPDeserializerException,
-       PCEPDocumentedException {
+                       PCEPDocumentedException {
                if (bytes == null || bytes.length == 0) {
                        throw new IllegalArgumentException("Array of bytes is mandatory. Can't be null or empty.");
                }
@@ -97,7 +96,7 @@ public class PCEPNoPathObjectParser extends AbstractObjectWithTlvsParser<NoPathB
                if (tlvs != null) {
                        tlvsLength = tlvs.length;
                }
-               final byte[] retBytes = new byte[TLVS_OFFSET + tlvsLength + Util.getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
+               final byte[] retBytes = new byte[TLVS_OFFSET + tlvsLength + getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
 
                if (tlvs != null) {
                        ByteArray.copyWhole(tlvs, retBytes, TLVS_OFFSET);
index 57b7352885a2b45beef9168eedf92cd861662300..9ca0dd32cbb019799c5841119cd6c6a991647cd2 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.protocol.pcep.impl.object;
 
 import org.opendaylight.protocol.pcep.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.PCEPDocumentedException;
-import org.opendaylight.protocol.pcep.impl.Util;
 import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.NotificationObject;
@@ -52,7 +51,7 @@ public class PCEPNotificationObjectParser extends AbstractObjectWithTlvsParser<N
 
        @Override
        public NotificationObject parseObject(final ObjectHeader header, final byte[] bytes) throws PCEPDeserializerException,
-       PCEPDocumentedException {
+                       PCEPDocumentedException {
                if (bytes == null || bytes.length == 0) {
                        throw new IllegalArgumentException("Array of bytes is mandatory. Can't be null or empty.");
                }
@@ -91,7 +90,7 @@ public class PCEPNotificationObjectParser extends AbstractObjectWithTlvsParser<N
                if (tlvs != null) {
                        tlvsLength = tlvs.length;
                }
-               final byte[] retBytes = new byte[TLVS_OFFSET + tlvsLength + Util.getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
+               final byte[] retBytes = new byte[TLVS_OFFSET + tlvsLength + getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
 
                if (tlvs != null) {
                        ByteArray.copyWhole(tlvs, retBytes, TLVS_OFFSET);
index e4330429e72b916f71a0831a5ab1056de6bf9f6b..096d2e94e0e2fab237f43e9103b05feadb99a6f4 100644 (file)
@@ -29,13 +29,13 @@ public class PCEPObjectiveFunctionObjectParser extends AbstractObjectWithTlvsPar
        /*
         * lengths of fields
         */
-       public static final int OF_CODE_F_LENGTH = 2;
+       private static final int OF_CODE_F_LENGTH = 2;
 
        /*
         * offsets of fields
         */
-       public static final int OF_CODE_F_OFFSET = 0;
-       public static final int TLVS_OFFSET = OF_CODE_F_OFFSET + OF_CODE_F_LENGTH + 2; // added reserved field of size 2
+       private static final int OF_CODE_F_OFFSET = 0;
+       private static final int TLVS_OFFSET = OF_CODE_F_OFFSET + OF_CODE_F_LENGTH + 2;
 
        public PCEPObjectiveFunctionObjectParser(final TlvHandlerRegistry tlvReg) {
                super(tlvReg);
@@ -46,15 +46,10 @@ public class PCEPObjectiveFunctionObjectParser extends AbstractObjectWithTlvsPar
                if (bytes == null || bytes.length == 0) {
                        throw new IllegalArgumentException("Array of bytes is mandatory. Can't be null or empty.");
                }
-
                final OfBuilder builder = new OfBuilder();
-
-               parseTlvs(builder, ByteArray.cutBytes(bytes, TLVS_OFFSET));
-
                builder.setIgnore(header.isIgnore());
                builder.setProcessingRule(header.isProcessingRule());
-               builder.setCode(new OfId(ByteArray.bytesToInt(ByteArray.subByte(bytes, OF_CODE_F_OFFSET, OF_CODE_F_LENGTH)) & 0xFFFF));
-
+               builder.setCode(new OfId(ByteArray.bytesToInt(ByteArray.subByte(bytes, OF_CODE_F_OFFSET, OF_CODE_F_LENGTH))));
                return builder.build();
        }
 
@@ -69,16 +64,9 @@ public class PCEPObjectiveFunctionObjectParser extends AbstractObjectWithTlvsPar
                        throw new IllegalArgumentException("Wrong instance of PCEPObject. Passed " + object.getClass()
                                        + ". Needed PCEPObjectiveFunction.");
                }
-
                final OfObject specObj = (OfObject) object;
-               // FIXME
-               // final byte[] tlvs = PCEPTlvParser.put(specObj.getTlvs());
                final byte[] retBytes = new byte[TLVS_OFFSET + 0];
-
-               // ByteArray.copyWhole(tlvs, retBytes, TLVS_OFFSET);
-
                ByteArray.copyWhole(ByteArray.shortToBytes(specObj.getCode().getValue().shortValue()), retBytes, OF_CODE_F_OFFSET);
-
                return retBytes;
        }
 
index 609c50ac5588a29b3f2f3cfca1255fbd6b653622..bba35a4ffc7833e8e8f824a2b86e1b85d5b37986 100644 (file)
@@ -11,7 +11,6 @@ package org.opendaylight.protocol.pcep.impl.object;
 import org.opendaylight.protocol.pcep.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.PCEPDocumentedException;
 import org.opendaylight.protocol.pcep.PCEPErrors;
-import org.opendaylight.protocol.pcep.impl.Util;
 import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.LspDbVersionTlv;
@@ -131,7 +130,7 @@ public class PCEPOpenObjectParser extends AbstractObjectWithTlvsParser<OpenBuild
 
                final byte[] tlvs = serializeTlvs(open.getTlvs());
 
-               final byte[] bytes = new byte[TLVS_OFFSET + tlvs.length + Util.getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
+               final byte[] bytes = new byte[TLVS_OFFSET + tlvs.length + getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
 
                bytes[VER_FLAGS_MF_OFFSET] = versionFlagMF;
                bytes[KEEPALIVE_F_OFFSET] = ByteArray.shortToBytes(open.getKeepalive())[1];
index 344ae406e6e8328cac04de3d44f66160260f088a..5bd8fcc17cf7db7b9b4b4a0d5b5d6b02a6bdf22b 100644 (file)
@@ -13,7 +13,6 @@ import java.util.BitSet;
 
 import org.opendaylight.protocol.pcep.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.PCEPDocumentedException;
-import org.opendaylight.protocol.pcep.impl.Util;
 import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
@@ -173,7 +172,7 @@ public class PCEPRequestParameterObjectParser extends AbstractObjectWithTlvsPars
                if (tlvs != null) {
                        tlvsLength = tlvs.length;
                }
-               final byte[] retBytes = new byte[TLVS_OFFSET + tlvsLength + Util.getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
+               final byte[] retBytes = new byte[TLVS_OFFSET + tlvsLength + getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
 
                if (tlvs != null) {
                        ByteArray.copyWhole(tlvs, retBytes, TLVS_OFFSET);
index ac56d211a1c222135679e124d077f079893cfebc..b6bc734a418297830748efcd80daa6f63a9bde89 100644 (file)
@@ -7,35 +7,58 @@
  */
 package org.opendaylight.protocol.pcep.impl.object;
 
+import java.util.Arrays;
+
 import org.opendaylight.protocol.pcep.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.PCEPDocumentedException;
 import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
+import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ObjectHeader;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.SrpIdNumber;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.SrpObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcinitiate.message.pcinitiate.message.requests.SrpBuilder;
 
+/**
+ * Parser for {@link SrpObject}
+ */
 public final class PCEPSrpObjectParser extends AbstractObjectWithTlvsParser<SrpBuilder> {
 
        public static final int CLASS = 33;
 
        public static final int TYPE = 1;
 
+       private static final int FLAGS_SIZE = 4;
+
+       private static final int SRP_ID_SIZE = 4;
+
+       private static final int MIN_SIZE = FLAGS_SIZE + SRP_ID_SIZE;
+
        public PCEPSrpObjectParser(final TlvHandlerRegistry tlvReg) {
                super(tlvReg);
        }
 
        @Override
        public SrpObject parseObject(final ObjectHeader header, final byte[] bytes) throws PCEPDeserializerException, PCEPDocumentedException {
-
-               // FIXME: finish
-
+               if (bytes == null || bytes.length == 0) {
+                       throw new IllegalArgumentException("Array of bytes is mandatory. Can't be null or empty.");
+               }
+               if (bytes.length < MIN_SIZE) {
+                       throw new PCEPDeserializerException("Wrong length of array of bytes. Passed: " + bytes.length + "; Expected: >=" + MIN_SIZE
+                                       + ".");
+               }
+               if (header.isProcessingRule()) {
+                       throw new PCEPDeserializerException("Processed flag is set");
+               }
                final SrpBuilder builder = new SrpBuilder();
-
                builder.setIgnore(header.isIgnore());
                builder.setProcessingRule(header.isProcessingRule());
-
+               final byte[] srpId = ByteArray.subByte(bytes, FLAGS_SIZE, SRP_ID_SIZE);
+               if (Arrays.equals(srpId, new byte[] { 0, 0, 0, 0 }) || Arrays.equals(srpId, new byte[] { 0xFFFFFFFF })) {
+                       throw new PCEPDeserializerException("Min/Max values for SRP ID are reserved.");
+               }
+               builder.setOperationId(new SrpIdNumber(ByteArray.bytesToLong(srpId)));
                return builder.build();
        }
 
@@ -49,11 +72,14 @@ public final class PCEPSrpObjectParser extends AbstractObjectWithTlvsParser<SrpB
                if (!(object instanceof SrpObject)) {
                        throw new IllegalArgumentException("Wrong instance of PCEPObject. Passed " + object.getClass() + ". Needed SrpObject.");
                }
-
                final SrpObject srp = (SrpObject) object;
-               // FIXME: finish
-
-               return new byte[0];
+               final Long id = srp.getOperationId().getValue();
+               if (id == 0 || id == 0xFFFFFFFFL) {
+                       throw new IllegalArgumentException("Min/Max values for SRP ID are reserved.");
+               }
+               final byte[] retBytes = new byte[MIN_SIZE];
+               System.arraycopy(ByteArray.intToBytes(id.intValue()), 0, retBytes, FLAGS_SIZE, SRP_ID_SIZE);
+               return retBytes;
        }
 
        @Override
index f3db4f9bf12890d2c3ae16bd5412ec17680d2868..1145f1be2380f207d32b945e89485d08ba8077ac 100644 (file)
@@ -20,339 +20,43 @@ import org.opendaylight.protocol.concepts.Ipv6Util;
 import org.opendaylight.protocol.pcep.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.PCEPDocumentedException;
 import org.opendaylight.protocol.pcep.impl.object.PCEPBandwidthObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPClassTypeObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPCloseObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPEndPointsObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPGlobalConstraintsObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPLoadBalancingObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPLspaObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPMetricObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPObjectiveFunctionObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPSrpObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPSvecObjectParser;
 import org.opendaylight.protocol.pcep.spi.ObjectHeaderImpl;
 import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
 import org.opendaylight.protocol.pcep.spi.pojo.PCEPExtensionProviderContextImpl;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ieee754.rev130819.Float32;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ClassType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.OfId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.RequestId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.SrpIdNumber;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.close.message.c.close.message.CCloseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.endpoints.object.address.family.Ipv4Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.endpoints.object.address.family.Ipv6Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.attributes.ClassTypeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.attributes.LspaBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.attributes.OfBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcinitiate.message.pcinitiate.message.requests.EndpointsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcinitiate.message.pcinitiate.message.requests.SrpBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.SvecBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.requests.segment.computation.p2p.LoadBalancingBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.requests.segment.computation.p2p.reported.route.BandwidthBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.svec.GcBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.svec.MetricBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.AttributeFilter;
 
 import com.google.common.collect.Lists;
 import com.google.common.primitives.UnsignedBytes;
 
-/*
- * Used resources<br/>
- * <br/>
- * PCEPOpenObject3.bin<br/>
- * objClass: 1<br/>
- * objType: 1<br/>
- * objLength: 8<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: true<br/>
- * - ignored: true<br/>
- * <br/>
- * keepAlive: 30<br/>
- * deadTimer: 120<br/>
- * sessionId: 1<br/>
- * tlvs:NO<br/>
- * <br/>
- * PCEPBandwidthObject1LowerBounds.bin<br/>
- * objClass: 5 <br/>
- * objType: 1<br/>
- * objLength: 16<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: true<br/>
- * - ignored: true<br/>
- * <br/>
- * Bandwidth: 0<br/>
- * <br/>
- * PCEPBandwidthObject2UpperBounds.bin<br/>
- * objClass: 5 <br/>
- * objType: 1<br/>
- * objLength: 16<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: true<br/>
- * - ignored: true<br/>
- * <br/>
- * Bandwidth: 0xFFFFFFFF<br/>
- * <br/>
- * PCEPEndPointsObject1IPv4.bin<br/>
- * objClass: 4 <br/>
- * objType: 1<br/>
- * objLength: 12<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: true<br/>
- * - ignored: true<br/>
- * <br/>
- * src IP: 0xA2F5110E <br/>
- * dest IP: 0xFFFFFFFF <br/>
- * <br/>
- * PCEPEndPointsObject2IPv6.bin<br/>
- * objClass: 4 <br/>
- * objType: 2<br/>
- * objLength: 36<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: true<br/>
- * - ignored: true<br/>
- * <br/>
- * src IP: 0xFFFFFFFFF FFFFFFFFF FFFFFFFFF FFFFFFFFF<br/>
- * dest IP: 0x00025DD2 FFECA1B6 581E9F50 00000000 <br/>
- * <br/>
- * PCEPErrorObject1.bin<br/>
- * objClass: 13 (RP)<br/>
- * objType: 1<br/>
- * objLength: 8<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: false<br/>
- * - ignored: false<br/>
- * <br/>
- * Error-type: 1<br/>
- * Error-value: 1<br/>
- * Tlvs: NO<br/>
- * <br/>
- * PCEPErrorObject2Invalid.bin<br/>
- * objClass: 13 (RP)<br/>
- * objType: 1<br/>
- * objLength: 8<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: false<br/>
- * - ignored: false<br/>
- * <br/>
- * Error-type: 3<br/>
- * Error-value: 0<br/>
- * Tlvs: NO<br/>
- * <br/>
- * PCEPErrorObject3.bin<br/>
- * objClass: 13 (RP)<br/>
- * objType: 1<br/>
- * objLength: 8<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: false<br/>
- * - ignored: false<br/>
- * <br/>
- * Error-type: 2<br/>
- * Error-value: 0<br/>
- * Tlvs: NO<br/>
- * <br/>
- * PCEPLspaObject1LowerBounds.bin<br/>
- * objClass: 9<br/>
- * objType: 1<br/>
- * objLength: 20<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: true<br/>
- * - ignored: true<br/>
- * <br/>
- * Exclude-any: 0x00000000L<br/>
- * Include-any: 0x00000000L<br/>
- * Include-all: 0x00000000L<br/>
- * Setup Prio: 0x00<br/>
- * Holding Prio: 0x00<br/>
- * Flags: - L : false<br/>
- * <br/>
- * PCEPLspaObject2UpperBounds.bin<br/>
- * objClass: 9<br/>
- * objType: 1<br/>
- * objLength: 20<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: true<br/>
- * - ignored: true<br/>
- * <br/>
- * Exclude-any: 0xFFFFFFFFL<br/>
- * Include-any: 0xFFFFFFFFL<br/>
- * Include-all: 0xFFFFFFFFL<br/>
- * Setup Prio: 0xFF<br/>
- * Holding Prio: 0xFF<br/>
- * Flags: - L : true<br/>
- * <br/>
- * PCEPLspaObject3RandVals.bin<br/>
- * objClass: 9<br/>
- * objType: 1<br/>
- * objLength: 20<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: true<br/>
- * - ignored: true<br/>
- * <br/>
- * Exclude-any: 0x20A1FEE3L<br/>
- * Include-any: 0x1A025CC7L<br/>
- * Include-all: 0x2BB66532L<br/>
- * Setup Prio: 0x03<br/>
- * Holding Prio: 0x02<br/>
- * Flags: - L : true<br/>
- * <br/>
- * NoPathObject1WithTLV.bin<br/>
- * objClass: 3 (RP)<br/>
- * objType: 1<br/>
- * objLength: 16<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: false<br/>
- * - ignored: false<br/>
- * <br/>
- * Nature of Issue: 2<br/>
- * No-Path flags:<br/>
- * - C: true<br/>
- * <br/>
- * tlvs:<br/>
- * -- NO-PATH-VECTOR<br/>
- * - flags (0x4000):<br/>
- * - PCE currently unavailable: false<br/>
- * - unknown destination: true<br/>
- * - unknown source: false<br/>
- * 
- * <br/>
- * NoPathObject2WithoutTLV.bin<br/>
- * objClass: 3 (RP)<br/>
- * objType: 1<br/>
- * objLength: 8<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: false<br/>
- * - ignored: true<br/>
- * <br/>
- * Nature of Issue: 16<br/>
- * No-Path flags:<br/>
- * - C: false<br/>
- * <br/>
- * tlvs:NO<br/>
- * <br/>
- * PCEPNotificationObject1WithTlv.bin <br/>
- * objClass: 12<br/>
- * objType: 1<br/>
- * objLength: 16<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: false<br/>
- * - ignored: false<br/>
- * <br/>
- * NT: 1<br/>
- * NV: 1<br/>
- * Tlvs:<br/>
- * - OverloaderDuration(0xFF0000A2L)<br/>
- * <br/>
- * PCEPNotificationObject2WithoutTlv.bin <br/>
- * objClass: 12<br/>
- * objType: 1<br/>
- * objLength: 8<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: false<br/>
- * - ignored: false<br/>
- * <br/>
- * NT: 0xFF<br/>
- * NV: 0xFF<br/>
- * Tlvs: NO<br/>
- * <br/>
- * PCEPOpenObject1.bin<br/>
- * objClass: 1<br/>
- * objType: 1<br/>
- * objLength: 28<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: false<br/>
- * - ignored: false<br/>
- * <br/>
- * keepAlive: 30<br/>
- * deadTimer: 120<br/>
- * sessionId: 1<br/>
- * tlvs:<br/>
- * - PCEPStatefulCapability<br/>
- * - LSPStateDBVersionTlv<br/>
- * - NodeIdentifierTlv<br/>
- * <br/>
- * PCEPOpenObject2UpperBoundsNoTlv.bin<br/>
- * objClass: 1<br/>
- * objType: 1<br/>
- * objLength: 34<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: false<br/>
- * - ignored: false<br/>
- * <br/>
- * keepAlive: 0xFF<br/>
- * deadTimer: 0xFF<br/>
- * sessionId: 0xFF<br/>
- * tlvs: NO<br/>
- * <br/>
- * PCEPRPObject1.bin<br/>
- * objClass: 2 (RP)<br/>
- * objType: 1<br/>
- * objLength: 12<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: false<br/>
- * - ignored: false<br/>
- * <br/>
- * RP flags:<br/>
- * - loose/strict: true<br/>
- * - Bi-directional: false<br/>
- * - Reoptimization: false<br/>
- * - Priority: 5<br/>
- * Request ID: 0xDEADBEEF<br/>
- * tlvs: NO<br/>
- * <br/>
- * PCEPSvecObject1_10ReqIDs.bin <br/>
- * objClass: 11<br/>
- * objType: 1<br/>
- * objLength: 48<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: true<br/>
- * - ignored: false<br/>
- * <br/>
- * Flags:<br/>
- * - Link diverse: true<br/>
- * - Node diverse: false<br/>
- * - SRLG diverse: true<br/>
- * Reques-ID-numbers:<br/>
- * #1 - 0xFFFFFFFFL<br/>
- * #2 - 0x00000000L<br/>
- * #3 - 0x01234567L<br/>
- * #4 - 0x89ABCDEFL<br/>
- * #5 - 0xFEDCBA98L<br/>
- * #6 - 0x76543210L<br/>
- * #7 - 0x15825266L<br/>
- * #8 - 0x48120BBEL<br/>
- * #9 - 0x25FB7E52L<br/>
- * #10 - 0xB2F2546BL<br/>
- * <br/>
- * PCEPSvecObject2.bin <br/>
- * objClass: 11<br/>
- * objType: 1<br/>
- * objLength: 08<br/>
- * version: 1<br/>
- * Flags:<br/>
- * - processing: false<br/>
- * - ignored: false<br/>
- * <br/>
- * Flags:<br/>
- * - Link diverse: false<br/>
- * - Node diverse: false<br/>
- * - SRLG diverse: false<br/>
- * Reques-ID-numbers:<br/>
- * #1 - 0x000000FFL<br/>
- * PCEPExcludeRouteObject.1.bin <br/>
- * objClass: 17 <br/>
- * objType: 1 <br/>
- * objLength: 20 <br/>
- * version: 1 <br/>
- * Flags: <br/>
- * - fail: true <br/>
- * Subobjects: <br/>
- * - XROIPv4PreffixSubobject(192.168.0.0/16, exclude, node) <br/>
- * - XROASnumber(0x1234) <br/>
- */
 public class PCEPObjectParserTest {
 
        private TlvHandlerRegistry tlvRegistry;
@@ -362,22 +66,6 @@ public class PCEPObjectParserTest {
                this.tlvRegistry = PCEPExtensionProviderContextImpl.create().getTlvHandlerRegistry();
        }
 
-       // IPv4Address ipv4addr = new IPv4Address(new byte[] { (byte) 192, (byte) 168, 1, 8 });
-       //
-       // IPv6Address ipv6addr = new IPv6Address(new byte[] { (byte) 192, (byte) 168, 2, 1, (byte) 192, (byte) 168, 2, 1,
-       // (byte) 192, (byte) 168,
-       // 2, 1, (byte) 192, (byte) 168, 2, 1 });
-       //
-       //
-       // /**
-       // * Standard serialization test<br/>
-       // * Used resources:<br/>
-       // * - PCEPOpenObject1.bin<br/>
-       // *
-       // * @throws PCEPDeserializerException
-       // * @throws IOException
-       // * @throws PCEPDocumentedException
-       // */
        // @Test
        // @Ignore
        // // FIXME: temporary
@@ -405,11 +93,21 @@ public class PCEPObjectParserTest {
        // // assertEquals(((UnknownObject) obj).getError(), PCEPErrors.UNRECOGNIZED_OBJ_TYPE);
        // // }
        // //
-       // // @Test
-       // // public void testCloseObjSerDeser() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
-       // // serDeserTest("src/test/resources/PCEPCloseObject1.bin", new PCEPCloseObject(Reason.TOO_MANY_UNKNOWN_MSG));
-       // // }
-       //
+
+       @Test
+       public void testCloseObject() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
+               final PCEPCloseObjectParser parser = new PCEPCloseObjectParser(this.tlvRegistry);
+               final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPCloseObject1.bin");
+
+               final CCloseBuilder builder = new CCloseBuilder();
+               builder.setProcessingRule(false);
+               builder.setIgnore(false);
+               builder.setReason((short) 5);
+
+               assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(false, false), result));
+               assertArrayEquals(result, parser.serializeObject(builder.build()));
+       }
+
        @Test
        public void testLoadBalancingObject() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
                final PCEPLoadBalancingObjectParser parser = new PCEPLoadBalancingObjectParser(this.tlvRegistry);
@@ -540,7 +238,7 @@ public class PCEPObjectParserTest {
        }
 
        @Test
-       public void testEndPointsObjectSerDeserIPv6() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
+       public void testEndPointsObjectIPv6() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
                final byte[] destIPBytes = { (byte) 0x00, (byte) 0x02, (byte) 0x5D, (byte) 0xD2, (byte) 0xFF, (byte) 0xEC, (byte) 0xA1,
                                (byte) 0xB6, (byte) 0x58, (byte) 0x1E, (byte) 0x9F, (byte) 0x50, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, };
                final byte[] srcIPBytes = { (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
@@ -594,27 +292,49 @@ public class PCEPObjectParserTest {
        // PCEPObjectFactory.parseObjects(ByteArray.fileToBytes("src/test/resources/PCEPErrorObject2Invalid.bin")).get(0);
        // }
        //
-       // /**
-       // * Test for upper/lower bounds of PCEPLspaObject (Serialization/Deserialization)<br/>
-       // * Used resources:<br/>
-       // * - PCEPLspaObject1LowerBounds.bin<br/>
-       // * - PCEPLspaObject2UpperBounds.bin<br/>
-       // * - PCEPLspaObject3RandVals.bin<br/>
-       // *
-       // * @throws IOException
-       // * @throws PCEPDeserializerException
-       // * @throws PCEPDocumentedException
-       // */
-       // @Test
-       // public void testLspaObjectSerDeser() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
-       // serDeserTest("src/test/resources/PCEPLspaObject2UpperBounds.bin",
-       // new PCEPLspaObject(0xFFFFFFFFL, 0xFFFFFFFFL, 0xFFFFFFFFL, (short) 0xFF, (short) 0xFF, false, true, true, true));
-       // serDeserTest("src/test/resources/PCEPLspaObject1LowerBounds.bin",
-       // new PCEPLspaObject(0x00000000L, 0x00000000L, 0x00000000L, (short) 0x00, (short) 0x00, false, false, true, true));
-       // serDeserTest("src/test/resources/PCEPLspaObject3RandVals.bin",
-       // new PCEPLspaObject(0x20A1FEE3L, 0x1A025CC7L, 0x2BB66532L, (short) 0x03, (short) 0x02, false, true, true, true));
-       // }
-       //
+
+       @Test
+       public void testLspaObject() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
+               final PCEPLspaObjectParser parser = new PCEPLspaObjectParser(this.tlvRegistry);
+               byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPLspaObject1LowerBounds.bin");
+
+               final LspaBuilder builder = new LspaBuilder();
+               builder.setProcessingRule(true);
+               builder.setIgnore(true);
+               builder.setExcludeAny(new AttributeFilter(0L));
+               builder.setIncludeAny(new AttributeFilter(0L));
+               builder.setIncludeAll(new AttributeFilter(0L));
+               builder.setHoldPriority((short) 0);
+               builder.setSetupPriority((short) 0);
+               builder.setLocalProtectionDesired(false);
+
+               assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+               assertArrayEquals(result, parser.serializeObject(builder.build()));
+
+               result = ByteArray.fileToBytes("src/test/resources/PCEPLspaObject2UpperBounds.bin");
+
+               builder.setExcludeAny(new AttributeFilter(0xFFFFFFFFL));
+               builder.setIncludeAny(new AttributeFilter(0xFFFFFFFFL));
+               builder.setIncludeAll(new AttributeFilter(0xFFFFFFFFL));
+               builder.setHoldPriority((short) 0xFF);
+               builder.setSetupPriority((short) 0xFF);
+               builder.setLocalProtectionDesired(true);
+
+               assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+               assertArrayEquals(result, parser.serializeObject(builder.build()));
+
+               result = ByteArray.fileToBytes("src/test/resources/PCEPLspaObject3RandVals.bin");
+
+               builder.setExcludeAny(new AttributeFilter(0x20A1FEE3L));
+               builder.setIncludeAny(new AttributeFilter(0x1A025CC7L));
+               builder.setIncludeAll(new AttributeFilter(0x2BB66532L));
+               builder.setHoldPriority((short) 0x02);
+               builder.setSetupPriority((short) 0x03);
+               builder.setLocalProtectionDesired(true);
+
+               assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+               assertArrayEquals(result, parser.serializeObject(builder.build()));
+       }
 
        @Test
        public void testMetricObject() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
@@ -643,41 +363,13 @@ public class PCEPObjectParserTest {
                assertArrayEquals(result, parser.serializeObject(builder.build()));
        }
 
-       //
-       // /**
-       // * Standard deserialization test + specific test without tlv<br/>
-       // * Used resources:<br/>
-       // * - NoPathObject1WithTLV.bin<br/>
-       // * - NoPathObject2WithoutTLV.bin<br/>
-       // *
-       // * @throws PCEPDeserializerException
-       // * @throws IOException
-       // * @throws PCEPDocumentedException
-       // */
        // @Test
-       // public void testNoPathObjectDeserialization() throws PCEPDeserializerException, IOException,
-       // PCEPDocumentedException {
-       // // final List<PCEPTlv> tlvs = new ArrayList<PCEPTlv>(1);
-       // // tlvs.add(new NoPathVectorTlv(false, false, true, false, false, false));
-       // // serDeserTest("src/test/resources/NoPathObject1WithTLV.bin", new PCEPNoPathObject((short) 2, true, tlvs,
-       // false));
+       // public void testNoPathObject() throws PCEPDeserializerException, IOException, PCEPDocumentedException {
+       // final List<PCEPTlv> tlvs = new ArrayList<PCEPTlv>(1);
+       // tlvs.add(new NoPathVectorTlv(false, false, true, false, false, false));
+       // serDeserTest("src/test/resources/NoPathObject1WithTLV.bin", new PCEPNoPathObject((short) 2, true, tlvs, false));
        // serDeserTest("src/test/resources/NoPathObject2WithoutTLV.bin", new PCEPNoPathObject((short) 0x10, false, true));
        //
-       // }
-       //
-       // /**
-       // * Standard serialization test + without tlv<br/>
-       // * Used resources:<br/>
-       // * - NoPathObject1WithTLV.bin<br/>
-       // * - NoPathObject2WithoutTLV.bin<br/>
-       // *
-       // * @throws PCEPDeserializerException
-       // * @throws IOException
-       // * @throws PCEPDocumentedException
-       // */
-       // @Test
-       // public void testNoPathObjectSerialization() throws IOException, PCEPDeserializerException,
-       // PCEPDocumentedException {
        // byte[] bytesFromFile = ByteArray.fileToBytes("src/test/resources/NoPathObject2WithoutTLV.bin");
        // PCEPNoPathObject noPathObject = (PCEPNoPathObject) PCEPObjectFactory.parseObjects(bytesFromFile).get(0);
        // byte[] bytesActual = PCEPObjectFactory.put(Arrays.asList((PCEPObject) noPathObject));
@@ -688,6 +380,7 @@ public class PCEPObjectParserTest {
        // bytesActual = PCEPObjectFactory.put(Arrays.asList((PCEPObject) noPathObject));
        // assertArrayEquals(bytesFromFile, bytesActual);
        // }
+
        //
        // /**
        // * Specific test with/without tlvs (Ser/Deser)<br/>
@@ -819,14 +512,20 @@ public class PCEPObjectParserTest {
                assertArrayEquals(result, parser.serializeObject(builder.build()));
        }
 
-       //
-       // @Test
-       // public void testClassTypeObject() throws PCEPDeserializerException, PCEPDocumentedException {
-       // final PCEPClassTypeObject ct = new PCEPClassTypeObject((short) 4);
-       // // final PCEPClassTypeObjectParser parser = new PCEPClassTypeObjectParser();
-       // // final byte[] bytes = parser.put(ct);
-       // // assertEquals(ct, parser.parse(bytes, true, false));
-       // }
+       @Test
+       public void testClassTypeObject() throws PCEPDeserializerException, PCEPDocumentedException {
+               final PCEPClassTypeObjectParser parser = new PCEPClassTypeObjectParser(this.tlvRegistry);
+               final byte[] result = new byte[] { 0, 0, 0, (byte) 0x04 };
+
+               final ClassTypeBuilder builder = new ClassTypeBuilder();
+               builder.setProcessingRule(true);
+               builder.setIgnore(false);
+               builder.setClassType(new ClassType((short) 4));
+
+               assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, false), result));
+               assertArrayEquals(result, parser.serializeObject(builder.build()));
+       }
+
        //
        // /**
        // * Test PCEPExcludeRouteObjectObject (Serialization/Deserialization)<br/>
@@ -847,18 +546,52 @@ public class PCEPObjectParserTest {
        //
        // }
        //
-       // @Test
-       // public void tesObjectiveFunctionObject() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
-       // serDeserTest("src/test/resources/PCEPObjectiveFunctionObject.1.bin", new
-       // PCEPObjectiveFunctionObject(PCEPOFCodes.MBC, true, false));
-       // }
-       //
-       // @Test
-       // public void tesGlobalConstraintsObject() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
-       // serDeserTest("src/test/resources/PCEPGlobalConstraintsObject.1.bin",
-       // new PCEPGlobalConstraintsObject((short) 1, (short) 0, (short) 100, (short) 0xFF, true, false));
-       // }
-       //
+
+       @Test
+       public void testSrpObject() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
+               final PCEPSrpObjectParser parser = new PCEPSrpObjectParser(this.tlvRegistry);
+               final byte[] result = new byte[] { 0, 0, 0, 0, 0, 0, 0, (byte) 0x01 };
+
+               final SrpBuilder builder = new SrpBuilder();
+               builder.setProcessingRule(false);
+               builder.setIgnore(false);
+               builder.setOperationId(new SrpIdNumber(1L));
+
+               assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(false, false), result));
+               assertArrayEquals(result, parser.serializeObject(builder.build()));
+       }
+
+       @Test
+       public void testObjectiveFunctionObject() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
+               final PCEPObjectiveFunctionObjectParser parser = new PCEPObjectiveFunctionObjectParser(this.tlvRegistry);
+               final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPObjectiveFunctionObject.1.bin");
+
+               final OfBuilder builder = new OfBuilder();
+               builder.setProcessingRule(true);
+               builder.setIgnore(false);
+               builder.setCode(new OfId(4));
+
+               assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, false), result));
+               assertArrayEquals(result, parser.serializeObject(builder.build()));
+       }
+
+       @Test
+       public void testGlobalConstraintsObject() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
+               final PCEPGlobalConstraintsObjectParser parser = new PCEPGlobalConstraintsObjectParser(this.tlvRegistry);
+               final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPGlobalConstraintsObject.1.bin");
+
+               final GcBuilder builder = new GcBuilder();
+               builder.setProcessingRule(true);
+               builder.setIgnore(false);
+               builder.setMaxHop((short) 1);
+               builder.setMaxUtilization((short) 0);
+               builder.setMinUtilization((short) 100);
+               builder.setOverBookingFactor((short) 0xFF);
+
+               assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, false), result));
+               assertArrayEquals(result, parser.serializeObject(builder.build()));
+       }
+
        // // FIXME: add at least one test with true value
        // @Test
        // public void openObjectWithTlv() throws PCEPDeserializerException, PCEPDocumentedException {
index 29dab1a54dd6109d95c9753026bfdf9e6dfb027d..3b6fc84f4eecaa6f1b4fc34beba7e3a80f68e98d 100644 (file)
Binary files a/pcep/impl/src/test/resources/PCEPCloseObject1.bin and b/pcep/impl/src/test/resources/PCEPCloseObject1.bin differ
index 831aac4581eb0439dee00724ec549060ce269d16..22dd98779ba497f78b65cadecfcfbffddae7314b 100644 (file)
Binary files a/pcep/impl/src/test/resources/PCEPGlobalConstraintsObject.1.bin and b/pcep/impl/src/test/resources/PCEPGlobalConstraintsObject.1.bin differ
index 38c3d837b1027f84bd3af66b0444a2a4f77d54e7..01d633b27e8ea9b17084fc911d0c8cc43a4170a9 100644 (file)
Binary files a/pcep/impl/src/test/resources/PCEPLspaObject1LowerBounds.bin and b/pcep/impl/src/test/resources/PCEPLspaObject1LowerBounds.bin differ
index de8441e5d1e66174926c93b45b87b9757e7d59eb..d3ee142bdbfc6fff6dfbba0b8b56dbab4909a7d4 100644 (file)
Binary files a/pcep/impl/src/test/resources/PCEPLspaObject2UpperBounds.bin and b/pcep/impl/src/test/resources/PCEPLspaObject2UpperBounds.bin differ
index 4d1562902065f0b40bdf69966fb5a7569c63ec74..2834c257a40e76eca8841735486c56afb1217f24 100644 (file)
Binary files a/pcep/impl/src/test/resources/PCEPLspaObject3RandVals.bin and b/pcep/impl/src/test/resources/PCEPLspaObject3RandVals.bin differ
index 45094a11dc6785f34a173486118688180223bc5e..0357d47a88433c9240547f8ff3f5a52f3f9528c3 100644 (file)
Binary files a/pcep/impl/src/test/resources/PCEPObjectiveFunctionObject.1.bin and b/pcep/impl/src/test/resources/PCEPObjectiveFunctionObject.1.bin differ