ONOS-2739 - OSPF Basic Packet Structures , which includes encoding and decoding

Change-Id: I33b48593ec38d28bdff215ce3a608a6d085a9077
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequestTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequestTest.java
new file mode 100644
index 0000000..41c9c4f
--- /dev/null
+++ b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequestTest.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright 2016 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.types;
+
+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.onlab.packet.Ip4Address;
+import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
+import org.onosproject.ospf.protocol.ospfpacket.subtype.LsRequestPacket;
+import org.onosproject.ospf.protocol.util.OspfPacketType;
+
+import java.net.UnknownHostException;
+import java.util.List;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Unit test class for LsRequest.
+ */
+public class LsRequestTest {
+
+    private LsRequest lsRequest;
+    private List<LsRequestPacket> result;
+    private OspfPacketType ospfMessageType;
+    private OspfPacketHeader ospfPacketHeader;
+    private byte[] result1;
+    private String result2;
+    private ChannelBuffer channelBuffer;
+    private LsRequestPacket lsRequestPacket;
+
+    @Before
+    public void setUp() throws Exception {
+        lsRequest = new LsRequest();
+        lsRequest.setAuthType(1);
+        lsRequest.setOspftype(3);
+        lsRequest.setRouterId(Ip4Address.valueOf("10.226.165.164"));
+        lsRequest.setAreaId(Ip4Address.valueOf("10.226.165.163"));
+        lsRequest.setChecksum(201);
+        lsRequest.setAuthentication(2);
+        lsRequest.setOspfPacLength(48);
+        lsRequest.setOspfVer(2);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        lsRequest = null;
+        result = null;
+        ospfMessageType = null;
+        ospfPacketHeader = null;
+        result1 = null;
+        channelBuffer = null;
+        lsRequestPacket = null;
+    }
+
+    /**
+     * Tests addLinkStateRequests() method.
+     */
+    @Test
+    public void testAddLinkStateRequests() throws Exception {
+        lsRequest.addLinkStateRequests(createLsRequestPacket());
+        result = lsRequest.getLinkStateRequests();
+        assertThat(result, is(notNullValue()));
+        assertThat(result.size(), is(1));
+    }
+
+    /**
+     * Tests getLinkStateRequests() method.
+     */
+    @Test
+    public void testGetLinkStateRequests() throws Exception {
+        lsRequest.addLinkStateRequests(createLsRequestPacket());
+        lsRequest.addLinkStateRequests(new LsRequestPacket());
+        result = lsRequest.getLinkStateRequests();
+        assertThat(result, is(notNullValue()));
+        assertThat(result.size(), is(2));
+    }
+
+    /**
+     * Tests ospfMessageType()getter  method.
+     */
+    @Test
+    public void testGetOspfMessageType() throws Exception {
+        ospfMessageType = lsRequest.ospfMessageType();
+        assertThat(ospfMessageType, is(notNullValue()));
+        assertThat(ospfMessageType, is(OspfPacketType.LSREQUEST));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        ospfPacketHeader = new OspfPacketHeader();
+        ospfPacketHeader.setAreaId(Ip4Address.valueOf("1.1.1.1"));
+        ospfPacketHeader.setAuthentication(0);
+        ospfPacketHeader.setAuthType(0);
+        ospfPacketHeader.setChecksum(12345);
+        ospfPacketHeader.setDestinationIp(Ip4Address.valueOf("10.10.10.10"));
+        ospfPacketHeader.setOspfPacLength(56);
+        ospfPacketHeader.setOspftype(3);
+        ospfPacketHeader.setOspfVer(2);
+        ospfPacketHeader.setRouterId(Ip4Address.valueOf("2.2.2.2"));
+        ospfPacketHeader.setSourceIp(Ip4Address.valueOf("3.3.3.3"));
+        lsRequest = new LsRequest(ospfPacketHeader);
+        result1 = createByteLsReqestPacket();
+        channelBuffer = ChannelBuffers.copiedBuffer(result1);
+        lsRequest.readFrom(channelBuffer);
+        assertThat(lsRequest, is(notNullValue()));
+        assertThat(lsRequest.ospfMessageType(), is(OspfPacketType.LSREQUEST));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        result1 = lsRequest.asBytes();
+        assertThat(result1, is(notNullValue()));
+    }
+
+    /**
+     * Tests getLsrHeaderAsByteArray() method.
+     */
+    @Test
+    public void testGetLsrHeaderAsByteArray() throws Exception {
+        result1 = lsRequest.getLsrHeaderAsByteArray();
+        assertThat(result1, is(notNullValue()));
+    }
+
+    /**
+     * Tests getLsrBodyAsByteArray() method.
+     */
+    @Test
+    public void testGetLsrBodyAsByteArray() throws Exception {
+        lsRequest.addLinkStateRequests(createLsRequestPacket());
+        lsRequest.addLinkStateRequests(new LsRequestPacket());
+        result1 = lsRequest.getLsrBodyAsByteArray();
+        assertThat(result1, is(notNullValue()));
+    }
+
+    /**
+     * Tests to string method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        result2 = lsRequest.toString();
+        assertThat(result2, is(notNullValue()));
+    }
+
+    private LsRequestPacket createLsRequestPacket() throws UnknownHostException {
+        lsRequestPacket = new LsRequestPacket();
+        lsRequestPacket.setOwnRouterId("165");
+        lsRequestPacket.setLinkStateId("10.226.165.164");
+        lsRequestPacket.setLsType(2);
+        return lsRequestPacket;
+    }
+
+    private byte[] createByteLsReqestPacket() {
+        byte[] lsRequestPacket = {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};
+        return lsRequestPacket;
+    }
+}
\ No newline at end of file