ONOS-2740,ONOS-2741,from ONOS-3032 - to ONOS 3071 , OSPF Protocol Implementation Unit Tests

Change-Id: I18972a0712fbd63798f92da7b4c48381b4a38519
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfInterfaceChannelHandlerTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfInterfaceChannelHandlerTest.java
new file mode 100755
index 0000000..8c2e969
--- /dev/null
+++ b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfInterfaceChannelHandlerTest.java
@@ -0,0 +1,1157 @@
+/*
+ * 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.controller.impl;
+
+import org.easymock.EasyMock;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.jboss.netty.buffer.HeapChannelBufferFactory;
+import org.jboss.netty.channel.Channel;
+import org.jboss.netty.channel.ChannelConfig;
+import org.jboss.netty.channel.ChannelFuture;
+import org.jboss.netty.channel.ChannelHandlerContext;
+import org.jboss.netty.channel.ChannelStateEvent;
+import org.jboss.netty.channel.ExceptionEvent;
+import org.jboss.netty.channel.MessageEvent;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+import org.onosproject.ospf.controller.OspfAreaAddressRange;
+import org.onosproject.ospf.controller.OspfInterface;
+import org.onosproject.ospf.controller.OspfNbr;
+import org.onosproject.ospf.controller.OspfNeighborState;
+import org.onosproject.ospf.controller.TopologyForDeviceAndLink;
+import org.onosproject.ospf.controller.area.OspfAreaAddressRangeImpl;
+import org.onosproject.ospf.controller.area.OspfAreaImpl;
+import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
+import org.onosproject.ospf.controller.util.OspfEligibleRouter;
+import org.onosproject.ospf.exceptions.OspfParseException;
+import org.onosproject.ospf.protocol.lsa.LsaHeader;
+import org.onosproject.ospf.protocol.lsa.TlvHeader;
+import org.onosproject.ospf.protocol.lsa.tlvtypes.RouterTlv;
+import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
+import org.onosproject.ospf.protocol.ospfpacket.OspfMessage;
+import org.onosproject.ospf.protocol.ospfpacket.subtype.LsRequestPacket;
+import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket;
+import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket;
+import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge;
+import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest;
+import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate;
+import org.onosproject.ospf.protocol.util.ChecksumCalculator;
+import org.onosproject.ospf.protocol.util.OspfInterfaceState;
+
+import java.net.SocketAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+
+/**
+ * Unit test class for OspfInterfaceChannelHandler.
+ */
+public class OspfInterfaceChannelHandlerTest {
+
+    private List<OspfAreaAddressRange> addressRanges;
+    private List<OspfInterface> ospfInterfaces;
+    private Controller controller;
+    private OspfAreaImpl ospfArea;
+    private OspfInterfaceImpl ospfInterface;
+    private OspfInterfaceChannelHandler ospfInterfaceChannelHandler;
+    private HashMap<String, OspfNbr> ospfNbrHashMap;
+    private OspfNbrImpl ospfNbr;
+    private Channel channel;
+    private ChannelHandlerContext channelHandlerContext;
+    private ChannelStateEvent channelStateEvent;
+    private HelloPacket helloPacket;
+    private DdPacket ddPacket;
+    private ChecksumCalculator checksumCalculator;
+    private byte[] byteArray;
+    private byte[] checkArray;
+    private ChannelBuffer buf;
+    private OspfEligibleRouter ospfEligibleRouter;
+    private LsUpdate lsUpdate;
+    private LsAcknowledge lsAck;
+    private LsRequest lsRequest;
+    private TopologyForDeviceAndLink topologyForDeviceAndLink;
+
+    @Before
+    public void setUp() throws Exception {
+        addressRanges = new ArrayList();
+        ospfInterfaces = new ArrayList<>();
+        ospfArea = createOspfArea();
+        ospfInterface = createOspfInterface();
+        ospfNbrHashMap = new HashMap();
+        topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl();
+        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"),
+                                  Ip4Address.valueOf("2.2.2.2"), 2,
+                                  new OspfInterfaceChannelHandler(new Controller(), ospfArea,
+                                                                  ospfInterface)
+                , topologyForDeviceAndLink);
+        ospfNbr.setNeighborId(Ip4Address.valueOf("10.10.10.10"));
+        ospfNbr.setRouterPriority(0);
+        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
+        ospfInterface.addNeighbouringRouter(ospfNbr);
+        controller = new Controller();
+        ospfInterfaceChannelHandler = new OspfInterfaceChannelHandler();
+        ospfInterfaceChannelHandler = new OspfInterfaceChannelHandler(controller, ospfArea,
+                                                                      ospfInterface);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        ospfInterfaceChannelHandler = null;
+        addressRanges = null;
+        ospfInterfaces = null;
+        controller = null;
+        ospfArea = null;
+        ospfInterfaceChannelHandler = null;
+        ospfInterface = null;
+        ospfNbrHashMap = null;
+        channel = null;
+        channelHandlerContext = null;
+        channelStateEvent = null;
+        helloPacket = null;
+        ddPacket = null;
+        checksumCalculator = null;
+        byteArray = null;
+        checkArray = null;
+        ospfEligibleRouter = null;
+        lsUpdate = null;
+        lsAck = null;
+        lsRequest = null;
+    }
+
+    /**
+     * Tests interfaceUp() method.
+     */
+    @Test
+    public void testInterfaceUp() throws Exception {
+        ospfInterface.setInterfaceType(2);
+        ospfInterface.setRouterPriority(0);
+        ospfInterfaceChannelHandler.interfaceUp();
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+    }
+
+    /**
+     * Tests interfaceUp() method.
+     */
+    @Test
+    public void testInterfaceUp1() throws Exception {
+
+        ospfInterface.setInterfaceType(2);
+        ospfInterface.setRouterPriority(0);
+        ospfInterfaceChannelHandler.interfaceUp();
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+    }
+
+    /**
+     * Tests interfaceUp() method.
+     */
+    @Test
+    public void testInterfaceUp2() throws Exception {
+        ospfInterface.setInterfaceType(1);
+        ospfInterface.setRouterPriority(1);
+        ospfInterfaceChannelHandler.interfaceUp();
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+    }
+
+    /**
+     * Tests interfaceUp() method.
+     */
+    @Test
+    public void testInterfaceUp3() throws Exception {
+        ospfInterface.setInterfaceType(2);
+        ospfInterface.setRouterPriority(1);
+        ospfInterfaceChannelHandler.interfaceUp();
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+    }
+
+    /**
+     * Tests backupSeen() method.
+     */
+    @Test
+    public void testBackupSeen() throws Exception {
+        channel = EasyMock.createMock(Channel.class);
+        ospfInterface.setState(OspfInterfaceState.WAITING);
+        ospfInterfaceChannelHandler.backupSeen(channel);
+        assertThat(ospfInterface.dr(), is(notNullValue()));
+    }
+
+    /**
+     * Tests waitTimer() method.
+     */
+    @Test
+    public void testWaitTimer() throws Exception {
+        channel = EasyMock.createMock(Channel.class);
+        ospfInterface.setState(OspfInterfaceState.WAITING);
+        ospfInterface.setIpAddress(Ip4Address.valueOf("10.10.10.10"));
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
+        ospfInterfaceChannelHandler.waitTimer(channel);
+        assertThat(ospfInterface.dr(), is(notNullValue()));
+    }
+
+    /**
+     * Tests neighborChange() method.
+     */
+    @Test
+    public void testNeighborChange() throws Exception {
+        ospfNbrHashMap = new HashMap();
+        ospfNbr = new OspfNbrImpl(new OspfAreaImpl(), new OspfInterfaceImpl(),
+                                  Ip4Address.valueOf("1.1.1.1"), Ip4Address.valueOf("2.2.2.2"), 2,
+                                  new OspfInterfaceChannelHandler(new Controller(),
+                                                                  new OspfAreaImpl(),
+                                                                  new OspfInterfaceImpl())
+                , topologyForDeviceAndLink);
+        ospfNbr.setNeighborId(Ip4Address.valueOf("111.111.111.111"));
+        ospfNbrHashMap.put("111.111.111.111", ospfNbr);
+        ospfNbr.setState(OspfNeighborState.EXCHANGE);
+        ospfInterface.setListOfNeighbors(ospfNbrHashMap);
+        ospfInterface.setIpAddress(Ip4Address.valueOf("10.10.10.10"));
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
+        ospfInterface.setIpAddress(Ip4Address.valueOf("10.10.10.10"));
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
+        channel = EasyMock.createMock(Channel.class);
+        ospfInterface.setState(OspfInterfaceState.DR);
+        ospfInterfaceChannelHandler.waitTimer(channel);
+        assertThat(ospfInterface.dr(), is(Ip4Address.valueOf("0.0.0.0")));
+    }
+
+    /**
+     * Tests interfaceDown() method.
+     */
+    @Test(expected = Exception.class)
+    public void testInterfaceDown() throws Exception {
+        ospfInterfaceChannelHandler.interfaceDown();
+        assertThat(ospfInterface.state(), is(OspfInterfaceState.DOWN));
+    }
+
+    /**
+     * Tests channelConnected() method.
+     */
+    @Test(expected = Exception.class)
+    public void testChannelConnected() throws Exception {
+        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
+        channelStateEvent = EasyMock.createMock(ChannelStateEvent.class);
+        ospfInterfaceChannelHandler.channelConnected(channelHandlerContext, channelStateEvent);
+        assertThat(ospfInterface.state(), is(notNullValue()));
+    }
+
+    /**
+     * Tests exceptionCaught() method.
+     */
+    @Test(expected = Exception.class)
+    public void testExceptionCaught() throws Exception {
+        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
+        ExceptionEvent exception = EasyMock.createMock(ExceptionEvent.class);
+        ospfInterfaceChannelHandler.exceptionCaught(channelHandlerContext, exception);
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+    }
+
+    /**
+     * Tests channelDisconnected() method.
+     */
+    @Test(expected = Exception.class)
+    public void testChannelDisconnected() throws Exception {
+        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
+        channelStateEvent = EasyMock.createMock(ChannelStateEvent.class);
+
+        ospfInterfaceChannelHandler.channelDisconnected(channelHandlerContext, channelStateEvent);
+
+        assertThat(ospfInterface.state(), is(notNullValue()));
+    }
+
+    /**
+     * Tests messageReceived() method.
+     */
+    @Test
+    public void testMessageReceived() throws Exception {
+        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
+        ospfInterface.setInterfaceType(2);
+        ospfArea.setAreaId(Ip4Address.valueOf("13.13.13.13"));
+        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
+        MessageEvent messageEvent = new MessageEvent() {
+            @Override
+            public Object getMessage() {
+                helloPacket = new HelloPacket();
+                helloPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
+                helloPacket.setRouterId(Ip4Address.valueOf("10.10.10.10"));
+                helloPacket.setOspfVer(2);
+                helloPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+                helloPacket.setOptions(2);
+                helloPacket.setAreaId(Ip4Address.valueOf("5.5.5.5"));
+                helloPacket.setNetworkMask(Ip4Address.valueOf("3.3.3.3"));
+                helloPacket.setOspftype(1);
+                helloPacket.setAuthType(0);
+                helloPacket.setAuthentication(0);
+                checksumCalculator = new ChecksumCalculator();
+                byteArray = helloPacket.asBytes();
+                helloPacket.setOspfPacLength(byteArray.length);
+                checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13);
+                buf = ChannelBuffers.copiedBuffer(checkArray);
+                helloPacket.setChecksum(buf.readUnsignedShort());
+                List<HelloPacket> messPackets = new ArrayList<>();
+                messPackets.add(helloPacket);
+                return messPackets;
+            }
+
+            @Override
+            public SocketAddress getRemoteAddress() {
+                return null;
+            }
+
+            @Override
+            public Channel getChannel() {
+                return null;
+            }
+
+            @Override
+            public ChannelFuture getFuture() {
+                return null;
+            }
+        };
+        ospfInterfaceChannelHandler.messageReceived(channelHandlerContext, messageEvent);
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+    }
+
+    /**
+     * Tests processOSPFMessage() method.
+     */
+    @Test
+    public void testProcessOSPFMessage() throws Exception {
+        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("225.225.225.225"));
+        ospfInterface.setInterfaceType(2);
+        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
+        OspfMessage message;
+        helloPacket = new HelloPacket();
+        helloPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
+        helloPacket.setRouterId(Ip4Address.valueOf("10.10.10.10"));
+        helloPacket.setOspfVer(2);
+        helloPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        helloPacket.setOptions(2);
+        helloPacket.setNetworkMask(Ip4Address.valueOf("3.3.3.3"));
+        helloPacket.setOspftype(1);
+        helloPacket.setAuthType(0);
+        helloPacket.setHelloInterval(60);
+        helloPacket.setRouterDeadInterval(60);
+        helloPacket.setAuthentication(0);
+        checksumCalculator = new ChecksumCalculator();
+        byteArray = helloPacket.asBytes();
+        helloPacket.setOspfPacLength(byteArray.length);
+        checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13);
+        checkArray[0] = -53;
+        checkArray[1] = 37;
+        buf = ChannelBuffers.copiedBuffer(checkArray);
+        helloPacket.setChecksum(buf.readUnsignedShort());
+        message = helloPacket;
+        ospfInterfaceChannelHandler.processOSPFMessage(message, channelHandlerContext);
+        ddPacket = new DdPacket();
+        ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
+        ddPacket.setRouterId(Ip4Address.valueOf("10.10.10.10"));
+        ddPacket.setOspfVer(2);
+        ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        ddPacket.setOptions(2);
+        ddPacket.setOspftype(2);
+        ddPacket.setAuthType(0);
+        ddPacket.setAuthentication(0);
+        checksumCalculator = new ChecksumCalculator();
+        byteArray = ddPacket.asBytes();
+        ddPacket.setOspfPacLength(byteArray.length);
+        checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13);
+        checkArray[0] = -49;
+        checkArray[1] = -79;
+        buf = ChannelBuffers.copiedBuffer(checkArray);
+        ddPacket.setChecksum(buf.readUnsignedShort());
+        message = ddPacket;
+        ospfInterfaceChannelHandler.processOSPFMessage(message, channelHandlerContext);
+        lsRequest = new LsRequest();
+        lsRequest.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
+        lsRequest.setRouterId(Ip4Address.valueOf("10.10.10.10"));
+        lsRequest.setOspfVer(2);
+        lsRequest.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        lsRequest.setOspftype(3);
+        lsRequest.setAuthType(0);
+        lsRequest.setAuthentication(0);
+        checksumCalculator = new ChecksumCalculator();
+        byteArray = lsRequest.asBytes();
+        lsRequest.setOspfPacLength(byteArray.length);
+        checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13);
+        checkArray[0] = -33;
+        checkArray[1] = -58;
+        buf = ChannelBuffers.copiedBuffer(checkArray);
+        lsRequest.setChecksum(buf.readUnsignedShort());
+        message = lsRequest;
+        ospfInterfaceChannelHandler.processOSPFMessage(message, channelHandlerContext);
+        lsUpdate = new LsUpdate();
+        lsUpdate.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
+        lsUpdate.setRouterId(Ip4Address.valueOf("10.10.10.10"));
+        lsUpdate.setOspfVer(2);
+        lsUpdate.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        lsUpdate.setOspftype(4);
+        lsUpdate.setAuthType(0);
+        lsUpdate.setAuthentication(0);
+        checksumCalculator = new ChecksumCalculator();
+        byteArray = lsUpdate.asBytes();
+        lsUpdate.setOspfPacLength(byteArray.length);
+        checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13);
+        checkArray[0] = -47;
+        checkArray[1] = -77;
+        buf = ChannelBuffers.copiedBuffer(checkArray);
+        lsUpdate.setChecksum(buf.readUnsignedShort());
+        message = lsUpdate;
+        ospfInterfaceChannelHandler.processOSPFMessage(message, channelHandlerContext);
+        lsAck = new LsAcknowledge();
+        lsAck.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
+        lsAck.setRouterId(Ip4Address.valueOf("10.10.10.10"));
+        lsAck.setOspfVer(2);
+        lsAck.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        lsAck.setOspftype(5);
+        lsAck.setAuthType(0);
+        lsAck.setAuthentication(0);
+        checksumCalculator = new ChecksumCalculator();
+        byteArray = lsAck.asBytes();
+        lsAck.setOspfPacLength(byteArray.length);
+        checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13);
+        checkArray[0] = -47;
+        checkArray[1] = -74;
+        buf = ChannelBuffers.copiedBuffer(checkArray);
+        lsAck.setChecksum(buf.readUnsignedShort());
+        message = lsAck;
+        ospfInterfaceChannelHandler.processOSPFMessage(message, channelHandlerContext);
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+
+    }
+
+    /**
+     * Tests processHelloMessage() method.
+     */
+    @Test
+    public void testProcessHelloMessage() throws Exception {
+        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
+        ospfInterface.setInterfaceType(1);
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("244.244.244.244"));
+        ospfInterface.setHelloIntervalTime(10);
+        ospfInterface.setRouterDeadIntervalTime(10);
+        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
+        OspfMessage message;
+        helloPacket = new HelloPacket();
+        helloPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
+        helloPacket.setOspfVer(2);
+        helloPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        helloPacket.setNetworkMask(Ip4Address.valueOf("244.244.244.244"));
+        helloPacket.setHelloInterval(10);
+        helloPacket.setRouterDeadInterval(10);
+        helloPacket.setDr(Ip4Address.valueOf("10.10.10.10"));
+        helloPacket.setBdr(Ip4Address.valueOf("11.11.11.11"));
+        helloPacket.setRouterId(Ip4Address.valueOf("111.111.111.111"));
+        message = helloPacket;
+        ospfInterfaceChannelHandler.processHelloMessage(message, channelHandlerContext);
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+    }
+
+    /**
+     * Tests processHelloMessage() method.
+     */
+    @Test
+    public void testProcessHelloMessage1() throws Exception {
+        ospfInterface.setInterfaceType(2);
+        ospfInterface.setRouterPriority(1);
+        ospfInterfaceChannelHandler.interfaceUp();
+        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
+        ospfInterface.setState(OspfInterfaceState.WAITING);
+        ospfInterface.setInterfaceType(2);
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("244.244.244.244"));
+        ospfInterface.setHelloIntervalTime(10);
+        ospfInterface.setRouterDeadIntervalTime(10);
+        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
+        OspfMessage message;
+        helloPacket = new HelloPacket();
+        helloPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
+        helloPacket.setOspfVer(2);
+        helloPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        helloPacket.setNetworkMask(Ip4Address.valueOf("244.244.244.244"));
+        helloPacket.setHelloInterval(10);
+        helloPacket.setRouterDeadInterval(10);
+        helloPacket.setDr(Ip4Address.valueOf("10.10.10.10"));
+        helloPacket.setBdr(Ip4Address.valueOf("11.11.11.11"));
+        helloPacket.setRouterId(Ip4Address.valueOf("2.2.2.2"));
+        message = helloPacket;
+        ospfInterfaceChannelHandler.processHelloMessage(message, channelHandlerContext);
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+        ospfNbrHashMap = new HashMap();
+        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"),
+                                  Ip4Address.valueOf("2.2.2.2"), 2,
+                                  new OspfInterfaceChannelHandler(new Controller(), ospfArea,
+                                                                  ospfInterface)
+                , topologyForDeviceAndLink);
+        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
+        ospfNbr.setRouterPriority(0);
+        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
+        ospfInterface.addNeighbouringRouter(ospfNbr);
+        ospfInterfaceChannelHandler.processHelloMessage(message, channelHandlerContext);
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+    }
+
+    /**
+     * Tests processDdMessage() method.
+     */
+    @Test
+    public void testProcessDdMessage() throws Exception {
+        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
+        ospfInterface.setInterfaceType(2);
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
+        ospfInterface.setHelloIntervalTime(10);
+        ospfInterface.setRouterDeadIntervalTime(10);
+        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
+        OspfMessage message;
+        ddPacket = new DdPacket();
+        ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
+        ddPacket.setOspfVer(2);
+        ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2"));
+        ddPacket.setIsOpaqueCapable(true);
+        ddPacket.setIsMore(1);
+        ddPacket.setIsInitialize(1);
+        ddPacket.setIsMaster(1);
+        ddPacket.setSequenceNo(123);
+        message = ddPacket;
+        ospfNbrHashMap = new HashMap();
+        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"),
+                                  Ip4Address.valueOf("2.2.2.2"), 2,
+                                  new OspfInterfaceChannelHandler(new Controller(), ospfArea,
+                                                                  ospfInterface)
+                , topologyForDeviceAndLink);
+        ospfNbr.setLastDdPacket(createDdPacket());
+        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
+        ospfNbr.setState(OspfNeighborState.EXSTART);
+        ospfNbr.setRouterPriority(0);
+        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
+        ospfNbr.setDdSeqNum(123);
+        ospfInterface.addNeighbouringRouter(ospfNbr);
+        ospfInterfaceChannelHandler.processDdMessage(message, channelHandlerContext);
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+    }
+
+    /**
+     * Tests processDdMessage() method.
+     */
+    @Test(expected = Exception.class)
+    public void testProcessDdMessage3() throws Exception {
+        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
+        ospfInterface.setInterfaceType(2);
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
+        ospfInterface.setHelloIntervalTime(10);
+        ospfInterface.setRouterDeadIntervalTime(10);
+        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
+        OspfMessage message;
+        ddPacket = new DdPacket();
+        ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
+        ddPacket.setOspfVer(2);
+        ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2"));
+        ddPacket.setIsOpaqueCapable(true);
+        ddPacket.setIsMore(1);
+        ddPacket.setIsInitialize(1);
+        ddPacket.setIsMaster(1);
+        ddPacket.setSequenceNo(123);
+        message = ddPacket;
+        ospfNbrHashMap = new HashMap();
+        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"),
+                                  Ip4Address.valueOf("2.2.2.2"), 2,
+                                  new OspfInterfaceChannelHandler(new Controller(), ospfArea,
+                                                                  ospfInterface)
+                , topologyForDeviceAndLink);
+        ospfNbr.setLastDdPacket(createDdPacket());
+        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
+        ospfNbr.setState(OspfNeighborState.EXSTART);
+        ospfNbr.setRouterPriority(0);
+        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
+        ospfNbr.setDdSeqNum(123);
+        ospfInterface.addNeighbouringRouter(ospfNbr);
+        ddPacket.setIsMore(1);
+        ddPacket.setIsInitialize(0);
+        ddPacket.setIsMaster(0);
+        ddPacket.setSequenceNo(123);
+        ospfInterface.addNeighbouringRouter(ospfNbr);
+        ospfInterfaceChannelHandler.processDdMessage(message, channelHandlerContext);
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+    }
+
+    /**
+     * Tests processDdMessage() method.
+     */
+    @Test(expected = Exception.class)
+    public void testProcessDdMessage1() throws Exception {
+        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
+        ospfInterface.setInterfaceType(2);
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
+        ospfInterface.setHelloIntervalTime(10);
+        ospfInterface.setRouterDeadIntervalTime(10);
+        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
+        OspfMessage message;
+        ddPacket = new DdPacket();
+        ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
+        ddPacket.setOspfVer(2);
+        ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2"));
+        ddPacket.setIsOpaqueCapable(true);
+        ddPacket.setIsMore(1);
+        ddPacket.setIsInitialize(1);
+        ddPacket.setIsMaster(1);
+        ddPacket.setSequenceNo(123);
+        message = ddPacket;
+        ospfNbrHashMap = new HashMap();
+        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"),
+                                  Ip4Address.valueOf("2.2.2.2"), 2,
+                                  new OspfInterfaceChannelHandler(new Controller(), ospfArea,
+                                                                  ospfInterface)
+                , topologyForDeviceAndLink);
+        ospfNbr.setLastDdPacket(createDdPacket());
+        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
+        ospfNbr.setState(OspfNeighborState.EXCHANGE);
+        ospfNbr.setRouterPriority(0);
+        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
+        ospfNbr.setDdSeqNum(123);
+        ospfInterface.addNeighbouringRouter(ospfNbr);
+        ddPacket.setIsMore(1);
+        ddPacket.setIsInitialize(0);
+        ddPacket.setIsMaster(0);
+        ddPacket.setSequenceNo(123);
+        ospfInterface.addNeighbouringRouter(ospfNbr);
+        ospfInterfaceChannelHandler.processDdMessage(message, channelHandlerContext);
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+
+    }
+
+    /**
+     * Tests processDdMessage() method.
+     */
+    @Test(expected = Exception.class)
+    public void testProcessDdMessage2() throws Exception {
+        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
+        ospfInterface.setInterfaceType(2);
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
+        ospfInterface.setHelloIntervalTime(10);
+        ospfInterface.setRouterDeadIntervalTime(10);
+        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
+        OspfMessage message;
+        ddPacket = new DdPacket();
+        ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
+        ddPacket.setOspfVer(2);
+        ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2"));
+        ddPacket.setIsOpaqueCapable(true);
+        ddPacket.setIsMore(1);
+        ddPacket.setIsInitialize(1);
+        ddPacket.setIsMaster(1);
+        ddPacket.setSequenceNo(123);
+        message = ddPacket;
+        ospfNbrHashMap = new HashMap();
+        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"),
+                                  Ip4Address.valueOf("2.2.2.2"), 2,
+                                  new OspfInterfaceChannelHandler(new Controller(), ospfArea,
+                                                                  ospfInterface)
+                , topologyForDeviceAndLink);
+        ospfNbr.setLastDdPacket(createDdPacket());
+        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
+        ospfNbr.setState(OspfNeighborState.LOADING);
+        ospfNbr.setRouterPriority(0);
+        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
+        ospfNbr.setDdSeqNum(123);
+        ospfInterface.addNeighbouringRouter(ospfNbr);
+        ospfInterfaceChannelHandler.processDdMessage(message, channelHandlerContext);
+        ddPacket.setIsMore(1);
+        ddPacket.setIsInitialize(0);
+        ddPacket.setIsMaster(0);
+        ddPacket.setSequenceNo(123);
+        ospfInterface.addNeighbouringRouter(ospfNbr);
+        ospfNbr.setState(OspfNeighborState.LOADING);
+        ospfInterface.addNeighbouringRouter(ospfNbr);
+
+        ospfInterfaceChannelHandler.processDdMessage(message, channelHandlerContext);
+
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+
+    }
+
+    /**
+     * Tests processLsRequestMessage() method.
+     */
+    @Test
+    public void testProcessLSRequestMessage() throws Exception {
+        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
+        ospfInterface.setInterfaceType(2);
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
+        ospfInterface.setHelloIntervalTime(10);
+        ospfInterface.setRouterDeadIntervalTime(10);
+        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
+        OspfMessage message;
+        lsRequest = new LsRequest();
+        lsRequest.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
+        lsRequest.setOspfVer(2);
+        lsRequest.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        lsRequest.setRouterId(Ip4Address.valueOf("10.226.165.100"));
+        List<LsRequestPacket> lsRequests = new ArrayList();
+        LsRequestPacket lsRequestPacket = new LsRequestPacket();
+        lsRequestPacket.setLsType(3);
+        lsRequestPacket.setLinkStateId("2.2.2.2");
+        lsRequestPacket.setOwnRouterId("2.2.2.2");
+        lsRequests.add(lsRequestPacket);
+        lsRequests.add(lsRequestPacket);
+        lsRequest.addLinkStateRequests(new LsRequestPacket());
+        lsRequest.addLinkStateRequests(new LsRequestPacket());
+        message = lsRequest;
+        ospfNbrHashMap = new HashMap();
+        ospfNbr.setState(OspfNeighborState.EXCHANGE);
+        ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"),
+                                  Ip4Address.valueOf("10.226.165.100"), 2,
+                                  new OspfInterfaceChannelHandler(new Controller(), ospfArea,
+                                                                  createOspfInterface1())
+                , topologyForDeviceAndLink);
+        ospfNbr.setLastDdPacket(createDdPacket());
+        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
+        ospfNbr.setState(OspfNeighborState.FULL);
+        ospfNbr.setRouterPriority(0);
+        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
+        ospfNbr.setDdSeqNum(123);
+        ospfInterface.addNeighbouringRouter(ospfNbr);
+        ospfInterface.setListOfNeighbors(ospfNbrHashMap);
+        ospfInterfaceChannelHandler.processLsRequestMessage(message, channelHandlerContext);
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+
+    }
+
+    /**
+     * Tests processLsUpdateMessage() method.
+     */
+    @Test
+    public void testProcessLSUpdateMessage() throws Exception {
+        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
+        ospfInterface.setInterfaceType(2);
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
+        ospfInterface.setHelloIntervalTime(10);
+        ospfInterface.setRouterDeadIntervalTime(10);
+        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
+        OspfMessage message;
+        lsUpdate = new LsUpdate();
+        lsUpdate.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
+        lsUpdate.setOspfVer(2);
+        lsUpdate.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        lsUpdate.setRouterId(Ip4Address.valueOf("10.226.165.100"));
+        RouterLsa routerLsa = new RouterLsa();
+        lsUpdate.addLsa(routerLsa);
+        lsUpdate.setNumberOfLsa(1);
+        message = lsUpdate;
+        ospfNbrHashMap = new HashMap();
+        ospfNbr.setState(OspfNeighborState.FULL);
+        ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"),
+                                  Ip4Address.valueOf("10.226.165.100"), 2,
+                                  new OspfInterfaceChannelHandler(new Controller(), ospfArea,
+                                                                  createOspfInterface1())
+                , topologyForDeviceAndLink);
+        ospfNbr.setLastDdPacket(createDdPacket());
+        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
+        ospfNbr.setState(OspfNeighborState.FULL);
+        ospfNbr.setRouterPriority(0);
+        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
+        ospfNbr.setDdSeqNum(123);
+        ospfInterface.addNeighbouringRouter(ospfNbr);
+        ospfInterfaceChannelHandler.processLsUpdateMessage(message, channelHandlerContext);
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+
+    }
+
+    @Test(expected = Exception.class)
+    public void testProcessLSAckMessage() throws Exception {
+        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
+        ospfInterface.setInterfaceType(2);
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
+        ospfInterface.setHelloIntervalTime(10);
+        ospfInterface.setRouterDeadIntervalTime(10);
+        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
+        OspfMessage message;
+        lsAck = new LsAcknowledge();
+        lsAck.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
+        lsAck.setOspfVer(2);
+        lsAck.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        LsaHeader lsaHeader = new LsaHeader();
+        lsAck.addLinkStateHeader(lsaHeader);
+        message = lsAck;
+        ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"),
+                                  Ip4Address.valueOf("10.226.165.100"), 2,
+                                  new OspfInterfaceChannelHandler(new Controller(), ospfArea,
+                                                                  createOspfInterface())
+                , topologyForDeviceAndLink);
+        ospfNbr.setLastDdPacket(createDdPacket());
+        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
+        ospfNbr.setState(OspfNeighborState.FULL);
+        ospfNbr.setRouterPriority(0);
+        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
+        ospfNbr.setDdSeqNum(123);
+        ospfInterfaceChannelHandler.processLsAckMessage(message, channelHandlerContext);
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+
+    }
+
+    /**
+     * Tests compareDdPackets() method.
+     */
+    @Test
+    public void testCompareDDPackets() throws Exception {
+        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
+        ospfInterface.setInterfaceType(2);
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
+        ospfInterface.setHelloIntervalTime(10);
+        ospfInterface.setRouterDeadIntervalTime(10);
+        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
+        OspfMessage message;
+        ddPacket = new DdPacket();
+        ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
+        ddPacket.setOspfVer(2);
+        ddPacket.setIsInitialize(1);
+        ddPacket.setIsMaster(1);
+        ddPacket.setIsMore(1);
+        ddPacket.setOptions(2);
+        ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
+        assertThat(ospfInterfaceChannelHandler.compareDdPackets(ddPacket, ddPacket), is(true));
+    }
+
+    @Test(expected = Exception.class)
+    public void testCloseChannel() throws Exception {
+        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
+
+        ospfInterfaceChannelHandler.closeChannel(channelHandlerContext);
+
+        assertThat(ospfInterface.dr(), is(notNullValue()));
+    }
+
+    /**
+     * Tests electRouter() method.
+     */
+    @Test
+    public void testElectRouter() throws Exception {
+        ospfInterface.setDr(Ip4Address.valueOf("3.3.3.3"));
+        ospfInterface.setBdr(Ip4Address.valueOf("3.3.3.3"));
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
+        ChannelConfig channelConfig = EasyMock.createMock(ChannelConfig.class);
+        EasyMock.expect(channelConfig.getBufferFactory()).andReturn(new HeapChannelBufferFactory());
+        Channel channel = EasyMock.createMock(Channel.class);
+        ospfInterfaceChannelHandler.electRouter(channel);
+        assertThat(ospfInterface.dr(), is(notNullValue()));
+    }
+
+    /**
+     * Tests electBdr() method.
+     */
+    @Test
+    public void testElectBdr() throws Exception {
+        ospfEligibleRouter = new OspfEligibleRouter();
+        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsDr(true);
+        ospfEligibleRouter.setRouterPriority(10);
+        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsBdr(false);
+        OspfEligibleRouter ospfEligibleRouter1 = new OspfEligibleRouter();
+        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsDr(true);
+        ospfEligibleRouter.setRouterPriority(10);
+        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsBdr(false);
+        OspfEligibleRouter ospfEligibleRouter2 = new OspfEligibleRouter();
+        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsDr(true);
+        ospfEligibleRouter.setRouterPriority(10);
+        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsBdr(false);
+        List<OspfEligibleRouter> ospfEligibleRouters = new ArrayList<>();
+
+        ospfEligibleRouters.add(ospfEligibleRouter);
+        ospfEligibleRouters.add(ospfEligibleRouter1);
+        ospfEligibleRouters.add(ospfEligibleRouter2);
+        OspfEligibleRouter eligibleRouter = ospfInterfaceChannelHandler.electBdr(ospfEligibleRouters);
+        assertThat(ospfEligibleRouters.size(), is(3));
+        assertThat(eligibleRouter, is(notNullValue()));
+    }
+
+    /**
+     * Tests electDr() method.
+     */
+    @Test
+    public void testElectDR() throws Exception {
+        ospfEligibleRouter = new OspfEligibleRouter();
+        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsDr(true);
+        ospfEligibleRouter.setRouterPriority(10);
+        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsBdr(false);
+        OspfEligibleRouter ospfEligibleRouter1 = new OspfEligibleRouter();
+        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsDr(true);
+        ospfEligibleRouter.setRouterPriority(10);
+        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsBdr(false);
+        OspfEligibleRouter ospfEligibleRouter2 = new OspfEligibleRouter();
+        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsDr(true);
+        ospfEligibleRouter.setRouterPriority(10);
+        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsBdr(false);
+        List<OspfEligibleRouter> ospfEligibleRouters = new ArrayList<>();
+        ospfEligibleRouters.add(ospfEligibleRouter);
+        ospfEligibleRouters.add(ospfEligibleRouter1);
+        ospfEligibleRouters.add(ospfEligibleRouter2);
+        OspfEligibleRouter eligibleRouter = ospfInterfaceChannelHandler.electDr(ospfEligibleRouters,
+                                                                                ospfEligibleRouter);
+        assertThat(ospfEligibleRouters.size(), is(3));
+        assertThat(eligibleRouter, is(notNullValue()));
+    }
+
+    /**
+     * Tests selectRouterBasedOnPriority() method.
+     */
+    @Test
+    public void testSelectRouterBasedOnPriority() throws Exception {
+        ospfEligibleRouter = new OspfEligibleRouter();
+        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsDr(true);
+        ospfEligibleRouter.setRouterPriority(10);
+        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsBdr(false);
+        OspfEligibleRouter ospfEligibleRouter1 = new OspfEligibleRouter();
+        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsDr(true);
+        ospfEligibleRouter.setRouterPriority(11);
+        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsBdr(false);
+        OspfEligibleRouter ospfEligibleRouter2 = new OspfEligibleRouter();
+        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsDr(true);
+        ospfEligibleRouter.setRouterPriority(12);
+        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
+        ospfEligibleRouter.setIsBdr(false);
+        List<OspfEligibleRouter> ospfEligibleRouters = new ArrayList<>();
+        ospfEligibleRouters.add(ospfEligibleRouter);
+        ospfEligibleRouters.add(ospfEligibleRouter1);
+        ospfEligibleRouters.add(ospfEligibleRouter2);
+        OspfEligibleRouter eligibleRouter = ospfInterfaceChannelHandler.selectRouterBasedOnPriority(
+                ospfEligibleRouters);
+        assertThat(eligibleRouter, is(notNullValue()));
+    }
+
+    /**
+     * Tests addDeviceInformation() method.
+     */
+    @Test(expected = Exception.class)
+    public void testAddDeviceInformation() throws Exception {
+        ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"),
+                                  Ip4Address.valueOf("10.226.165.100"), 2,
+                                  new OspfInterfaceChannelHandler(new Controller(), ospfArea,
+                                                                  createOspfInterface())
+                , topologyForDeviceAndLink);
+
+        ospfInterfaceChannelHandler.addDeviceInformation(new OspfRouterImpl());
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+    }
+
+    /**
+     * Tests removeDeviceInformation() method.
+     */
+    @Test(expected = Exception.class)
+    public void testRemoveDeviceInformation() throws Exception {
+        ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"),
+                                  Ip4Address.valueOf("10.226.165.100"), 2,
+                                  new OspfInterfaceChannelHandler(new Controller(), ospfArea,
+                                                                  createOspfInterface())
+                , topologyForDeviceAndLink);
+
+        ospfInterfaceChannelHandler.removeDeviceInformation(new OspfRouterImpl());
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+    }
+
+    /**
+     * Tests addLinkInformation() method.
+     */
+    @Test(expected = Exception.class)
+    public void testaddLinkInformation() throws Exception {
+        ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"),
+                                  Ip4Address.valueOf("10.226.165.100"), 2,
+                                  new OspfInterfaceChannelHandler(new Controller(), ospfArea,
+                                                                  createOspfInterface())
+                , topologyForDeviceAndLink);
+
+        List topTlv = new ArrayList();
+        topTlv.add(new RouterTlv(new TlvHeader()));
+        ospfInterfaceChannelHandler.addLinkInformation(new OspfRouterImpl(), new OspfLinkTedImpl());
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+    }
+
+    /**
+     * Tests removeLinkInformation() method.
+     */
+    @Test(expected = Exception.class)
+    public void testRemoveLinkInformation() throws Exception {
+        ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"),
+                                  Ip4Address.valueOf("10.226.165.100"), 2,
+                                  new OspfInterfaceChannelHandler(new Controller(), ospfArea,
+                                                                  createOspfInterface())
+                , topologyForDeviceAndLink);
+
+        ospfInterfaceChannelHandler.removeLinkInformation(ospfNbr);
+        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
+    }
+
+    /**
+     * Utility for test method.
+     */
+    private DdPacket createDdPacket() throws OspfParseException {
+        byte[] ddPacket = {2, 2, 0, 32, -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};
+        DdPacket ddPacket1 = new DdPacket();
+        ChannelBuffer buf = ChannelBuffers.buffer(ddPacket.length);
+        buf.writeBytes(ddPacket);
+        ddPacket1.readFrom(buf);
+        return ddPacket1;
+    }
+
+    /**
+     * Utility for test method.
+     */
+    private OspfInterfaceImpl createOspfInterface() throws UnknownHostException {
+        ospfInterface = new OspfInterfaceImpl();
+        OspfAreaImpl ospfArea = new OspfAreaImpl();
+        OspfInterfaceChannelHandler ospfInterfaceChannelHandler = EasyMock.createMock(
+                OspfInterfaceChannelHandler.class);
+        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.226.165.164"),
+                                  Ip4Address.valueOf("1.1.1.1"), 2, ospfInterfaceChannelHandler
+                , topologyForDeviceAndLink);
+        ospfNbr.setState(OspfNeighborState.EXSTART);
+        ospfNbr.setNeighborId(Ip4Address.valueOf("10.226.165.100"));
+        this.ospfInterface = new OspfInterfaceImpl();
+        this.ospfInterface.setIpAddress(Ip4Address.valueOf("10.226.165.164"));
+        this.ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
+        this.ospfInterface.setAreaId(2);
+        this.ospfInterface.setAuthKey("authKey");
+        this.ospfInterface.setAuthType("AuthReq");
+        this.ospfInterface.setBdr(Ip4Address.valueOf("111.111.111.111"));
+        this.ospfInterface.setDr(Ip4Address.valueOf("111.111.111.111"));
+        this.ospfInterface.setHelloIntervalTime(20);
+        this.ospfInterface.setInterfaceCost(10);
+        this.ospfInterface.setInterfaceType(2);
+        this.ospfInterface.setReTransmitInterval(2000);
+        this.ospfInterface.setMtu(6500);
+        this.ospfInterface.setPollInterval(1000);
+        this.ospfInterface.setRouterDeadIntervalTime(1000);
+        this.ospfInterface.setRouterPriority(1);
+        this.ospfInterface.setTransmitDelay(500);
+        this.ospfInterface.setInterfaceType(1);
+        this.ospfInterface.addNeighbouringRouter(ospfNbr);
+        return this.ospfInterface;
+    }
+
+    /**
+     * Utility for test method.
+     */
+    private OspfInterfaceImpl createOspfInterface1() throws UnknownHostException {
+        ospfInterface = new OspfInterfaceImpl();
+        OspfAreaImpl ospfArea = new OspfAreaImpl();
+        OspfInterfaceChannelHandler ospfInterfaceChannelHandler = EasyMock.createMock(
+                OspfInterfaceChannelHandler.class);
+        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.226.165.164"),
+                                  Ip4Address.valueOf("1.1.1.1"), 2, ospfInterfaceChannelHandler
+                , topologyForDeviceAndLink);
+        ospfNbr.setState(OspfNeighborState.FULL);
+        ospfNbr.setNeighborId(Ip4Address.valueOf("10.226.165.100"));
+        ospfInterface = new OspfInterfaceImpl();
+        ospfInterface.setIpAddress(Ip4Address.valueOf("10.226.165.164"));
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
+        ospfInterface.setAreaId(2);
+        ospfInterface.setAuthKey("authKey");
+        ospfInterface.setAuthType("AuthReq");
+        ospfInterface.setBdr(Ip4Address.valueOf("111.111.111.111"));
+        ospfInterface.setDr(Ip4Address.valueOf("111.111.111.111"));
+        ospfInterface.setHelloIntervalTime(20);
+        ospfInterface.setInterfaceCost(10);
+        ospfInterface.setInterfaceType(2);
+        ospfInterface.setReTransmitInterval(2000);
+        ospfInterface.setMtu(6500);
+        ospfInterface.setPollInterval(1000);
+        ospfInterface.setRouterDeadIntervalTime(1000);
+        ospfInterface.setRouterPriority(1);
+        ospfInterface.setTransmitDelay(500);
+        ospfInterface.setInterfaceType(1);
+        ospfInterface.addNeighbouringRouter(ospfNbr);
+        return ospfInterface;
+    }
+
+    /**
+     * Utility for test method.
+     */
+    private OspfAreaImpl createOspfArea() throws UnknownHostException {
+        OspfAreaAddressRangeImpl ospfAreaAddressRange;
+        ospfAreaAddressRange = createOspfAreaAddressRange();
+        addressRanges.add(ospfAreaAddressRange);
+        OspfAreaImpl ospfArea = new OspfAreaImpl();
+        ospfArea.setStubCost(10);
+        ospfArea.setAreaId(Ip4Address.valueOf("10.226.165.164"));
+        ospfArea.setExternalRoutingCapability(true);
+        ospfArea.setTransitCapability(true);
+        ospfArea.setAddressRanges(addressRanges);
+        OspfInterfaceImpl ospfInterface = createOspfInterface();
+        ospfInterfaces.add(ospfInterface);
+        ospfArea.setInterfacesLst(ospfInterfaces);
+        RouterLsa routerLsa = new RouterLsa();
+        routerLsa.setLsType(1);
+        routerLsa.setLinkStateId("2.2.2.2");
+        routerLsa.setAdvertisingRouter(Ip4Address.valueOf("2.2.2.2"));
+        try {
+            ospfArea.addLsa(routerLsa, false, ospfInterface);
+        } catch (Exception e) {
+            System.out.println("ospfAreaImpl createOspfArea");
+        }
+        ospfArea.setRouterId(Ip4Address.valueOf("111.111.111.111"));
+
+        return ospfArea;
+    }
+
+    /**
+     * Utility for test method.
+     */
+    private OspfAreaAddressRangeImpl createOspfAreaAddressRange() {
+        OspfAreaAddressRangeImpl ospfAreaAddressRange = new OspfAreaAddressRangeImpl();
+        ospfAreaAddressRange.setIpAddress(Ip4Address.valueOf("10.226.165.164"));
+        ospfAreaAddressRange.setAdvertise(true);
+        ospfAreaAddressRange.setMask("mask");
+        return ospfAreaAddressRange;
+    }
+
+}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfNbrImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfNbrImplTest.java
new file mode 100755
index 0000000..8d08220
--- /dev/null
+++ b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfNbrImplTest.java
@@ -0,0 +1,653 @@
+/*
+ * 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.controller.impl;
+
+
+import org.easymock.EasyMock;
+import org.jboss.netty.channel.Channel;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+import org.onosproject.ospf.controller.OspfInterface;
+import org.onosproject.ospf.controller.OspfLsa;
+import org.onosproject.ospf.controller.OspfLsaType;
+import org.onosproject.ospf.controller.OspfNeighborState;
+import org.onosproject.ospf.controller.TopologyForDeviceAndLink;
+import org.onosproject.ospf.controller.area.OspfAreaImpl;
+import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
+import org.onosproject.ospf.controller.lsdb.LsaWrapperImpl;
+import org.onosproject.ospf.controller.lsdb.LsdbAgeImpl;
+import org.onosproject.ospf.protocol.lsa.LsaHeader;
+
+import org.onosproject.ospf.protocol.lsa.types.NetworkLsa;
+import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
+import org.onosproject.ospf.protocol.ospfpacket.OspfMessage;
+import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket;
+import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket;
+import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest;
+import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate;
+import org.onosproject.ospf.protocol.util.ChecksumCalculator;
+
+import org.onosproject.ospf.protocol.util.OspfUtil;
+
+import java.net.SocketAddress;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+/**
+ * Unit test class for OspfNbrImpl.
+ */
+public class OspfNbrImplTest {
+
+    private OspfNbrImpl ospfNbr;
+    private OspfInterfaceImpl ospfInterface;
+    private OspfAreaImpl ospfArea;
+    private OspfInterfaceImpl ospfInterface1;
+    private OspfInterfaceImpl ospfInterface2;
+    private List<OspfInterface> ospfInterfaces;
+    private List<OspfLsa> ospfLsaList;
+    private Channel channel;
+    private Channel channel1;
+    private Channel channel2;
+    private OspfMessage ospfMessage;
+    private TopologyForDeviceAndLink topologyForDeviceAndLink;
+
+    @Before
+    public void setUp() throws Exception {
+        ospfInterface = new OspfInterfaceImpl();
+        ospfInterface.setInterfaceType(2);
+        ospfInterface.setRouterDeadIntervalTime(30);
+        ospfInterface.setReTransmitInterval(30);
+        ospfInterface.setDr(Ip4Address.valueOf("1.1.1.1"));
+        ospfInterface.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        ospfArea = new OspfAreaImpl();
+        ospfInterface1 = new OspfInterfaceImpl();
+        ospfInterface1.setInterfaceType(2);
+        ospfInterface1.setRouterDeadIntervalTime(30);
+        ospfInterface1.setReTransmitInterval(30);
+        ospfInterface1.setDr(Ip4Address.valueOf("7.7.7.7"));
+        ospfInterface1.setIpAddress(Ip4Address.valueOf("7.7.7.7"));
+        ospfInterface2 = new OspfInterfaceImpl();
+        ospfInterface2.setInterfaceType(2);
+        ospfInterface2.setRouterDeadIntervalTime(30);
+        ospfInterface2.setReTransmitInterval(30);
+        ospfInterface2.setDr(Ip4Address.valueOf("6.6.6.6"));
+        ospfInterface2.setIpAddress(Ip4Address.valueOf("6.6.6.6"));
+        ospfInterfaces = new ArrayList();
+        ospfInterfaces.add(ospfInterface);
+        ospfInterfaces.add(ospfInterface1);
+        ospfInterfaces.add(ospfInterface2);
+        ospfArea.setInterfacesLst(ospfInterfaces);
+        ospfArea.setRouterId(Ip4Address.valueOf("111.111.111.111"));
+        topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl();
+        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("1.1.1.1"),
+                                  Ip4Address.valueOf("2.2.2.2"), 2,
+                                  new OspfInterfaceChannelHandler(new Controller(),
+                                                                  ospfArea, ospfInterface)
+                , topologyForDeviceAndLink);
+
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        ospfNbr = null;
+        ospfArea = null;
+        ospfInterface = null;
+        ospfLsaList = null;
+        channel = null;
+        channel1 = null;
+        channel2 = null;
+        ospfMessage = null;
+
+    }
+
+    /**
+     * Tests neighborIpAddr() method.
+     */
+    @Test
+    public void testNeighborIpAddr() throws Exception {
+        assertThat(ospfNbr.neighborIpAddr(), is(notNullValue()));
+    }
+
+    /**
+     * Tests isOpaqueCapable() getter method.
+     */
+    @Test
+    public void testIsOpaqueCapable() throws Exception {
+        assertThat(ospfNbr.isOpaqueCapable(), is(false));
+    }
+
+    /**
+     * Tests isOpaqueCapable() setter method.
+     */
+    @Test
+    public void testSetIsOpaqueCapable() throws Exception {
+        ospfNbr.setIsOpaqueCapable(true);
+        assertThat(ospfNbr.isOpaqueCapable(), is(true));
+    }
+
+    /**
+     * Tests oneWayReceived() method.
+     */
+    @Test
+    public void testOneWayReceived() throws Exception {
+        ospfMessage = new HelloPacket();
+        ospfNbr.setState(OspfNeighborState.ATTEMPT);
+        channel = EasyMock.createMock(Channel.class);
+        ospfNbr.oneWayReceived(ospfMessage, channel);
+        channel1 = EasyMock.createMock(Channel.class);
+        ospfNbr.setState(OspfNeighborState.DOWN);
+        ospfNbr.oneWayReceived(ospfMessage, channel1);
+        channel2 = EasyMock.createMock(Channel.class);
+        ospfNbr.setState(OspfNeighborState.TWOWAY);
+        ospfNbr.oneWayReceived(ospfMessage, channel2);
+        assertThat(ospfNbr, is(notNullValue()));
+    }
+
+    /**
+     * Tests twoWayReceived() method.
+     */
+    @Test(expected = Exception.class)
+    public void testTwoWayReceived() throws Exception {
+        ospfNbr.setNeighborDr(Ip4Address.valueOf("1.1.1.1"));
+        ospfMessage = new HelloPacket();
+        ospfNbr.setState(OspfNeighborState.ATTEMPT);
+        ospfNbr.setNeighborDr(Ip4Address.valueOf("2.2.2.2"));
+        ospfInterface.setIpAddress(Ip4Address.valueOf("2.2.2.2"));
+        channel = EasyMock.createMock(Channel.class);
+        SocketAddress socketAddress = EasyMock.createMock(SocketAddress.class);
+        channel.bind(socketAddress);
+        ospfNbr.twoWayReceived(ospfMessage, channel);
+        ospfInterface.setIpAddress(Ip4Address.valueOf("3.3.3.3"));
+        channel1 = EasyMock.createMock(Channel.class);
+        ospfNbr.twoWayReceived(ospfMessage, channel1);
+        assertThat(ospfNbr, is(notNullValue()));
+    }
+
+    /**
+     * Tests negotiationDone() method.
+     */
+    @Test(expected = Exception.class)
+    public void testNegotiationDone() throws Exception {
+        ospfLsaList = new ArrayList();
+        ospfLsaList.add(new RouterLsa());
+        ospfMessage = new HelloPacket();
+        ospfNbr.setState(OspfNeighborState.EXSTART);
+        channel = EasyMock.createMock(Channel.class);
+        ospfNbr.negotiationDone(ospfMessage, true, ospfLsaList, channel);
+        channel1 = EasyMock.createMock(Channel.class);
+        ospfNbr.negotiationDone(ospfMessage, false, ospfLsaList, channel1);
+        assertThat(ospfNbr, is(notNullValue()));
+    }
+
+    /**
+     * Tests processLsas() method.
+     */
+    @Test
+    public void testProcessLsas() throws Exception {
+        ospfLsaList = new ArrayList();
+        RouterLsa routerLsa = new RouterLsa();
+        routerLsa.setLsType(1);
+        ospfLsaList.add(routerLsa);
+        NetworkLsa networkLsa = new NetworkLsa();
+        routerLsa.setLsType(2);
+        ospfLsaList.add(networkLsa);
+        routerLsa.setLsType(3);
+        ospfLsaList.add(routerLsa);
+        ospfNbr.processLsas(ospfLsaList);
+        assertThat(ospfNbr, is(notNullValue()));
+    }
+
+    /**
+     * Tests seqNumMismatch() method.
+     */
+    @Test
+    public void testSeqNumMismatch() throws Exception {
+        ospfNbr.setState(OspfNeighborState.FULL);
+        assertThat(ospfNbr.seqNumMismatch("samelsa"), is(notNullValue()));
+    }
+
+    /**
+     * Tests badLSReq() method.
+     */
+    @Test
+    public void testBadLSReq() throws Exception {
+        channel = EasyMock.createMock(Channel.class);
+        ospfNbr.setState(OspfNeighborState.FULL);
+        ospfNbr.badLSReq(channel);
+        assertThat(ospfNbr, is(notNullValue()));
+    }
+
+    /**
+     * Tests processDdPacket() method.
+     */
+    @Test
+    public void testProcessDdPacket() throws Exception {
+        ospfArea.addLsa(new RouterLsa(), false, ospfInterface);
+        ospfArea.addLsa(new RouterLsa(), ospfInterface);
+        ospfArea.addLsaToMaxAgeBin("lsa", new LsaWrapperImpl());
+        channel = EasyMock.createMock(Channel.class);
+        DdPacket ddPacket = new DdPacket();
+        ddPacket.addLsaHeader(new LsaHeader());
+        ospfNbr.processDdPacket(true, ddPacket, channel);
+        channel1 = EasyMock.createMock(Channel.class);
+        ddPacket.setIsMore(1);
+        ospfNbr.processDdPacket(false, ddPacket, channel1);
+        assertThat(ospfNbr, is(notNullValue()));
+    }
+
+    /**
+     * Tests exchangeDone() method.
+     */
+    @Test
+    public void testExchangeDone() throws Exception {
+        ospfMessage = new HelloPacket();
+        channel = EasyMock.createMock(Channel.class);
+        ospfNbr.setState(OspfNeighborState.EXCHANGE);
+        ospfNbr.exchangeDone(ospfMessage, channel);
+        assertThat(ospfNbr, is(notNullValue()));
+    }
+
+    /**
+     * Tests exchangeDone() method.
+     */
+    @Test
+    public void testExchangeDone1() throws Exception {
+        ospfMessage = new HelloPacket();
+        channel = EasyMock.createMock(Channel.class);
+        ospfNbr.setState(OspfNeighborState.EXCHANGE);
+        ospfLsaList = new ArrayList();
+        RouterLsa routerLsa = new RouterLsa();
+        routerLsa.setLsType(1);
+        ospfLsaList.add(routerLsa);
+        NetworkLsa networkLsa = new NetworkLsa();
+        routerLsa.setLsType(2);
+        ospfLsaList.add(networkLsa);
+        routerLsa.setLsType(3);
+        ospfLsaList.add(routerLsa);
+        ospfNbr.processLsas(ospfLsaList);
+        ospfNbr.setState(OspfNeighborState.EXCHANGE);
+        ospfNbr.exchangeDone(ospfMessage, channel);
+        assertThat(ospfNbr, is(notNullValue()));
+    }
+
+    /**
+     * Tests adjOk() method.
+     */
+    @Test
+    public void testAdjOk() throws Exception {
+        channel = EasyMock.createMock(Channel.class);
+        ospfInterface.setIpAddress(Ip4Address.valueOf("2.2.2.2"));
+        ospfNbr.setState(OspfNeighborState.TWOWAY);
+        ospfNbr.setNeighborDr(Ip4Address.valueOf("2.2.2.2"));
+        ospfNbr.adjOk(channel);
+        Assert.assertNotNull(ospfNbr);
+    }
+
+    /**
+     * Tests processLsUpdate() method.
+     */
+    @Test
+    public void testProcessLsUpdate() throws Exception {
+        LsUpdate ospfMessage = new LsUpdate();
+        ospfMessage.setSourceIp(Ip4Address.valueOf("10.10.10.10"));
+        ospfMessage.addLsa(new RouterLsa());
+        ospfMessage.addLsa(new NetworkLsa());
+        channel = EasyMock.createMock(Channel.class);
+        ospfNbr.setState(OspfNeighborState.EXCHANGE);
+        ospfNbr.processLsUpdate(ospfMessage, channel);
+        assertThat(ospfNbr, is(notNullValue()));
+    }
+
+    /**
+     * Tests loadingDone() method.
+     */
+    @Test
+    public void testLoadingDone() throws Exception {
+        ospfArea.addLsa(new RouterLsa(), false, ospfInterface);
+        ospfArea.addLsa(new RouterLsa(), ospfInterface);
+        ospfArea.addLsaToMaxAgeBin("lsa", new LsaWrapperImpl());
+        ospfNbr.loadingDone();
+        assertThat(ospfNbr, is(notNullValue()));
+    }
+
+    /**
+     * Tests processReceivedLsa() method.
+     */
+    @Test
+    public void testProcessReceivedLsa() throws Exception {
+        LsaWrapperImpl lsaWrapper = new LsaWrapperImpl();
+        LsdbAgeImpl lsdbAge = new LsdbAgeImpl(new OspfAreaImpl());
+        lsdbAge.ageLsaAndFlood();
+        lsaWrapper.setLsdbAge(lsdbAge);
+        lsaWrapper.setLsaHeader(new NetworkLsa());
+        RouterLsa routerlsa = new RouterLsa();
+        routerlsa.setLsType(1);
+        routerlsa.setOptions(2);
+        routerlsa.setAdvertisingRouter(Ip4Address.valueOf("1.1.1.1"));
+        routerlsa.setAge(100);
+        routerlsa.setLinkStateId("2.2.2.2");
+        routerlsa.setLsSequenceNo(1010101);
+        lsaWrapper.setLsaHeader(new RouterLsa());
+        ospfArea.addLsa(routerlsa, false, ospfInterface);
+
+        lsaWrapper.addLsa(OspfLsaType.ROUTER, routerlsa);
+        ospfArea.addLsa(routerlsa, ospfInterface);
+        ospfArea.addLsaToMaxAgeBin("lsa", new LsaWrapperImpl());
+        byte[] res = routerlsa.asBytes();
+        routerlsa.setLsPacketLen(res.length);
+        res = new ChecksumCalculator().calculateLsaChecksum(routerlsa.asBytes(), 16, 17);
+        routerlsa.setLsCheckSum(OspfUtil.byteToInteger(res));
+        channel = EasyMock.createMock(Channel.class);
+        lsdbAge.ageLsaAndFlood();
+        assertThat(ospfNbr.processReceivedLsa(lsaWrapper.lsaHeader(), true, channel,
+                                              Ip4Address.valueOf("10.10.10.10")), is(true));
+        channel1 = EasyMock.createMock(Channel.class);
+        assertThat(ospfNbr.processReceivedLsa(routerlsa, true, channel1,
+                                              Ip4Address.valueOf("10.10.10.10")), is(true));
+    }
+
+    /**
+     * Tests isNullorLatest() method.
+     */
+    @Test
+    public void testIsNullorLatest() throws Exception {
+
+        LsaWrapperImpl lsaWrapper = new LsaWrapperImpl();
+        LsdbAgeImpl lsdbAge = new LsdbAgeImpl(new OspfAreaImpl());
+        lsdbAge.ageLsaAndFlood();
+        lsaWrapper.setLsdbAge(lsdbAge);
+        lsaWrapper.setLsaHeader(new LsaHeader());
+        lsaWrapper.addLsa(OspfLsaType.ROUTER, new RouterLsa());
+        assertThat(ospfNbr.isNullorLatest(lsaWrapper, new LsaHeader()), is(notNullValue()));
+    }
+
+    /**
+     * Tests processSelfOriginatedLsa() method.
+     */
+    @Test
+    public void testProcessSelfOriginatedLsa() throws Exception {
+        ospfNbr.processSelfOriginatedLsa();
+        assertThat(ospfNbr, is(notNullValue()));
+    }
+
+    /**
+     * Tests sendLsa() method.
+     */
+    @Test
+    public void testSendLsa() throws Exception {
+        channel = EasyMock.createMock(Channel.class);
+        ospfNbr.sendLsa(new LsaHeader(), Ip4Address.valueOf("1.1.1.1"), channel);
+        assertThat(ospfNbr, is(notNullValue()));
+    }
+
+    /**
+     * Tests directAcknowledge() method.
+     */
+    @Test
+    public void testDirectAcknowledge() throws Exception {
+        channel = EasyMock.createMock(Channel.class);
+        ospfNbr.directAcknowledge(new LsaHeader(), channel, Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfNbr, is(notNullValue()));
+    }
+
+    /**
+     * Tests neighborDown() method.
+     */
+    @Test(expected = Exception.class)
+    public void testNeighborDown() throws Exception {
+        ospfNbr.neighborDown();
+        assertThat(ospfNbr, is(notNullValue()));
+    }
+
+    /**
+     * Tests startFloodingTimer() method.
+     */
+    @Test
+    public void testStartFloodingTimer() throws Exception {
+        channel = EasyMock.createMock(Channel.class);
+        ospfNbr.startFloodingTimer(channel);
+        assertThat(ospfNbr, is(notNullValue()));
+    }
+
+    /**
+     * Tests lastDdPacket() getter method.
+     */
+    @Test
+    public void testGetLastDdPacket() throws Exception {
+        ospfNbr.setLastDdPacket(new DdPacket());
+        assertThat(ospfNbr.lastDdPacket(), is(notNullValue()));
+    }
+
+    /**
+     * Tests lastDdPacket() setter method.
+     */
+    @Test
+    public void testSetLastDdPacket() throws Exception {
+        ospfNbr.setLastDdPacket(new DdPacket());
+        assertThat(ospfNbr.lastDdPacket(), is(notNullValue()));
+    }
+
+    /**
+     * Tests neighborId() getter method.
+     */
+    @Test
+    public void testNeighborId() throws Exception {
+        ospfNbr.setNeighborId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfNbr.neighborId(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests neighborId() setter method.
+     */
+    @Test
+    public void testSetNeighborId() throws Exception {
+        ospfNbr.setNeighborId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfNbr.neighborId(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests neighborDr() getter method.
+     */
+    @Test
+    public void testNeighborDr() throws Exception {
+        ospfNbr.setNeighborDr(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfNbr.neighborDr(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests neighborDr() setter method.
+     */
+    @Test
+    public void testSetNeighborDr() throws Exception {
+        ospfNbr.setNeighborDr(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfNbr.neighborDr(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests neighborBdr() getter method.
+     */
+    @Test
+    public void testNeighborBdr() throws Exception {
+        ospfNbr.setNeighborBdr(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfNbr.neighborBdr(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests neighborBdr() setter method.
+     */
+    @Test
+    public void testSetNeighborBdr() throws Exception {
+        ospfNbr.setNeighborBdr(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfNbr.neighborBdr(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests routerPriority() getter method.
+     */
+    @Test
+    public void testRouterPriority() throws Exception {
+        ospfNbr.setRouterPriority(1);
+        assertThat(ospfNbr.routerPriority(), is(1));
+    }
+
+    /**
+     * Tests routerPriority() setter method.
+     */
+    @Test
+    public void testSetRouterPriority() throws Exception {
+        ospfNbr.setRouterPriority(1);
+        assertThat(ospfNbr.routerPriority(), is(1));
+    }
+
+    /**
+     * Tests options() getter method.
+     */
+    @Test
+    public void testGetOptions() throws Exception {
+        ospfNbr.setOptions(1);
+        assertThat(ospfNbr.options(), is(1));
+    }
+
+    /**
+     * Tests options() setter method.
+     */
+    @Test
+    public void testSetOptions() throws Exception {
+        ospfNbr.setOptions(1);
+        assertThat(ospfNbr.options(), is(1));
+    }
+
+    /**
+     * Tests ddSeqNum() getter method.
+     */
+    @Test
+    public void testGetDdSeqNum() throws Exception {
+        ospfNbr.setDdSeqNum(1);
+        assertThat(ospfNbr.ddSeqNum(), is(1L));
+    }
+
+    /**
+     * Tests ddSeqNum() setter method.
+     */
+    @Test
+    public void testSetDdSeqNum() throws Exception {
+        ospfNbr.setDdSeqNum(1);
+        assertThat(ospfNbr.ddSeqNum(), is(1L));
+    }
+
+    /**
+     * Tests isMaster() getter method.
+     */
+    @Test
+    public void testIsMaster() throws Exception {
+        ospfNbr.setIsMaster(1);
+        assertThat(ospfNbr.isMaster(), is(1));
+    }
+
+    /**
+     * Tests lastDdPacket() getter method.
+     */
+    @Test
+    public void testGetLastSentDdPacket() throws Exception {
+        ospfNbr.setLastDdPacket(new DdPacket());
+        assertThat(ospfNbr.lastDdPacket(), is(notNullValue()));
+    }
+
+    /**
+     * Tests lastDdPacket() setter method.
+     */
+    @Test
+    public void testSetLastSentDdPacket() throws Exception {
+        ospfNbr.setLastDdPacket(new DdPacket());
+        assertThat(ospfNbr.lastDdPacket(), is(notNullValue()));
+    }
+
+    /**
+     * Tests getLastSentLsrPacket() getter method.
+     */
+    @Test
+    public void testGetLastSentLsrPacket() throws Exception {
+        ospfNbr.setLastSentLsrPacket(new LsRequest());
+        assertThat(ospfNbr.getLastSentLsrPacket(), is(notNullValue()));
+    }
+
+    /**
+     * Tests getLastSentLsrPacket() setter method.
+     */
+    @Test
+    public void testSetLastSentLsrPacket() throws Exception {
+        ospfNbr.setLastSentLsrPacket(new LsRequest());
+        assertThat(ospfNbr.getLastSentLsrPacket(), is(notNullValue()));
+    }
+
+    /**
+     * Tests getState() getter method.
+     */
+    @Test
+    public void testGetState() throws Exception {
+        ospfNbr.setState(OspfNeighborState.EXCHANGE);
+        assertThat(ospfNbr.getState(), is(OspfNeighborState.EXCHANGE));
+    }
+
+    /**
+     * Tests getState() setter method.
+     */
+    @Test
+    public void testSetState() throws Exception {
+        ospfNbr.setState(OspfNeighborState.EXCHANGE);
+        assertThat(ospfNbr.getState(), is(OspfNeighborState.EXCHANGE));
+    }
+
+    /**
+     * Tests isMaster() setter method.
+     */
+    @Test
+    public void testSetIsMaster() throws Exception {
+        ospfNbr.setIsMaster(1);
+        assertThat(ospfNbr.isMaster(), is(1));
+    }
+
+    /**
+     * Tests getLsReqList() method.
+     */
+    @Test
+    public void testGetLsReqList() throws Exception {
+        assertThat(ospfNbr.getLsReqList(), is(notNullValue()));
+    }
+
+    /**
+     * Tests getReTxList() method.
+     */
+    @Test
+    public void testGetReTxList() throws Exception {
+        assertThat(ospfNbr.getReTxList(), is(notNullValue()));
+    }
+
+    /**
+     * Tests getPendingReTxList() method.
+     */
+    @Test
+    public void testGetPendingReTxList() throws Exception {
+        assertThat(ospfNbr.getPendingReTxList(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/TopologyForDeviceAndLinkImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/TopologyForDeviceAndLinkImplTest.java
new file mode 100755
index 0000000..e924297
--- /dev/null
+++ b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/TopologyForDeviceAndLinkImplTest.java
@@ -0,0 +1,265 @@
+/*
+* 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.controller.impl;
+
+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.controller.DeviceInformation;
+import org.onosproject.ospf.controller.OspfLinkTed;
+import org.onosproject.ospf.controller.OspfLsa;
+import org.onosproject.ospf.controller.area.OspfAreaImpl;
+import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
+import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
+import org.onosproject.ospf.protocol.lsa.TlvHeader;
+import org.onosproject.ospf.protocol.lsa.subtypes.OspfLsaLink;
+import org.onosproject.ospf.protocol.lsa.tlvtypes.LinkTlv;
+import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10;
+import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
+
+import java.util.List;
+import java.util.Map;
+
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Unit test class for TopologyForDeviceAndLinkImpl.
+ */
+public class TopologyForDeviceAndLinkImplTest {
+    private final byte[] packet = {0, 9, 0, 4, 0, 0, 0, 1,
+            0, 9, 0, 4, 0, 0, 0, 1,
+            0, 1, 0, 4, 0, 0, 0, 1,
+            0, 2, 0, 4, 0, 0, 0, 1,
+            0, 3, 0, 4, 0, 0, 0, 1,
+            0, 4, 0, 4, 0, 0, 0, 1,
+            0, 6, 0, 4, 0, 0, 0, 1,
+            0, 7, 0, 4, 0, 0, 0, 1,
+            0, 8, 0, 4, 0, 0, 0, 1,
+    };
+    private TopologyForDeviceAndLinkImpl topologyForDeviceAndLink;
+    private Map result;
+    private LinkTlv linkTlv;
+    private TlvHeader header;
+    private ChannelBuffer channelBuffer;
+
+    @Before
+    public void setUp() throws Exception {
+        topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        topologyForDeviceAndLink = null;
+    }
+
+    /**
+     * Tests deviceInformationMap() method.
+     */
+    @Test
+    public void testDeviceInformationMap() throws Exception {
+        result = topologyForDeviceAndLink.deviceInformationMap();
+        assertThat(result.size(), is(0));
+    }
+
+    /**
+     * Tests setDeviceInformationMap() method.
+     */
+    @Test
+    public void testSetDeviceInformationMap() throws Exception {
+        topologyForDeviceAndLink.setDeviceInformationMap("1.1.1.1", new DeviceInformationImpl());
+        result = topologyForDeviceAndLink.deviceInformationMap();
+        assertThat(result.size(), is(1));
+    }
+
+    /**
+     * Tests deviceInformation() method.
+     */
+    @Test
+    public void testDeviceInformation() throws Exception {
+        topologyForDeviceAndLink.setDeviceInformationMap("1.1.1.1", new DeviceInformationImpl());
+        DeviceInformation deviceInformation = topologyForDeviceAndLink.deviceInformation("1.1.1.1");
+        assertThat(deviceInformation, is(notNullValue()));
+    }
+
+    /**
+     * Tests removeDeviceInformationMap() method.
+     */
+    @Test
+    public void testRemoveDeviceInformationMap() throws Exception {
+        topologyForDeviceAndLink.setDeviceInformationMap("1.1.1.1", new DeviceInformationImpl());
+        topologyForDeviceAndLink.deviceInformation("1.1.1.1");
+        result = topologyForDeviceAndLink.deviceInformationMap();
+        topologyForDeviceAndLink.removeDeviceInformationMap("1.1.1.1");
+        assertThat(result.size(), is(0));
+    }
+
+    /**
+     * Tests linkInformationMap() method.
+     */
+    @Test
+    public void testLinkInformationMap() throws Exception {
+        result = topologyForDeviceAndLink.linkInformationMap();
+        assertThat(result.size(), is(0));
+    }
+
+    /**
+     * Tests setLinkInformationMap() method.
+     */
+    @Test
+    public void testSetLinkInformationMap() throws Exception {
+        topologyForDeviceAndLink.setLinkInformationMap("1.1.1.1", new LinkInformationImpl());
+        result = topologyForDeviceAndLink.linkInformationMap();
+        assertThat(result.size(), is(1));
+    }
+
+    /**
+     * Tests removeLinkInformationMap() method.
+     */
+    @Test
+    public void testRemoveLinkInformationMap() throws Exception {
+        topologyForDeviceAndLink.setLinkInformationMap("1.1.1.1", new LinkInformationImpl());
+        topologyForDeviceAndLink.removeLinkInformationMap("1.1.1.1");
+        result = topologyForDeviceAndLink.linkInformationMap();
+        assertThat(result.size(), is(0));
+    }
+
+    /**
+     * Tests getOspfLinkTedHashMap() method.
+     */
+    @Test
+    public void testGetOspfLinkTedHashMap() throws Exception {
+        OspfLinkTed ospfLinkTed = topologyForDeviceAndLink.getOspfLinkTedHashMap("1.1.1.1");
+        assertThat(ospfLinkTed, is(nullValue()));
+    }
+
+    /**
+     * Tests addLocalDevice() method.
+     */
+    @Test
+    public void testAddLocalDevice() throws Exception {
+        OspfAreaImpl ospfArea = new OspfAreaImpl();
+        ospfArea.setRouterId(Ip4Address.valueOf("5.5.5.5"));
+        topologyForDeviceAndLink.addLocalDevice(createOspfLsa(), new OspfInterfaceImpl(), ospfArea);
+        topologyForDeviceAndLink.addLocalDevice(createOspfLsa1(), new OspfInterfaceImpl(), ospfArea);
+        assertThat(topologyForDeviceAndLink, is(notNullValue()));
+    }
+
+    /**
+     * Tests addLocalLink() method.
+     */
+    @Test
+    public void testAddLocalLink() throws Exception {
+        Ip4Address linkData = Ip4Address.valueOf("1.1.1.1");
+        Ip4Address linkSrc = Ip4Address.valueOf("2.2.2.2");
+        Ip4Address linkDest = Ip4Address.valueOf("3.3.3.3");
+        boolean opaqueEnabled = true;
+        boolean linkSrcIdNotRouterId = true;
+        topologyForDeviceAndLink.addLocalLink("10.10.10.10", linkData, linkSrc,
+                                              linkDest, opaqueEnabled, linkSrcIdNotRouterId);
+        assertThat(topologyForDeviceAndLink, is(notNullValue()));
+    }
+
+    /**
+     * Tests removeLinks() method.
+     */
+    @Test
+    public void testRemoveLinks() throws Exception {
+        Ip4Address linkData = Ip4Address.valueOf("1.1.1.1");
+        Ip4Address linkSrc = Ip4Address.valueOf("2.2.2.2");
+        Ip4Address linkDest = Ip4Address.valueOf("3.3.3.3");
+        boolean opaqueEnabled = true;
+        boolean linkSrcIdNotRouterId = true;
+        topologyForDeviceAndLink.addLocalLink("10.10.10.10", linkData, linkSrc,
+                                              linkDest, opaqueEnabled, linkSrcIdNotRouterId);
+        topologyForDeviceAndLink.removeLinks(Ip4Address.valueOf("10.10.10.10"));
+        assertThat(topologyForDeviceAndLink, is(notNullValue()));
+    }
+
+    /**
+     * Tests updateLinkInformation() method.
+     */
+    @Test
+    public void testUpdateLinkInformation() throws Exception {
+        OspfAreaImpl ospfArea = new OspfAreaImpl();
+        ospfArea.setRouterId(Ip4Address.valueOf("5.5.5.5"));
+        topologyForDeviceAndLink.updateLinkInformation(createOspfLsa(), ospfArea);
+        assertThat(topologyForDeviceAndLink, is(notNullValue()));
+    }
+
+    /**
+     * Tests getDeleteRouterInformation() method.
+     */
+    @Test
+    public void testGetDeleteRouterInformation() throws Exception {
+        OspfAreaImpl ospfArea = new OspfAreaImpl();
+        ospfArea.setRouterId(Ip4Address.valueOf("5.5.5.5"));
+        topologyForDeviceAndLink.updateLinkInformation(createOspfLsa(), ospfArea);
+        List list = topologyForDeviceAndLink.getDeleteRouterInformation(createOspfLsa(), ospfArea);
+        assertThat(list, is(notNullValue()));
+    }
+
+    /**
+     * Utility for test methods.
+     */
+    private OspfLsa createOspfLsa() {
+        RouterLsa routerLsa = new RouterLsa();
+        routerLsa.setLsType(1);
+        routerLsa.setAdvertisingRouter(Ip4Address.valueOf("6.6.6.6"));
+        OspfLsaLink ospfLsaLink = new OspfLsaLink();
+        ospfLsaLink.setLinkData("192.168.7.77");
+        ospfLsaLink.setLinkId("9.9.9.9");
+        ospfLsaLink.setLinkType(1);
+        OspfLsaLink ospfLsaLink0 = new OspfLsaLink();
+        ospfLsaLink0.setLinkData("7.7.7.7");
+        ospfLsaLink0.setLinkId("7.7.7.7");
+        ospfLsaLink0.setLinkType(2);
+        OspfLsaLink ospfLsaLink120 = new OspfLsaLink();
+        ospfLsaLink120.setLinkData("192.168.7.77");
+        ospfLsaLink120.setLinkId("1.1.1.1");
+        ospfLsaLink120.setLinkType(1);
+        OspfLsaLink lsaLink = new OspfLsaLink();
+        lsaLink.setLinkData("192.168.7.77");
+        lsaLink.setLinkId("14.14.14.14");
+        lsaLink.setLinkType(2);
+        routerLsa.addRouterLink(lsaLink);
+        routerLsa.addRouterLink(ospfLsaLink);
+        routerLsa.addRouterLink(ospfLsaLink0);
+        routerLsa.addRouterLink(ospfLsaLink120);
+        return routerLsa;
+    }
+
+    /**
+     * Utility for test methods.
+     */
+    private OspfLsa createOspfLsa1() throws Exception {
+        OpaqueLsa10 opaqueLsa10 = new OpaqueLsa10(new OpaqueLsaHeader());
+        opaqueLsa10.setLsType(10);
+        header = new TlvHeader();
+        header.setTlvLength(8);
+        header.setTlvType(9);
+        linkTlv = new LinkTlv(header);
+        channelBuffer = ChannelBuffers.copiedBuffer(packet);
+        linkTlv.readFrom(channelBuffer);
+        opaqueLsa10.addValue(linkTlv);
+        return opaqueLsa10;
+    }
+}