BUG-50 : fixed several bugs in parsing. 61/2861/1
authorDana Kutenicsova <dkutenic@cisco.com>
Tue, 19 Nov 2013 10:47:58 +0000 (11:47 +0100)
committerDana Kutenicsova <dkutenic@cisco.com>
Tue, 19 Nov 2013 10:48:30 +0000 (11:48 +0100)
Change-Id: Ibf7836d1909c44c7efb4defdc7912fdaf4ec86f4
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
14 files changed:
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPErrorMessageParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPNotificationMessageParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPReplyMessageParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPReportMessageParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPUpdateRequestMessageParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PcinitiateMessageParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/AbstractRROWithSubobjectsParser.java
pcep/impl/src/test/java/org/opendaylight/protocol/pcep/impl/PCEPValidatorTest.java
pcep/impl/src/test/resources/PCErr.3.bin
pcep/impl/src/test/resources/PCRpt.2.bin
pcep/impl/src/test/resources/PCRpt.3.bin
pcep/impl/src/test/resources/PCRpt.5.bin
pcep/impl/src/test/resources/PCUpd.2.bin
pcep/impl/src/test/resources/PCUpd.5.bin

index e2abbb24995d7020fa8d2be6b66d5f1ad224a799..3091a9c7a841021f2e2aa10d2e884c3f95435f35 100644 (file)
@@ -102,13 +102,29 @@ public class PCEPErrorMessageParser extends AbstractMessageParser {
                        throw new IllegalArgumentException("Passed list can't be null.");
                }
 
-               Open openObj = null;
                final List<Rps> requestParameters = Lists.newArrayList();
                final List<Errors> errorObjects = Lists.newArrayList();
                final PcerrMessageBuilder b = new PcerrMessageBuilder();
 
                Object obj;
