+
+ @Test
+ public void testMonRepMsg() throws PCEPDeserializerException, IOException {
+ final PCEPMonitoringReplyMessageParser parser = new PCEPMonitoringReplyMessageParser(this.objectRegistry);
+ final PcmonrepMessageBuilder builder = new PcmonrepMessageBuilder();
+ builder.setMonitoring(this.monitoring);
+ builder.setMonitoringMetricsList(new GeneralMetricsListBuilder().setMetricPce(Lists.newArrayList(new MetricPceBuilder().setPceId(this.pceId).build())).build());
+
+ final byte[] msgBytes = {
+ 0x20, 0x09, 0x00, 0x18,
+ /* monitoring object */
+ 0x13, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64,
+ /* pce-id object */
+ 0x19, 0x10, 0x00, 0x08, 0x7f, 0x00, 0x00, 0x02
+ };
+
+ ByteBuf result = Unpooled.wrappedBuffer(msgBytes);
+ assertEquals(new PcmonrepBuilder().setPcmonrepMessage(builder.build()).build(), parser.parseMessage(result.slice(4,
+ result.readableBytes() - 4), Collections.<Message> emptyList()));
+ ByteBuf buf = Unpooled.buffer(result.readableBytes());
+ parser.serializeMessage(new PcmonrepBuilder().setPcmonrepMessage(builder.build()).build(), buf);
+ assertArrayEquals(result.array(), buf.array());
+
+ builder.setMonitoring(this.monitoring);
+ builder.setPccIdReq(this.pccIdReq);
+ final SpecificMetricsBuilder smBuilder = new SpecificMetricsBuilder();
+ smBuilder.setRp(this.rpTrue);
+ final List<MetricPce> metricPces = Lists.newArrayList();
+ metricPces.add(new MetricPceBuilder().setOverload(this.overload).setPceId(this.pceId).setProcTime(this.procTime).build());
+ metricPces.add(new MetricPceBuilder().setPceId(this.pceId).setProcTime(this.procTime).build());
+ smBuilder.setMetricPce(metricPces);
+ final SpecificMetricsBuilder smBuilder2 = new SpecificMetricsBuilder();
+ final List<MetricPce> metricPces2 = Lists.newArrayList();
+ smBuilder2.setRp(this.rpTrue);
+ metricPces2.add(new MetricPceBuilder().setOverload(this.overload).setPceId(this.pceId).build());
+ smBuilder2.setMetricPce(metricPces2);
+ builder.setMonitoringMetricsList(new SpecificMetricsListBuilder().setSpecificMetrics(Lists.newArrayList(smBuilder.build(), smBuilder2.build())).build());
+
+ result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCMonRep.bin"));
+ assertEquals(new PcmonrepBuilder().setPcmonrepMessage(builder.build()).build(), parser.parseMessage(result.slice(4,
+ result.readableBytes() - 4), Collections.<Message> emptyList()));
+ buf = Unpooled.buffer(result.readableBytes());
+ parser.serializeMessage(new PcmonrepBuilder().setPcmonrepMessage(builder.build()).build(), buf);
+ assertArrayEquals(result.array(), buf.array());
+ }
+
+ @Test
+ public void testRepWithMonitoring() throws IOException, PCEPDeserializerException {
+ final PCEPReplyMessageParser parser = new PCEPReplyMessageParser(this.objectRegistry, this.viObjRegistry);
+
+ final PcrepMessageBuilder builder = new PcrepMessageBuilder();
+ RepliesBuilder rBuilder = new RepliesBuilder();
+
+ final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCRepMon.5.bin"));
+ final List<Replies> replies4 = Lists.newArrayList();
+ rBuilder = new RepliesBuilder();
+ rBuilder.setRp(this.rpTrue);
+ rBuilder.setMonitoring(this.monitoring);
+ rBuilder.setPccIdReq(pccIdReq);
+ rBuilder.setMetricPce(Lists.newArrayList(new MetricPceBuilder().setPceId(this.pceId).build()));
+ final List<Paths> paths = Lists.newArrayList();
+ final PathsBuilder paBuilder = new PathsBuilder();
+ paBuilder.setEro(this.ero);
+ paBuilder.setLspa(this.lspa);
+ paBuilder.setMetrics(Lists.newArrayList(this.metrics));
+ paBuilder.setIro(this.iro);
+ paBuilder.setOf(this.of);
+ paths.add(paBuilder.build());
+ rBuilder.setResult(new SuccessCaseBuilder().setSuccess(new SuccessBuilder().setPaths(paths).build()).build()).build();
+ replies4.add(rBuilder.build());
+ builder.setReplies(replies4);
+
+ assertEquals(new PcrepBuilder().setPcrepMessage(builder.build()).build(), parser.parseMessage(result.slice(4,
+ result.readableBytes() - 4), Collections.<Message> emptyList()));
+ final ByteBuf buf = Unpooled.buffer(result.readableBytes());
+ parser.serializeMessage(new PcrepBuilder().setPcrepMessage(builder.build()).build(), buf);
+ assertArrayEquals(result.array(), buf.array());
+ }
+
+ @Test
+ public void testReqWithMonitoring() throws IOException, PCEPDeserializerException {
+ final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCReq.8.bin"));
+
+ final PCEPRequestMessageParser parser = new PCEPRequestMessageParser(this.objectRegistry, this.viObjRegistry);
+
+ final PcreqMessageBuilder builder = new PcreqMessageBuilder();
+ final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.Requests> reqs1 = Lists.newArrayList();
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.RequestsBuilder rBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.RequestsBuilder();
+ rBuilder.setRp(this.rpTrue);
+ rBuilder.setSegmentComputation(new SegmentComputationBuilder().setP2p(new P2pBuilder().setEndpointsObj(this.endpoints).build()).build());
+ reqs1.add(rBuilder.build());
+ final MonitoringRequestBuilder monReqBuilder = new MonitoringRequestBuilder();
+ monReqBuilder.setMonitoring(this.monitoring);
+ monReqBuilder.setPccIdReq(this.pccIdReq);
+ monReqBuilder.setPceIdList(Lists.newArrayList(new PceIdListBuilder().setPceId(this.pceId).build()));
+ builder.setMonitoringRequest(monReqBuilder.build());
+ builder.setRequests(reqs1);
+
+ assertEquals(new PcreqBuilder().setPcreqMessage(builder.build()).build(), parser.parseMessage(result.slice(4,
+ result.readableBytes() - 4), Collections.<Message> emptyList()));
+ final ByteBuf buf = Unpooled.buffer(result.readableBytes());
+ parser.serializeMessage(new PcreqBuilder().setPcreqMessage(builder.build()).build(), buf);
+
+ assertArrayEquals(result.array(), buf.array());
+ }
+
+ @Test
+ public void testMonReqMsg() throws PCEPDeserializerException, IOException {
+ final PCEPMonitoringRequestMessageParser parser = new PCEPMonitoringRequestMessageParser(this.objectRegistry, this.viObjRegistry);
+
+ final PcreqMessageBuilder builder = new PcreqMessageBuilder();
+ final MonitoringRequestBuilder monReqBuilder = new MonitoringRequestBuilder();
+ monReqBuilder.setMonitoring(this.monitoring);
+ monReqBuilder.setPceIdList(Lists.newArrayList(new PceIdListBuilder().setPceId(this.pceId).build()));
+ builder.setMonitoringRequest(monReqBuilder.build());
+ final byte[] msgBytes = {
+ 0x20, 0x08, 0x00, 0x18,
+ /* monitoring object */
+ 0x13, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64,
+ /* pce-id object */
+ 0x19, 0x10, 0x00, 0x08, 0x7f, 0x00, 0x00, 0x02
+ };
+ ByteBuf result = Unpooled.wrappedBuffer(msgBytes);
+ assertEquals(new PcmonreqBuilder().setPcreqMessage(builder.build()).build(), parser.parseMessage(result.slice(4,
+ result.readableBytes() - 4), Collections.<Message> emptyList()));
+ ByteBuf buf = Unpooled.buffer(result.readableBytes());
+ parser.serializeMessage(new PcmonreqBuilder().setPcreqMessage(builder.build()).build(), buf);
+ assertArrayEquals(result.array(), buf.array());
+
+ result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCMonReq.bin"));
+ final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.Requests> reqs2 = Lists.newArrayList();
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.RequestsBuilder rBuilder1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.RequestsBuilder();
+ rBuilder1.setRp(this.rpTrue);
+ final P2pBuilder p2pBuilder = new P2pBuilder();
+ p2pBuilder.setEndpointsObj(this.endpoints);
+ p2pBuilder.setMetrics(Lists.newArrayList(this.metrics));
+ p2pBuilder.setIro(this.iro);
+ rBuilder1.setSegmentComputation(new SegmentComputationBuilder().setP2p(p2pBuilder.build()).build());
+ reqs2.add(rBuilder1.build());
+ builder.setRequests(reqs2);
+ builder.setSvec(Lists.newArrayList(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.SvecBuilder().setSvec(
+ this.svec).build()));
+ monReqBuilder.setMonitoring(this.monitoring);
+ monReqBuilder.setPccIdReq(this.pccIdReq);
+ final PceIdList pceIdList = new PceIdListBuilder().setPceId(this.pceId).build();
+ monReqBuilder.setPceIdList(Lists.newArrayList(pceIdList, pceIdList));
+ builder.setMonitoringRequest(monReqBuilder.build());
+
+ assertEquals(new PcmonreqBuilder().setPcreqMessage(builder.build()).build(), parser.parseMessage(result.slice(4,
+ result.readableBytes() - 4), Collections.<Message> emptyList()));
+ buf = Unpooled.buffer(result.readableBytes());
+ parser.serializeMessage(new PcmonreqBuilder().setPcreqMessage(builder.build()).build(), buf);
+ assertArrayEquals(result.array(), buf.array());
+ }