/* * Copyright 2016-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.ospf.protocol.ospfpacket; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.onosproject.ospf.protocol.util.OspfUtil; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; /** * Unit test class for OspfMessageReader. */ public class OspfMessageReaderTest { private final byte[] packet1 = {2, 1, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, 39, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 10, 2, 1, 0, 0, 0, 40, -64, -88, -86, 8, 0, 0, 0, 0}; private final byte[] packet2 = {2, 2, 0, 52, -64, -88, -86, 8, 0, 0, 0, 1, -96, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -36, 2, 7, 65, 119, -87, 126, 0, 23, 2, 1, 10, 10, 10, 10, 10, 10, 10, 10, -128, 0, 0, 6, -69, 26, 0, 36}; private final byte[] packet3 = {2, 3, 0, 36, -64, -88, -86, 3, 0, 0, 0, 1, -67, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -64, -88, -86, 8, -64, -88, -86, 8}; private final byte[] packet4 = {2, 4, 1, 36, -64, -88, -86, 3, 0, 0, 0, 1, 54, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 2, 2, 1, -64, -88, -86, 3, -64, -88, -86, 3, -128, 0, 0, 1, 58, -100, 0, 48, 2, 0, 0, 2, -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10, -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10, 0, 3, 2, 5, 80, -44, 16, 0, -64, -88, -86, 2, -128, 0, 0, 1, 42, 73, 0, 36, -1, -1, -1, -1, -128, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -108, 121, -85, 0, -64, -88, -86, 2, -128, 0, 0, 1, 52, -91, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20, -64, -88, -86, 1, 0, 0, 0, 0, 0, 3, 2, 5, -64, -126, 120, 0, -64, -88, -86, 2, -128, 0, 0, 1, -45, 25, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -64, -88, 0, 0, -64, -88, -86, 2, -128, 0, 0, 1, 55, 8, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -64, -88, 1, 0, -64, -88, -86, 2, -128, 0, 0, 1, 44, 18, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -64, -88, -84, 0, -64, -88, -86, 2, -128, 0, 0, 1, 51, 65, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20, -64, -88, -86, 10, 0, 0, 0, 0}; private final byte[] packet5 = {2, 5, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, -30, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 16, 2, 1, -64, -88, -86, 2, -64, -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48}; private OspfMessageReader ospfMessageReader; private ChannelBuffer channelBuffer; @Before public void setUp() throws Exception { ospfMessageReader = new OspfMessageReader(); } @After public void tearDown() throws Exception { ospfMessageReader = null; channelBuffer = null; } /** * Tests readFromBuffer() method. */ @Test public void testReadFromBuffer() throws Exception { channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet1)); ospfMessageReader.readFromBuffer(channelBuffer); channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet2)); ospfMessageReader.readFromBuffer(channelBuffer); channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet3)); ospfMessageReader.readFromBuffer(channelBuffer); channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet4)); ospfMessageReader.readFromBuffer(channelBuffer); channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet5)); ospfMessageReader.readFromBuffer(channelBuffer); assertThat(ospfMessageReader, is(notNullValue())); } /** * Frames the packet to min frame length. * * @param ospfPacket OSPF packet * @return OSPF packet as byte array */ private byte[] framePacket(byte[] ospfPacket) { //Set the length of the packet //Get the total length of the packet int length = ospfPacket.length; //PDU_LENGTH + 1 byte for interface index if (length < OspfUtil.MINIMUM_FRAME_LEN) { byte[] bytes = new byte[OspfUtil.MINIMUM_FRAME_LEN + 5]; System.arraycopy(ospfPacket, 0, bytes, 0, length); return bytes; } return ospfPacket; } }