- (byte) 0x81,0x08,(byte) 0xFF,(byte) 0xFF,
- (byte) 0xFF,(byte) 0xFF,0x16,0x00};
-
- final Stateful07PCReportMessageParser parser = new Stateful07PCReportMessageParser(this.ctx.getObjectHandlerRegistry());
-
- final PcerrMessageBuilder errMsgBuilder = new PcerrMessageBuilder();
- errMsgBuilder.setErrors(Lists.newArrayList(new ErrorsBuilder().setErrorObject(
- new ErrorObjectBuilder().setType((short) 6).setValue((short) 8).build()).build()));
- final PcerrBuilder builder = new PcerrBuilder();
- builder.setPcerrMessage(errMsgBuilder.build());
-
- final ByteBuf buf = Unpooled.wrappedBuffer(statefulMsg);
- final List<Message> errors = Lists.newArrayList();
- parser.parseMessage(buf.slice(4, buf.readableBytes() - 4), errors);
- assertFalse(errors.isEmpty());
- assertEquals(builder.build(), errors.get(0));
+ (byte) 0x81, (byte) 0x08, (byte) 0xFF, (byte) 0xFF,
+ (byte) 0xFF, (byte) 0xFF, (byte) 0x16, (byte) 0x00
+ };
+
+ try (CrabbeInitiatedActivator a = new CrabbeInitiatedActivator();
+ StatefulActivator b = new StatefulActivator()) {
+ a.start(this.ctx);
+ b.start(this.ctx);
+ final Stateful07PCReportMessageParser parser = new Stateful07PCReportMessageParser(
+ this.ctx.getObjectHandlerRegistry());
+
+ final PcerrMessageBuilder errMsgBuilder = new PcerrMessageBuilder();
+ errMsgBuilder.setErrors(Lists.newArrayList(new ErrorsBuilder()
+ .setErrorObject(new ErrorObjectBuilder().setType((short) 6).setValue((short) 8).build()).build()));
+ final PcerrBuilder builder = new PcerrBuilder();
+ builder.setPcerrMessage(errMsgBuilder.build());
+
+ final ByteBuf buf = Unpooled.wrappedBuffer(statefulMsg);
+ final List<Message> errors = Lists.newArrayList();
+ parser.parseMessage(buf.slice(4, buf.readableBytes() - 4), errors);
+ assertFalse(errors.isEmpty());
+ assertEquals(builder.build(), errors.get(0));
+ }
+ }
+
+ @Test
+ public void testUnexpectedRroObjectInPcUpdMsg() throws PCEPDeserializerException {
+ final byte[] badUpdateMsg = {
+ (byte) 0x20, (byte) 0x0b, (byte) 0x00, (byte) 0x50,
+ /* SRP, LSP and ERO objects */
+ (byte) 0x21, (byte) 0x12, (byte) 0x00, (byte) 0x0c,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01,
+ (byte) 0x20, (byte) 0x10, (byte) 0x00, (byte) 0x08,
+ (byte) 0x00, (byte) 0x00, (byte) 0x10, (byte) 0x09,
+ (byte) 0x07, (byte) 0x10, (byte) 0x00, (byte) 0x14,
+ (byte) 0x01, (byte) 0x08, (byte) 0x05, (byte) 0x05,
+ (byte) 0x05, (byte) 0x03, (byte) 0x18, (byte) 0x00,
+ (byte) 0x01, (byte) 0x08, (byte) 0x08, (byte) 0x08,
+ (byte) 0x08, (byte) 0x04, (byte) 0x18, (byte) 0x00,
+ /* RRO object */
+ (byte) 0x08, (byte) 0x10, (byte) 0x00, (byte) 0x24,
+ (byte) 0x01, (byte) 0x08, (byte) 0x0a, (byte) 0x00,
+ (byte) 0x00, (byte) 0x83, (byte) 0x20, (byte) 0x20,
+ (byte) 0x03, (byte) 0x08, (byte) 0x01, (byte) 0x01,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x01, (byte) 0x08, (byte) 0x0a, (byte) 0x00,
+ (byte) 0x09, (byte) 0xde, (byte) 0x20, (byte) 0x00,
+ (byte) 0x03, (byte) 0x08, (byte) 0x01, (byte) 0x01,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00
+ };
+
+ try (CrabbeInitiatedActivator a = new CrabbeInitiatedActivator()) {
+ a.start(this.ctx);
+
+ final Stateful07PCUpdateRequestMessageParser parser = new Stateful07PCUpdateRequestMessageParser(
+ this.ctx.getObjectHandlerRegistry());
+
+ final PcerrMessageBuilder errMsgBuilder = new PcerrMessageBuilder();
+ errMsgBuilder.setErrors(Lists.newArrayList(new ErrorsBuilder()
+ .setErrorObject(new ErrorObjectBuilder().setType((short) 6).setValue((short) 10).build()).build()));
+ final PcerrBuilder builder = new PcerrBuilder();
+ builder.setPcerrMessage(errMsgBuilder.build());
+
+ final ByteBuf buf = Unpooled.wrappedBuffer(badUpdateMsg);
+ final List<Message> errors = Lists.newArrayList();
+ parser.parseMessage(buf.slice(4, buf.readableBytes() - 4), errors);
+ assertFalse(errors.isEmpty());
+ assertEquals(builder.build(), errors.get(0));
+ }