From 1a6f3d5cad2862815136e63a10d4dc616989d593 Mon Sep 17 00:00:00 2001 From: Dana Kutenicsova Date: Tue, 15 Jul 2014 14:39:32 +0200 Subject: [PATCH] BUG-1199 : fixed incorrect parsing of Error message. Change-Id: I6227b82a34ae0efd6d0626bc1eef5a58e89031a8 Signed-off-by: Dana Kutenicsova --- .../Stateful07ErrorMessageParser.java | 20 ++--- .../ietf/stateful07/StatefulActivator.java | 12 +-- .../protocol/pcep/ietf/PCEPValidatorTest.java | 71 +++++++-------- .../src/test/resources/PCErr.1.bin | Bin 0 -> 24 bytes .../protocol/pcep/impl/PCEPValidatorTest.java | 82 ++++++++++++------ .../src/test/resources/PCErr.3.bin | Bin 6 files changed, 103 insertions(+), 82 deletions(-) create mode 100644 pcep/ietf-stateful07/src/test/resources/PCErr.1.bin rename pcep/{ietf-stateful07 => impl}/src/test/resources/PCErr.3.bin (100%) diff --git a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07ErrorMessageParser.java b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07ErrorMessageParser.java index 9bc6763760..41a2a4df2f 100644 --- a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07ErrorMessageParser.java +++ b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07ErrorMessageParser.java @@ -7,12 +7,11 @@ */ package org.opendaylight.protocol.pcep.ietf.stateful07; +import com.google.common.base.Preconditions; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; - import java.util.ArrayList; import java.util.List; - import org.opendaylight.protocol.pcep.impl.message.PCEPErrorMessageParser; import org.opendaylight.protocol.pcep.spi.MessageUtil; import org.opendaylight.protocol.pcep.spi.ObjectRegistry; @@ -20,6 +19,8 @@ import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; import org.opendaylight.protocol.pcep.spi.PCEPErrors; import org.opendaylight.protocol.pcep.spi.UnknownObject; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcerr.pcerr.message.error.type.StatefulCase; +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.StatefulBuilder; 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.srp.object.Srp; @@ -53,16 +54,13 @@ public final class Stateful07ErrorMessageParser extends PCEPErrorMessageParser { @Override public void serializeMessage(final Message message, final ByteBuf out) { - if (!(message instanceof PcerrMessage)) { - throw new IllegalArgumentException("Wrong instance of Message. Passed instance " + message.getClass() - + ". Nedded ErrorMessage."); - } + Preconditions.checkArgument(message instanceof PcerrMessage, "Wrong instance of Message. Passed instance of %s. Need ErrorMessage.", message.getClass()); final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.PcerrMessage err = ((PcerrMessage) message).getPcerrMessage(); if (err.getErrors() == null || err.getErrors().isEmpty()) { throw new IllegalArgumentException("Errors should not be empty."); } - ByteBuf buffer = Unpooled.buffer(); + final ByteBuf buffer = Unpooled.buffer(); if (err.getErrorType() instanceof RequestCase) { final List rps = ((RequestCase) err.getErrorType()).getRequest().getRps(); @@ -90,7 +88,6 @@ public final class Stateful07ErrorMessageParser extends PCEPErrorMessageParser { if (objects == null) { throw new IllegalArgumentException("Passed list can't be null."); } - if (objects.isEmpty()) { throw new PCEPDeserializerException("Error message is empty."); } @@ -184,16 +181,19 @@ public final class Stateful07ErrorMessageParser extends PCEPErrorMessageParser { } } - if (errorObjects.isEmpty() && errorObjects.isEmpty()) { + if (errorObjects.isEmpty()) { throw new PCEPDeserializerException("At least one PCEPErrorObject is mandatory."); } if (!objects.isEmpty()) { throw new PCEPDeserializerException("Unprocessed Objects: " + objects); } - if (requestParameters != null && !requestParameters.isEmpty()) { + if (!requestParameters.isEmpty()) { b.setErrorType(new RequestCaseBuilder().setRequest(new RequestBuilder().setRps(requestParameters).build()).build()); } + if (!srps.isEmpty()) { + b.setErrorType(new StatefulCaseBuilder().setStateful(new StatefulBuilder().setSrps(srps).build()).build()); + } return new PcerrBuilder().setPcerrMessage(b.setErrors(errorObjects).build()).build(); } diff --git a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/StatefulActivator.java b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/StatefulActivator.java index 43011aec32..5301536604 100644 --- a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/StatefulActivator.java +++ b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/StatefulActivator.java @@ -9,7 +9,6 @@ package org.opendaylight.protocol.pcep.ietf.stateful07; import java.util.ArrayList; import java.util.List; - import org.opendaylight.protocol.pcep.spi.ObjectRegistry; import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext; import org.opendaylight.protocol.pcep.spi.TlvRegistry; @@ -23,6 +22,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.iet 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.stateful.capability.tlv.Stateful; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.symbolic.path.name.tlv.SymbolicPathName; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Pcerr; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.Open; public final class StatefulActivator extends AbstractPCEPExtensionProviderActivator { @@ -32,20 +32,22 @@ public final class StatefulActivator extends AbstractPCEPExtensionProviderActiva final ObjectRegistry objReg = context.getObjectHandlerRegistry(); regs.add(context.registerMessageParser(Stateful07PCUpdateRequestMessageParser.TYPE, - new Stateful07PCUpdateRequestMessageParser(objReg))); + new Stateful07PCUpdateRequestMessageParser(objReg))); regs.add(context.registerMessageSerializer(Pcupd.class, new Stateful07PCUpdateRequestMessageParser(objReg))); regs.add(context.registerMessageParser(Stateful07PCReportMessageParser.TYPE, new Stateful07PCReportMessageParser(objReg))); regs.add(context.registerMessageSerializer(Pcrpt.class, new Stateful07PCReportMessageParser(objReg))); + regs.add(context.registerMessageParser(Stateful07ErrorMessageParser.TYPE, new Stateful07ErrorMessageParser(objReg))); + regs.add(context.registerMessageSerializer(Pcerr.class, new Stateful07ErrorMessageParser(objReg))); final TlvRegistry tlvReg = context.getTlvHandlerRegistry(); regs.add(context.registerObjectParser(Stateful07LspObjectParser.CLASS, Stateful07LspObjectParser.TYPE, - new Stateful07LspObjectParser(tlvReg))); + new Stateful07LspObjectParser(tlvReg))); regs.add(context.registerObjectSerializer(Lsp.class, new Stateful07LspObjectParser(tlvReg))); regs.add(context.registerObjectParser(Stateful07SrpObjectParser.CLASS, Stateful07SrpObjectParser.TYPE, - new Stateful07SrpObjectParser(tlvReg))); + new Stateful07SrpObjectParser(tlvReg))); regs.add(context.registerObjectSerializer(Srp.class, new Stateful07SrpObjectParser(tlvReg))); regs.add(context.registerObjectParser(Stateful07OpenObjectParser.CLASS, Stateful07OpenObjectParser.TYPE, - new Stateful07OpenObjectParser(tlvReg))); + new Stateful07OpenObjectParser(tlvReg))); regs.add(context.registerObjectSerializer(Open.class, new Stateful07OpenObjectParser(tlvReg))); regs.add(context.registerTlvParser(Stateful07LSPIdentifierIpv4TlvParser.TYPE, new Stateful07LSPIdentifierIpv4TlvParser())); 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 7aaa095735..fc34a3b582 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 @@ -15,17 +15,18 @@ import com.google.common.collect.Lists; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import java.io.IOException; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.junit.Before; import org.junit.Test; import org.opendaylight.protocol.pcep.ietf.initiated00.CInitiated00PCInitiateMessageParser; import org.opendaylight.protocol.pcep.ietf.initiated00.CrabbeInitiatedActivator; +import org.opendaylight.protocol.pcep.ietf.stateful07.Stateful07ErrorMessageParser; 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.PCEPErrorMessageParser; import org.opendaylight.protocol.pcep.impl.message.PCEPOpenMessageParser; import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; import org.opendaylight.protocol.pcep.spi.pojo.SimplePCEPExtensionProviderContext; @@ -50,6 +51,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.iet 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; @@ -78,14 +82,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.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.open.message.OpenMessageBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.Open; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcep.error.object.ErrorObject; 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.pcerr.message.PcerrMessageBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.Errors; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.ErrorsBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.SessionCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.session._case.SessionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reported.route.object.Rro; 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.rsvp.rev130820.AttributeFilter; @@ -98,7 +99,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev public class PCEPValidatorTest { - private Open open; private Lspa lspa; private Metrics metrics; private Iro iro; @@ -119,16 +119,6 @@ public class PCEPValidatorTest { this.act = new Activator(); this.act.start(this.ctx); - final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.OpenBuilder openBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.OpenBuilder(); - openBuilder.setProcessingRule(false); - openBuilder.setIgnore(false); - openBuilder.setDeadTimer((short) 1); - openBuilder.setKeepalive((short) 1); - openBuilder.setSessionId((short) 0); - openBuilder.setVersion(new ProtocolVersion((short) 1)); - openBuilder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.TlvsBuilder().build()); - this.open = openBuilder.build(); - final LspaBuilder lspaBuilder = new LspaBuilder(); lspaBuilder.setProcessingRule(false); lspaBuilder.setIgnore(false); @@ -151,11 +141,11 @@ public class PCEPValidatorTest { this.metrics = new MetricsBuilder().setMetric(mBuilder.build()).build(); 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 AsNumberBuilder().setAsNumber( + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber(0xFFFFL)).build()).build(); this.rroUnnumberedSub = new UnnumberedCaseBuilder().setUnnumbered( - new UnnumberedBuilder().setRouterId(0x00112233L).setInterfaceId(0x00ff00ffL).build()).build(); + new UnnumberedBuilder().setRouterId(0x00112233L).setInterfaceId(0x00ff00ffL).build()).build(); final IroBuilder iroBuilder = new IroBuilder(); iroBuilder.setIgnore(false); @@ -170,7 +160,7 @@ public class PCEPValidatorTest { eroBuilder.setProcessingRule(false); final List eroSubs = Lists.newArrayList(); eroSubs.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.ero.SubobjectBuilder().setSubobjectType( - this.eroASSubobject).setLoose(false).build()); + this.eroASSubobject).setLoose(false).build()); eroBuilder.setSubobject(eroSubs); this.ero = eroBuilder.build(); @@ -179,7 +169,7 @@ public class PCEPValidatorTest { rroBuilder.setProcessingRule(false); final List rroSubs = Lists.newArrayList(); rroSubs.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reported.route.object.rro.SubobjectBuilder().setSubobjectType( - this.rroUnnumberedSub).setProtectionAvailable(false).setProtectionInUse(false).build()); + this.rroUnnumberedSub).setProtectionAvailable(false).setProtectionInUse(false).build()); rroBuilder.setSubobject(rroSubs); this.rro = rroBuilder.build(); @@ -225,11 +215,11 @@ public class PCEPValidatorTest { b.setSessionId((short) 1); final Stateful tlv1 = new StatefulBuilder().setLspUpdateCapability(Boolean.TRUE).build(); b.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.TlvsBuilder().addAugmentation( - Tlvs1.class, new Tlvs1Builder().setStateful(tlv1).build()).build()); + Tlvs1.class, new Tlvs1Builder().setStateful(tlv1).build()).build()); builder.setOpen(b.build()); assertEquals(new OpenBuilder().setOpenMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); final ByteBuf buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new OpenBuilder().setOpenMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); @@ -254,7 +244,7 @@ public class PCEPValidatorTest { builder.setUpdates(updates); assertEquals(new PcupdBuilder().setPcupdMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); ByteBuf buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcupdBuilder().setPcupdMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); @@ -270,7 +260,7 @@ public class PCEPValidatorTest { builder.setUpdates(updates1); assertEquals(new PcupdBuilder().setPcupdMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcupdBuilder().setPcupdMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); @@ -292,7 +282,7 @@ public class PCEPValidatorTest { builder.setReports(reports); assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); ByteBuf buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); @@ -301,12 +291,12 @@ 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( - this.ero).setLspa(this.lspa).build()).build()); + new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.reports.PathBuilder().setEro( + this.ero).setLspa(this.lspa).build()).build()); builder.setReports(reports1); assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); @@ -323,7 +313,7 @@ public class PCEPValidatorTest { builder.setReports(reports2); assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); @@ -341,7 +331,7 @@ public class PCEPValidatorTest { builder.setReports(reports3); assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); @@ -370,7 +360,7 @@ public class PCEPValidatorTest { builder.setRequests(reqs); assertEquals(new PcinitiateBuilder().setPcinitiateMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); final ByteBuf buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcinitiateBuilder().setPcinitiateMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); @@ -381,22 +371,23 @@ public class PCEPValidatorTest { public void testErrorMsg() throws IOException, PCEPDeserializerException { try (StatefulActivator a = new StatefulActivator()) { a.start(this.ctx); - final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCErr.3.bin")); - - final ErrorObject error1 = new ErrorObjectBuilder().setIgnore(false).setProcessingRule(false).setType((short) 3).setValue( - (short) 1).build(); + final Stateful07ErrorMessageParser parser = new Stateful07ErrorMessageParser(this.ctx.getObjectHandlerRegistry()); - final PCEPErrorMessageParser parser = new PCEPErrorMessageParser(this.ctx.getObjectHandlerRegistry()); + final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCErr.1.bin")); + final ErrorObject error1 = new ErrorObjectBuilder().setIgnore(false).setProcessingRule(false).setType((short) 19).setValue( + (short) 1).build(); - List innerErr = Lists.newArrayList(); + final List innerErr = new ArrayList<>(); innerErr.add(new ErrorsBuilder().setErrorObject(error1).build()); final PcerrMessageBuilder builder = new PcerrMessageBuilder(); builder.setErrors(innerErr); - builder.setErrorType(new SessionCaseBuilder().setSession(new SessionBuilder().setOpen(this.open).build()).build()); + List srps = new ArrayList<>(); + srps.add(new SrpsBuilder().setSrp(new SrpBuilder().setOperationId(new SrpIdNumber(3L)).setIgnore(false).setProcessingRule(false).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()); assertEquals(new PcerrBuilder().setPcerrMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); final ByteBuf buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcerrBuilder().setPcerrMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); @@ -422,7 +413,7 @@ public class PCEPValidatorTest { final PcerrMessageBuilder errMsgBuilder = new PcerrMessageBuilder(); errMsgBuilder.setErrors(Lists.newArrayList(new ErrorsBuilder().setErrorObject( - new ErrorObjectBuilder().setType((short) 6).setValue((short) 8).build()).build())); + new ErrorObjectBuilder().setType((short) 6).setValue((short) 8).build()).build())); final PcerrBuilder builder = new PcerrBuilder(); builder.setPcerrMessage(errMsgBuilder.build()); diff --git a/pcep/ietf-stateful07/src/test/resources/PCErr.1.bin b/pcep/ietf-stateful07/src/test/resources/PCErr.1.bin new file mode 100644 index 0000000000000000000000000000000000000000..9ee76a01507cdddd9c4b9ffefffbac7560a766b8 GIT binary patch literal 24 acmY#jV~|i3VBleZ0A^kR1`Y-WVMYK8Yyh|b literal 0 HcmV?d00001 diff --git a/pcep/impl/src/test/java/org/opendaylight/protocol/pcep/impl/PCEPValidatorTest.java b/pcep/impl/src/test/java/org/opendaylight/protocol/pcep/impl/PCEPValidatorTest.java index e7a9571f3a..25abbbac78 100644 --- a/pcep/impl/src/test/java/org/opendaylight/protocol/pcep/impl/PCEPValidatorTest.java +++ b/pcep/impl/src/test/java/org/opendaylight/protocol/pcep/impl/PCEPValidatorTest.java @@ -11,14 +11,12 @@ import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import com.google.common.collect.Lists; - import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; - import java.io.IOException; +import java.util.ArrayList; import java.util.Collections; import java.util.List; - import org.junit.Before; import org.junit.Test; import org.opendaylight.protocol.pcep.impl.message.PCEPCloseMessageParser; @@ -68,13 +66,16 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.of.object.Of; 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.message.OpenMessageBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.Open; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcep.error.object.ErrorObject; 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.pcerr.message.PcerrMessageBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.Errors; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.ErrorsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.RequestCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.SessionCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.request._case.RequestBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.session._case.SessionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcntf.message.PcntfMessageBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcntf.message.pcntf.message.Notifications; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcntf.message.pcntf.message.NotificationsBuilder; @@ -106,6 +107,7 @@ public class PCEPValidatorTest { private ObjectRegistry objectRegistry; + private Open open; private Rp rpTrue; private Rp rpFalse; private NoPath noPath; @@ -147,6 +149,16 @@ public class PCEPValidatorTest { rpBuilder.setProcessingRule(false); this.rpFalse = rpBuilder.build(); + final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.OpenBuilder openBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.OpenBuilder(); + openBuilder.setProcessingRule(false); + openBuilder.setIgnore(false); + openBuilder.setDeadTimer((short) 1); + openBuilder.setKeepalive((short) 1); + openBuilder.setSessionId((short) 0); + openBuilder.setVersion(new ProtocolVersion((short) 1)); + openBuilder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.TlvsBuilder().build()); + this.open = openBuilder.build(); + final NoPathBuilder npbuilder = new NoPathBuilder(); npbuilder.setProcessingRule(false); npbuilder.setIgnore(false); @@ -176,8 +188,8 @@ public class PCEPValidatorTest { this.metrics = new MetricsBuilder().setMetric(mBuilder.build()).build(); 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 AsNumberBuilder().setAsNumber( + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber(0xFFFFL)).build()).build(); final IroBuilder iroBuilder = new IroBuilder(); iroBuilder.setIgnore(false); @@ -192,7 +204,7 @@ public class PCEPValidatorTest { eroBuilder.setProcessingRule(false); final List eroSubs = Lists.newArrayList(); eroSubs.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.ero.SubobjectBuilder().setSubobjectType( - this.eroASSubobject).setLoose(false).build()); + this.eroASSubobject).setLoose(false).build()); eroBuilder.setSubobject(eroSubs); this.ero = eroBuilder.build(); @@ -239,7 +251,7 @@ public class PCEPValidatorTest { builder.setOpen(b.build()); assertEquals(new OpenBuilder().setOpenMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); final ByteBuf buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new OpenBuilder().setOpenMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); @@ -263,7 +275,7 @@ public class PCEPValidatorTest { final PCEPCloseMessageParser parser = new PCEPCloseMessageParser(this.objectRegistry); final CloseBuilder builder = new CloseBuilder().setCCloseMessage(new CCloseMessageBuilder().setCClose( - new CCloseBuilder().setIgnore(false).setProcessingRule(false).setReason((short) 5).build()).build()); + new CCloseBuilder().setIgnore(false).setProcessingRule(false).setReason((short) 5).build()).build()); assertEquals(builder.build(), parser.parseMessage(result.slice(4, result.readableBytes() - 4), Collections. emptyList())); final ByteBuf buf = Unpooled.buffer(result.readableBytes()); @@ -286,7 +298,7 @@ public class PCEPValidatorTest { builder.setRequests(reqs1); assertEquals(new PcreqBuilder().setPcreqMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); ByteBuf buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcreqBuilder().setPcreqMessage(builder.build()).build(), buf); @@ -305,10 +317,10 @@ public class PCEPValidatorTest { reqs2.add(rBuilder1.build()); builder.setRequests(reqs2); builder.setSvec(Lists.newArrayList(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.SvecBuilder().setSvec( - this.svec).build())); + this.svec).build())); assertEquals(new PcreqBuilder().setPcreqMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcreqBuilder().setPcreqMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); @@ -330,7 +342,7 @@ public class PCEPValidatorTest { builder.setReplies(replies1); assertEquals(new PcrepBuilder().setPcrepMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); ByteBuf buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcrepBuilder().setPcrepMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); @@ -348,7 +360,7 @@ public class PCEPValidatorTest { builder.setReplies(replies2); assertEquals(new PcrepBuilder().setPcrepMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcrepBuilder().setPcrepMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); @@ -359,12 +371,12 @@ public class PCEPValidatorTest { rBuilder = new RepliesBuilder(); rBuilder.setRp(this.rpTrue); rBuilder.setResult(new FailureCaseBuilder().setNoPath(this.noPath).setLspa(this.lspa).setMetrics(Lists.newArrayList(this.metrics)).setIro( - this.iro).build()); + this.iro).build()); replies3.add(rBuilder.build()); builder.setReplies(replies3); assertEquals(new PcrepBuilder().setPcrepMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcrepBuilder().setPcrepMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); @@ -387,7 +399,7 @@ public class PCEPValidatorTest { builder.setReplies(replies4); assertEquals(new PcrepBuilder().setPcrepMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcrepBuilder().setPcrepMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); @@ -396,11 +408,11 @@ public class PCEPValidatorTest { @Test public void testNotificationMsg() throws IOException, PCEPDeserializerException { final CNotification cn1 = new CNotificationBuilder().setIgnore(false).setProcessingRule(false).setType((short) 1).setValue( - (short) 1).build(); + (short) 1).build(); final List innerNot = Lists.newArrayList(); innerNot.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcntf.message.pcntf.message.notifications.NotificationsBuilder().setCNotification( - cn1).build()); + cn1).build()); final List rps = Lists.newArrayList(); rps.add(new RpsBuilder().setRp(this.rpFalse).build()); @@ -417,9 +429,9 @@ public class PCEPValidatorTest { final List innerNot1 = Lists.newArrayList(); innerNot1.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcntf.message.pcntf.message.notifications.NotificationsBuilder().setCNotification( - cn1).build()); + cn1).build()); innerNot1.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcntf.message.pcntf.message.notifications.NotificationsBuilder().setCNotification( - cn1).build()); + cn1).build()); final List rps1 = Lists.newArrayList(); rps1.add(new RpsBuilder().setRp(this.rpFalse).build()); rps1.add(new RpsBuilder().setRp(this.rpFalse).build()); @@ -430,7 +442,7 @@ public class PCEPValidatorTest { builder.setNotifications(nots); assertEquals(new PcntfBuilder().setPcntfMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); + result.readableBytes() - 4), Collections. emptyList())); final ByteBuf buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcntfBuilder().setPcntfMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); @@ -438,19 +450,19 @@ public class PCEPValidatorTest { @Test public void testErrorMsg() throws IOException, PCEPDeserializerException { - final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCErr.5.bin")); + ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCErr.5.bin")); - final ErrorObject error1 = new ErrorObjectBuilder().setIgnore(false).setProcessingRule(false).setType((short) 3).setValue((short) 1).build(); + ErrorObject error1 = new ErrorObjectBuilder().setIgnore(false).setProcessingRule(false).setType((short) 3).setValue((short) 1).build(); final PCEPErrorMessageParser parser = new PCEPErrorMessageParser(this.ctx.getObjectHandlerRegistry()); - List innerErr = Lists.newArrayList(); + List innerErr = new ArrayList<>(); final PcerrMessageBuilder builder = new PcerrMessageBuilder(); final List rps = Lists.newArrayList(); rps.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.request._case.request.RpsBuilder().setRp( - this.rpFalse).build()); + this.rpFalse).build()); innerErr.add(new ErrorsBuilder().setErrorObject(error1).build()); @@ -458,8 +470,24 @@ public class PCEPValidatorTest { builder.setErrorType(new RequestCaseBuilder().setRequest(new RequestBuilder().setRps(rps).build()).build()); assertEquals(new PcerrBuilder().setPcerrMessage(builder.build()).build(), parser.parseMessage(result.slice(4, - result.readableBytes() - 4), Collections. emptyList())); - final ByteBuf buf = Unpooled.buffer(result.readableBytes()); + result.readableBytes() - 4), Collections. emptyList())); + ByteBuf buf = Unpooled.buffer(result.readableBytes()); + parser.serializeMessage(new PcerrBuilder().setPcerrMessage(builder.build()).build(), buf); + assertArrayEquals(result.array(), buf.array()); + + result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCErr.3.bin")); + + error1 = new ErrorObjectBuilder().setIgnore(false).setProcessingRule(false).setType((short) 3).setValue((short) 1).build(); + + innerErr = new ArrayList<>(); + innerErr.add(new ErrorsBuilder().setErrorObject(error1).build()); + + builder.setErrors(innerErr); + builder.setErrorType(new SessionCaseBuilder().setSession(new SessionBuilder().setOpen(this.open).build()).build()); + + assertEquals(new PcerrBuilder().setPcerrMessage(builder.build()).build(), parser.parseMessage(result.slice(4, + result.readableBytes() - 4), Collections. emptyList())); + buf = Unpooled.buffer(result.readableBytes()); parser.serializeMessage(new PcerrBuilder().setPcerrMessage(builder.build()).build(), buf); assertArrayEquals(result.array(), buf.array()); } diff --git a/pcep/ietf-stateful07/src/test/resources/PCErr.3.bin b/pcep/impl/src/test/resources/PCErr.3.bin similarity index 100% rename from pcep/ietf-stateful07/src/test/resources/PCErr.3.bin rename to pcep/impl/src/test/resources/PCErr.3.bin -- 2.36.6