X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=pcep%2Fietf-stateful07%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fprotocol%2Fpcep%2Fietf%2FPCEPValidatorTest.java;h=5c7ba9ad113faeb5f168870f916b8b94dbb48ec8;hb=eee2e6c12ec171c7e7c3a7f938c66b75ae461cc4;hp=5ccd01acc146a88a20113d2cf726e16f576e3487;hpb=a010a8570de9413aab83a65a204893652e39284b;p=bgpcep.git diff --git a/pcep/ietf-stateful07/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPValidatorTest.java b/pcep/ietf-stateful07/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPValidatorTest.java index 5ccd01acc1..5c7ba9ad11 100644 --- a/pcep/ietf-stateful07/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPValidatorTest.java +++ b/pcep/ietf-stateful07/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPValidatorTest.java @@ -26,50 +26,51 @@ import org.opendaylight.protocol.pcep.ietf.stateful07.Stateful07ErrorMessagePars import org.opendaylight.protocol.pcep.ietf.stateful07.Stateful07PCReportMessageParser; import org.opendaylight.protocol.pcep.ietf.stateful07.Stateful07PCUpdateRequestMessageParser; import org.opendaylight.protocol.pcep.ietf.stateful07.StatefulActivator; -import org.opendaylight.protocol.pcep.impl.Activator; -import org.opendaylight.protocol.pcep.impl.message.PCEPOpenMessageParser; +import org.opendaylight.protocol.pcep.parser.BaseParserExtensionActivator; +import org.opendaylight.protocol.pcep.parser.message.PCEPOpenMessageParser; import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; import org.opendaylight.protocol.pcep.spi.pojo.SimplePCEPExtensionProviderContext; import org.opendaylight.protocol.pcep.sync.optimizations.SyncOptimizationsActivator; import org.opendaylight.protocol.util.ByteArray; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone; 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.crabbe.initiated.rev131126.Lsp1; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Lsp1Builder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.PcinitiateBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Srp1; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Srp1Builder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.pcinitiate.message.PcinitiateMessageBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.pcinitiate.message.pcinitiate.message.Requests; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.pcinitiate.message.pcinitiate.message.RequestsBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.OperationalStatus; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PcrptBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PcupdBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PlspId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.SrpIdNumber; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs1; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs1Builder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.identifiers.tlv.LspIdentifiers; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.identifiers.tlv.LspIdentifiersBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.identifiers.tlv.lsp.identifiers.AddressFamily; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.identifiers.tlv.lsp.identifiers.address.family.Ipv4CaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.Lsp; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.LspBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.lsp.TlvsBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcerr.pcerr.message.error.type.StatefulCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcerr.pcerr.message.error.type.stateful._case.stateful.Srps; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcerr.pcerr.message.error.type.stateful._case.stateful.SrpsBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.PcrptMessageBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.Reports; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.ReportsBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcupd.message.PcupdMessageBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcupd.message.pcupd.message.Updates; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcupd.message.pcupd.message.UpdatesBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcupd.message.pcupd.message.updates.PathBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.srp.object.Srp; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.srp.object.SrpBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.stateful.capability.tlv.Stateful; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.stateful.capability.tlv.StatefulBuilder; +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.crabbe.initiated.rev171025.Lsp1; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev171025.Lsp1Builder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev171025.PcinitiateBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev171025.Srp1; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev171025.Srp1Builder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev171025.pcinitiate.message.PcinitiateMessageBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev171025.pcinitiate.message.pcinitiate.message.Requests; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev171025.pcinitiate.message.pcinitiate.message.RequestsBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.OperationalStatus; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.PcrptBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.PcupdBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.PlspId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.SrpIdNumber; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.Tlvs1; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.Tlvs1Builder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.lsp.identifiers.tlv.LspIdentifiers; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.lsp.identifiers.tlv.LspIdentifiersBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.lsp.identifiers.tlv.lsp.identifiers.AddressFamily; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.lsp.identifiers.tlv.lsp.identifiers.address.family.Ipv4CaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.lsp.object.Lsp; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.lsp.object.LspBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.lsp.object.lsp.TlvsBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcerr.pcerr.message.error.type.StatefulCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcerr.pcerr.message.error.type.stateful._case.stateful.Srps; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcerr.pcerr.message.error.type.stateful._case.stateful.SrpsBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcrpt.message.PcrptMessageBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcrpt.message.pcrpt.message.Reports; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcrpt.message.pcrpt.message.ReportsBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcupd.message.PcupdMessageBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcupd.message.pcupd.message.Updates; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcupd.message.pcupd.message.UpdatesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcupd.message.pcupd.message.updates.PathBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.srp.object.Srp; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.srp.object.SrpBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.stateful.capability.tlv.Stateful; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.stateful.capability.tlv.StatefulBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.OpenBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.PcerrBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message; @@ -121,12 +122,14 @@ public class PCEPValidatorTest { private Srp srp; private Lsp lsp; private Lsp lspSrp; + private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.bandwidth.object.Bandwidth bandwidth; + private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reoptimization.bandwidth.object.ReoptimizationBandwidth reoptimizationBandwidth; private AsNumberCase eroASSubobject; private UnnumberedCase rroUnnumberedSub; private SimplePCEPExtensionProviderContext ctx; - private Activator act; + private BaseParserExtensionActivator act; private static final byte[] PCRT1 = { (byte) 0x20, (byte) 0x0A, (byte) 0x00, (byte) 0x20, @@ -160,10 +163,35 @@ public class PCEPValidatorTest { (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00 }; + private static final byte[] PCRT3 = { + (byte) 0x20, (byte) 0x0A, (byte) 0x00, (byte) 0x4C, + + (byte) 0x20, (byte) 0x10, (byte) 0x00, (byte) 0x1C, //(byte) 0x39, + (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, //Skip + (byte) 0x00, (byte) 0x12, (byte) 0x00, (byte) 0x10, //TLV Type + TLV Length + (byte) 0x7F, (byte) 0x00, (byte) 0x01, (byte) 0x01, //TLV 127.0.1.1 + (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x01, //TLV LSP Id + Tunnel id + (byte) 0x7F, (byte) 0x00, (byte) 0x01, (byte) 0x02, //TLV Ipv4ExtendedTunnelId 127.0.1.2 + (byte) 0x7F, (byte) 0x00, (byte) 0x01, (byte) 0x03, //TLV TunnelEndpointAddress 127.0.1.3 + + (byte) 0x07, (byte) 0x10, (byte) 0x00, (byte) 0x08, + (byte) 0x20, (byte) 0x04, (byte) 0xFF, (byte) 0xFF, + (byte) 0x09, (byte) 0x10, (byte) 0x00, (byte) 0x14, + (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, (byte) 0x00, (byte) 0x00, (byte) 0x00, + + (byte) 0x05, (byte) 0x10, (byte) 0x00, (byte) 0x08, + (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, + (byte) 0x05, (byte) 0x20, (byte) 0x00, (byte) 0x08, + (byte) 0x47, (byte) 0x74, (byte) 0x24, (byte) 0x00 + }; + @Before public void setUp() throws Exception { this.ctx = new SimplePCEPExtensionProviderContext(); - this.act = new Activator(); + this.act = new BaseParserExtensionActivator(); this.act.start(this.ctx); final LspaBuilder lspaBuilder = new LspaBuilder(); @@ -189,7 +217,7 @@ public class PCEPValidatorTest { this.eroASSubobject = new AsNumberCaseBuilder().setAsNumber( new AsNumberBuilder().setAsNumber( - new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber(0xFFFFL)).build()).build(); + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber(0xFFFFL)).build()).build(); this.rroUnnumberedSub = new UnnumberedCaseBuilder().setUnnumbered( new UnnumberedBuilder().setRouterId(0x00112233L).setInterfaceId(0x00ff00ffL).build()).build(); @@ -225,7 +253,7 @@ public class PCEPValidatorTest { srpBuilder.setProcessingRule(false); srpBuilder.setOperationId(new SrpIdNumber(1L)); srpBuilder.addAugmentation(Srp1.class, new Srp1Builder().setRemove(false).build()); - srpBuilder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.srp.object.srp.TlvsBuilder().build()); + srpBuilder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.srp.object.srp.TlvsBuilder().build()); this.srp = srpBuilder.build(); final LspBuilder lspBuilder = new LspBuilder(); @@ -240,20 +268,32 @@ public class PCEPValidatorTest { lspBuilder.setTlvs(new TlvsBuilder().build()); lspBuilder.addAugmentation(Lsp1.class, new Lsp1Builder().setCreate(false).build()); - final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.identifiers.tlv.lsp.identifiers.address.family.ipv4._case.Ipv4Builder builder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.identifiers.tlv.lsp.identifiers.address.family.ipv4._case.Ipv4Builder(); - builder.setIpv4TunnelSenderAddress(new Ipv4Address("127.0.1.1")); + final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.lsp.identifiers.tlv.lsp.identifiers.address.family.ipv4._case.Ipv4Builder builder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.lsp.identifiers.tlv.lsp.identifiers.address.family.ipv4._case.Ipv4Builder(); + builder.setIpv4TunnelSenderAddress(new Ipv4AddressNoZone("127.0.1.1")); final LspId lspId = new LspId(1L); final TunnelId tunnelId = new TunnelId(1); - builder.setIpv4ExtendedTunnelId(new Ipv4ExtendedTunnelId(new Ipv4Address("127.0.1.2"))); - builder.setIpv4TunnelEndpointAddress(new Ipv4Address("127.0.1.3")); + builder.setIpv4ExtendedTunnelId(new Ipv4ExtendedTunnelId(new Ipv4AddressNoZone("127.0.1.2"))); + builder.setIpv4TunnelEndpointAddress(new Ipv4AddressNoZone("127.0.1.3")); final AddressFamily afiLsp = new Ipv4CaseBuilder().setIpv4(builder.build()).build(); final LspIdentifiers identifier = new LspIdentifiersBuilder().setAddressFamily(afiLsp).setLspId(lspId).setTunnelId(tunnelId).build(); this.lspSrp = lspBuilder.build(); this.lsp = lspBuilder.setTlvs(new TlvsBuilder().setLspIdentifiers(identifier).build()).build(); final Ipv4Builder afi = new Ipv4Builder(); - afi.setSourceIpv4Address(new Ipv4Address("255.255.255.255")); - afi.setDestinationIpv4Address(new Ipv4Address("255.255.255.255")); + afi.setSourceIpv4Address(new Ipv4AddressNoZone("255.255.255.255")); + afi.setDestinationIpv4Address(new Ipv4AddressNoZone("255.255.255.255")); + + final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.bandwidth.object.BandwidthBuilder bandwidthBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.bandwidth.object.BandwidthBuilder(); + bandwidthBuilder.setIgnore(false); + bandwidthBuilder.setProcessingRule(false); + bandwidthBuilder.setBandwidth(new Bandwidth(new byte[] { (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00 })); + this.bandwidth = bandwidthBuilder.build(); + + final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reoptimization.bandwidth.object.ReoptimizationBandwidthBuilder reoptimizationBandwidthBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reoptimization.bandwidth.object.ReoptimizationBandwidthBuilder(); + reoptimizationBandwidthBuilder.setIgnore(false); + reoptimizationBandwidthBuilder.setProcessingRule(false); + reoptimizationBandwidthBuilder.setBandwidth(new Bandwidth(new byte[] { (byte) 0x47, (byte) 0x74, (byte) 0x24, (byte) 0x00 })); + this.reoptimizationBandwidth = reoptimizationBandwidthBuilder.build(); } @Test @@ -357,7 +397,7 @@ public class PCEPValidatorTest { final List reports1 = Lists.newArrayList(); reports1.add(new ReportsBuilder().setLsp(this.lsp).setPath( - new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.reports.PathBuilder().setEro( + new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcrpt.message.pcrpt.message.reports.PathBuilder().setEro( this.ero).setLspa(this.lspa).build()).build()); builder.setReports(reports1); @@ -370,7 +410,7 @@ public class PCEPValidatorTest { result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCRpt.3.bin")); final List reports2 = Lists.newArrayList(); - final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.reports.PathBuilder pBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.reports.PathBuilder(); + final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcrpt.message.pcrpt.message.reports.PathBuilder pBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcrpt.message.pcrpt.message.reports.PathBuilder(); pBuilder.setEro(this.ero); pBuilder.setLspa(this.lspa); pBuilder.setMetrics(Lists.newArrayList(this.metrics, this.metrics)); @@ -387,7 +427,7 @@ public class PCEPValidatorTest { result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCRpt.5.bin")); final List reports3 = Lists.newArrayList(); - final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.reports.PathBuilder pBuilder1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.reports.PathBuilder(); + final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcrpt.message.pcrpt.message.reports.PathBuilder pBuilder1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcrpt.message.pcrpt.message.reports.PathBuilder(); pBuilder1.setEro(this.ero); pBuilder1.setLspa(this.lspa); pBuilder1.setMetrics(Lists.newArrayList(this.metrics, this.metrics)); @@ -401,6 +441,20 @@ public class PCEPValidatorTest { buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); + + result = Unpooled.wrappedBuffer(PCRT3); + + final List reports4 = Lists.newArrayList(); + reports4.add(new ReportsBuilder().setLsp(this.lsp).setPath( + new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcrpt.message.pcrpt.message.reports.PathBuilder().setEro( + this.ero).setLspa(this.lspa).setBandwidth(this.bandwidth).setReoptimizationBandwidth(this.reoptimizationBandwidth).build()).build()); + builder.setReports(reports4); + + final ByteBuf input2 = result.slice(4, result.readableBytes() - 4); + assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(), parser.parseMessage(input2, Collections.emptyList())); + buf = Unpooled.buffer(result.readableBytes()); + parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf); + assertArrayEquals(result.array(), buf.array()); } } @@ -449,8 +503,8 @@ public class PCEPValidatorTest { PcerrMessageBuilder builder = new PcerrMessageBuilder(); builder.setErrors(innerErr); final List srps = new ArrayList<>(); - srps.add(new SrpsBuilder().setSrp(new SrpBuilder().setOperationId(new SrpIdNumber(3L)).setIgnore(false).setProcessingRule(false).setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.srp.object.srp.TlvsBuilder().build()).build()).build()); - builder.setErrorType(new StatefulCaseBuilder().setStateful(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcerr.pcerr.message.error.type.stateful._case.StatefulBuilder().setSrps(srps).build()).build()); + srps.add(new SrpsBuilder().setSrp(new SrpBuilder().setOperationId(new SrpIdNumber(3L)).setIgnore(false).setProcessingRule(false).setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.srp.object.srp.TlvsBuilder().build()).build()).build()); + builder.setErrorType(new StatefulCaseBuilder().setStateful(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev171025.pcerr.pcerr.message.error.type.stateful._case.StatefulBuilder().setSrps(srps).build()).build()); assertEquals(new PcerrBuilder().setPcerrMessage(builder.build()).build(), parser.parseMessage(result.slice(4, result.readableBytes() - 4), Collections.emptyList())); @@ -527,30 +581,84 @@ public class PCEPValidatorTest { @Test public void testMissingLspObjectErrorInPcRptMsg() throws PCEPDeserializerException { final byte[] statefulMsg= { - 0x20,0x0B,0x00,0x1C, + (byte) 0x20, (byte) 0x0B, (byte) 0x00, (byte) 0x1C, /* srp-object */ - 0x21,0x10,0x00,0x0C, - 0x00,0x00,0x00,0x001, - 0x00,0x00,0x00,0x01, + (byte) 0x21, (byte) 0x10, (byte) 0x00, (byte) 0x0C, + (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x001, + (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, /* lsp-object is missing*/ /* sr-ero-object */ - 0x07,0x10,0x00,0x0C, + (byte) 0x07, (byte) 0x10, (byte) 0x00, (byte) 0x0C, /* ipv4 prefix subobject */ - (byte) 0x81,0x08,(byte) 0xFF,(byte) 0xFF, - (byte) 0xFF,(byte) 0xFF,0x16,0x00}; - - final Stateful07PCReportMessageParser parser = new Stateful07PCReportMessageParser(this.ctx.getObjectHandlerRegistry()); - - final PcerrMessageBuilder errMsgBuilder = new PcerrMessageBuilder(); - errMsgBuilder.setErrors(Lists.newArrayList(new ErrorsBuilder().setErrorObject( - new ErrorObjectBuilder().setType((short) 6).setValue((short) 8).build()).build())); - final PcerrBuilder builder = new PcerrBuilder(); - builder.setPcerrMessage(errMsgBuilder.build()); - - final ByteBuf buf = Unpooled.wrappedBuffer(statefulMsg); - final List errors = Lists.newArrayList(); - parser.parseMessage(buf.slice(4, buf.readableBytes() - 4), errors); - assertFalse(errors.isEmpty()); - assertEquals(builder.build(), errors.get(0)); + (byte) 0x81, (byte) 0x08, (byte) 0xFF, (byte) 0xFF, + (byte) 0xFF, (byte) 0xFF, (byte) 0x16, (byte) 0x00 + }; + + try (CrabbeInitiatedActivator a = new CrabbeInitiatedActivator(); + StatefulActivator b = new StatefulActivator()) { + a.start(this.ctx); + b.start(this.ctx); + final Stateful07PCReportMessageParser parser = new Stateful07PCReportMessageParser( + this.ctx.getObjectHandlerRegistry()); + + final PcerrMessageBuilder errMsgBuilder = new PcerrMessageBuilder(); + errMsgBuilder.setErrors(Lists.newArrayList(new ErrorsBuilder() + .setErrorObject(new ErrorObjectBuilder().setType((short) 6).setValue((short) 8).build()).build())); + final PcerrBuilder builder = new PcerrBuilder(); + builder.setPcerrMessage(errMsgBuilder.build()); + + final ByteBuf buf = Unpooled.wrappedBuffer(statefulMsg); + final List errors = Lists.newArrayList(); + parser.parseMessage(buf.slice(4, buf.readableBytes() - 4), errors); + assertFalse(errors.isEmpty()); + assertEquals(builder.build(), errors.get(0)); + } + } + + @Test + public void testUnexpectedRroObjectInPcUpdMsg() throws PCEPDeserializerException { + final byte[] badUpdateMsg = { + (byte) 0x20, (byte) 0x0b, (byte) 0x00, (byte) 0x50, + /* SRP, LSP and ERO objects */ + (byte) 0x21, (byte) 0x12, (byte) 0x00, (byte) 0x0c, + (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, + (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, + (byte) 0x20, (byte) 0x10, (byte) 0x00, (byte) 0x08, + (byte) 0x00, (byte) 0x00, (byte) 0x10, (byte) 0x09, + (byte) 0x07, (byte) 0x10, (byte) 0x00, (byte) 0x14, + (byte) 0x01, (byte) 0x08, (byte) 0x05, (byte) 0x05, + (byte) 0x05, (byte) 0x03, (byte) 0x18, (byte) 0x00, + (byte) 0x01, (byte) 0x08, (byte) 0x08, (byte) 0x08, + (byte) 0x08, (byte) 0x04, (byte) 0x18, (byte) 0x00, + /* RRO object */ + (byte) 0x08, (byte) 0x10, (byte) 0x00, (byte) 0x24, + (byte) 0x01, (byte) 0x08, (byte) 0x0a, (byte) 0x00, + (byte) 0x00, (byte) 0x83, (byte) 0x20, (byte) 0x20, + (byte) 0x03, (byte) 0x08, (byte) 0x01, (byte) 0x01, + (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, + (byte) 0x01, (byte) 0x08, (byte) 0x0a, (byte) 0x00, + (byte) 0x09, (byte) 0xde, (byte) 0x20, (byte) 0x00, + (byte) 0x03, (byte) 0x08, (byte) 0x01, (byte) 0x01, + (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00 + }; + + try (CrabbeInitiatedActivator a = new CrabbeInitiatedActivator()) { + a.start(this.ctx); + + final Stateful07PCUpdateRequestMessageParser parser = new Stateful07PCUpdateRequestMessageParser( + this.ctx.getObjectHandlerRegistry()); + + final PcerrMessageBuilder errMsgBuilder = new PcerrMessageBuilder(); + errMsgBuilder.setErrors(Lists.newArrayList(new ErrorsBuilder() + .setErrorObject(new ErrorObjectBuilder().setType((short) 6).setValue((short) 10).build()).build())); + final PcerrBuilder builder = new PcerrBuilder(); + builder.setPcerrMessage(errMsgBuilder.build()); + + final ByteBuf buf = Unpooled.wrappedBuffer(badUpdateMsg); + final List errors = Lists.newArrayList(); + parser.parseMessage(buf.slice(4, buf.readableBytes() - 4), errors); + assertFalse(errors.isEmpty()); + assertEquals(builder.build(), errors.get(0)); + } } }