import static org.junit.Assert.assertEquals;
import java.io.IOException;
+import java.math.BigInteger;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.protocol.concepts.Ipv4Util;
import org.opendaylight.protocol.concepts.Ipv6Util;
-import org.opendaylight.protocol.pcep.PCEPDeserializerException;
-import org.opendaylight.protocol.pcep.PCEPDocumentedException;
+import org.opendaylight.protocol.pcep.impl.message.ObjectHeaderImpl;
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.PCEPErrorObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPExcludeRouteObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPExplicitRouteObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPGlobalConstraintsObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPIncludeRouteObjectParser;
import org.opendaylight.protocol.pcep.impl.object.PCEPLoadBalancingObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPLspObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPLspaObjectParser;
import org.opendaylight.protocol.pcep.impl.object.PCEPMetricObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPNoPathObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPNotificationObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPObjectiveFunctionObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPOpenObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPPathKeyObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPReportedRouteObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPRequestParameterObjectParser;
+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.PCEPDeserializerException;
import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
-import org.opendaylight.protocol.pcep.spi.pojo.PCEPExtensionProviderContextImpl;
+import org.opendaylight.protocol.pcep.spi.pojo.ServiceLoaderPCEPExtensionProviderContext;
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.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
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.network.concepts.rev131125.Bandwidth;
+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.OperationalStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PathKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PceId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PlspId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ProtocolVersion;
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.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.pcinitiate.message.pcinitiate.message.requests.EndpointsBuilder;
-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.MetricBuilder;
+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.bandwidth.object.BandwidthBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.classtype.object.ClassTypeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.close.object.CCloseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.endpoints.address.family.Ipv4Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.endpoints.address.family.Ipv6Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.endpoints.object.EndpointsObjBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.exclude.route.object.XroBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.exclude.route.object.xro.Subobjects;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.exclude.route.object.xro.SubobjectsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.EroBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.gc.object.GcBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.include.route.object.IroBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.load.balancing.object.LoadBalancingBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.db.version.tlv.LspDbVersion;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.db.version.tlv.LspDbVersionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.error.code.tlv.LspErrorCode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.error.code.tlv.LspErrorCodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.object.LspBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.LspaBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.metric.object.MetricBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.notification.object.CNotificationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.of.object.OfBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.OpenBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.order.tlv.OrderBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.overload.duration.tlv.OverloadDurationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.path.key.object.PathKeyBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.path.key.object.path.key.PathKeys;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.path.key.object.path.key.PathKeysBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcep.error.object.ErrorObjectBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcep.error.object.error.object.TlvsBuilder;
+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.NoPathVectorBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.predundancy.group.id.tlv.PredundancyGroupId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.predundancy.group.id.tlv.PredundancyGroupIdBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reported.route.object.RroBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.req.missing.tlv.ReqMissingBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.RpBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.srp.object.SrpBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.stateful.capability.tlv.Stateful;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.stateful.capability.tlv.StatefulBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.svec.object.SvecBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.symbolic.path.name.tlv.SymbolicPathName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.symbolic.path.name.tlv.SymbolicPathNameBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.AttributeFilter;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.ExcludeRouteSubobjects.Attribute;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.basic.explicit.route.subobjects.subobject.type.AsNumberBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.basic.explicit.route.subobjects.subobject.type.IpPrefixBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.basic.explicit.route.subobjects.subobject.type.UnnumberedBuilder;
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;
@Before
public void setUp() throws Exception {
- this.tlvRegistry = PCEPExtensionProviderContextImpl.create().getTlvHandlerRegistry();
+ this.tlvRegistry = ServiceLoaderPCEPExtensionProviderContext.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
- // public void testObjectDeserialization() throws PCEPDeserializerException, IOException, PCEPDocumentedException {
- // PCEPObjectFactory.parseObjects(ByteArray.fileToBytes("src/test/resources/PCEPOpenObject1.bin"));
- // }
- //
- // @Test
- // public void testUnknownClass() throws PCEPDeserializerException, IOException, PCEPDocumentedException {
- //
- // final PCEPObject obj =
- // PCEPObjectFactory.parseObjects(ByteArray.fileToBytes("src/test/resources/PCEPObject1UnknownClass.bin")).get(
- // 0);
- //
- // // assertTrue(obj instanceof UnknownObject);
- // // assertEquals(((UnknownObject) obj).getError(), PCEPErrors.UNRECOGNIZED_OBJ_CLASS);
- // }
- //
- // // @Test
- // // public void testUnknownType() throws PCEPDeserializerException, IOException, PCEPDocumentedException {
- // // final PCEPObject obj =
- // PCEPObjectFactory.parseObjects(ByteArray.fileToBytes("src/test/resources/PCEPObject2UnknownType.bin")).get(0);
- // //
- // // assertTrue(obj instanceof UnknownObject);
- // // 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 testLoadBalancingObject() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
+ public void testOpenObjectWithTLV() throws PCEPDeserializerException, IOException {
+ final PCEPOpenObjectParser parser = new PCEPOpenObjectParser(this.tlvRegistry);
+ final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPOpenObject1.bin");
+
+ final OpenBuilder builder = new OpenBuilder();
+ builder.setProcessingRule(false);
+ builder.setIgnore(false);
+ builder.setVersion(new ProtocolVersion((short) 1));
+ builder.setKeepalive((short) 30);
+ builder.setDeadTimer((short) 120);
+ builder.setSessionId((short) 1);
+
+ final Stateful tlv1 = new StatefulBuilder().setLspUpdateCapability(Boolean.TRUE).setInitiation(Boolean.FALSE).setIncludeDbVersion(Boolean.TRUE).build();
+ final LspDbVersion tlv2 = new LspDbVersionBuilder().setVersion(BigInteger.valueOf(0x80L)).build();
+ final byte[] predundancyBytes = { (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0x78, (byte) 0x9a, (byte) 0xbc, (byte) 0xde,
+ (byte) 0xf0 };
+ final PredundancyGroupId tlv3 = new PredundancyGroupIdBuilder().setIdentifier(predundancyBytes).build();
+
+ builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.TlvsBuilder().setStateful(
+ tlv1).setPredundancyGroupId(tlv3).setLspDbVersion(tlv2).build());
+
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(false, false), result));
+ assertArrayEquals(result, parser.serializeObject(builder.build()));
+ }
+
+ @Test
+ public void testCloseObject() throws IOException, PCEPDeserializerException {
+ 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 {
final PCEPLoadBalancingObjectParser parser = new PCEPLoadBalancingObjectParser(this.tlvRegistry);
final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPLoadBalancingObject1.bin");
builder.setProcessingRule(true);
builder.setIgnore(false);
builder.setMaxLsp((short) UnsignedBytes.toInt((byte) 0xf1));
- builder.setMinBandwidth(new Float32(new byte[] { (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF }));
+ builder.setMinBandwidth(new Bandwidth(new byte[] { (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF }));
assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, false), result));
assertArrayEquals(result, parser.serializeObject(builder.build()));
}
- //
- // @Test
- // public void testLspObjectSerDeser() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
- // serDeserTest("src/test/resources/PCEPLspObject1NoTlvsUpperBounds.bin", new PCEPLspObject(0xFFFFF, true, false,
- // true, false, null));
- // }
- //
- // @Test
- // public void testERObjectSerDeser() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
- // final byte[] bytesFromFile =
- // ByteArray.fileToBytes("src/test/resources/PCEPExplicitRouteObject1PackOfSubobjects.bin");
- //
- // MockitoAnnotations.initMocks(this);
- // PCEPExplicitRouteObjectParser parser = new PCEPExplicitRouteObjectParser(registry);
- // doReturn(parser).when(registry).getObjectParser(PCEPExplicitRouteObjectParser.TYPE,
- // PCEPExplicitRouteObjectParser.CLASS);
- // doReturn(new EROAsNumberSubobjectParser()).when(registry).getSubobjectParser(EROAsNumberSubobjectParser.TYPE);
- // ObjectHeader h = new ObjectHeader() {
- //
- // @Override
- // public Class<? extends DataContainer> getImplementedInterface() {
- // // TODO Auto-generated method stub
- // return null;
- // }
- //
- // @Override
- // public Boolean isProcessingRule() {
- // return false;
- // }
- //
- // @Override
- // public Boolean isIgnore() {
- // return false;
- // }
- // };
- //
- // final ExplicitRouteSubobject specObj = (ExplicitRouteSubobject)
- // registry.getObjectParser(PCEPExplicitRouteObjectParser.TYPE, PCEPExplicitRouteObjectParser.CLASS).parseObject(h,
- // bytesFromFile);
- //
- // System.out.println(specObj.toString());
- //
- // //final byte[] bytesActual = PCEPObjectFactory.put(Arrays.asList((PCEPObject) specObj));
- // //assertArrayEquals(bytesFromFile, bytesActual);
- // }
- //
- // @Test
- // public void testIRObjectSerDeser() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
- // final byte[] bytesFromFile =
- // ByteArray.fileToBytes("src/test/resources/PCEPIncludeRouteObject1PackOfSubobjects.bin");
- //
- // final PCEPIncludeRouteObject specObj = (PCEPIncludeRouteObject)
- // PCEPObjectFactory.parseObjects(bytesFromFile).get(0);
- //
- // assertEquals(8, specObj.getSubobjects().size());
- //
- // final byte[] bytesActual = PCEPObjectFactory.put(Arrays.asList((PCEPObject) specObj));
- // assertArrayEquals(bytesFromFile, bytesActual);
- // }
- //
- // @Test
- // public void tesRRObjectSerDeser() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
- // final byte[] bytesFromFile =
- // ByteArray.fileToBytes("src/test/resources/PCEPReportedRouteObject1PackOfSubobjects.bin");
- //
- // final PCEPReportedRouteObject specObj = (PCEPReportedRouteObject)
- // PCEPObjectFactory.parseObjects(bytesFromFile).get(0);
- //
- // assertEquals(6, specObj.getSubobjects().size());
- //
- // final byte[] bytesActual = PCEPObjectFactory.put(Arrays.asList((PCEPObject) specObj));
- // assertArrayEquals(bytesFromFile, bytesActual);
- // }
- //
+ @Test
+ public void testLspObjectWithTLV() throws IOException, PCEPDeserializerException {
+ final PCEPLspObjectParser parser = new PCEPLspObjectParser(this.tlvRegistry);
+ final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPLspObject1WithTLV.bin");
+
+ final LspBuilder builder = new LspBuilder();
+ builder.setProcessingRule(true);
+ builder.setIgnore(true);
+ builder.setAdministrative(true);
+ builder.setDelegate(false);
+ builder.setRemove(true);
+ builder.setSync(false);
+ builder.setOperational(OperationalStatus.GoingDown);
+ builder.setPlspId(new PlspId(0x12345L));
+
+ final LspErrorCode tlv1 = new LspErrorCodeBuilder().setErrorCode(627610883L).build();
+ final SymbolicPathName tlv2 = new SymbolicPathNameBuilder().setPathName(
+ new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.SymbolicPathName("Med".getBytes())).build();
+ builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.object.lsp.TlvsBuilder().setLspErrorCode(
+ tlv1).setSymbolicPathName(tlv2).build());
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+ assertArrayEquals(result, parser.serializeObject(builder.build()));
+ }
+
+ @Test
+ public void testERObject() throws Exception {
+ final PCEPExplicitRouteObjectParser parser = new PCEPExplicitRouteObjectParser(ServiceLoaderPCEPExtensionProviderContext.create().getEROSubobjectHandlerRegistry());
+ final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPExplicitRouteObject1PackOfSubobjects.bin");
+
+ final EroBuilder builder = new EroBuilder();
+ builder.setProcessingRule(false);
+ builder.setIgnore(false);
+ final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.ero.Subobjects> subs = Lists.newArrayList();
+ subs.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.ero.SubobjectsBuilder().setLoose(
+ true).setSubobjectType(new AsNumberBuilder().setAsNumber(new AsNumber(0xffffL)).build()).build());
+ subs.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.ero.SubobjectsBuilder().setLoose(
+ true).setSubobjectType(new IpPrefixBuilder().setIpPrefix(new IpPrefix(new Ipv4Prefix("255.255.255.255/32"))).build()).build());
+ subs.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.ero.SubobjectsBuilder().setLoose(
+ true).setSubobjectType(new UnnumberedBuilder().setRouterId(0xffffffffL).setInterfaceId(0xffffffffL).build()).build());
+ builder.setSubobjects(subs);
+
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(false, false), result));
+ assertArrayEquals(result, parser.serializeObject(builder.build()));
+ }
+
+ @Test
+ public void testIRObject() throws Exception {
+ final PCEPIncludeRouteObjectParser parser = new PCEPIncludeRouteObjectParser(ServiceLoaderPCEPExtensionProviderContext.create().getEROSubobjectHandlerRegistry());
+ final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPIncludeRouteObject1PackOfSubobjects.bin");
+ final byte[] ip6PrefixBytes = { (byte) 0x12, (byte) 0x34, (byte) 0x54, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00 };
+
+ final IroBuilder builder = new IroBuilder();
+ builder.setProcessingRule(false);
+ builder.setIgnore(false);
+ final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.include.route.object.iro.Subobjects> subs = Lists.newArrayList();
+ subs.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.include.route.object.iro.SubobjectsBuilder().setSubobjectType(
+ new AsNumberBuilder().setAsNumber(new AsNumber(0x10L)).build()).build());
+ subs.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.include.route.object.iro.SubobjectsBuilder().setSubobjectType(
+ new IpPrefixBuilder().setIpPrefix(new IpPrefix(new Ipv4Prefix("18.52.80.0/21"))).build()).build());
+ subs.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.include.route.object.iro.SubobjectsBuilder().setSubobjectType(
+ new IpPrefixBuilder().setIpPrefix(new IpPrefix(Ipv6Util.prefixForBytes(ip6PrefixBytes, 22))).build()).build());
+ subs.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.include.route.object.iro.SubobjectsBuilder().setSubobjectType(
+ new UnnumberedBuilder().setRouterId(0x1245678L).setInterfaceId(0x9abcdef0L).build()).build());
+ builder.setSubobjects(subs);
+
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(false, false), result));
+ // FIXME: fix Ipv6Serializers (getType)
+ // assertArrayEquals(result, parser.serializeObject(builder.build()));
+ }
+
+ @Test
+ public void testRRObject() throws Exception {
+ final PCEPReportedRouteObjectParser parser = new PCEPReportedRouteObjectParser(ServiceLoaderPCEPExtensionProviderContext.create().getRROSubobjectHandlerRegistry());
+ final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPReportedRouteObject1PackOfSubobjects.bin");
+ final byte[] ip6PrefixBytes = { (byte) 0x12, (byte) 0x34, (byte) 0x54, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00 };
+
+ final RroBuilder builder = new RroBuilder();
+ builder.setProcessingRule(false);
+ builder.setIgnore(false);
+ final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reported.route.object.rro.Subobjects> subs = Lists.newArrayList();
+ 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(new Ipv4Prefix("255.255.255.255/32"))).build()).setProtectionAvailable(false).setProtectionInUse(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.IpPrefixBuilder().setIpPrefix(
+ new IpPrefix(Ipv6Util.prefixForBytes(ip6PrefixBytes, 22))).build()).setProtectionAvailable(false).setProtectionInUse(
+ 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)
+ // assertArrayEquals(result, parser.serializeObject(builder.build()));
+ }
@Test
- public void testBandwidthObject() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
+ public void testBandwidthObject() throws IOException, PCEPDeserializerException {
final PCEPBandwidthObjectParser parser = new PCEPBandwidthObjectParser(this.tlvRegistry);
byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPBandwidthObject1LowerBounds.bin");
final BandwidthBuilder builder = new BandwidthBuilder();
builder.setProcessingRule(true);
builder.setIgnore(true);
- builder.setBandwidth(new Float32(result));
+ builder.setBandwidth(new Bandwidth(result));
assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
assertArrayEquals(result, parser.serializeObject(builder.build()));
result = ByteArray.fileToBytes("src/test/resources/PCEPBandwidthObject2UpperBounds.bin");
- builder.setBandwidth(new Float32(result));
+ builder.setBandwidth(new Bandwidth(result));
assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
assertArrayEquals(result, parser.serializeObject(builder.build()));
}
@Test
- public void testEndPointsObjectIPv4() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
+ public void testEndPointsObjectIPv4() throws IOException, PCEPDeserializerException {
final byte[] srcIPBytes = { (byte) 0xA2, (byte) 0xF5, (byte) 0x11, (byte) 0x0E };
final byte[] destIPBytes = { (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF };
final PCEPEndPointsObjectParser parser = new PCEPEndPointsObjectParser(this.tlvRegistry);
final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPEndPointsObject1IPv4.bin");
- final EndpointsBuilder builder = new EndpointsBuilder();
+ final EndpointsObjBuilder builder = new EndpointsObjBuilder();
builder.setProcessingRule(true);
builder.setIgnore(false);
builder.setAddressFamily(new Ipv4Builder().setSourceIpv4Address(Ipv4Util.addressForBytes(srcIPBytes)).setDestinationIpv4Address(
}
@Test
- public void testEndPointsObjectSerDeserIPv6() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
+ public void testEndPointsObjectIPv6() throws IOException, PCEPDeserializerException {
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,
final PCEPEndPointsObjectParser parser = new PCEPEndPointsObjectParser(this.tlvRegistry);
final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPEndPointsObject2IPv6.bin");
- final EndpointsBuilder builder = new EndpointsBuilder();
+ final EndpointsObjBuilder builder = new EndpointsObjBuilder();
builder.setProcessingRule(true);
builder.setIgnore(false);
builder.setAddressFamily(new Ipv6Builder().setSourceIpv6Address(Ipv6Util.addressForBytes(srcIPBytes)).setDestinationIpv6Address(
assertArrayEquals(result, parser.serializeObject(builder.build()));
}
- //
- // /**
- // * Test of Serialization/Deserialization of PCEPErrorObjectParser.<br/>
- // * <br/>
- // * Used resources:<br/>
- // * - PCEPErrorObject1.bin<br/>
- // * - PCEPErrorObject3.bin<br/>
- // *
- // * @throws PCEPDeserializerException
- // * @throws IOException
- // * @throws PCEPDocumentedException
- // */
- // @Test
- // public void testErrorObjectSerDeserWithTlv() throws PCEPDeserializerException, IOException,
- // PCEPDocumentedException {
- // serDeserTest("src/test/resources/PCEPErrorObject1.bin", new PCEPErrorObject(PCEPErrors.NON_OR_INVALID_OPEN_MSG));
- // serDeserTest("src/test/resources/PCEPErrorObject3.bin", new
- // PCEPErrorObject(PCEPErrors.CAPABILITY_NOT_SUPPORTED));
- // }
- //
- // /**
- // * Test of validity of PCEPErrorObjectParser. Expect throwed NoSuchElementException.<br/>
- // * <br/>
- // * Used resources:<br/>
- // * - PCEPErrorObject2Invalid.bin<br/>
- // *
- // * @throws NoSuchElementException
- // * @throws IOException
- // * @throws PCEPDocumentedException
- // */
- // @Test(expected = PCEPDeserializerException.class)
- // public void testUnknownError() throws PCEPDeserializerException, IOException, PCEPDocumentedException {
- // 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 testErrorObjectWithTlv() throws PCEPDeserializerException, IOException {
+ final PCEPErrorObjectParser parser = new PCEPErrorObjectParser(this.tlvRegistry);
+ byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPErrorObject1.bin");
+
+ final ErrorObjectBuilder builder = new ErrorObjectBuilder();
+ builder.setProcessingRule(true);
+ builder.setIgnore(true);
+ builder.setType((short) 1);
+ builder.setValue((short) 1);
+
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+ assertArrayEquals(result, parser.serializeObject(builder.build()));
+
+ result = ByteArray.fileToBytes("src/test/resources/PCEPErrorObject3.bin");
+
+ builder.setType((short) 7);
+ builder.setValue((short) 0);
+ builder.setTlvs(new TlvsBuilder().setReqMissing(new ReqMissingBuilder().setRequestId(new RequestId(0x00001155L)).build()).build());
+
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+ assertArrayEquals(result, parser.serializeObject(builder.build()));
+ }
+
+ @Test
+ public void testLspaObject() throws IOException, PCEPDeserializerException {
+ 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 {
+ public void testMetricObject() throws IOException, PCEPDeserializerException {
final PCEPMetricObjectParser parser = new PCEPMetricObjectParser(this.tlvRegistry);
byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPMetricObject1LowerBounds.bin");
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));
- // 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));
- // assertArrayEquals(bytesFromFile, bytesActual);
- //
- // bytesFromFile = ByteArray.fileToBytes("src/test/resources/NoPathObject1WithTLV.bin");
- // noPathObject = (PCEPNoPathObject) PCEPObjectFactory.parseObjects(bytesFromFile).get(0);
- // bytesActual = PCEPObjectFactory.put(Arrays.asList((PCEPObject) noPathObject));
- // assertArrayEquals(bytesFromFile, bytesActual);
- // }
- //
- // /**
- // * Specific test with/without tlvs (Ser/Deser)<br/>
- // * Used resources:<br/>
- // * - PCEPNotificationObject1WithTlv.bin - PCEPNotificationObject2WithoutTlv.bin
- // *
- // * @throws PCEPDeserializerException
- // * @throws IOException
- // * @throws PCEPDocumentedException
- // */
- // @Test
- // public void testNotifyObjectSerDeserWithTlv() throws PCEPDeserializerException, IOException,
- // PCEPDocumentedException {
- // // FINAL LIST<PCEPTLV> TLVS = NEW ARRAYLIST<PCEPTLV>(1);
- // // TLVS.ADD(NEW OVERLOADEDDURATIONTLV(0XFF0000A2));
- // // SERDESERTEST("src/test/resources/PCEPNotificationObject1WithTlv.bin", new PCEPNotificationObject((short) 1,
- // (short) 1, tlvs));
- // serDeserTest("src/test/resources/PCEPNotificationObject2WithoutTlv.bin", new PCEPNotificationObject((short) 0xFF,
- // (short) 0xFF));
- // }
- //
- // /**
- // * Standard ser deser test<br/>
- // * used resources:<br/>
- // * - PCEPOpenObject1.bin
- // *
- // * @throws PCEPDeserializerException
- // * @throws IOException
- // * @throws PCEPDocumentedException
- // */
- // @Test
- // @Ignore
- // // FIXME: temporary
- // public void testOpenObjectSerDeser() throws PCEPDeserializerException, IOException, PCEPDocumentedException {
- // // final List<PCEPTlv> tlvs = new ArrayList<PCEPTlv>();
- // // tlvs.add(new PCEStatefulCapabilityTlv(false, true, true));
- // // tlvs.add(new LSPStateDBVersionTlv(0x80));
- // // final byte[] valueBytes = { (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0x78, (byte) 0x9A, (byte) 0xBC,
- // (byte) 0xDE, (byte) 0xF0 };
- // // tlvs.add(new NodeIdentifierTlv(valueBytes));
- // // final PCEPOpenObject specObject = new PCEPOpenObject(30, 120, 1, tlvs);
- // //
- // // serDeserTest("src/test/resources/PCEPOpenObject1.bin", specObject);
- // }
- //
- // /**
- // * Specific test for upper bounds and without tlvs<br/>
- // * Used resources:<br/>
- // * - PCEPOpenObject2UpperBoundsNoTlv.bin
- // *
- // * @throws PCEPDeserializerException
- // * @throws IOException
- // * @throws PCEPDocumentedException
- // */
- // @Test
- // public void testOpenObjectBoundsWithoutTlvs() throws IOException, PCEPDeserializerException,
- // PCEPDocumentedException {
- // // final List<PCEPTlv> tlvs = new ArrayList<PCEPTlv>();
- // // serDeserTest("src/test/resources/PCEPOpenObject2UpperBoundsNoTlv.bin", new PCEPOpenObject(0xFF, 0xFF, 0xFF,
- // tlvs));
- // serDeserTest("src/test/resources/PCEPOpenObject2UpperBoundsNoTlv.bin", new PCEPOpenObject(0xFF, 0xFF, 0xFF,
- // null));
- // }
- //
- // /**
- // * Standard deserialization test<br/>
- // * Used resources:<br/>
- // * - PCEPRPObject1.bin
- // *
- // * @throws PCEPDeserializerException
- // * @throws IOException
- // * @throws PCEPDocumentedException
- // */
- // @Test
- // public void testRPObjectSerDeser() throws PCEPDeserializerException, IOException, PCEPDocumentedException {
- // serDeserTest("src/test/resources/PCEPRPObject1.bin",
- // new PCEPRequestParameterObject(true, false, true, true, false, false, false, false, (short) 5, 0xdeadbeefL,
- // false, false));
- // // serDeserTest(
- // // "src/test/resources/PCEPRPObject2.bin",
- // // new PCEPRequestParameterObject(true, false, false, false, true, false, true, false, true, (short) 5,
- // 0xdeadbeefL, new ArrayList<PCEPTlv>() {
- // // private static final long serialVersionUID = 1L;
- // //
- // // {
- // // this.add(new OrderTlv(0xFFFFFFFFL, 0x00000001L));
- // // }
- // // }, false, false));
- // }
- //
+ @Test
+ public void testNoPathObjectWithTlv() throws PCEPDeserializerException, IOException {
+ final PCEPNoPathObjectParser parser = new PCEPNoPathObjectParser(this.tlvRegistry);
+ byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPNoPathObject1WithoutTLV.bin");
+
+ final NoPathBuilder builder = new NoPathBuilder();
+ builder.setProcessingRule(true);
+ builder.setIgnore(true);
+ builder.setNatureOfIssue((short) 1);
+ builder.setUnsatisfiedConstraints(true);
+
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+ assertArrayEquals(result, parser.serializeObject(builder.build()));
+
+ result = ByteArray.fileToBytes("src/test/resources/PCEPNoPathObject2WithTLV.bin");
+
+ builder.setNatureOfIssue((short) 0);
+ builder.setUnsatisfiedConstraints(false);
+
+ final NoPathVectorBuilder b = new NoPathVectorBuilder();
+ b.setFlags(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.NoPathVectorTlv.Flags(false, true, false, true, false, true, true, true));
+ builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.result.failure.no.path.TlvsBuilder().setNoPathVector(
+ b.build()).build());
+
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+ assertArrayEquals(result, parser.serializeObject(builder.build()));
+ }
+
+ @Test
+ public void testNotifyObjectWithTlv() throws PCEPDeserializerException, IOException {
+ final PCEPNotificationObjectParser parser = new PCEPNotificationObjectParser(this.tlvRegistry);
+ byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPNotificationObject2WithoutTlv.bin");
+
+ final CNotificationBuilder builder = new CNotificationBuilder();
+ builder.setProcessingRule(true);
+ builder.setIgnore(true);
+ builder.setType((short) 0xff);
+ builder.setValue((short) 0xff);
+
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+ assertArrayEquals(result, parser.serializeObject(builder.build()));
+
+ result = ByteArray.fileToBytes("src/test/resources/PCEPNotificationObject1WithTlv.bin");
+
+ builder.setType((short) 2);
+ builder.setValue((short) 1);
+ builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.notification.object.c.notification.TlvsBuilder().setOverloadDuration(
+ new OverloadDurationBuilder().setDuration(0xff0000a2L).build()).build());
+
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+ assertArrayEquals(result, parser.serializeObject(builder.build()));
+ }
+
+ @Test
+ public void testRPObjectWithTlv() throws PCEPDeserializerException, IOException {
+ final PCEPRequestParameterObjectParser parser = new PCEPRequestParameterObjectParser(this.tlvRegistry);
+ byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPRPObject1.bin");
+
+ final RpBuilder builder = new RpBuilder();
+ builder.setProcessingRule(true);
+ builder.setIgnore(true);
+ builder.setReoptimization(true);
+ builder.setBiDirectional(false);
+ builder.setLoose(true);
+ builder.setMakeBeforeBreak(true);
+ builder.setOrder(false);
+ builder.setPathKey(false);
+ builder.setSupplyOf(false);
+ builder.setFragmentation(false);
+ builder.setP2mp(false);
+ builder.setEroCompression(false);
+ builder.setPriority((short) 5);
+ builder.setRequestId(new RequestId(0xdeadbeefL));
+
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+ assertArrayEquals(result, parser.serializeObject(builder.build()));
+
+ result = ByteArray.fileToBytes("src/test/resources/PCEPRPObject2.bin");
+
+ builder.setReoptimization(false);
+ builder.setFragmentation(true);
+ builder.setEroCompression(true);
+
+ final OrderBuilder b = new OrderBuilder();
+ b.setDelete(0xffffffffL);
+ b.setSetup(1L);
+
+ builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.rp.TlvsBuilder().setOrder(
+ b.build()).build());
+
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+ assertArrayEquals(result, parser.serializeObject(builder.build()));
+ }
@Test
- public void testSvecObject() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
+ public void testSvecObject() throws IOException, PCEPDeserializerException {
final PCEPSvecObjectParser parser = new PCEPSvecObjectParser(this.tlvRegistry);
byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPSvecObject2.bin");
final List<RequestId> requestIDs = Lists.newArrayList();
requestIDs.add(new RequestId(0xFFFFFFFFL));
- requestIDs.add(new RequestId(0x00000000L));
+ requestIDs.add(new RequestId(0x00000001L));
requestIDs.add(new RequestId(0x01234567L));
requestIDs.add(new RequestId(0x89ABCDEFL));
requestIDs.add(new RequestId(0xFEDCBA98L));
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 PCEPExcludeRouteObjectObject (Serialization/Deserialization)<br/>
- // * Used resources:<br/>
- // * - PCEPExcludeRouteObject.1.bin<br/>
- // *
- // * @throws IOException
- // * @throws PCEPDeserializerException
- // * @throws PCEPDocumentedException
- // */
- // @Test
- // public void testExcludeRouteObject() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
- // final List<ExcludeRouteSubobject> xroSubobjects = new ArrayList<ExcludeRouteSubobject>();
- // xroSubobjects.add(new XROIPPrefixSubobject<IPv4Prefix>(new IPv4Prefix(new IPv4Address(new byte[] { (byte) 192,
- // (byte) 168,
- // (byte) 100, (byte) 100 }), 16), true, XROSubobjectAttribute.NODE));
- // xroSubobjects.add(new XROAsNumberSubobject(new AsNumber(0x1234L), false));
- //
- // }
- //
- // @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));
- // }
- //
- // // FIXME: add at least one test with true value
- // @Test
- // public void openObjectWithTlv() throws PCEPDeserializerException, PCEPDocumentedException {
- // // this.testOpenObjectWithSpecTlv(new PCEStatefulCapabilityTlv(false, false, false));
- // // this.testOpenObjectWithSpecTlv(new PCEStatefulCapabilityTlv(false, false, true));
- // // this.testOpenObjectWithSpecTlv(new PCEStatefulCapabilityTlv(false, true, false));
- // // this.testOpenObjectWithSpecTlv(new PCEStatefulCapabilityTlv(false, true, true));
- // }
- //
- // // private void testOpenObjectWithSpecTlv(final PCEPTlv tlv) throws PCEPDeserializerException,
- // PCEPDocumentedException {
- // // final List<PCEPObject> objs = new ArrayList<PCEPObject>();
- // // final List<PCEPTlv> tlvs = new ArrayList<PCEPTlv>();
- // // tlvs.add(tlv);
- // // final PCEPOpenObject oo = new PCEPOpenObject(30, 120, 0, tlvs);
- // // objs.add(oo);
- // // final byte[] bytes = PCEPObjectFactory.put(objs);
- // // final PCEPObject obj = PCEPObjectFactory.parseObjects(bytes).get(0);
- // // assertEquals(oo, obj);
- // // }
- //
- // @Test
- // public void testErrorsMapping() {
- // final PCEPErrorObjectParser.PCEPErrorsMaping mapper = PCEPErrorObjectParser.PCEPErrorsMaping.getInstance();
- //
- // for (final PCEPErrors error : PCEPErrors.values()) {
- // final PCEPErrorIdentifier errorId = mapper.getFromErrorsEnum(error);
- // assertEquals(error, mapper.getFromErrorIdentifier(errorId));
- // }
- // }
- //
- // @Test
- // public void testOFCodesMapping() {
- // final PCEPOFCodesMapping mapper = PCEPOFCodesMapping.getInstance();
- //
- // for (final PCEPOFCodes ofCode : PCEPOFCodes.values()) {
- // final int ofCodeId = mapper.getFromOFCodesEnum(ofCode);
- // assertEquals(ofCode, mapper.getFromCodeIdentifier(ofCodeId));
- // }
- // }
- //
- // @SuppressWarnings("unchecked")
- // private static <T extends PCEPObject> void serDeserTestWithoutBin(final T object) throws
- // PCEPDeserializerException,
- // PCEPDocumentedException {
- // final byte[] serBytes = PCEPObjectFactory.put(Arrays.asList((PCEPObject) object));
- // final T deserObj = (T) PCEPObjectFactory.parseObjects(serBytes).get(0);
- //
- // assertEquals(object, deserObj);
- // }
- //
- // @Test
- // public void testSERObjects() throws PCEPDocumentedException, PCEPDeserializerException {
- // final List<ExplicitRouteSubobject> eroSubobjects = new ArrayList<ExplicitRouteSubobject>();
- // eroSubobjects.add(new EROIPPrefixSubobject<IPv4Prefix>(new IPv4Prefix(new IPv4Address(new byte[] { (byte) 192,
- // (byte) 168, 1, 8 }), 16), false));
- // eroSubobjects.add(new EROIPPrefixSubobject<IPv6Prefix>(new IPv6Prefix(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 }), 64), false));
- //
- // serDeserTestWithoutBin(new PCEPSecondaryExplicitRouteObject(eroSubobjects, true, false));
- // }
- //
- // @Test
- // public void testSRRObject() throws PCEPDocumentedException, PCEPDeserializerException {
- // final List<ReportedRouteSubobject> rroSubobjects = new ArrayList<ReportedRouteSubobject>();
- // rroSubobjects.add(new RROIPAddressSubobject<IPv4Prefix>(new IPv4Prefix(this.ipv4addr, 16), true, false));
- // rroSubobjects.add(new RROIPAddressSubobject<IPv6Prefix>(new IPv6Prefix(this.ipv6addr, 64), false, true));
- //
- // serDeserTestWithoutBin(new PCEPSecondaryRecordRouteObject(rroSubobjects, true, false));
- // }
- //
- // @Test
- // public void testP2MPEndpointsObjects() throws PCEPDeserializerException, PCEPDocumentedException {
- // serDeserTestWithoutBin(new PCEPP2MPEndPointsObject<IPv4Address>(2, this.ipv4addr, Arrays.asList(this.ipv4addr,
- // this.ipv4addr,
- // this.ipv4addr), true, false));
- // serDeserTestWithoutBin(new PCEPP2MPEndPointsObject<IPv4Address>(1, this.ipv4addr, Arrays.asList(this.ipv4addr),
- // true, false));
- // serDeserTestWithoutBin(new PCEPP2MPEndPointsObject<IPv6Address>(2, this.ipv6addr, Arrays.asList(this.ipv6addr,
- // this.ipv6addr,
- // this.ipv6addr), true, false));
- // serDeserTestWithoutBin(new PCEPP2MPEndPointsObject<IPv6Address>(1, this.ipv6addr, Arrays.asList(this.ipv6addr),
- // true, false));
- // }
- //
- // @Test
- // public void testUnreachedDestinationObjects() throws PCEPDeserializerException, PCEPDocumentedException {
- // serDeserTestWithoutBin(new PCEPUnreachedDestinationObject<IPv4Address>(Arrays.asList(this.ipv4addr,
- // this.ipv4addr, this.ipv4addr), true, false));
- // serDeserTestWithoutBin(new PCEPUnreachedDestinationObject<IPv4Address>(Arrays.asList(this.ipv4addr), true,
- // false));
- // serDeserTestWithoutBin(new PCEPUnreachedDestinationObject<IPv6Address>(Arrays.asList(this.ipv6addr,
- // this.ipv6addr, this.ipv6addr), true, false));
- // serDeserTestWithoutBin(new PCEPUnreachedDestinationObject<IPv6Address>(Arrays.asList(this.ipv6addr), true,
- // false));
- // }
+ @Test
+ public void testClassTypeObject() throws PCEPDeserializerException {
+ 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
+ public void testExcludeRouteObject() throws Exception {
+ final PCEPExcludeRouteObjectParser parser = new PCEPExcludeRouteObjectParser(ServiceLoaderPCEPExtensionProviderContext.create().getXROSubobjectHandlerRegistry());
+ final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPExcludeRouteObject.1.bin");
+
+ final XroBuilder builder = new XroBuilder();
+ builder.setProcessingRule(false);
+ builder.setIgnore(false);
+ builder.setFlags(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.exclude.route.object.Xro.Flags(true));
+ final List<Subobjects> subs = Lists.newArrayList();
+ subs.add(new SubobjectsBuilder().setMandatory(true).setSubobjectType(
+ new IpPrefixBuilder().setIpPrefix(new IpPrefix(new Ipv4Prefix("192.168.0.0/16"))).build()).setAttribute(Attribute.Node).build());
+ subs.add(new SubobjectsBuilder().setMandatory(false).setSubobjectType(
+ new AsNumberBuilder().setAsNumber(new AsNumber(0x1234L)).build()).build());
+ builder.setSubobjects(subs);
+
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(false, false), result));
+ assertArrayEquals(result, parser.serializeObject(builder.build()));
+ }
+
+ @Test
+ public void testPathKeyObject() throws Exception {
+ final PCEPPathKeyObjectParser parser = new PCEPPathKeyObjectParser(ServiceLoaderPCEPExtensionProviderContext.create().getEROSubobjectHandlerRegistry());
+ final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPPathKeyObject.bin");
+
+ final PathKeyBuilder builder = new PathKeyBuilder();
+ builder.setProcessingRule(true);
+ builder.setIgnore(false);
+ final List<PathKeys> list = Lists.newArrayList();
+ list.add(new PathKeysBuilder().setLoose(true).setPathKey(new PathKey(0x1234)).setPceId(
+ new PceId(new byte[] { (byte) 0x12, (byte) 0x34, (byte) 0x50, (byte) 0x00 })).build());
+ builder.setPathKeys(list);
+
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, false), result));
+ assertArrayEquals(result, parser.serializeObject(builder.build()));
+ }
+
+ @Test
+ public void testSrpObject() throws IOException, PCEPDeserializerException {
+ 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 {
+ 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 {
+ 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) 99);
+
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, false), result));
+ assertArrayEquals(result, parser.serializeObject(builder.build()));
+ }
}