BUG-50 : added test for Error message. 84/2384/1
authorDana Kutenicsova <dkutenic@cisco.com>
Tue, 5 Nov 2013 12:47:04 +0000 (13:47 +0100)
committerDana Kutenicsova <dkutenic@cisco.com>
Tue, 5 Nov 2013 12:47:04 +0000 (13:47 +0100)
Change-Id: If0339968fdabbc08d061b31f063b855cf7e16a0f
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
pcep/api/src/main/java/org/opendaylight/protocol/pcep/UnknownObject.java
pcep/api/src/main/yang/pcep-types.yang
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/Activator.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/Util.java
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/object/PCEPErrorObjectParser.java
pcep/impl/src/test/java/org/opendaylight/protocol/pcep/impl/PCEPObjectParserTest.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/PCErr.5.bin

index c4877df2afb6860ff6d74098a25c10ccaf1433f2..4e19ee420255da53c3f9ee1cd3a4614f3f69b6cb 100644 (file)
@@ -11,6 +11,7 @@ import java.util.Arrays;
 import java.util.List;
 
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcep.error.object.ErrorObjectBuilder;
 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.yangtools.yang.binding.DataContainer;
@@ -24,7 +25,8 @@ public class UnknownObject implements Object {
        public UnknownObject(final PCEPErrors error) {
                final PCEPErrorMapping mapping = PCEPErrorMapping.getInstance();
                this.e = error;
-               this.error = new ErrorsBuilder().setType(mapping.getFromErrorsEnum(error).type).setValue(mapping.getFromErrorsEnum(error).value).build();
+               this.error = new ErrorsBuilder().setErrorObject(
+                               new ErrorObjectBuilder().setType(mapping.getFromErrorsEnum(error).type).setValue(mapping.getFromErrorsEnum(error).value).build()).build();
        }
 
        public List<Errors> getErrors() {
index f773f7e78b1eb696252034f27d91d73419808eac..8ee8ab7f9ecdc36cfe2f156d42b85274f29c316b 100644 (file)
@@ -721,21 +721,22 @@ module pcep-types {
        grouping pcep-error-object {
                description "PCEP-ERROR Object";
                reference "https://tools.ietf.org/html/rfc5440#section-7.15";
-
-               uses object;
-               container "tlvs" {
-                       when "../type = 7";
-                       uses req-missing-tlv;
-               }
-
-               leaf type {
-                       type uint8;
-                       mandatory true;
-               }
-
-               leaf value {
-                       type uint8;
-                       mandatory true;
+               container error-object {
+                       uses object;
+                       container "tlvs" {
+                               when "../type = 7";
+                               uses req-missing-tlv;
+                       }
+       
+                       leaf type {
+                               type uint8;
+                               mandatory true;
+                       }
+       
+                       leaf value {
+                               type uint8;
+                               mandatory true;
+                       }
                }
        }
 
index 99ed4321b64ff7c4858c314460c87cd44a9e21d5..33c85320fee23e8a001c0dcfaadf621fd2ef6dbc 100644 (file)
@@ -96,7 +96,6 @@ 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.OfObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.OpenMessage;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PathKeyObject;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PcepErrorObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PcerrMessage;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PcinitiateMessage;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PcntfMessage;
@@ -117,6 +116,7 @@ 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.open.object.Open;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.order.tlv.Order;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.overload.duration.tlv.OverloadDuration;
+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.pcrep.message.pcrep.message.replies.result.failure.no.path.tlvs.NoPathVector;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.predundancy.group.id.tlv.PredundancyGroupId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.req.missing.tlv.ReqMissing;
@@ -287,7 +287,7 @@ public final class Activator implements PCEPExtensionProviderActivator {
                context.registerObjectSerializer(IncludeRouteObject.class, new PCEPIncludeRouteObjectParser(eroSubReg));
                context.registerObjectSerializer(SvecObject.class, new PCEPSvecObjectParser(tlvReg));
                context.registerObjectSerializer(CNotification.class, new PCEPNotificationObjectParser(tlvReg));
-               context.registerObjectSerializer(PcepErrorObject.class, new PCEPErrorObjectParser(tlvReg));
+               context.registerObjectSerializer(ErrorObject.class, new PCEPErrorObjectParser(tlvReg));
                context.registerObjectSerializer(LoadBalancingObject.class, new PCEPLoadBalancingObjectParser(tlvReg));
                context.registerObjectSerializer(CClose.class, new PCEPCloseObjectParser(tlvReg));
                context.registerObjectSerializer(PathKeyObject.class, new PCEPPathKeyObjectParser(eroSubReg));
index 1a1ffbeb77e40a3ebb224947b893cbf6735edda4..a839e6484018549277818ca11f3e8086b1a497e6 100644 (file)
@@ -23,9 +23,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.endpoints.AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.endpoints.address.family.Ipv4;
 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.ErrorType;
-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.SessionBuilder;
 
@@ -88,12 +89,14 @@ public final class Util {
                final PcerrBuilder errMessageBuilder = new PcerrBuilder();
                final PCEPErrorMapping mapping = PCEPErrorMapping.getInstance();
                final PCEPErrorIdentifier id = mapping.getFromErrorsEnum(e);
-               final Errors err = new ErrorsBuilder().setType(id.type).setValue(id.value).build();
+               final ErrorObject err = new ErrorObjectBuilder().setType(id.type).setValue(id.value).build();
                if (t == null) {
-                       return errMessageBuilder.setPcerrMessage(new PcerrMessageBuilder().setErrors(Arrays.asList(err)).build()).build();
+                       return errMessageBuilder.setPcerrMessage(
+                                       new PcerrMessageBuilder().setErrors(Arrays.asList(new ErrorsBuilder().setErrorObject(err).build())).build()).build();
                } else {
                        final ErrorType type = new SessionBuilder().setOpen(t).build();
-                       return errMessageBuilder.setPcerrMessage(new PcerrMessageBuilder().setErrors(Arrays.asList(err)).setErrorType(type).build()).build();
+                       return errMessageBuilder.setPcerrMessage(
+                                       new PcerrMessageBuilder().setErrors(Arrays.asList(new ErrorsBuilder().setErrorObject(err).build())).setErrorType(type).build()).build();
                }
        }
 }
index efe4fb1d8b9813e5b4b3f05e1ee165674ab2621b..3f2e9a2a1063e3a3982a78a768cd4daa3869f2dd 100644 (file)
@@ -22,10 +22,10 @@ import org.opendaylight.protocol.pcep.spi.ObjectHandlerRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.PcerrBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.OpenObject;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PcepErrorObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PcerrMessage;
 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;
@@ -70,7 +70,7 @@ public class PCEPErrorMessageParser extends AbstractMessageParser {
                }
 
                for (final Errors e : err.getErrors()) {
-                       buffer.writeBytes(serializeObject(e));
+                       buffer.writeBytes(serializeObject(e.getErrorObject()));
                }
 
                if (err.getErrorType() instanceof Session) {
@@ -79,7 +79,7 @@ public class PCEPErrorMessageParser extends AbstractMessageParser {
        }
 
        @Override
-       public PcerrMessage parseMessage(final byte[] buffer) throws PCEPDeserializerException, PCEPDocumentedException {
+       public Message parseMessage(final byte[] buffer) throws PCEPDeserializerException, PCEPDocumentedException {
                if (buffer == null || buffer.length == 0) {
                        throw new PCEPDeserializerException("Error message is empty.");
                }
@@ -91,8 +91,9 @@ public class PCEPErrorMessageParser extends AbstractMessageParser {
                        final PCEPErrorMapping maping = PCEPErrorMapping.getInstance();
                        return new PcerrBuilder().setPcerrMessage(
                                        new PcerrMessageBuilder().setErrors(
-                                                       Arrays.asList(new ErrorsBuilder().setType(maping.getFromErrorsEnum(e.getError()).type).setValue(
-                                                                       maping.getFromErrorsEnum(e.getError()).value).build())).build()).build();
+                                                       Arrays.asList(new ErrorsBuilder().setErrorObject(
+                                                                       new ErrorObjectBuilder().setType(maping.getFromErrorsEnum(e.getError()).type).setValue(
+                                                                                       maping.getFromErrorsEnum(e.getError()).value).build()).build())).build()).build();
                }
                return m;
        }
@@ -108,7 +109,7 @@ public class PCEPErrorMessageParser extends AbstractMessageParser {
                final PcerrMessageBuilder b = new PcerrMessageBuilder();
 
                Object obj;
-               int state = 1;
+               int state = 0;
                while (!objects.isEmpty()) {
                        obj = objects.get(0);
 
@@ -116,57 +117,63 @@ 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:
-                               if (obj instanceof PcepErrorObject) {
-                                       final PcepErrorObject o = (PcepErrorObject) obj;
-                                       errorObjects.add((Errors) o);
+                               if (obj instanceof ErrorObject) {
+                                       final ErrorObject o = (ErrorObject) obj;
+                                       errorObjects.add(new ErrorsBuilder().setErrorObject(o).build());
+                                       state = 1;
                                        break;
                                }
-                               state = 2;
-                       case 2:
                                state = 3;
-                               if (obj instanceof OpenObject) {
-                                       openObj = (Open) obj;
+                       case 2:
+                               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;
                                        break;
                                }
+                               state = 4;
                        case 3:
-                               while (!objects.isEmpty()) {
-                                       switch (state) {
-                                       case 1:
-                                               state = 2;
-                                               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 = 1;
-                                                       break;
-                                               }
-                                       case 2:
-                                               if (obj instanceof PcepErrorObject) {
-                                                       final PcepErrorObject o = (PcepErrorObject) obj;
-                                                       errorObjects.add((Errors) o);
-                                                       state = 2;
-                                                       break;
-                                               }
-                                               state = 3;
-                                       }
-
-                                       if (state == 3) {
-                                               break;
-                                       }
-
-                                       objects.remove(0);
+                               if (obj instanceof Open) {
+                                       openObj = (Open) obj;
+                                       state = 5;
+                                       break;
                                }
+                       case 4:
+                               if (obj instanceof ErrorObject) {
+                                       final ErrorObject o = (ErrorObject) obj;
+                                       errorObjects.add(new ErrorsBuilder().setErrorObject(o).build());
+                                       state = 4;
+                                       break;
+                               }
+                               state = 5;
 
-                               state = 4;
-                               break;
-                       }
-
-                       if (state == 4) {
-                               break;
+                               if (state == 5) {
+                                       break;
+                               }
                        }
 
                        objects.remove(0);
index 958549a6948727bfa530c8ed2889dfb37753a522..6936eba87f62c4ac7b6f28d34ad95ca4f6541260 100644 (file)
@@ -25,6 +25,7 @@ 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.Object;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PcntfMessage;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.notification.object.CNotification;
+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.ErrorsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcntf.message.PcntfMessageBuilder;
@@ -96,8 +97,9 @@ public class PCEPNotificationMessageParser extends AbstractMessageParser {
                                comObj = getValidNotificationComposite(objects);
                        } catch (final PCEPDocumentedException e) {
                                final PcerrMessageBuilder b = new PcerrMessageBuilder();
-                               b.setErrors(Arrays.asList(new ErrorsBuilder().setType(maping.getFromErrorsEnum(e.getError()).type).setValue(
-                                               maping.getFromErrorsEnum(e.getError()).value).build()));
+                               b.setErrors(Arrays.asList(new ErrorsBuilder().setErrorObject(
+                                               new ErrorObjectBuilder().setType(maping.getFromErrorsEnum(e.getError()).type).setValue(
+                                                               maping.getFromErrorsEnum(e.getError()).value).build()).build()));
                                return new PcerrBuilder().setPcerrMessage(b.build()).build();
                        }
 
index 934f880d4744fb845d3cafc8041884d72dfa117d..22123c86cb2cfee894db2fb176d9a263160277cf 100644 (file)
@@ -13,20 +13,19 @@ import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ObjectHeader;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PcepErrorObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcep.error.object.Tlvs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcep.error.object.TlvsBuilder;
-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.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.pcep.error.object.error.object.Tlvs;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcep.error.object.error.object.TlvsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.req.missing.tlv.ReqMissing;
 
 import com.google.common.primitives.UnsignedBytes;
 
 /**
- * Parser for {@link org.opendaylight.protocol.pcep.object.PCEPErrorObject PCEPErrorObject}
+ * Parser for {@link ErrorObject}
  */
-public class PCEPErrorObjectParser extends AbstractObjectWithTlvsParser<ErrorsBuilder> {
+public class PCEPErrorObjectParser extends AbstractObjectWithTlvsParser<ErrorObjectBuilder> {
 
        public static final int CLASS = 13;
 
@@ -46,13 +45,12 @@ public class PCEPErrorObjectParser extends AbstractObjectWithTlvsParser<ErrorsBu
        }
 
        @Override
-       public PcepErrorObject parseObject(final ObjectHeader header, final byte[] bytes) throws PCEPDeserializerException,
-                       PCEPDocumentedException {
+       public ErrorObject parseObject(final ObjectHeader header, final byte[] bytes) throws PCEPDeserializerException, PCEPDocumentedException {
                if (bytes == null) {
                        throw new IllegalArgumentException("Array of bytes is mandatory.");
                }
 
-               final ErrorsBuilder builder = new ErrorsBuilder();
+               final ErrorObjectBuilder builder = new ErrorObjectBuilder();
                builder.setIgnore(header.isIgnore());
                builder.setProcessingRule(header.isProcessingRule());
                builder.setType((short) UnsignedBytes.toInt(bytes[ET_F_OFFSET]));
@@ -62,7 +60,7 @@ public class PCEPErrorObjectParser extends AbstractObjectWithTlvsParser<ErrorsBu
        }
 
        @Override
-       public void addTlv(final ErrorsBuilder builder, final Tlv tlv) {
+       public void addTlv(final ErrorObjectBuilder builder, final Tlv tlv) {
                if (tlv instanceof ReqMissing && builder.getType() == 7) {
                        builder.setTlvs(new TlvsBuilder().setReqMissing((ReqMissing) tlv).build());
                }
@@ -70,12 +68,12 @@ public class PCEPErrorObjectParser extends AbstractObjectWithTlvsParser<ErrorsBu
 
        @Override
        public byte[] serializeObject(final Object object) {
-               if (!(object instanceof PcepErrorObject)) {
+               if (!(object instanceof ErrorObject)) {
                        throw new IllegalArgumentException("Wrong instance of PCEPObject. Passed " + object.getClass() + ". Needed PcepErrorObject.");
                }
-               final PcepErrorObject errObj = (PcepErrorObject) object;
+               final ErrorObject errObj = (ErrorObject) object;
 
-               final byte[] tlvs = serializeTlvs(((Errors) errObj).getTlvs());
+               final byte[] tlvs = serializeTlvs(errObj.getTlvs());
 
                final byte[] retBytes = new byte[TLVS_OFFSET + tlvs.length + getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
                if (tlvs.length != 0) {
index 2f92113843747fa45d373c6cdfcd8fe59a2c762e..96f538ab43e5df70f0ace4431e9945da1343b2ee 100644 (file)
@@ -79,8 +79,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.path.definition.ExplicitRouteBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.path.key.object.PathKeys;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.path.key.object.PathKeysBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcep.error.object.TlvsBuilder;
-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.pcep.error.object.ErrorObjectBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcep.error.object.error.object.TlvsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcinitiate.message.pcinitiate.message.requests.EndpointsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcinitiate.message.pcinitiate.message.requests.LspBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcinitiate.message.pcinitiate.message.requests.SrpBuilder;
@@ -339,7 +339,7 @@ public class PCEPObjectParserTest {
                final PCEPErrorObjectParser parser = new PCEPErrorObjectParser(this.tlvRegistry);
                byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPErrorObject1.bin");
 
-               final ErrorsBuilder builder = new ErrorsBuilder();
+               final ErrorObjectBuilder builder = new ErrorObjectBuilder();
                builder.setProcessingRule(true);
                builder.setIgnore(true);
                builder.setType((short) 1);
index 05b1e4b8de33fa075ab761ceafb950aaee4d63ca..4e5b7829940fcaa388e74bc89e8297d189833390 100644 (file)
@@ -21,6 +21,7 @@ import org.junit.Test;
 import org.opendaylight.protocol.pcep.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.PCEPDocumentedException;
 import org.opendaylight.protocol.pcep.impl.message.PCEPCloseMessageParser;
+import org.opendaylight.protocol.pcep.impl.message.PCEPErrorMessageParser;
 import org.opendaylight.protocol.pcep.impl.message.PCEPKeepAliveMessageParser;
 import org.opendaylight.protocol.pcep.impl.message.PCEPNotificationMessageParser;
 import org.opendaylight.protocol.pcep.impl.message.PCEPOpenMessageParser;
@@ -30,6 +31,7 @@ import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.CloseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.KeepaliveBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.OpenBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.PcerrBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.PcntfBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ProtocolVersion;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.RequestId;
@@ -41,6 +43,14 @@ 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.notification.object.CNotification;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.notification.object.CNotificationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.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.RequestBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.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;
@@ -60,6 +70,8 @@ public class PCEPValidatorTest {
 
        private Rp rp;
 
+       private Open open;
+
        @Before
        public void setUp() throws Exception {
                this.objectRegistry = PCEPExtensionProviderContextImpl.create().getObjectHandlerRegistry();
@@ -78,6 +90,16 @@ public class PCEPValidatorTest {
                rpBuilder.setPriority((short) 1);
                rpBuilder.setRequestId(new RequestId(10L));
                this.rp = 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) 0);
+               openBuilder.setKeepalive((short) 0);
+               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();
        }
 
        // private static final LspaObject lspa = new PCEPLspaObject(0L, 0L, 0L, (short) 0, (short) 0, false, false, false,
@@ -775,60 +797,42 @@ public class PCEPValidatorTest {
                parser.serializeMessage(new PcntfBuilder().setPcntfMessage(builder.build()).build(), buf);
                assertArrayEquals(result, buf.array());
        }
-       //
-       // @Test
-       // public void testErrorMessageValidatoinFromBin() throws IOException, PCEPDeserializerException,
-       // PCEPDocumentedException,
-       // DeserializerException, DocumentedException {
-       // List<PCEPErrorObject> errorsList = new ArrayList<PCEPErrorObject>();
-       // errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
-       //
-       // PCEPErrorMessage specMessage = new PCEPErrorMessage(errorsList);
-       // assertEquals(deserMsg("src/test/resources/PCErr.1.bin").toString(), asList((Message) specMessage).toString());
-       //
-       // List<PCEPRequestParameterObject> requests = new ArrayList<PCEPRequestParameterObject>();
-       // requests.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1,
-       // false, false));
-       //
-       // List<CompositeErrorObject> errors = new ArrayList<CompositeErrorObject>();
-       // errors.add(new CompositeErrorObject(requests, errorsList));
-       //
-       // specMessage = new PCEPErrorMessage(errors);
-       // assertEquals(deserMsg("src/test/resources/PCErr.2.bin").toString(), asList((Message) specMessage).toString());
-       //
-       // specMessage = new PCEPErrorMessage(new PCEPOpenObject(0, 0, 0), errorsList, null);
-       // assertEquals(deserMsg("src/test/resources/PCErr.3.bin").toString(), asList((Message) specMessage).toString());
-       //
-       // requests = new ArrayList<PCEPRequestParameterObject>();
-       // requests.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 53,
-       // false, false));
-       //
-       // errors = new ArrayList<CompositeErrorObject>();
-       // errors.add(new CompositeErrorObject(requests, errorsList));
-       //
-       // specMessage = new PCEPErrorMessage(errors);
-       // assertEquals(deserMsg("src/test/resources/PCErr.3b.bin").toString(), asList((Message) specMessage).toString());
-       //
-       // errorsList = new ArrayList<PCEPErrorObject>();
-       // errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
-       // errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
-       // errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
-       //
-       // specMessage = new PCEPErrorMessage(null, errorsList, null);
-       // assertEquals(deserMsg("src/test/resources/PCErr.4.bin").toString(), asList((Message) specMessage).toString());
-       //
-       // requests = new ArrayList<PCEPRequestParameterObject>();
-       // requests.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 53,
-       // false, false));
-       //
-       // errorsList = new ArrayList<PCEPErrorObject>();
-       // errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
-       //
-       // errors = new ArrayList<CompositeErrorObject>();
-       // errors.add(new CompositeErrorObject(requests, errorsList));
-       // errors.add(new CompositeErrorObject(requests, errorsList));
-       //
-       // specMessage = new PCEPErrorMessage(errors);
-       // assertEquals(deserMsg("src/test/resources/PCErr.5.bin").toString(), asList((Message) specMessage).toString());
-       // }
+
+       @Test
+       public void testErrorMsg() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
+               final ErrorObject error1 = new ErrorObjectBuilder().setIgnore(false).setProcessingRule(false).setType((short) 3).setValue((short) 1).build();
+
+               final PCEPErrorMessageParser parser = new PCEPErrorMessageParser(this.objectRegistry);
+
+               List<Errors> innerErr = Lists.newArrayList();
+               innerErr.add(new ErrorsBuilder().setErrorObject(error1).build());
+
+               final PcerrMessageBuilder builder = new PcerrMessageBuilder();
+               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");
+
+               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(
+                               this.rp).build());
+
+               innerErr = Lists.newArrayList();
+               innerErr.add(new ErrorsBuilder().setErrorObject(error1).build());
+
+               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);
+               parser.serializeMessage(new PcerrBuilder().setPcerrMessage(builder.build()).build(), buf);
+               assertArrayEquals(result1, buf.array());
+       }
 }
index 9acd722bf66b8963b79392f246bd57052837f62a..dcbed27d434df4e7d3c4b019dcd01e8ac84df5ad 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 23a597e048798c3b63f8d57b2b08f2f9340b3df4..2b64829c55e6abf1cec10bacbf7f3fb6c30ef418 100644 (file)
Binary files a/pcep/impl/src/test/resources/PCErr.5.bin and b/pcep/impl/src/test/resources/PCErr.5.bin differ