-               int state = 0;
+               State state = State.Init;
+               obj = objects.get(0);
+
+               if (obj instanceof ErrorObject) {
+                       final ErrorObject o = (ErrorObject) obj;
+                       errorObjects.add(new ErrorsBuilder().setErrorObject(o).build());
+                       state = State.ErrorIn;
+                       objects.remove(0);
+               } else if (obj instanceof Rp) {
+                       final Rp o = ((Rp) obj);
+                       if (o.isProcessingRule()) {
+                               throw new PCEPDocumentedException("Invalid setting of P flag.", PCEPErrors.P_FLAG_NOT_SET);
+                       }
+                       requestParameters.add(new RpsBuilder().setRp(o).build());
+                       state = State.RpIn;
+                       objects.remove(0);
+               }
+
                while (!objects.isEmpty()) {
                        obj = objects.get(0);
 
@@ -116,66 +132,51 @@ public class PCEPErrorMessageParser extends AbstractMessageParser {
                                return new PcerrBuilder().setPcerrMessage(b.setErrors(((UnknownObject) obj).getErrors()).build()).build();
                        }
 
-                       if (state == 0) {
-                               if (obj instanceof ErrorObject) {
-                                       final ErrorObject o = (ErrorObject) obj;
-                                       errorObjects.add(new ErrorsBuilder().setErrorObject(o).build());
-                                       state = 1;
-                                       objects.remove(0);
-                                       continue;
-                               } else if (obj instanceof Rp) {
-                                       final Rp o = ((Rp) obj);
-                                       if (o.isProcessingRule()) {
-                                               throw new PCEPDocumentedException("Invalid setting of P flag.", PCEPErrors.P_FLAG_NOT_SET);
-                                       }
-                                       requestParameters.add(new RpsBuilder().setRp(o).build());
-                                       state = 2;
-                                       objects.remove(0);
-                                       continue;
-                               }
-                       }
-
                        switch (state) {
-                       case 1:
+                       case ErrorIn:
+                               state = State.Open;
                                if (obj instanceof ErrorObject) {
                                        final ErrorObject o = (ErrorObject) obj;
                                        errorObjects.add(new ErrorsBuilder().setErrorObject(o).build());
-                                       state = 1;
+                                       state = State.ErrorIn;
                                        break;
                                }
-                               state = 3;
-                       case 2:
+                       case RpIn:
+                               state = State.Error;
                                if (obj instanceof Rp) {
                                        final Rp o = ((Rp) obj);
                                        if (o.isProcessingRule()) {
                                                throw new PCEPDocumentedException("Invalid setting of P flag.", PCEPErrors.P_FLAG_NOT_SET);
                                        }
                                        requestParameters.add(new RpsBuilder().setRp(o).build());
-                                       state = 2;
+                                       state = State.RpIn;
                                        break;
                                }
-                               state = 4;
-                       case 3:
+                       case Open:
+                               state = State.OpenIn;
                                if (obj instanceof Open) {
-                                       openObj = (Open) obj;
-                                       state = 5;
+                                       b.setErrorType(new SessionBuilder().setOpen((Open) obj).build());
                                        break;
                                }
-                       case 4:
+                       case Error:
+                               state = State.OpenIn;
                                if (obj instanceof ErrorObject) {
                                        final ErrorObject o = (ErrorObject) obj;
                                        errorObjects.add(new ErrorsBuilder().setErrorObject(o).build());
-                                       state = 4;
-                                       break;
-                               }
-                               state = 5;
-
-                               if (state == 5) {
+                                       state = State.Error;
                                        break;
                                }
+                       case OpenIn:
+                               state = State.End;
+                               break;
+                       case End:
+                               break;
+                       default:
+                               break;
+                       }
+                       if (!state.equals(State.End)) {
+                               objects.remove(0);
                        }
-
-                       objects.remove(0);
                }
 
                if (errorObjects.isEmpty() && errorObjects.isEmpty()) {
@@ -185,16 +186,17 @@ public class PCEPErrorMessageParser extends AbstractMessageParser {
                if (!objects.isEmpty()) {
                        throw new PCEPDeserializerException("Unprocessed Objects: " + objects);
                }
-               if (requestParameters != null) {
+               if (requestParameters != null && !requestParameters.isEmpty()) {
                        b.setErrorType(new RequestBuilder().setRps(requestParameters).build());
                }
-               if (openObj != null) {
-                       b.setErrorType(new SessionBuilder().setOpen(openObj).build());
-               }
 
                return new PcerrBuilder().setPcerrMessage(b.setErrors(errorObjects).build()).build();
        }
 
+       private enum State {
+               Init, ErrorIn, RpIn, Open, Error, OpenIn, End
+       }
+
        @Override
        public int getMessageType() {
                return TYPE;
index 760b1a5e5c5911680d20aa7c237f2b4388bb8724..248869dcf91814f154c28a0d45854ed21857e7b0 100644 (file)
@@ -126,8 +126,8 @@ public class PCEPNotificationMessageParser extends AbstractMessageParser {
                final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcntf.message.pcntf.message.notifications.Notifications> notifications = Lists.newArrayList();
                Object obj;
 
-               int state = 1;
-               while (!objects.isEmpty()) {
+               State state = State.Init;
+               while (!objects.isEmpty() && !state.equals(State.End)) {
                        obj = objects.get(0);
 
                        if (obj instanceof UnknownObject) {
@@ -135,32 +135,34 @@ public class PCEPNotificationMessageParser extends AbstractMessageParser {
                        }
 
                        switch (state) {
-                       case 1:
-                               state = 2;
+                       case Init:
+                               state = State.RpIn;
                                if (obj instanceof Rp) {
                                        final Rp rp = (Rp) obj;
                                        if (rp.isProcessingRule()) {
                                                throw new PCEPDocumentedException("Invalid setting of P flag.", PCEPErrors.P_FLAG_NOT_SET);
                                        }
                                        requestParameters.add(new RpsBuilder().setRp(rp).build());
-                                       state = 1;
+                                       state = State.Init;
                                        break;
                                }
-                       case 2:
+                       case RpIn:
+                               state = State.NotificationIn;
                                if (obj instanceof CNotification) {
                                        final CNotification n = (CNotification) obj;
                                        notifications.add(new NotificationsBuilder().setCNotification(n).build());
-                                       state = 2;
+                                       state = State.RpIn;
                                        break;
                                }
-                               state = 3;
-                       }
-
-                       if (state == 3) {
+                       case NotificationIn:
+                               state = State.End;
+                               break;
+                       case End:
                                break;
                        }
-
-                       objects.remove(obj);
+                       if (!state.equals(State.End)) {
+                               objects.remove(0);
+                       }
                }
 
                if (notifications.isEmpty()) {
@@ -171,6 +173,10 @@ public class PCEPNotificationMessageParser extends AbstractMessageParser {
                                notifications).setRps(requestParameters).build();
        }
 
+       private enum State {
+               Init, RpIn, NotificationIn, End
+       }
+
        @Override
        public int getMessageType() {
                return TYPE;
index bee6a16717dc983d8c6f0457b16216d941f890a1..3ef912b51df8aba6e156259eb198e43837c15197 100644 (file)
@@ -189,7 +189,7 @@ public class PCEPReplyMessageParser extends AbstractMessageParser {
 
                Object obj;
                State state = State.Init;
-               while (!objects.isEmpty()) {
+               while (!objects.isEmpty() && !state.equals(State.End)) {
                        obj = objects.get(0);
 
                        switch (state) {
@@ -213,17 +213,22 @@ public class PCEPReplyMessageParser extends AbstractMessageParser {
                                        break;
                                }
                        case MetricIn:
-                               state = State.End;
+                               state = State.IroIn;
                                if (obj instanceof Iro) {
                                        builder.setIro((Iro) obj);
                                        break;
                                }
+                       case IroIn:
+                               state = State.End;
+                               break;
                        case End:
                                break;
                        default:
                                throw new PCEPDocumentedException("Unknown object", ((UnknownObject) obj).getError());
                        }
-                       objects.remove(0);
+                       if (!state.equals(State.End)) {
+                               objects.remove(0);
+                       }
                }
                builder.setMetrics(pathMetrics);
        }
@@ -233,7 +238,7 @@ public class PCEPReplyMessageParser extends AbstractMessageParser {
 
                Object obj;
                State state = State.Init;
-               while (!objects.isEmpty()) {
+               while (!objects.isEmpty() && !state.equals(State.End)) {
                        obj = objects.get(0);
 
                        switch (state) {
@@ -263,23 +268,28 @@ public class PCEPReplyMessageParser extends AbstractMessageParser {
                                        break;
                                }
                        case MetricIn:
-                               state = State.End;
+                               state = State.IroIn;
                                if (obj instanceof Iro) {
                                        builder.setIro((Iro) obj);
                                        break;
                                }
+                       case IroIn:
+                               state = State.End;
+                               break;
                        case End:
                                break;
                        default:
                                throw new PCEPDocumentedException("Unknown object", ((UnknownObject) obj).getError());
                        }
-                       objects.remove(0);
+                       if (!state.equals(State.End)) {
+                               objects.remove(0);
+                       }
                }
                builder.setMetrics(pathMetrics);
        }
 
        private enum State {
-               Init, LspaIn, OfIn, BandwidthIn, MetricIn, End
+               Init, LspaIn, OfIn, BandwidthIn, MetricIn, IroIn, End
        }
 
        @Override
index 998bca0d5d7a6b3b1ba7d971e986f8c0b64cf2c4..66a9f725b752d44066317a9a3bdefba2a8836f13 100644 (file)
@@ -67,6 +67,9 @@ public class PCEPReportMessageParser extends AbstractMessageParser {
                                if (p.getEro() != null) {
                                        buffer.writeBytes(serializeObject(p.getEro()));
                                }
+                               if (p.getLspa() != null) {
+                                       buffer.writeBytes(serializeObject(p.getLspa()));
+                               }
                                if (p.getBandwidth() != null) {
                                        buffer.writeBytes(serializeObject(p.getBandwidth()));
                                }
@@ -98,16 +101,17 @@ public class PCEPReportMessageParser extends AbstractMessageParser {
                }
        }
 
-       public Pcrpt validate(final List<Object> objects) throws PCEPDeserializerException, PCEPDocumentedException {
+       public Message validate(final List<Object> objects) throws PCEPDeserializerException, PCEPDocumentedException {
                if (objects == null) {
                        throw new IllegalArgumentException("Passed list can't be null.");
                }
-
                final List<Reports> reports = Lists.newArrayList();
 
                while (!objects.isEmpty()) {
                        final Reports report = getValidReports(objects);
-                       reports.add(report);
+                       if (reports != null) {
+                               reports.add(report);
+                       }
                }
 
                if (!objects.isEmpty()) {
@@ -143,9 +147,8 @@ public class PCEPReportMessageParser extends AbstractMessageParser {
                final List<Metrics> pathMetrics = Lists.newArrayList();
                Object obj;
                State state = State.Init;
-               while (!objects.isEmpty()) {
+               while (!objects.isEmpty() && !state.equals(State.End)) {
                        obj = objects.get(0);
-
                        switch (state) {
                        case Init:
                                state = State.EroIn;
@@ -179,11 +182,14 @@ public class PCEPReportMessageParser extends AbstractMessageParser {
                                        break;
                                }
                        case IroIn:
-                               state = State.End;
+                               state = State.RroIn;
                                if (obj instanceof Rro) {
                                        builder.setRro((Rro) obj);
                                        break;
                                }
+                       case RroIn:
+                               state = State.End;
+                               break;
                        case End:
                                break;
                        default:
@@ -191,12 +197,17 @@ public class PCEPReportMessageParser extends AbstractMessageParser {
                                        throw new PCEPDocumentedException("Unknown object", ((UnknownObject) obj).getError());
                                }
                        }
-                       objects.remove(0);
+                       if (!state.equals(State.End)) {
+                               objects.remove(0);
+                       }
+               }
+               if (!pathMetrics.isEmpty()) {
+                       builder.setMetrics(pathMetrics);
                }
        }
 
        private enum State {
-               Init, SrpIn, LspIn, EroIn, LspaIn, BandwidthIn, MetricIn, IroIn, End
+               Init, EroIn, LspaIn, BandwidthIn, MetricIn, IroIn, RroIn, End
        }
 
        @Override
index cda985260b8412f17d3e1032f3a1553fa96a1681..d8f636938a84bed0a35f3ce039f7146081545312 100644 (file)
@@ -61,17 +61,22 @@ public class PCEPUpdateRequestMessageParser extends AbstractMessageParser {
                        buffer.writeBytes(serializeObject(update.getSrp()));
                        buffer.writeBytes(serializeObject(update.getLsp()));
                        final Path p = update.getPath();
-                       buffer.writeBytes(serializeObject(p.getEro()));
-                       if (p.getBandwidth() != null) {
-                               buffer.writeBytes(serializeObject(p.getBandwidth()));
-                       }
-                       if (p.getMetrics() != null && !p.getMetrics().isEmpty()) {
-                               for (final Metrics m : p.getMetrics()) {
-                                       buffer.writeBytes(serializeObject(m.getMetric()));
+                       if (p != null) {
+                               buffer.writeBytes(serializeObject(p.getEro()));
+                               if (p.getLspa() != null) {
+                                       buffer.writeBytes(serializeObject(p.getLspa()));
+                               }
+                               if (p.getBandwidth() != null) {
+                                       buffer.writeBytes(serializeObject(p.getBandwidth()));
+                               }
+                               if (p.getMetrics() != null && !p.getMetrics().isEmpty()) {
+                                       for (final Metrics m : p.getMetrics()) {
+                                               buffer.writeBytes(serializeObject(m.getMetric()));
+                                       }
+                               }
+                               if (p.getIro() != null) {
+                                       buffer.writeBytes(serializeObject(p.getIro()));
                                }
-                       }
-                       if (p.getIro() != null) {
-                               buffer.writeBytes(serializeObject(p.getIro()));
                        }
                }
        }
@@ -96,69 +101,83 @@ public class PCEPUpdateRequestMessageParser extends AbstractMessageParser {
                final List<Updates> updateRequests = Lists.newArrayList();
 
                while (!objects.isEmpty()) {
-                       final Updates update = this.getValidUpdates(objects);
+                       final Updates update = getValidUpdates(objects);
                        if (update != null) {
                                updateRequests.add(update);
                        }
-                       if (objects.isEmpty()) {
-                               break;
+               }
+               if (!objects.isEmpty()) {
+                       if (objects.get(0) instanceof UnknownObject) {
+                               throw new PCEPDocumentedException("Unknown object encountered", ((UnknownObject) objects.get(0)).getError());
                        }
+                       throw new PCEPDeserializerException("Unprocessed Objects: " + objects);
                }
                return new PcupdBuilder().setPcupdMessage(new PcupdMessageBuilder().setUpdates(updateRequests).build()).build();
        }
 
        private Updates getValidUpdates(final List<Object> objects) throws PCEPDocumentedException {
-               if (!(objects.get(0) instanceof Srp)) {
+               final UpdatesBuilder builder = new UpdatesBuilder();
+               if (objects.get(0) instanceof Srp) {
+                       builder.setSrp((Srp) objects.get(0));
+                       objects.remove(0);
+               } else {
                        throw new PCEPDocumentedException("Srp object missing.", PCEPErrors.SRP_MISSING);
                }
-               final Srp srp = (Srp) objects.get(0);
-               objects.remove(0);
-               if (!(objects.get(0) instanceof Lsp)) {
+               if (objects.get(0) instanceof Lsp) {
+                       builder.setLsp((Lsp) objects.get(0));
+                       objects.remove(0);
+               } else {
                        throw new PCEPDocumentedException("Lsp object missing.", PCEPErrors.LSP_MISSING);
                }
-               final Lsp lsp = (Lsp) objects.get(0);
-               objects.remove(0);
-               if (!(objects.get(0) instanceof Ero)) {
-                       throw new PCEPDocumentedException("Ero object missing.", PCEPErrors.ERO_MISSING);
+               if (!objects.isEmpty()) {
+                       final PathBuilder pBuilder = new PathBuilder();
+                       if (objects.get(0) instanceof Ero) {
+                               pBuilder.setEro((Ero) objects.get(0));
+                               objects.remove(0);
+                       } else {
+                               throw new PCEPDocumentedException("Ero object missing.", PCEPErrors.ERO_MISSING);
+                       }
+                       parsePath(objects, pBuilder);
+                       builder.setPath(pBuilder.build());
                }
-               final Ero ero = (Ero) objects.get(0);
-               objects.remove(0);
+               return builder.build();
+       }
 
-               Lspa pathLspa = null;
-               Bandwidth pathBandwidth = null;
-               Iro pathIro = null;
+       private void parsePath(final List<Object> objects, final PathBuilder pBuilder) throws PCEPDocumentedException {
                final List<Metrics> pathMetrics = Lists.newArrayList();
-
                Object obj;
                State state = State.Init;
-               while (!objects.isEmpty()) {
+               while (!objects.isEmpty() && !state.equals(State.End)) {
                        obj = objects.get(0);
                        switch (state) {
-                       case LspaIn:
-                               state = State.BandwidthIn;
+                       case Init:
+                               state = State.LspaIn;
                                if (obj instanceof Lspa) {
-                                       pathLspa = (Lspa) obj;
+                                       pBuilder.setLspa((Lspa) obj);
                                        break;
                                }
-                       case BandwidthIn:
-                               state = State.MetricIn;
+                       case LspaIn:
+                               state = State.BandwidthIn;
                                if (obj instanceof Bandwidth) {
-                                       pathBandwidth = (Bandwidth) obj;
+                                       pBuilder.setBandwidth((Bandwidth) obj);
                                        break;
                                }
-                       case MetricIn:
-                               state = State.IroIn;
+                       case BandwidthIn:
+                               state = State.MetricIn;
                                if (obj instanceof Metric) {
                                        pathMetrics.add(new MetricsBuilder().setMetric((Metric) obj).build());
                                        state = State.BandwidthIn;
                                        break;
                                }
-                       case IroIn:
-                               state = State.End;
+                       case MetricIn:
+                               state = State.IroIn;
                                if (obj instanceof Iro) {
-                                       pathIro = (Iro) obj;
+                                       pBuilder.setIro((Iro) obj);
                                        break;
                                }
+                       case IroIn:
+                               state = State.End;
+                               break;
                        case End:
                                break;
                        default:
@@ -166,15 +185,13 @@ public class PCEPUpdateRequestMessageParser extends AbstractMessageParser {
                                        throw new PCEPDocumentedException("Unknown object", ((UnknownObject) obj).getError());
                                }
                        }
-                       objects.remove(0);
+                       if (!state.equals(State.End)) {
+                               objects.remove(0);
+                       }
+               }
+               if (!pathMetrics.isEmpty()) {
+                       pBuilder.setMetrics(pathMetrics);
                }
-               final PathBuilder builder = new PathBuilder();
-               builder.setEro(ero);
-               builder.setLspa(pathLspa);
-               builder.setBandwidth(pathBandwidth);
-               builder.setMetrics(pathMetrics);
-               builder.setIro(pathIro);
-               return new UpdatesBuilder().setSrp(srp).setLsp(lsp).setPath(builder.build()).build();
        }
 
        private enum State {
index 51ec4dcadd55bac607e841b657fc8871b48de972..544b1dc0596bacf4055f4f4a9788c0a7153ccae0 100644 (file)
@@ -133,7 +133,7 @@ public class PcinitiateMessageParser extends AbstractMessageParser {
 
                Object obj;
                State state = State.Init;
-               while (!objects.isEmpty()) {
+               while (!objects.isEmpty() && !state.equals(State.End)) {
                        obj = objects.get(0);
 
                        switch (state) {
@@ -169,24 +169,29 @@ public class PcinitiateMessageParser extends AbstractMessageParser {
                                        break;
                                }
                        case MetricIn:
-                               state = State.End;
+                               state = State.IroIn;
                                if (obj instanceof Iro) {
                                        builder.setIro((Iro) obj);
                                        break;
                                }
+                       case IroIn:
+                               state = State.End;
+                               break;
                        case End:
                                break;
                        default:
                                throw new PCEPDocumentedException("Unknown object", ((UnknownObject) obj).getError());
                        }
-                       objects.remove(0);
+                       if (!state.equals(State.End)) {
+                               objects.remove(0);
+                       }
                }
                builder.setMetrics(metrics);
                return builder.build();
        }
 
        private enum State {
-               Init, EndpointsIn, EroIn, LspaIn, BandwidthIn, MetricIn, End
+               Init, EndpointsIn, EroIn, LspaIn, BandwidthIn, MetricIn, IroIn, End
        }
 
        @Override
index 7aea374909d573786253aadb56c6e5a7a0f57072..57755d97a8b749ac726a3cd76cb04cd16ae5a552 100644 (file)
@@ -21,6 +21,7 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
+import com.google.common.primitives.UnsignedBytes;
 
 public abstract class AbstractRROWithSubobjectsParser implements ObjectParser, ObjectSerializer {
 
@@ -92,8 +93,8 @@ public abstract class AbstractRROWithSubobjectsParser implements ObjectParser, O
 
                        final byte[] bytes = new byte[SUB_HEADER_LENGTH + valueBytes.length];
 
-                       final byte typeBytes = (ByteArray.cutBytes(ByteArray.intToBytes(serializer.getType()), (Integer.SIZE / 8) - 1)[0]);
-                       final byte lengthBytes = ByteArray.cutBytes(ByteArray.intToBytes(valueBytes.length), (Integer.SIZE / 8) - 1)[0];
+                       final byte typeBytes = UnsignedBytes.checkedCast(serializer.getType());
+                       final byte lengthBytes = UnsignedBytes.checkedCast(valueBytes.length + SUB_HEADER_LENGTH);
 
                        bytes[0] = typeBytes;
                        bytes[1] = lengthBytes;
index 5351905f431a29ba6b798bf9b4306940490b663c..b24083a3b3d56d4796083106b6f2db8c31603f94 100644 (file)
@@ -27,6 +27,7 @@ import org.opendaylight.protocol.pcep.impl.message.PCEPNotificationMessageParser
 import org.opendaylight.protocol.pcep.impl.message.PCEPOpenMessageParser;
 import org.opendaylight.protocol.pcep.impl.message.PCEPReplyMessageParser;
 import org.opendaylight.protocol.pcep.impl.message.PCEPReportMessageParser;
+import org.opendaylight.protocol.pcep.impl.message.PCEPUpdateRequestMessageParser;
 import org.opendaylight.protocol.pcep.impl.message.PcinitiateMessageParser;
 import org.opendaylight.protocol.pcep.spi.ObjectHandlerRegistry;
 import org.opendaylight.protocol.pcep.spi.pojo.PCEPExtensionProviderContextImpl;
@@ -40,6 +41,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.mes
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.PcntfBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.PcrepBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.PcrptBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.PcupdBuilder;
 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.PlspId;
@@ -99,6 +101,12 @@ 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.pcrpt.message.PcrptMessageBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrpt.message.pcrpt.message.Reports;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrpt.message.pcrpt.message.ReportsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrpt.message.pcrpt.message.reports.PathBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcupd.message.PcupdMessageBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcupd.message.pcupd.message.Updates;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcupd.message.pcupd.message.UpdatesBuilder;
+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.pcep.types.rev131005.rp.object.Rp;
 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.Srp;
@@ -109,6 +117,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.AttributeFilter;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.basic.explicit.route.subobjects.subobject.type.AsNumber;
 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.record.route.subobjects.subobject.type.Unnumbered;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.record.route.subobjects.subobject.type.UnnumberedBuilder;
 
 import com.google.common.collect.Lists;
 
@@ -124,11 +134,13 @@ public class PCEPValidatorTest {
        private Metrics metrics;
        private Iro iro;
        private Ero ero;
+       private Rro rro;
        private Of of;
        private Srp srp;
        private Lsp lsp;
 
        private AsNumber eroASSubobject;
+       private Unnumbered rroUnnumberedSub;
 
        @Before
        public void setUp() throws Exception {
@@ -152,8 +164,8 @@ public class PCEPValidatorTest {
                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) 0);
-               openBuilder.setKeepalive((short) 0);
+               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());
@@ -195,6 +207,8 @@ public class PCEPValidatorTest {
                this.eroASSubobject = new AsNumberBuilder().setAsNumber(
                                new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber(0xFFFFL)).build();
 
+               this.rroUnnumberedSub = new UnnumberedBuilder().setRouterId(0x00112233L).setInterfaceId(0x00ff00ffL).build();
+
                final IroBuilder iroBuilder = new IroBuilder();
                iroBuilder.setIgnore(false);
                iroBuilder.setProcessingRule(false);
@@ -212,6 +226,15 @@ public class PCEPValidatorTest {
                eroBuilder.setSubobjects(eroSubs);
                this.ero = eroBuilder.build();
 
+               final RroBuilder rroBuilder = new RroBuilder();
+               rroBuilder.setIgnore(false);
+               rroBuilder.setProcessingRule(false);
+               final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reported.route.object.rro.Subobjects> rroSubs = Lists.newArrayList();
+               rroSubs.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reported.route.object.rro.SubobjectsBuilder().setSubobjectType(
+                               this.rroUnnumberedSub).setProtectionAvailable(false).setProtectionInUse(false).build());
+               rroBuilder.setSubobjects(rroSubs);
+               this.rro = rroBuilder.build();
+
                final OfBuilder ofBuilder = new OfBuilder();
                ofBuilder.setIgnore(false);
                ofBuilder.setProcessingRule(false);
@@ -237,35 +260,6 @@ public class PCEPValidatorTest {
                this.lsp = lspBuilder.build();
        }
 
-       // private static final LspaObject lspa = new PCEPLspaObject(0L, 0L, 0L, (short) 0, (short) 0, false, false, false,
-       // false);
-       //
-       // private final List<ExplicitRouteSubobject> eroSubobjects = asList(
-       // new EROAsNumberSubobject(new AsNumber(0xFFFFL), false),
-       // new EROUnnumberedInterfaceSubobject(new IPv4Address(new byte[] { (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte)
-       // 0x33 }), new UnnumberedInterfaceIdentifier(0x00FF00FF), false));
-       //
-       // private final List<ReportedRouteSubobject> rroSubobjects = asList((ReportedRouteSubobject) new
-       // RROUnnumberedInterfaceSubobject(new IPv4Address(new byte[] {
-       // (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33 }), new UnnumberedInterfaceIdentifier(0x00FF00FF)));
-       //
-       // private final List<Long> requestIds = asList(0x000001L);
-       //
-       // private final IPv4Address ip4addr = new IPv4Address(new byte[] { (byte) 0xFF, 0x00, 0x00, 0x01 });
-       //
-       // private final PCEPSvecObject svecObj = new PCEPSvecObject(true, true, true, false, false,
-       // PCEPValidatorTest.this.requestIds, true);
-       //
-       // private final PCEPRequestParameterObject requestParameter = new PCEPRequestParameterObject(true, false, false,
-       // false, false, false, false, false, (short) 3, 1, true, false);
-       //
-       // // private final PCEPEndPointsObject<IPv4Address> endPoints = new
-       // // PCEPEndPointsObject<IPv4Address>(this.ip4addr, this.ip4addr);
-       //
-       // private final PCEPEndPointsObject<IPv4Address> endPoints = new PCEPEndPointsObject<IPv4Address>(this.ip4addr,
-       // this.ip4addr);
-       //
-
        @Test
        public void testOpenMsg() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
                final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPOpenMessage1.bin");
@@ -618,189 +612,102 @@ public class PCEPValidatorTest {
                assertArrayEquals(result, buf.array());
        }
 
-       //
-       // @Test
-       // public void testUpdMessageValidatorFromBin() throws IOException, PCEPDeserializerException,
-       // PCEPDocumentedException,
-       // DeserializerException, DocumentedException {
-       // List<Message> specMessages = Lists.newArrayList();
-       //
-       // List<CompositeUpdateRequestObject> requests = new ArrayList<CompositeUpdateRequestObject>();
-       // requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true)));
-       //
-       // specMessages.add(new PCEPUpdateRequestMessage(requests));
-       // assertEquals(deserMsg("src/test/resources/PCUpd.1.bin").toString(), specMessages.toString());
-       //
-       // specMessages = Lists.newArrayList();
-       // List<CompositeUpdPathObject> paths = new ArrayList<CompositeUpdPathObject>();
-       // paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false),
-       // PCEPValidatorTest.lspa, null, null));
-       // requests = new ArrayList<CompositeUpdateRequestObject>();
-       // requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true), paths));
-       // specMessages.add(new PCEPUpdateRequestMessage(requests));
-       // assertEquals(deserMsg("src/test/resources/PCUpd.2.bin").toString(), specMessages.toString());
-       //
-       // specMessages = Lists.newArrayList();
-       // paths = new ArrayList<CompositeUpdPathObject>();
-       // paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false),
-       // PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(ByteArray.floatToBytes(5353)), false,
-       // false), new ArrayList<PCEPMetricObject>() {
-       // private static final long serialVersionUID = 1L;
-       //
-       // {
-       // this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
-       // }
-       // }));
-       // requests = new ArrayList<CompositeUpdateRequestObject>();
-       // requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true), paths));
-       // specMessages.add(new PCEPUpdateRequestMessage(requests));
-       // assertEquals(deserMsg("src/test/resources/PCUpd.3.bin").toString(), specMessages.toString());
-       //
-       // specMessages = Lists.newArrayList();
-       // requests = new ArrayList<CompositeUpdateRequestObject>();
-       // requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true)));
-       // requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true)));
-       // specMessages.add(new PCEPUpdateRequestMessage(requests));
-       // assertEquals(deserMsg("src/test/resources/PCUpd.4.bin").toString(), specMessages.toString());
-       //
-       // specMessages = Lists.newArrayList();
-       // requests = new ArrayList<CompositeUpdateRequestObject>();
-       // requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true)));
-       // paths = new ArrayList<CompositeUpdPathObject>();
-       // paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false),
-       // PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(ByteArray.floatToBytes(5353)), false,
-       // false), new ArrayList<PCEPMetricObject>() {
-       // private static final long serialVersionUID = 1L;
-       //
-       // {
-       // this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
-       // }
-       // }));
-       // requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true), paths));
-       // paths = new ArrayList<CompositeUpdPathObject>();
-       // paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false),
-       // PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(ByteArray.floatToBytes(5353)), false,
-       // false), new ArrayList<PCEPMetricObject>() {
-       // private static final long serialVersionUID = 1L;
-       //
-       // {
-       // this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
-       // }
-       // }));
-       // paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false),
-       // PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(ByteArray.floatToBytes(5353)), false,
-       // false), new ArrayList<PCEPMetricObject>() {
-       // private static final long serialVersionUID = 1L;
-       //
-       // {
-       // this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
-       // }
-       // }));
-       // paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false),
-       // PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(ByteArray.floatToBytes(5353)), false,
-       // false), new ArrayList<PCEPMetricObject>() {
-       // private static final long serialVersionUID = 1L;
-       //
-       // {
-       // this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
-       // this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
-       // }
-       // }));
-       // requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true), paths));
-       // specMessages.add(new PCEPUpdateRequestMessage(requests));
-       // assertEquals(deserMsg("src/test/resources/PCUpd.5.bin").toString(), specMessages.toString());
-       // }
-       //
+       @Test
+       public void testUpdMsg() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
+               byte[] result = ByteArray.fileToBytes("src/test/resources/PCUpd.2.bin");
+
+               final PCEPUpdateRequestMessageParser parser = new PCEPUpdateRequestMessageParser(this.objectRegistry);
+
+               final PcupdMessageBuilder builder = new PcupdMessageBuilder();
+
+               final List<Updates> updates = Lists.newArrayList();
+               final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcupd.message.pcupd.message.updates.PathBuilder pBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcupd.message.pcupd.message.updates.PathBuilder();
+               pBuilder.setEro(this.ero);
+               pBuilder.setLspa(this.lspa);
+               updates.add(new UpdatesBuilder().setSrp(this.srp).setLsp(this.lsp).setPath(pBuilder.build()).build());
+               builder.setUpdates(updates);
+
+               assertEquals(new PcupdBuilder().setPcupdMessage(builder.build()).build(), parser.parseMessage(result));
+               ByteBuf buf = Unpooled.buffer(result.length);
+               parser.serializeMessage(new PcupdBuilder().setPcupdMessage(builder.build()).build(), buf);
+               assertArrayEquals(result, buf.array());
+
+               result = ByteArray.fileToBytes("src/test/resources/PCUpd.5.bin");
+
+               final List<Updates> updates1 = Lists.newArrayList();
+               final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcupd.message.pcupd.message.updates.PathBuilder pBuilder1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcupd.message.pcupd.message.updates.PathBuilder();
+               pBuilder1.setEro(this.ero);
+               pBuilder1.setLspa(this.lspa);
+               updates1.add(new UpdatesBuilder().setSrp(this.srp).setLsp(this.lsp).setPath(pBuilder.build()).build());
+               updates1.add(new UpdatesBuilder().setSrp(this.srp).setLsp(this.lsp).setPath(pBuilder1.build()).build());
+               builder.setUpdates(updates1);
+
+               assertEquals(new PcupdBuilder().setPcupdMessage(builder.build()).build(), parser.parseMessage(result));
+               buf = Unpooled.buffer(result.length);
+               parser.serializeMessage(new PcupdBuilder().setPcupdMessage(builder.build()).build(), buf);
+               assertArrayEquals(result, buf.array());
+       }
+
        @Test
        public void testRptMsg() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
-               final byte[] result = ByteArray.fileToBytes("src/test/resources/PCRpt.1.bin");
+               byte[] result = ByteArray.fileToBytes("src/test/resources/PCRpt.1.bin");
 
                final PCEPReportMessageParser parser = new PCEPReportMessageParser(this.objectRegistry);
 
                final PcrptMessageBuilder builder = new PcrptMessageBuilder();
+
                final List<Reports> reports = Lists.newArrayList();
                reports.add(new ReportsBuilder().setLsp(this.lsp).build());
                builder.setReports(reports);
 
                assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(), parser.parseMessage(result));
-               final ByteBuf buf = Unpooled.buffer(result.length);
+               ByteBuf buf = Unpooled.buffer(result.length);
+               parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf);
+               assertArrayEquals(result, buf.array());
+
+               result = ByteArray.fileToBytes("src/test/resources/PCRpt.2.bin");
+
+               final List<Reports> reports1 = Lists.newArrayList();
+               reports1.add(new ReportsBuilder().setLsp(this.lsp).setPath(new PathBuilder().setEro(this.ero).setLspa(this.lspa).build()).build());
+               builder.setReports(reports1);
+
+               assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(), parser.parseMessage(result));
+               buf = Unpooled.buffer(result.length);
+               parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf);
+               assertArrayEquals(result, buf.array());
+
+               result = ByteArray.fileToBytes("src/test/resources/PCRpt.3.bin");
+
+               final List<Reports> reports2 = Lists.newArrayList();
+               final PathBuilder pBuilder = new PathBuilder();
+               pBuilder.setEro(this.ero);
+               pBuilder.setLspa(this.lspa);
+               pBuilder.setMetrics(Lists.newArrayList(this.metrics, this.metrics));
+               pBuilder.setRro(this.rro);
+               reports2.add(new ReportsBuilder().setSrp(this.srp).setLsp(this.lsp).setPath(pBuilder.build()).build());
+               builder.setReports(reports2);
+
+               assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(), parser.parseMessage(result));
+               buf = Unpooled.buffer(result.length);
                parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf);
                assertArrayEquals(result, buf.array());
 
-               // specMessages = Lists.newArrayList();
-               // List<CompositeRptPathObject> paths = new ArrayList<CompositeRptPathObject>();
-               // paths.add(new CompositeRptPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false),
-               // PCEPValidatorTest.lspa, null, null, null));
-               // reports = new ArrayList<CompositeStateReportObject>();
-               // reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true), paths));
-               // specMessages.add(new PCEPReportMessage(reports));
-               // assertEquals(deserMsg("src/test/resources/PCRpt.2.bin").toString(), specMessages.toString());
-               //
-               // specMessages = Lists.newArrayList();
-               // paths = new ArrayList<CompositeRptPathObject>();
-               // paths.add(new CompositeRptPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false),
-               // PCEPValidatorTest.lspa, new PCEPExistingPathBandwidthObject(new Bandwidth(ByteArray.floatToBytes(5353)),
-               // false, false), new PCEPReportedRouteObject(this.rroSubobjects, false), new ArrayList<PCEPMetricObject>() {
-               // private static final long serialVersionUID = 1L;
-               //
-               // {
-               // this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
-               // }
-               // }));
-               //
-               // reports = new ArrayList<CompositeStateReportObject>();
-               // reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true), paths));
-               // specMessages.add(new PCEPReportMessage(reports));
-               //
-               // // FIXME
-               // // assertEquals(deserMsg("src/test/resources/PCRpt.3.bin"), specMessages);
-               //
-               // specMessages = Lists.newArrayList();
-               // reports = new ArrayList<CompositeStateReportObject>();
-               // reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true)));
-               // reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true)));
-               // reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true)));
-               // specMessages.add(new PCEPReportMessage(reports));
-               // assertEquals(deserMsg("src/test/resources/PCRpt.4.bin").toString(), specMessages.toString());
-               //
-               // specMessages = Lists.newArrayList();
-               // reports = new ArrayList<CompositeStateReportObject>();
-               // paths = new ArrayList<CompositeRptPathObject>();
-               // paths.add(new CompositeRptPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false),
-               // PCEPValidatorTest.lspa, new PCEPExistingPathBandwidthObject(new Bandwidth(ByteArray.floatToBytes(5353)),
-               // false, false), new PCEPReportedRouteObject(this.rroSubobjects, false), new ArrayList<PCEPMetricObject>() {
-               // private static final long serialVersionUID = 1L;
-               //
-               // {
-               // this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
-               // }
-               // }));
-               // reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true), paths));
-               // paths = new ArrayList<CompositeRptPathObject>();
-               // paths.add(new CompositeRptPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false),
-               // PCEPValidatorTest.lspa, new PCEPExistingPathBandwidthObject(new Bandwidth(ByteArray.floatToBytes(5353)),
-               // false, false), new PCEPReportedRouteObject(this.rroSubobjects, false), new ArrayList<PCEPMetricObject>() {
-               // private static final long serialVersionUID = 1L;
-               //
-               // {
-               // this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
-               // this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
-               // this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
-               // }
-               // }));
-               // paths.add(new CompositeRptPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false),
-               // PCEPValidatorTest.lspa, new PCEPExistingPathBandwidthObject(new Bandwidth(ByteArray.floatToBytes(5353)),
-               // false, false), new PCEPReportedRouteObject(this.rroSubobjects, false), new ArrayList<PCEPMetricObject>() {
-               // private static final long serialVersionUID = 1L;
-               //
-               // {
-               // this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
-               // }
-               // }));
-               // reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true), paths));
-               // specMessages.add(new PCEPReportMessage(reports));
-               // // FIXME
-               // // assertEquals(deserMsg("src/test/resources/PCRpt.5.bin").toString(), specMessages.toString());
+               result = ByteArray.fileToBytes("src/test/resources/PCRpt.5.bin");
+
+               final List<Reports> reports3 = Lists.newArrayList();
+               final PathBuilder pBuilder1 = new PathBuilder();
+               pBuilder1.setEro(this.ero);
+               pBuilder1.setLspa(this.lspa);
+               pBuilder1.setMetrics(Lists.newArrayList(this.metrics, this.metrics));
+               pBuilder1.setRro(this.rro);
+               reports3.add(new ReportsBuilder().setSrp(this.srp).setLsp(this.lsp).setPath(pBuilder.build()).build());
+               reports3.add(new ReportsBuilder().setSrp(this.srp).setLsp(this.lsp).setPath(pBuilder1.build()).build());
+               builder.setReports(reports3);
+
+               assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(), parser.parseMessage(result));
+               buf = Unpooled.buffer(result.length);
+               parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf);
+               assertArrayEquals(result, buf.array());
        }
 
        @Test
@@ -872,6 +779,8 @@ public class PCEPValidatorTest {
 
        @Test
        public void testErrorMsg() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
+               byte[] result = 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 PCEPErrorMessageParser parser = new PCEPErrorMessageParser(this.objectRegistry);
@@ -883,14 +792,12 @@ public class PCEPValidatorTest {
                builder.setErrors(innerErr);
                builder.setErrorType(new SessionBuilder().setOpen(this.open).build());
 
-               final byte[] result = ByteArray.fileToBytes("src/test/resources/PCErr.3.bin");
-
                assertEquals(new PcerrBuilder().setPcerrMessage(builder.build()).build(), parser.parseMessage(result));
                ByteBuf buf = Unpooled.buffer(result.length);
                parser.serializeMessage(new PcerrBuilder().setPcerrMessage(builder.build()).build(), buf);
                assertArrayEquals(result, buf.array());
 
-               final byte[] result1 = ByteArray.fileToBytes("src/test/resources/PCErr.5.bin");
+               result = ByteArray.fileToBytes("src/test/resources/PCErr.5.bin");
 
                final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.request.Rps> 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.RpsBuilder().setRp(
@@ -902,9 +809,9 @@ public class PCEPValidatorTest {
                builder.setErrors(innerErr);
                builder.setErrorType(new RequestBuilder().setRps(rps).build());
 
-               assertEquals(new PcerrBuilder().setPcerrMessage(builder.build()).build(), parser.parseMessage(result1));
-               buf = Unpooled.buffer(result1.length);
+               assertEquals(new PcerrBuilder().setPcerrMessage(builder.build()).build(), parser.parseMessage(result));
+               buf = Unpooled.buffer(result.length);
                parser.serializeMessage(new PcerrBuilder().setPcerrMessage(builder.build()).build(), buf);
-               assertArrayEquals(result1, buf.array());
+               assertArrayEquals(result, buf.array());
        }
 }
index dcbed27d434df4e7d3c4b019dcd01e8ac84df5ad..7b95d6b9f68bc77e605c1bbb56c33fda603c4621 100644 (file)
Binary files a/pcep/impl/src/test/resources/PCErr.3.bin and b/pcep/impl/src/test/resources/PCErr.3.bin differ
index 075677cd6fa53019ea23a9e79aef61bd53700a0a..8057aa3bc4efca45f497fd1f80d8c21527e72cf3 100644 (file)
Binary files a/pcep/impl/src/test/resources/PCRpt.2.bin and b/pcep/impl/src/test/resources/PCRpt.2.bin differ
index 73a405684bf464986aba9f06fac3773dc28dc7ae..94a644384558a708ec51c883057379fedc5d8592 100644 (file)
Binary files a/pcep/impl/src/test/resources/PCRpt.3.bin and b/pcep/impl/src/test/resources/PCRpt.3.bin differ
index 78f259472da807d9baa56b7edfc3f608714e61f8..4ba5c9f437b12a96525282fc0f46c6ab2bb1d275 100644 (file)
Binary files a/pcep/impl/src/test/resources/PCRpt.5.bin and b/pcep/impl/src/test/resources/PCRpt.5.bin differ
index 49716e359a1270edf2c7587c0131d9aa767f998a..dc5a3adcbfacb98853f57c427ebed31f2f28344c 100644 (file)
Binary files a/pcep/impl/src/test/resources/PCUpd.2.bin and b/pcep/impl/src/test/resources/PCUpd.2.bin differ
index 4e2fdb7335dffb12ba3f0a309b083be4d3063472..1b92799235fb8451018b048a4bcc0a51807be0fe 100644 (file)
Binary files a/pcep/impl/src/test/resources/PCUpd.5.bin and b/pcep/impl/src/test/resources/PCUpd.5.bin differ