blob: 8cf0aef2fc2db788fe0e9e646aebcc7d001a8bcc [file] [log] [blame]
Dhruv Dhody43f3ce62016-02-16 22:44:21 +05301/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2016-present Open Networking Foundation
Dhruv Dhody43f3ce62016-02-16 22:44:21 +05303 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.ospf.protocol.ospfpacket;
17
18import org.jboss.netty.buffer.ChannelBuffer;
19import org.jboss.netty.buffer.ChannelBuffers;
20import org.junit.After;
21import org.junit.Before;
22import org.junit.Test;
sunishvkf7c56552016-07-18 16:02:39 +053023import org.onosproject.ospf.protocol.util.OspfUtil;
Dhruv Dhody43f3ce62016-02-16 22:44:21 +053024
25import static org.hamcrest.CoreMatchers.is;
26import static org.hamcrest.CoreMatchers.notNullValue;
27import static org.hamcrest.MatcherAssert.assertThat;
28
29/**
30 * Unit test class for OspfMessageReader.
31 */
32
33public class OspfMessageReaderTest {
34
sunishvkf7c56552016-07-18 16:02:39 +053035 private final byte[] packet1 = {2, 1, 0, 44, -64, -88, -86, 8,
Dhruv Dhody43f3ce62016-02-16 22:44:21 +053036 0, 0, 0, 1, 39, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0,
37 10, 2, 1, 0, 0, 0, 40, -64, -88, -86, 8, 0, 0, 0, 0};
sunishvkf7c56552016-07-18 16:02:39 +053038 private final byte[] packet2 = {2, 2, 0, 52, -64, -88, -86, 8, 0,
Dhruv Dhody43f3ce62016-02-16 22:44:21 +053039 0, 0, 1, -96, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -36, 2, 7, 65, 119,
40 -87, 126, 0, 23, 2, 1, 10, 10, 10, 10, 10, 10, 10, 10, -128, 0, 0, 6,
41 -69, 26, 0, 36};
sunishvkf7c56552016-07-18 16:02:39 +053042 private final byte[] packet3 = {2, 3, 0, 36, -64, -88, -86, 3, 0,
Dhruv Dhody43f3ce62016-02-16 22:44:21 +053043 0, 0, 1, -67, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -64, -88,
44 -86, 8, -64, -88, -86, 8};
sunishvkf7c56552016-07-18 16:02:39 +053045 private final byte[] packet4 = {2, 4, 1, 36, -64, -88, -86, 3, 0,
Dhruv Dhody43f3ce62016-02-16 22:44:21 +053046 0, 0, 1, 54, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
sunish vkaa48da82016-03-02 23:17:06 +053047 2, 2, 1, -64, -88, -86, 3, -64, -88, -86, 3, -128, 0,
48 0, 1, 58, -100, 0, 48, 2, 0, 0, 2, -64, -88, -86,
49 0, -1, -1, -1, 0, 3, 0, 0, 10, -64, -88, -86, 0,
Dhruv Dhody43f3ce62016-02-16 22:44:21 +053050 -1, -1, -1, 0, 3, 0, 0, 10, 0, 3, 2, 5, 80, -44,
51 16, 0, -64, -88, -86, 2, -128, 0, 0, 1, 42, 73, 0,
52 36, -1, -1, -1, -1, -128, 0, 0, 20, 0, 0, 0, 0, 0,
53 0, 0, 0, 0, 3, 2, 5, -108, 121, -85, 0, -64, -88,
54 -86, 2, -128, 0, 0, 1, 52, -91, 0, 36, -1, -1, -1,
55 0, -128, 0, 0, 20, -64, -88, -86, 1, 0, 0, 0, 0, 0,
56 3, 2, 5, -64, -126, 120, 0, -64, -88, -86, 2, -128, 0,
57 0, 1, -45, 25, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20,
58 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -64, -88, 0, 0,
sunish vkaa48da82016-03-02 23:17:06 +053059 -64, -88, -86, 2, -128, 0, 0, 1, 55, 8, 0, 36, -1, -1,
60 -1, 0, -128, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Dhruv Dhody43f3ce62016-02-16 22:44:21 +053061 3, 2, 5, -64, -88, 1, 0, -64, -88, -86, 2, -128, 0, 0,
62 1, 44, 18, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20, 0, 0,
63 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -64, -88, -84, 0, -64,
64 -88, -86, 2, -128, 0, 0, 1, 51, 65, 0, 36, -1, -1, -1, 0,
65 -128, 0, 0, 20, -64, -88, -86, 10, 0, 0, 0, 0};
sunishvkf7c56552016-07-18 16:02:39 +053066 private final byte[] packet5 = {2, 5, 0, 44, -64, -88, -86, 8, 0, 0,
Dhruv Dhody43f3ce62016-02-16 22:44:21 +053067 0, 1, -30, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 16, 2, 1, -64, -88, -86,
68 2, -64, -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48};
69 private OspfMessageReader ospfMessageReader;
70 private ChannelBuffer channelBuffer;
71
72 @Before
73 public void setUp() throws Exception {
74 ospfMessageReader = new OspfMessageReader();
75 }
76
77 @After
78 public void tearDown() throws Exception {
79 ospfMessageReader = null;
80 channelBuffer = null;
81 }
82
83 /**
84 * Tests readFromBuffer() method.
85 */
86 @Test
87 public void testReadFromBuffer() throws Exception {
sunishvkf7c56552016-07-18 16:02:39 +053088 channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet1));
Dhruv Dhody43f3ce62016-02-16 22:44:21 +053089 ospfMessageReader.readFromBuffer(channelBuffer);
90
sunishvkf7c56552016-07-18 16:02:39 +053091 channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet2));
Dhruv Dhody43f3ce62016-02-16 22:44:21 +053092 ospfMessageReader.readFromBuffer(channelBuffer);
93
sunishvkf7c56552016-07-18 16:02:39 +053094 channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet3));
Dhruv Dhody43f3ce62016-02-16 22:44:21 +053095 ospfMessageReader.readFromBuffer(channelBuffer);
96
sunishvkf7c56552016-07-18 16:02:39 +053097 channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet4));
Dhruv Dhody43f3ce62016-02-16 22:44:21 +053098 ospfMessageReader.readFromBuffer(channelBuffer);
99
sunishvkf7c56552016-07-18 16:02:39 +0530100 channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet5));
Dhruv Dhody43f3ce62016-02-16 22:44:21 +0530101 ospfMessageReader.readFromBuffer(channelBuffer);
102 assertThat(ospfMessageReader, is(notNullValue()));
sunishvkf7c56552016-07-18 16:02:39 +0530103 }
Dhruv Dhody43f3ce62016-02-16 22:44:21 +0530104
sunishvkf7c56552016-07-18 16:02:39 +0530105 /**
106 * Frames the packet to min frame length.
107 *
108 * @param ospfPacket OSPF packet
109 * @return OSPF packet as byte array
110 */
111 private byte[] framePacket(byte[] ospfPacket) {
112 //Set the length of the packet
113 //Get the total length of the packet
114 int length = ospfPacket.length;
115 //PDU_LENGTH + 1 byte for interface index
116 if (length < OspfUtil.MINIMUM_FRAME_LEN) {
117 byte[] bytes = new byte[OspfUtil.MINIMUM_FRAME_LEN + 5];
118 System.arraycopy(ospfPacket, 0, bytes, 0, length);
119 return bytes;
120 }
121 return ospfPacket;
Dhruv Dhody43f3ce62016-02-16 22:44:21 +0530122 }
sunish vkaa48da82016-03-02 23:17:06 +0530123}