/* * Copyright 2015-present Open Networking Laboratory * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.onosproject.pcepio.protocol; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; import org.junit.Test; import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException; import org.onosproject.pcepio.exceptions.PcepParseException; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; public class PcepLabelUpdateMsgTest { /** * This test case checks for * <pce-label-download> SRP, LSP, LABEL Object. * in PcepLabelUpdate message. */ @Test public void labelUpdateMessageTest1() throws PcepParseException, PcepOutOfBoundMessageException { byte[] labelUpdate = new byte[]{0x20, (byte) 0xE2, 0x00, 0x24, // common header 0x21, 0x10, 0x00, 0x0C, // SRP Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x10, 0x00, 0x08, // LSP Object Header 0x00, 0x01, 0x00, 0x00, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00}; ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); buffer.writeBytes(labelUpdate); PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); PcepMessage message = null; message = reader.readFrom(buffer); byte[] testLabelUpdateMsg = {0}; assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); message.writeTo(buf); int readLen = buf.writerIndex(); testLabelUpdateMsg = new byte[readLen]; buf.readBytes(testLabelUpdateMsg, 0, readLen); assertThat(testLabelUpdateMsg, is(labelUpdate)); } /** * This test case checks for * <pce-label-download> SRP, LSP, LABEL Object, LABEL Object. * in PcepLabelUpdate message. */ @Test public void labelUpdateMessageTest2() throws PcepParseException, PcepOutOfBoundMessageException { byte[] labelUpdate = new byte[]{0x20, (byte) 0xE2, 0x00, 0x30, // common header 0x21, 0x10, 0x00, 0x0C, // SRP Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x10, 0x00, 0x08, // LSP Object Header 0x00, 0x01, 0x00, 0x00, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00}; ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); buffer.writeBytes(labelUpdate); PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); PcepMessage message = null; message = reader.readFrom(buffer); byte[] testLabelUpdateMsg = {0}; assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); message.writeTo(buf); int readLen = buf.writerIndex(); testLabelUpdateMsg = new byte[readLen]; buf.readBytes(testLabelUpdateMsg, 0, readLen); assertThat(testLabelUpdateMsg, is(labelUpdate)); } /** * This test case checks for * <pce-label-map> SRP, LABEL, FEC Object. * in PcepLabelUpdate message. */ @Test public void labelUpdateMessageTest3() throws PcepParseException, PcepOutOfBoundMessageException { byte[] labelUpdate = new byte[]{0x20, (byte) 0xE2, 0x00, 0x24, // common header 0x21, 0x10, 0x00, 0x0C, // SRP Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, (byte) 0xE2, 0x10, 0x00, 0x08, // FEC Object Header 0x0A, 0x0A, 0x0B, 0x0B}; ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); buffer.writeBytes(labelUpdate); PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); PcepMessage message = null; message = reader.readFrom(buffer); byte[] testLabelUpdateMsg = {0}; assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); message.writeTo(buf); int readLen = buf.writerIndex(); testLabelUpdateMsg = new byte[readLen]; buf.readBytes(testLabelUpdateMsg, 0, readLen); assertThat(testLabelUpdateMsg, is(labelUpdate)); } /** * This test case checks for * <pce-label-download> SRP, LSP, LABEL, LABEL, <pce-label-download> SRP, LSP, LABEL * in PcepLabelUpdate message. */ @Test public void labelUpdateMessageTest4() throws PcepParseException, PcepOutOfBoundMessageException { byte[] labelUpdate = new byte[]{0x20, (byte) 0xE2, 0x00, 0x50, // common header 0x21, 0x10, 0x00, 0x0C, // SRP Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x10, 0x00, 0x08, // LSP Object Header 0x00, 0x01, 0x00, 0x00, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x21, 0x10, 0x00, 0x0C, // SRP Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x20, 0x10, 0x00, 0x08, // LSP Object Header 0x00, 0x02, 0x00, 0x00, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00}; ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); buffer.writeBytes(labelUpdate); PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); PcepMessage message = null; message = reader.readFrom(buffer); byte[] testLabelUpdateMsg = {0}; assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); message.writeTo(buf); int readLen = buf.writerIndex(); testLabelUpdateMsg = new byte[readLen]; buf.readBytes(testLabelUpdateMsg, 0, readLen); assertThat(testLabelUpdateMsg, is(labelUpdate)); } /** * This test case checks for * <pce-label-map> SRP, LABEL, FEC, <pce-label-map> SRP, LABEL, FEC. * in PcepLabelUpdate message. */ @Test public void labelUpdateMessageTest5() throws PcepParseException, PcepOutOfBoundMessageException { byte[] labelUpdate = new byte[]{0x20, (byte) 0xE2, 0x00, 0x44, // common header 0x21, 0x10, 0x00, 0x0C, // SRP Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x00, 0x00, (byte) 0xE2, 0x10, 0x00, 0x08, // FEC Object Header 0x0A, 0x0A, 0x0B, 0x0B, 0x21, 0x10, 0x00, 0x0C, // SRP Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, (byte) 0xE2, 0x10, 0x00, 0x08, // FEC Object Header 0x0A, 0x0A, 0x0C, 0x0C}; ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); buffer.writeBytes(labelUpdate); PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); PcepMessage message = null; message = reader.readFrom(buffer); byte[] testLabelUpdateMsg = {0}; assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); message.writeTo(buf); int readLen = buf.writerIndex(); testLabelUpdateMsg = new byte[readLen]; buf.readBytes(testLabelUpdateMsg, 0, readLen); assertThat(testLabelUpdateMsg, is(labelUpdate)); } /** * This test case checks for * <pce-label-download> SRP, LSP, LABEL, LABEL, <pce-label-download> SRP, LABEL, FEC. * in PcepLabelUpdate message. */ @Test public void labelUpdateMessageTest6() throws PcepParseException, PcepOutOfBoundMessageException { byte[] labelUpdate = new byte[]{0x20, (byte) 0xE2, 0x00, 0x50, // common header 0x21, 0x10, 0x00, 0x0C, // SRP Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x10, 0x00, 0x08, // LSP Object Header 0x00, 0x01, 0x00, 0x00, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x21, 0x10, 0x00, 0x0C, // SRP Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, (byte) 0xE2, 0x10, 0x00, 0x08, // FEC Object Header 0x0A, 0x0A, 0x0D, 0x0D}; ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); buffer.writeBytes(labelUpdate); PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); PcepMessage message = null; message = reader.readFrom(buffer); byte[] testLabelUpdateMsg = {0}; assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); message.writeTo(buf); int readLen = buf.writerIndex(); testLabelUpdateMsg = new byte[readLen]; buf.readBytes(testLabelUpdateMsg, 0, readLen); assertThat(testLabelUpdateMsg, is(labelUpdate)); } /** * This test case checks for * <pce-label-download> SRP, LABEL, FEC, <pce-label-download> SRP, LSP, LABEL, LABEL. * in PcepLabelUpdate message. */ @Test public void labelUpdateMessageTest7() throws PcepParseException, PcepOutOfBoundMessageException { byte[] labelUpdate = new byte[]{0x20, (byte) 0xE2, 0x00, 0x50, // common header 0x21, 0x10, 0x00, 0x0C, // SRP Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, (byte) 0xE2, 0x10, 0x00, 0x08, // FEC Object Header 0x0A, 0x0A, 0x0D, 0x0D, 0x21, 0x10, 0x00, 0x0C, // SRP Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x10, 0x00, 0x08, // LSP Object Header 0x00, 0x01, 0x00, 0x00, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00}; ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); buffer.writeBytes(labelUpdate); PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); PcepMessage message = null; message = reader.readFrom(buffer); byte[] testLabelUpdateMsg = {0}; assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); message.writeTo(buf); int readLen = buf.writerIndex(); testLabelUpdateMsg = new byte[readLen]; buf.readBytes(testLabelUpdateMsg, 0, readLen); assertThat(testLabelUpdateMsg, is(labelUpdate)); } /** * This test case checks for * <pce-label-download> SRP, LABEL, FEC, <pce-label-download> SRP, LSP, LABEL, LABEL. * <pce-label-download> SRP, LSP, LABEL, LABEL. * in PcepLabelUpdate message. */ @Test public void labelUpdateMessageTest8() throws PcepParseException, PcepOutOfBoundMessageException { byte[] labelUpdate = new byte[]{0x20, (byte) 0xE2, 0x00, 0x7C, // common header 0x21, 0x10, 0x00, 0x0C, // SRP Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, (byte) 0xE2, 0x10, 0x00, 0x08, // FEC Object Header 0x0A, 0x0A, 0x0D, 0x0D, 0x21, 0x10, 0x00, 0x0C, // SRP Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x10, 0x00, 0x08, // LSP Object Header 0x00, 0x01, 0x00, 0x00, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x21, 0x10, 0x00, 0x0C, // SRP Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x10, 0x00, 0x08, // LSP Object Header 0x00, 0x01, 0x00, 0x00, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00}; ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); buffer.writeBytes(labelUpdate); PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); PcepMessage message = null; message = reader.readFrom(buffer); byte[] testLabelUpdateMsg = {0}; assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); message.writeTo(buf); int readLen = buf.writerIndex(); testLabelUpdateMsg = new byte[readLen]; buf.readBytes(testLabelUpdateMsg, 0, readLen); assertThat(testLabelUpdateMsg, is(labelUpdate)); } }