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

Change-Id: Ie7f02bd9bff16902647c7af406f7ece9cdf0ae6c
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfInterfaceImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfInterfaceImplTest.java
new file mode 100755
index 0000000..4285d90
--- /dev/null
+++ b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfInterfaceImplTest.java
@@ -0,0 +1,505 @@
+/*
+ * 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.area;
+
+
+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.OspfNbr;
+import org.onosproject.ospf.controller.TopologyForDeviceAndLink;
+import org.onosproject.ospf.controller.impl.Controller;
+import org.onosproject.ospf.controller.impl.OspfInterfaceChannelHandler;
+import org.onosproject.ospf.controller.impl.OspfNbrImpl;
+import org.onosproject.ospf.controller.impl.TopologyForDeviceAndLinkImpl;
+import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
+import org.onosproject.ospf.protocol.util.OspfInterfaceState;
+
+import java.util.HashMap;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Unit test class for OspfInterfaceImpl.
+ */
+public class OspfInterfaceImplTest {
+
+    private OspfInterfaceImpl ospfInterface;
+    private OspfNbrImpl ospfNbr;
+    private OpaqueLsaHeader opaqueLsaHeader;
+    private int result;
+    private HashMap<String, OspfNbr> ospfNbrHashMap;
+    private TopologyForDeviceAndLink topologyForDeviceAndLink;
+
+    @Before
+    public void setUp() throws Exception {
+        ospfInterface = new OspfInterfaceImpl();
+        topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        ospfInterface = null;
+        ospfNbr = null;
+        opaqueLsaHeader = null;
+        ospfNbrHashMap = null;
+    }
+
+    /**
+     * Tests state() getter method.
+     */
+    @Test
+    public void testGetState() throws Exception {
+        ospfInterface.setState(OspfInterfaceState.DROTHER);
+        assertThat(ospfInterface.state(), is(OspfInterfaceState.DROTHER));
+    }
+
+    /**
+     * Tests state() setter method.
+     */
+    @Test
+    public void testSetState() throws Exception {
+        ospfInterface.setState(OspfInterfaceState.DROTHER);
+        assertThat(ospfInterface.state(), is(OspfInterfaceState.DROTHER));
+    }
+
+    /**
+     * Tests linkStateHeaders() method.
+     */
+    @Test
+    public void testGetLinkStateHeaders() throws Exception {
+
+        assertThat(ospfInterface.linkStateHeaders().size(), is(0));
+    }
+
+    /**
+     * Tests ipNetworkMask() getter method.
+     */
+    @Test
+    public void testGetIpNetworkMask() throws Exception {
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfInterface.ipNetworkMask(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests ipNetworkMask() setter method.
+     */
+    @Test
+    public void testSetIpNetworkMask() throws Exception {
+        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfInterface.ipNetworkMask(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests addNeighbouringRouter() method.
+     */
+    @Test
+    public void testAddNeighbouringRouter() throws Exception {
+        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"));
+        ospfInterface.addNeighbouringRouter(ospfNbr);
+        assertThat(ospfInterface, is(notNullValue()));
+
+    }
+
+    /**
+     * Tests neighbouringRouter() method.
+     */
+    @Test
+    public void testGetNeighbouringRouter() throws Exception {
+        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"));
+        ospfInterface.addNeighbouringRouter(ospfNbr);
+        assertThat(ospfInterface.neighbouringRouter("111.111.111.111"), is(notNullValue()));
+    }
+
+    /**
+     * Tests addLsaHeaderForDelayAck() method.
+     */
+    @Test
+    public void testAddLsaHeaderForDelayAck() throws Exception {
+        opaqueLsaHeader = new OpaqueLsaHeader();
+        opaqueLsaHeader.setLsType(10);
+        ospfInterface.addLsaHeaderForDelayAck(opaqueLsaHeader);
+        assertThat(ospfInterface, is(notNullValue()));
+    }
+
+    /**
+     * Tests removeLsaFromNeighborMap() method.
+     */
+    @Test
+    public void testRemoveLsaFromNeighborMap() throws Exception {
+        ospfInterface.removeLsaFromNeighborMap("lsa10");
+        assertThat(ospfInterface, is(notNullValue()));
+    }
+
+    /**
+     * Tests isNeighborInList() method.
+     */
+    @Test
+    public void testIsNeighborinList() throws Exception {
+        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"));
+        ospfInterface.addNeighbouringRouter(ospfNbr);
+        assertThat(ospfInterface.isNeighborInList("111.111.111.111"), is(notNullValue()));
+    }
+
+    /**
+     * Tests listOfNeighbors() getter method.
+     */
+    @Test
+    public void testGetListOfNeighbors() 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);
+        ospfInterface.setListOfNeighbors(ospfNbrHashMap);
+        assertThat(ospfInterface.listOfNeighbors().size(), is(1));
+    }
+
+    /**
+     * Tests listOfNeighbors() setter method.
+     */
+    @Test
+    public void testSetListOfNeighbors() 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);
+        ospfInterface.setListOfNeighbors(ospfNbrHashMap);
+        assertThat(ospfInterface.listOfNeighbors().size(), is(1));
+    }
+
+    /**
+     * Tests ipAddress() getter method.
+     */
+    @Test
+    public void testGetIpAddress() throws Exception {
+        ospfInterface.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfInterface.ipAddress(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests ipAddress() getter method.
+     */
+    @Test
+    public void testSetIpAddress() throws Exception {
+        ospfInterface.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfInterface.ipAddress(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests routerPriority() getter method.
+     */
+    @Test
+    public void testGetRouterPriority() throws Exception {
+        ospfInterface.setRouterPriority(1);
+        Assert.assertEquals(1, ospfInterface.routerPriority());
+    }
+
+    /**
+     * Tests routerPriority() setter method.
+     */
+    @Test
+    public void testSetRouterPriority() throws Exception {
+        ospfInterface.setRouterPriority(1);
+        assertThat(ospfInterface.routerPriority(), is(1));
+    }
+
+    /**
+     * Tests areaId() getter method.
+     */
+    @Test
+    public void testGetAreaId() throws Exception {
+        ospfInterface.setAreaId(1);
+        assertThat(ospfInterface.areaId(), is(1));
+    }
+
+    /**
+     * Tests areaId() setter method.
+     */
+    @Test
+    public void testSetAreaId() throws Exception {
+        ospfInterface.setAreaId(1);
+        assertThat(ospfInterface.areaId(), is(1));
+    }
+
+    /**
+     * Tests helloIntervalTime() getter method.
+     */
+    @Test
+    public void testGetHelloIntervalTime() throws Exception {
+        ospfInterface.setHelloIntervalTime(10);
+        assertThat(ospfInterface.helloIntervalTime(), is(10));
+    }
+
+    /**
+     * Tests helloIntervalTime() setter method.
+     */
+    @Test
+    public void testSetHelloIntervalTime() throws Exception {
+        ospfInterface.setHelloIntervalTime(10);
+        assertThat(ospfInterface.helloIntervalTime(), is(10));
+    }
+
+    /**
+     * Tests routerDeadIntervalTime() getter method.
+     */
+    @Test
+    public void testGetRouterDeadIntervalTime() throws Exception {
+        ospfInterface.setRouterDeadIntervalTime(10);
+        assertThat(ospfInterface.routerDeadIntervalTime(), is(10));
+    }
+
+    /**
+     * Tests routerDeadIntervalTime() setter method.
+     */
+    @Test
+    public void testSetRouterDeadIntervalTime() throws Exception {
+        ospfInterface.setRouterDeadIntervalTime(10);
+        assertThat(ospfInterface.routerDeadIntervalTime(), is(10));
+    }
+
+    /**
+     * Tests interfaceType() getter method.
+     */
+    @Test
+    public void testGetInterfaceType() throws Exception {
+        ospfInterface.setInterfaceType(1);
+        assertThat(ospfInterface.interfaceType(), is(1));
+    }
+
+    /**
+     * Tests interfaceType() setter method.
+     */
+    @Test
+    public void testSetInterfaceType() throws Exception {
+        ospfInterface.setInterfaceType(1);
+        assertThat(ospfInterface.interfaceType(), is(1));
+    }
+
+    /**
+     * Tests interfaceCost() getter method.
+     */
+    @Test
+    public void testGetInterfaceCost() throws Exception {
+        ospfInterface.setInterfaceCost(100);
+        assertThat(ospfInterface.interfaceCost(), is(100));
+    }
+
+    /**
+     * Tests interfaceCost() setter method.
+     */
+    @Test
+    public void testSetInterfaceCost() throws Exception {
+        ospfInterface.setInterfaceCost(100);
+        assertThat(ospfInterface.interfaceCost(), is(100));
+    }
+
+    /**
+     * Tests authType() getter method.
+     */
+    @Test
+    public void testGetAuthType() throws Exception {
+        ospfInterface.setAuthType("00");
+        assertThat(ospfInterface.authType(), is("00"));
+    }
+
+    /**
+     * Tests authType() setter method.
+     */
+    @Test
+    public void testSetAuthType() throws Exception {
+        ospfInterface.setAuthType("00");
+        assertThat(ospfInterface.authType(), is("00"));
+    }
+
+    /**
+     * Tests authKey() getter method.
+     */
+    @Test
+    public void testGetAuthKey() throws Exception {
+        ospfInterface.setAuthKey("00");
+        assertThat(ospfInterface.authKey(), is("00"));
+    }
+
+    /**
+     * Tests authKey() setter method.
+     */
+    @Test
+    public void testSetAuthKey() throws Exception {
+        ospfInterface.setAuthKey("00");
+        assertThat(ospfInterface.authKey(), is("00"));
+    }
+
+    /**
+     * Tests pollInterval() getter method.
+     */
+    @Test
+    public void testGetPollInterval() throws Exception {
+        ospfInterface.setPollInterval(100);
+        assertThat(ospfInterface.pollInterval(), is(100));
+    }
+
+    /**
+     * Tests pollInterval() setter method.
+     */
+    @Test
+    public void testSetPollInterval() throws Exception {
+        ospfInterface.setPollInterval(100);
+        assertThat(ospfInterface.pollInterval(), is(100));
+    }
+
+    /**
+     * Tests mtu() getter method.
+     */
+    @Test
+    public void testGetMtu() throws Exception {
+        ospfInterface.setMtu(100);
+        assertThat(ospfInterface.mtu(), is(100));
+    }
+
+    /**
+     * Tests mtu() setter method.
+     */
+    @Test
+    public void testSetMtu() throws Exception {
+        ospfInterface.setMtu(100);
+        assertThat(ospfInterface.mtu(), is(100));
+    }
+
+    /**
+     * Tests reTransmitInterval() getter method.
+     */
+    @Test
+    public void testGetReTransmitInterval() throws Exception {
+        ospfInterface.setReTransmitInterval(100);
+        assertThat(ospfInterface.reTransmitInterval(), is(100));
+    }
+
+    /**
+     * Tests reTransmitInterval() setter method.
+     */
+    @Test
+    public void testSetReTransmitInterval() throws Exception {
+        ospfInterface.setReTransmitInterval(100);
+        assertThat(ospfInterface.reTransmitInterval(), is(100));
+    }
+
+    /**
+     * Tests dr() getter method.
+     */
+    @Test
+    public void testGetDr() throws Exception {
+        ospfInterface.setDr(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfInterface.dr(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests dr() setter method.
+     */
+    @Test
+    public void testSetDr() throws Exception {
+        ospfInterface.setDr(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfInterface.dr(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests bdr() getter method.
+     */
+    @Test
+    public void testGetBdr() throws Exception {
+        ospfInterface.setBdr(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfInterface.bdr(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests bdr() setter method.
+     */
+    @Test
+    public void testSetBdr() throws Exception {
+        ospfInterface.setBdr(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfInterface.bdr(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests transmitDelay() getter method.
+     */
+    @Test
+    public void testGetTransmitDelay() throws Exception {
+        ospfInterface.setTransmitDelay(100);
+        assertThat(ospfInterface.transmitDelay(), is(100));
+    }
+
+    /**
+     * Tests transmitDelay() setter method.
+     */
+    @Test
+    public void testSetTransmitDelay() throws Exception {
+        ospfInterface.setTransmitDelay(100);
+        assertThat(ospfInterface.transmitDelay(), is(100));
+    }
+
+    /**
+     * Tests equals() method.
+     */
+    @Test
+    public void testEquals() throws Exception {
+        assertThat(ospfInterface.equals(new OspfInterfaceImpl()), is(true));
+    }
+
+    /**
+     * Tests hashCode() method.
+     */
+    @Test
+    public void testHashCode() throws Exception {
+        result = ospfInterface.hashCode();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests to string method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(ospfInterface.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfProcessImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfProcessImplTest.java
new file mode 100755
index 0000000..8b2ad2e
--- /dev/null
+++ b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfProcessImplTest.java
@@ -0,0 +1,102 @@
+/*
+ * 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.area;
+
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.ospf.controller.OspfArea;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Unit test class for OspfProcessImpl.
+ */
+public class OspfProcessImplTest {
+
+    private OspfProcessImpl ospfProcess;
+    private List<OspfArea> list;
+    private List result;
+
+    @Before
+    public void setUp() throws Exception {
+        ospfProcess = new OspfProcessImpl();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        ospfProcess = null;
+        list = null;
+    }
+
+    /**
+     * Tests areas() getter method.
+     */
+    @Test
+    public void testGetAreas() throws Exception {
+        list = new ArrayList();
+        list.add(new OspfAreaImpl());
+        list.add(new OspfAreaImpl());
+        ospfProcess.setAreas(list);
+        result = ospfProcess.areas();
+        assertThat(result.size(), is(2));
+    }
+
+    /**
+     * Tests areas() setter method.
+     */
+    @Test
+    public void testSetAreas() throws Exception {
+        list = new ArrayList();
+        list.add(new OspfAreaImpl());
+        list.add(new OspfAreaImpl());
+        ospfProcess.setAreas(list);
+        result = ospfProcess.areas();
+        assertThat(result.size(), is(2));
+    }
+
+    /**
+     * Tests processId() getter method.
+     */
+    @Test
+    public void testGetProcessId() throws Exception {
+        ospfProcess.setProcessId("1.1.1.1");
+        assertThat(ospfProcess.processId(), is("1.1.1.1"));
+    }
+
+    /**
+     * Tests processId() setter method.
+     */
+    @Test
+    public void testSetProcessId() throws Exception {
+        ospfProcess.setProcessId("1.1.1.1");
+        assertThat(ospfProcess.processId(), is("1.1.1.1"));
+    }
+
+    /**
+     * Tests to string method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(ospfProcess.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/ControllerTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/ControllerTest.java
new file mode 100755
index 0000000..46b6ef0
--- /dev/null
+++ b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/ControllerTest.java
@@ -0,0 +1,356 @@
+/*
+ * 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.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+import org.onosproject.net.driver.DriverService;
+import org.onosproject.ospf.controller.OspfAgent;
+import org.onosproject.ospf.controller.OspfArea;
+import org.onosproject.ospf.controller.OspfInterface;
+import org.onosproject.ospf.controller.OspfProcess;
+import org.onosproject.ospf.controller.OspfRouter;
+import org.onosproject.ospf.controller.area.OspfAreaImpl;
+import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
+import org.onosproject.ospf.controller.area.OspfProcessImpl;
+
+import java.nio.channels.Channel;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+/**
+ * Unit test class for Controller.
+ */
+public class ControllerTest {
+    private Controller controller;
+    private Map<String, Long> maps;
+    private OspfAgent ospfAgent;
+    private DriverService driverService;
+    private List<Channel> connectedChannels;
+    private List<OspfProcess> process;
+    private OspfProcess ospfProcess;
+    private OspfArea ospfArea;
+    private OspfInterface ospfInterface;
+    private List<OspfInterface> ospfInterfaces;
+    private List<OspfArea> ospfAreas;
+    private List<OspfProcess> ospfProcesses;
+    private OspfProcess ospfProcess1;
+    private OspfArea ospfArea1;
+    private OspfRouter ospfRouter;
+
+    @Before
+    public void setUp() throws Exception {
+        controller = new Controller();
+        maps = new HashMap<String, Long>();
+        ospfProcess = new OspfProcessImpl();
+        ospfArea = new OspfAreaImpl();
+        ospfInterface = new OspfInterfaceImpl();
+        ospfInterfaces = new ArrayList();
+        ospfInterface.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        ospfInterfaces.add(ospfInterface);
+        ospfArea.setAreaId(Ip4Address.valueOf("2.2.2.2"));
+        ospfArea.setInterfacesLst(ospfInterfaces);
+        ospfProcess.setProcessId("10.10.10.10");
+        ospfAreas = new ArrayList();
+        ospfAreas.add(ospfArea);
+        ospfProcess.setAreas(ospfAreas);
+        ospfProcesses = new ArrayList();
+        ospfProcesses.add(ospfProcess);
+        ospfProcess1 = new OspfProcessImpl();
+        ospfProcess1.setProcessId("11.11.11.11");
+        ospfArea1 = new OspfAreaImpl();
+        ospfArea1.setAreaId(Ip4Address.valueOf("2.2.2.2"));
+        ospfArea1.setInterfacesLst(ospfInterfaces);
+        ospfAreas.add(ospfArea1);
+        ospfProcess1.setAreas(ospfAreas);
+        ospfProcesses.add(ospfProcess1);
+        connectedChannels = new ArrayList<>();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        controller = null;
+        maps.clear();
+        connectedChannels.clear();
+        controller = null;
+        maps = null;
+        ospfAgent = null;
+        driverService = null;
+        connectedChannels = null;
+        process = null;
+        ospfProcess = null;
+        ospfArea = null;
+        ospfInterface = null;
+        ospfInterfaces = null;
+        ospfAreas = null;
+        ospfProcesses = null;
+        ospfProcess1 = null;
+        ospfArea1 = null;
+    }
+
+    /**
+     * Tests getAllConfiguredProcesses() method.
+     */
+    @Test
+    public void testGetAllConfiguredProcesses() throws Exception {
+        process = controller.getAllConfiguredProcesses();
+        assertThat(process, is(nullValue()));
+    }
+
+    /**
+     * Tests addDeviceDetails() method.
+     */
+    @Test(expected = Exception.class)
+    public void testAddDeviceDetails() throws Exception {
+        controller.addDeviceDetails(new OspfRouterImpl());
+        assertThat(controller, is(notNullValue()));
+    }
+
+    /**
+     * Tests removeDeviceDetails() method.
+     */
+    @Test(expected = Exception.class)
+    public void testRemoveDeviceDetails() throws Exception {
+        controller.removeDeviceDetails(new OspfRouterImpl());
+        assertThat(controller, is(notNullValue()));
+    }
+
+    /**
+     * Tests init() method.
+     */
+    @Test
+    public void testInit() throws Exception {
+        controller.init();
+        assertThat(controller.systemStartTime, is(notNullValue()));
+    }
+
+    /**
+     * Tests start() method.
+     */
+    @Test
+    public void testStart() throws Exception {
+        ospfAgent = EasyMock.createMock(OspfAgent.class);
+        controller.start(ospfAgent, driverService);
+        controller.updateConfig(ospfProcesses);
+        assertThat(controller, is(notNullValue()));
+    }
+
+    /**
+     * Tests stop() method.
+     */
+    @Test(expected = Exception.class)
+    public void testStop() throws Exception {
+        controller.start(ospfAgent, driverService);
+        controller.stop();
+        assertThat(controller, is(notNullValue()));
+    }
+
+    /**
+     * Tests deleteInterfaceFromArea() method.
+     */
+    @Test
+    public void testDeleteInterfaceFromArea() throws Exception {
+        controller.updateConfig(ospfProcesses);
+        assertThat(controller.deleteInterfaceFromArea("10.10.10.10", "2.2.2.2", "1.1.1.1"), is(true));
+        assertThat(controller.deleteInterfaceFromArea("10.10.10.10", "2.2.2.2", "5.5.5.5"), is(false));
+    }
+
+    /**
+     * Tests checkArea() method.
+     */
+    @Test
+    public void testCheckArea() throws Exception {
+        controller.updateConfig(ospfProcesses);
+        assertThat(controller.checkArea("10.10.10.10", "2.2.2.2"), is(true));
+    }
+
+    /**
+     * Tests checkArea() method.
+     */
+    @Test
+    public void testCheckArea1() throws Exception {
+        controller.updateConfig(ospfProcesses);
+        assertThat(controller.checkArea("10.10.10.10", "111.111.111.111"), is(false));
+    }
+
+    /**
+     * Tests checkProcess() method.
+     */
+    @Test
+    public void testCheckProcess() throws Exception {
+        controller.updateConfig(ospfProcesses);
+        assertThat(controller.checkProcess("3.3.3.3"), is(false));
+        assertThat(controller.checkProcess("1.1.1.1"), is(false));
+    }
+
+    /**
+     * Tests checkInterface() method.
+     */
+    @Test
+    public void testCheckInterface() throws Exception {
+        controller.updateConfig(ospfProcesses);
+        assertThat(controller.checkInterface("10.10.10.10", "2.2.2.2", "1.1.1.1"), is(true));
+    }
+
+    /**
+     * Tests updateAreaInProcess() method.
+     */
+    @Test
+    public void testUpdateAreaInProcess() throws Exception {
+        controller.updateConfig(ospfProcesses);
+        controller.updateAreaInProcess("10.10.10.10", "2.2.2.2", ospfArea);
+        assertThat(controller, is(notNullValue()));
+    }
+
+    /**
+     * Tests updateConfig() method.
+     */
+    @Test
+    public void testUpdateConfig() throws Exception {
+        controller.updateConfig(ospfProcesses);
+        controller.updateConfig(ospfProcesses);
+        controller.updateConfig(ospfProcesses);
+        assertThat(controller, is(notNullValue()));
+    }
+
+    /**
+     * Tests updateConfig() method.
+     */
+    @Test
+    public void testUpdateConfig2() throws Exception {
+        controller.updateConfig(ospfProcesses);
+        controller.updateConfig(ospfProcesses);
+        assertThat(controller, is(notNullValue()));
+    }
+
+    /**
+     * Tests updateConfig() method.
+     */
+    @Test
+    public void testUpdateConfig1() throws Exception {
+        ospfProcess = new OspfProcessImpl();
+        ospfArea = new OspfAreaImpl();
+        ospfInterface = new OspfInterfaceImpl();
+        ospfInterfaces = new ArrayList();
+        ospfInterface.setIpAddress(Ip4Address.valueOf("10.10.10.5"));
+        ospfInterfaces.add(ospfInterface);
+        ospfArea.setAreaId(Ip4Address.valueOf("2.2.2.2"));
+        ospfArea.setInterfacesLst(ospfInterfaces);
+        ospfProcess.setProcessId("10.10.10.10");
+        ospfAreas = new ArrayList();
+        ospfAreas.add(ospfArea);
+        ospfProcess.setAreas(ospfAreas);
+        ospfProcesses = new ArrayList();
+        ospfProcesses.add(ospfProcess);
+        controller.updateConfig(ospfProcesses);
+        assertThat(controller, is(notNullValue()));
+    }
+
+    /**
+     * Tests deleteConfig() method.
+     */
+    @Test(expected = Exception.class)
+    public void testDeleteConfig() throws Exception {
+        controller.updateConfig(ospfProcesses);
+        controller.deleteConfig(ospfProcesses, "INTERFACE");
+        assertThat(controller, is(notNullValue()));
+    }
+
+    /**
+     * Tests deleteConfig() method.
+     */
+    @Test(expected = Exception.class)
+    public void testDeleteConfig1() throws Exception {
+        controller.updateConfig(ospfProcesses);
+        controller.deleteConfig(ospfProcesses, "AREA");
+        assertThat(controller, is(notNullValue()));
+    }
+
+    /**
+     * Tests deleteConfig() method.
+     */
+
+    @Test
+    public void testDeleteConfig2() throws Exception {
+        controller.updateConfig(ospfProcesses);
+        controller.deleteConfig(ospfProcesses, "PROCESS");
+        assertThat(controller, is(notNullValue()));
+    }
+
+    /**
+     * Tests deleteConfig() method.
+     */
+    @Test
+    public void testDeleteConfig3() throws Exception {
+        ospfProcesses = new ArrayList();
+        controller.deleteConfig(ospfProcesses, "PROCESS");
+        assertThat(controller, is(notNullValue()));
+    }
+
+    /**
+     * Tests deleteConfig() method.
+     */
+    @Test
+    public void testDeleteConfig4() throws Exception {
+        controller.updateConfig(ospfProcesses);
+        controller.deleteConfig(ospfProcesses, "PROCESS");
+        controller.updateConfig(ospfProcesses);
+        assertThat(controller, is(notNullValue()));
+    }
+
+    /**
+     * Tests deleteProcessWhenExists() method.
+     */
+    @Test
+    public void testDeleteProcessWhenExists() throws Exception {
+        controller.updateConfig(ospfProcesses);
+        controller.deleteProcessWhenExists(ospfProcesses, "PROCESS");
+    }
+
+    /**
+     * Tests addLinkDetails() method.
+     */
+    @Test
+    public void testAddLinkDetails() throws Exception {
+        ospfAgent = EasyMock.createMock(OspfAgent.class);
+        controller.start(ospfAgent, driverService);
+        ospfRouter = new OspfRouterImpl();
+        controller.addLinkDetails(ospfRouter, new OspfLinkTedImpl());
+        assertThat(controller, is(notNullValue()));
+    }
+
+    /**
+     * Tests removeLinkDetails() method.
+     */
+    @Test
+    public void testRemoveLinkDetails() throws Exception {
+        ospfAgent = EasyMock.createMock(OspfAgent.class);
+        controller.start(ospfAgent, driverService);
+        ospfRouter = new OspfRouterImpl();
+        controller.addLinkDetails(ospfRouter, new OspfLinkTedImpl());
+        controller.removeLinkDetails(ospfRouter);
+        assertThat(controller, is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/DeviceInformationImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/DeviceInformationImplTest.java
new file mode 100755
index 0000000..a61c496
--- /dev/null
+++ b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/DeviceInformationImplTest.java
@@ -0,0 +1,168 @@
+/*
+ * 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.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Unit test class for DeviceInformationImpl.
+ */
+public class DeviceInformationImplTest {
+
+    private DeviceInformationImpl deviceInformation;
+
+    @Before
+    public void setUp() throws Exception {
+        deviceInformation = new DeviceInformationImpl();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        deviceInformation = null;
+    }
+
+    /**
+     * Tests routerId() getter method.
+     */
+    @Test
+    public void testRouterId() throws Exception {
+        deviceInformation.setRouterId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(deviceInformation.routerId(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests routerId() setter method.
+     */
+    @Test
+    public void testSetRouterId() throws Exception {
+        deviceInformation.setRouterId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(deviceInformation.routerId(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests deviceId() getter method.
+     */
+    @Test
+    public void testDeviceId() throws Exception {
+        deviceInformation.setDeviceId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(deviceInformation.deviceId(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests deviceId() getter method.
+     */
+    @Test
+    public void testSetDeviceId() throws Exception {
+        deviceInformation.setDeviceId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(deviceInformation.deviceId(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests interfaceId() method.
+     */
+    @Test
+    public void testInterfaceId() throws Exception {
+        deviceInformation.addInterfaceId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(deviceInformation.interfaceId().size(), is(1));
+    }
+
+    /**
+     * Tests addInterfaceId() method.
+     */
+    @Test
+    public void testAddInterfaceId() throws Exception {
+        deviceInformation.addInterfaceId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(deviceInformation.interfaceId().size(), is(1));
+    }
+
+    /**
+     * Tests areaId() getter method.
+     */
+    @Test
+    public void testAreaId() throws Exception {
+        deviceInformation.setAreaId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(deviceInformation.areaId(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests areaId() setter method.
+     */
+    @Test
+    public void testSetAreaId() throws Exception {
+        deviceInformation.setAreaId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(deviceInformation.areaId(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests isAlreadyCreated() getter method.
+     */
+    @Test
+    public void testIsAlreadyCreated() throws Exception {
+        deviceInformation.setAlreadyCreated(true);
+        assertThat(deviceInformation.isAlreadyCreated(), is(true));
+    }
+
+    /**
+     * Tests isAlreadyCreated() setter method.
+     */
+    @Test
+    public void testSetAlreadyCreated() throws Exception {
+        deviceInformation.setAlreadyCreated(true);
+        assertThat(deviceInformation.isAlreadyCreated(), is(true));
+    }
+
+    /**
+     * Tests isDr() getter method.
+     */
+    @Test
+    public void testIsDr() throws Exception {
+        deviceInformation.setDr(true);
+        assertThat(deviceInformation.isDr(), is(true));
+    }
+
+    /**
+     * Tests isDr() setter method.
+     */
+    @Test
+    public void testSetDr() throws Exception {
+        deviceInformation.setDr(true);
+        assertThat(deviceInformation.isDr(), is(true));
+    }
+
+    /**
+     * Tests neighborId() getter method.
+     */
+    @Test
+    public void testNeighborId() throws Exception {
+        deviceInformation.setNeighborId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(deviceInformation.neighborId(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests neighborId() setter method.
+     */
+    @Test
+    public void testSetNeighborId() throws Exception {
+        deviceInformation.setNeighborId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(deviceInformation.neighborId(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/LinkInformationImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/LinkInformationImplTest.java
new file mode 100755
index 0000000..9d580ab
--- /dev/null
+++ b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/LinkInformationImplTest.java
@@ -0,0 +1,186 @@
+/*
+ * 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.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Unit test class for LinkInformationImpl.
+ */
+public class LinkInformationImplTest {
+
+    private LinkInformationImpl linkInformation;
+
+    @Before
+    public void setUp() throws Exception {
+        linkInformation = new LinkInformationImpl();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        linkInformation = null;
+    }
+
+    /**
+     * Tests linkId() getter method.
+     */
+    @Test
+    public void testLinkId() throws Exception {
+        linkInformation.setLinkId("1.1.1.1");
+        assertThat(linkInformation.linkId(), is("1.1.1.1"));
+    }
+
+    /**
+     * Tests linkId() setter method.
+     */
+    @Test
+    public void testSetLinkId() throws Exception {
+        linkInformation.setLinkId("1.1.1.1");
+        assertThat(linkInformation.linkId(), is("1.1.1.1"));
+    }
+
+    /**
+     * Tests isAlreadyCreated() getter method.
+     */
+    @Test
+    public void testIsAlreadyCreated() throws Exception {
+        linkInformation.setAlreadyCreated(true);
+        assertThat(linkInformation.isAlreadyCreated(), is(true));
+    }
+
+    /**
+     * Tests isAlreadyCreated() setter method.
+     */
+    @Test
+    public void testSetAlreadyCreated() throws Exception {
+        linkInformation.setAlreadyCreated(true);
+        assertThat(linkInformation.isAlreadyCreated(), is(true));
+    }
+
+    /**
+     * Tests isLinkSrcIdNotRouterId() getter method.
+     */
+    @Test
+    public void testIsLinkSrcIdNotRouterId() throws Exception {
+        linkInformation.setLinkSrcIdNotRouterId(true);
+        assertThat(linkInformation.isLinkSrcIdNotRouterId(), is(true));
+    }
+
+    /**
+     * Tests isLinkSrcIdNotRouterId() setter method.
+     */
+    @Test
+    public void testSetLinkSrcIdNotRouterId() throws Exception {
+        linkInformation.setLinkSrcIdNotRouterId(true);
+        assertThat(linkInformation.isLinkSrcIdNotRouterId(), is(true));
+    }
+
+    /**
+     * Tests linkDestinationId() getter method.
+     */
+    @Test
+    public void testLinkDestinationId() throws Exception {
+        linkInformation.setLinkDestinationId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(linkInformation.linkDestinationId(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests linkDestinationId() setter method.
+     */
+    @Test
+    public void testSetLinkDestinationId() throws Exception {
+        linkInformation.setLinkDestinationId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(linkInformation.linkDestinationId(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests linkSourceId() getter method.
+     */
+    @Test
+    public void testLinkSourceId() throws Exception {
+        linkInformation.setLinkSourceId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(linkInformation.linkSourceId(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests linkSourceId() setter method.
+     */
+    @Test
+    public void testSetLinkSourceId() throws Exception {
+        linkInformation.setLinkSourceId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(linkInformation.linkSourceId(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests interfaceIp() getter method.
+     */
+    @Test
+    public void testInterfaceIp() throws Exception {
+        linkInformation.setInterfaceIp(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(linkInformation.interfaceIp(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests interfaceIp() setter method.
+     */
+    @Test
+    public void testSetInterfaceIp() throws Exception {
+        linkInformation.setInterfaceIp(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(linkInformation.interfaceIp(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests linkSourceIpAddress() getter method.
+     */
+    @Test
+    public void testLinkSourceIpAddress() throws Exception {
+        linkInformation.setLinkSourceIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(linkInformation.linkSourceIpAddress(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests linkSourceIpAddress() setter method.
+     */
+    @Test
+    public void testSetLinkSourceIpAddress() throws Exception {
+        linkInformation.setLinkSourceIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(linkInformation.linkSourceIpAddress(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests linkDestinationId() getter method.
+     */
+    @Test
+    public void testLinkDestinationIpAddress() throws Exception {
+        linkInformation.setLinkDestinationIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(linkInformation.linkDestinationIpAddress(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests linkDestinationId() setter method.
+     */
+    @Test
+    public void testSetLinkDestinationIpAddress() throws Exception {
+        linkInformation.setLinkDestinationIpAddress(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(linkInformation.linkDestinationIpAddress(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfControllerImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfControllerImplTest.java
new file mode 100755
index 0000000..ce46693
--- /dev/null
+++ b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfControllerImplTest.java
@@ -0,0 +1,274 @@
+/*
+ * 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.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+import org.onosproject.ospf.controller.OspfArea;
+import org.onosproject.ospf.controller.OspfInterface;
+import org.onosproject.ospf.controller.OspfLinkListener;
+import org.onosproject.ospf.controller.OspfProcess;
+import org.onosproject.ospf.controller.OspfRouter;
+import org.onosproject.ospf.controller.OspfRouterListener;
+import org.onosproject.ospf.controller.area.OspfAreaImpl;
+import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
+import org.onosproject.ospf.controller.area.OspfProcessImpl;
+
+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 OspfRouterId.
+ */
+public class OspfControllerImplTest {
+
+    private OspfControllerImpl ospfController;
+    private OspfRouterListener ospfRouterListener;
+    private OspfLinkListener ospfLinkListener;
+    private Controller controller;
+    private List<OspfProcess> ospfProcesses;
+    private OspfProcess process1;
+    private OspfProcess process2;
+    private List<OspfArea> areas;
+    private OspfAreaImpl ospfArea;
+    private List<OspfInterface> ospfInterfaces;
+    private OspfInterfaceImpl ospfInterface;
+    private OspfProcess ospfProcess;
+    private OspfArea ospfArea1;
+    private OspfRouter ospfRouter;
+
+    @Before
+    public void setUp() throws Exception {
+        ospfController = new OspfControllerImpl();
+        controller = new Controller();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        ospfController = null;
+        ospfRouterListener = null;
+        ospfLinkListener = null;
+        controller = null;
+        ospfProcesses = null;
+        areas = null;
+        ospfArea = null;
+        ospfInterfaces = null;
+        ospfInterface = null;
+        ospfProcess = null;
+        ospfProcess = null;
+        ospfArea1 = null;
+        ospfRouter = null;
+    }
+
+    /**
+     * Tests activate() method.
+     */
+    @Test
+    public void testActivate() throws Exception {
+        ospfController.activate();
+        assertThat(ospfController, is(notNullValue()));
+    }
+
+    @Test(expected = Exception.class)
+    public void testDeactivate() throws Exception {
+        ospfController.activate();
+        ospfController.deactivate();
+        assertThat(ospfController, is(notNullValue()));
+    }
+
+    /**
+     * Tests addRouterListener() method.
+     */
+    @Test
+    public void testAddRouterListener() throws Exception {
+        ospfRouterListener = EasyMock.createMock(OspfRouterListener.class);
+        ospfController.addRouterListener(ospfRouterListener);
+        assertThat(ospfController, is(notNullValue()));
+    }
+
+    /**
+     * Tests removeRouterListener() method.
+     */
+    @Test
+    public void testRemoveRouterListener() throws Exception {
+        ospfRouterListener = EasyMock.createMock(OspfRouterListener.class);
+        ospfController.addRouterListener(ospfRouterListener);
+        ospfController.removeRouterListener(ospfRouterListener);
+        assertThat(ospfController, is(notNullValue()));
+    }
+
+    /**
+     * Tests addLinkListener() method.
+     */
+    @Test
+    public void testAddLinkListener() throws Exception {
+        ospfLinkListener = EasyMock.createMock(OspfLinkListener.class);
+        ospfController.addLinkListener(ospfLinkListener);
+        assertThat(ospfController, is(notNullValue()));
+    }
+
+    /**
+     * Tests removeLinkListener() method.
+     */
+    @Test
+    public void testRemoveLinkListener() throws Exception {
+        ospfLinkListener = EasyMock.createMock(OspfLinkListener.class);
+        ospfController.addLinkListener(ospfLinkListener);
+        ospfController.removeLinkListener(ospfLinkListener);
+        assertThat(ospfController, is(notNullValue()));
+    }
+
+    /**
+     * Tests updateConfig() method.
+     */
+    @Test
+    public void testUpdateConfig() throws Exception {
+        ospfProcess = new OspfProcessImpl();
+        ospfArea = new OspfAreaImpl();
+        ospfInterface = new OspfInterfaceImpl();
+        ospfInterfaces = new ArrayList();
+        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
+        ospfInterfaces.add(ospfInterface);
+        ospfArea.setAreaId(Ip4Address.valueOf("2.2.2.2"));
+        ospfArea.setInterfacesLst(ospfInterfaces);
+        ospfProcess.setProcessId("10.10.10.10");
+        areas = new ArrayList();
+        areas.add(ospfArea);
+        ospfProcess.setAreas(areas);
+        ospfProcesses = new ArrayList();
+        ospfProcesses.add(ospfProcess);
+        process1 = new OspfProcessImpl();
+        process1.setProcessId("11.11.11.11");
+        ospfArea1 = new OspfAreaImpl();
+        ospfArea1.setAreaId(Ip4Address.valueOf("2.2.2.2"));
+        ospfArea1.setInterfacesLst(ospfInterfaces);
+        areas.add(ospfArea1);
+        process1.setAreas(areas);
+        ospfProcesses.add(process1);
+        ospfController.updateConfig(ospfProcesses);
+        assertThat(ospfController, is(notNullValue()));
+
+    }
+
+    /**
+     * Tests deleteConfig() method.
+     */
+    @Test
+    public void testDeleteConfig() throws Exception {
+        ospfProcess = new OspfProcessImpl();
+        ospfArea = new OspfAreaImpl();
+        ospfInterface = new OspfInterfaceImpl();
+        ospfInterfaces = new ArrayList();
+        ospfInterface.setIpAddress(Ip4Address.valueOf("10.10.10.5"));
+        ospfInterfaces.add(ospfInterface);
+        ospfArea.setAreaId(Ip4Address.valueOf("2.2.2.2"));
+        ospfArea.setInterfacesLst(ospfInterfaces);
+        ospfProcess.setProcessId("10.10.10.10");
+        areas = new ArrayList();
+        areas.add(ospfArea);
+        ospfProcess.setAreas(areas);
+        ospfProcesses = new ArrayList();
+        ospfProcesses.add(ospfProcess);
+        process1 = new OspfProcessImpl();
+        process1.setProcessId("11.11.11.11");
+        ospfArea1 = new OspfAreaImpl();
+        ospfArea1.setAreaId(Ip4Address.valueOf("2.2.2.2"));
+        ospfArea1.setInterfacesLst(ospfInterfaces);
+        areas.add(ospfArea1);
+        process1.setAreas(areas);
+        ospfProcesses.add(process1);
+        ospfController.deleteConfig(ospfProcesses, "INTERFACE");
+        assertThat(ospfController, is(notNullValue()));
+    }
+
+    /**
+     * Tests addLink() method.
+     */
+    @Test
+    public void testAddLink() throws Exception {
+        ospfRouter = new OspfRouterImpl();
+
+        ospfController.agent.addLink(ospfRouter, new OspfLinkTedImpl());
+        assertThat(ospfController, is(notNullValue()));
+    }
+
+    /**
+     * Tests deleteLink() method.
+     */
+    @Test
+    public void testDeleteLink() throws Exception {
+        ospfRouter = new OspfRouterImpl();
+
+        ospfController.agent.addLink(ospfRouter, new OspfLinkTedImpl());
+        ospfController.agent.deleteLink(ospfRouter);
+        assertThat(ospfController, is(notNullValue()));
+    }
+
+    /**
+     * Tests listener() method.
+     */
+    @Test
+    public void testListener() throws Exception {
+        assertThat(ospfController.listener().size(), is(0));
+    }
+
+    /**
+     * Tests linkListener() method.
+     */
+    @Test
+    public void testLinkListener() throws Exception {
+        assertThat(ospfController.linkListener().size(), is(0));
+    }
+
+    /**
+     * Tests addConnectedRouter() method.
+     */
+    @Test
+    public void testaddConnectedRouter() throws Exception {
+        ospfRouter = new OspfRouterImpl();
+
+        ospfController.agent.addConnectedRouter(ospfRouter);
+        assertThat(ospfController, is(notNullValue()));
+    }
+
+    /**
+     * Tests removeConnectedRouter() method.
+     */
+    @Test
+    public void testRemoveConnectedRouter() throws Exception {
+        ospfRouter = new OspfRouterImpl();
+
+        ospfController.agent.addConnectedRouter(ospfRouter);
+        ospfController.agent.removeConnectedRouter(ospfRouter);
+        assertThat(ospfController, is(notNullValue()));
+    }
+
+    /**
+     * Tests getAllConfiguredProcesses() method.
+     */
+    @Test(expected = Exception.class)
+    public void testGetAllConfiguredProcesses() throws Exception {
+        assertThat(ospfController.getAllConfiguredProcesses().size(), is(0));
+    }
+}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfDeviceTedImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfDeviceTedImplTest.java
new file mode 100755
index 0000000..d919fc0
--- /dev/null
+++ b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfDeviceTedImplTest.java
@@ -0,0 +1,148 @@
+/*
+ * 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.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+import org.onlab.packet.Ip6Address;
+
+import java.net.InetAddress;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Unit test class for OspfDeviceTedImpl.
+ */
+public class OspfDeviceTedImplTest {
+    private OspfDeviceTedImpl ospfDeviceTed;
+
+    @Before
+    public void setUp() throws Exception {
+        ospfDeviceTed = new OspfDeviceTedImpl();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        ospfDeviceTed = null;
+    }
+
+    /**
+     * Tests ipv4RouterIds() getter method.
+     */
+    @Test
+    public void testIpv4RouterIds() throws Exception {
+        List list = new ArrayList();
+        list.add(Ip4Address.valueOf("1.1.1.1"));
+        ospfDeviceTed.setIpv4RouterIds(list);
+        assertThat(ospfDeviceTed.ipv4RouterIds().size(), is(1));
+    }
+
+    /**
+     * Tests ipv4RouterIds() setter method.
+     */
+    @Test
+    public void testSetIpv4RouterIds() throws Exception {
+        List list = new ArrayList();
+        list.add(Ip4Address.valueOf("1.1.1.1"));
+        ospfDeviceTed.setIpv4RouterIds(list);
+        assertThat(ospfDeviceTed.ipv4RouterIds().size(), is(1));
+    }
+
+    /**
+     * Tests abr() getter method.
+     */
+    @Test
+    public void testAbr() throws Exception {
+        ospfDeviceTed.setAbr(true);
+        assertThat(ospfDeviceTed.abr(), is(true));
+    }
+
+    /**
+     * Tests abr() setter method.
+     */
+    @Test
+    public void testSetAbr() throws Exception {
+        ospfDeviceTed.setAbr(true);
+        assertThat(ospfDeviceTed.abr(), is(true));
+    }
+
+    /**
+     * Tests asbr() getter method.
+     */
+    @Test
+    public void testAsbr() throws Exception {
+        ospfDeviceTed.setAsbr(true);
+        assertThat(ospfDeviceTed.asbr(), is(true));
+    }
+
+    /**
+     * Tests asbr() setter method.
+     */
+    @Test
+    public void testSetAsbr() throws Exception {
+        ospfDeviceTed.setAsbr(true);
+        assertThat(ospfDeviceTed.asbr(), is(true));
+    }
+
+    /**
+     * Tests topologyIds() getter method.
+     */
+    @Test
+    public void testTopologyIds() throws Exception {
+        List list = new ArrayList();
+        list.add(Ip4Address.valueOf("1.1.1.1"));
+        ospfDeviceTed.setTopologyIds(list);
+        assertThat(ospfDeviceTed.topologyIds().size(), is(1));
+    }
+
+    /**
+     * Tests topologyIds() setter method.
+     */
+    @Test
+    public void testSetTopologyIds() throws Exception {
+        List list = new ArrayList();
+        list.add(Ip4Address.valueOf("1.1.1.1"));
+        ospfDeviceTed.setTopologyIds(list);
+        assertThat(ospfDeviceTed.topologyIds().size(), is(1));
+    }
+
+    /**
+     * Tests ipv6RouterIds() getter method.
+     */
+    @Test(expected = Exception.class)
+    public void testIpv6RouterIds() throws Exception {
+        List list = new ArrayList();
+        list.add(Ip6Address.valueOf(InetAddress.getLocalHost()));
+        ospfDeviceTed.setIpv6RouterIds(list);
+        assertThat(ospfDeviceTed.ipv6RouterIds().size(), is(1));
+    }
+
+    /**
+     * Tests ipv6RouterIds() setter method.
+     */
+    @Test(expected = Exception.class)
+    public void testSetIpv6RouterIds() throws Exception {
+        List list = new ArrayList();
+        list.add(Ip6Address.valueOf(InetAddress.getLocalHost()));
+        ospfDeviceTed.setIpv6RouterIds(list);
+        assertThat(ospfDeviceTed.ipv6RouterIds().size(), is(1));
+    }
+}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfLinkTedImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfLinkTedImplTest.java
new file mode 100755
index 0000000..72180af
--- /dev/null
+++ b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfLinkTedImplTest.java
@@ -0,0 +1,204 @@
+/*
+ * 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.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+import org.onlab.util.Bandwidth;
+
+import java.net.InetAddress;
+import java.util.ArrayList;
+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 OspfDeviceTedImpl.
+ */
+public class OspfLinkTedImplTest {
+    private OspfLinkTedImpl ospfLinkTed;
+
+    @Before
+    public void setUp() throws Exception {
+        ospfLinkTed = new OspfLinkTedImpl();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        ospfLinkTed = null;
+    }
+
+    /**
+     * Tests maximumLink() getter method.
+     */
+    @Test
+    public void testMaximumLink() throws Exception {
+
+        ospfLinkTed.setMaximumLink(Bandwidth.bps(1234));
+        assertThat(ospfLinkTed.maximumLink(), is(Bandwidth.bps(1234)));
+    }
+
+    /**
+     * Tests maximumLink() setter method.
+     */
+    @Test
+    public void testSetMaximumLink() throws Exception {
+        ospfLinkTed.setMaximumLink(Bandwidth.bps(1234));
+        assertThat(ospfLinkTed.maximumLink(), is(Bandwidth.bps(1234)));
+    }
+
+    /**
+     * Tests ipv6RemRouterId() getter method.
+     */
+    @Test
+    public void testIpv6RemRouterId() throws Exception {
+        List list = new ArrayList();
+        ospfLinkTed.setIpv6RemRouterId(list);
+        assertThat(ospfLinkTed.ipv6RemRouterId().size(), is(0));
+    }
+
+    /**
+     * Tests ipv6RemRouterId() setter method.
+     */
+    @Test
+    public void testSetIpv6RemRouterId() throws Exception {
+        List list = new ArrayList();
+        ospfLinkTed.setIpv6RemRouterId(list);
+        assertThat(ospfLinkTed.ipv6RemRouterId().size(), is(0));
+    }
+
+    /**
+     * Tests ipv4RemRouterId() getter method.
+     */
+    @Test
+    public void testIpv4RemRouterId() throws Exception {
+        List list = new ArrayList();
+        list.add(Ip4Address.valueOf(InetAddress.getLocalHost()));
+        ospfLinkTed.setIpv4RemRouterId(list);
+        assertThat(ospfLinkTed.ipv4RemRouterId().size(), is(1));
+    }
+
+    /**
+     * Tests ipv4RemRouterId() setter method.
+     */
+    @Test
+    public void testSetIpv4RemRouterId() throws Exception {
+        List list = new ArrayList();
+        list.add(Ip4Address.valueOf(InetAddress.getLocalHost()));
+        ospfLinkTed.setIpv4RemRouterId(list);
+        assertThat(ospfLinkTed.ipv4RemRouterId().size(), is(1));
+    }
+
+    /**
+     * Tests ipv6LocRouterId() getter method.
+     */
+    @Test
+    public void testIpv6LocRouterId() throws Exception {
+        List list = new ArrayList();
+        ospfLinkTed.setIpv4LocRouterId(list);
+        assertThat(ospfLinkTed.ipv6LocRouterId().size(), is(0));
+    }
+
+    /**
+     * Tests ipv6LocRouterId() setter method.
+     */
+    @Test
+    public void testSetIpv6LocRouterId() throws Exception {
+        List list = new ArrayList();
+        ospfLinkTed.setIpv4LocRouterId(list);
+        assertThat(ospfLinkTed.ipv6LocRouterId().size(), is(0));
+    }
+
+    /**
+     * Tests ipv4LocRouterId() getter method.
+     */
+    @Test
+    public void testIpv4LocRouterId() throws Exception {
+        List list = new ArrayList();
+        list.add(Ip4Address.valueOf(InetAddress.getLocalHost()));
+        ospfLinkTed.setIpv4LocRouterId(list);
+        assertThat(ospfLinkTed.ipv4LocRouterId().size(), is(1));
+    }
+
+    /**
+     * Tests ipv4LocRouterId() setter method.
+     */
+    @Test
+    public void testSetIpv4LocRouterId() throws Exception {
+        List list = new ArrayList();
+        list.add(Ip4Address.valueOf(InetAddress.getLocalHost()));
+        ospfLinkTed.setIpv4LocRouterId(list);
+        assertThat(ospfLinkTed.ipv4LocRouterId().size(), is(1));
+    }
+
+    /**
+     * Tests teMetric() getter method.
+     */
+    @Test
+    public void testTeMetric() throws Exception {
+        ospfLinkTed.setTeMetric(1234);
+        assertThat(ospfLinkTed.teMetric(), is(1234));
+    }
+
+    /**
+     * Tests teMetric() setter method.
+     */
+    @Test
+    public void testSetTeMetric() throws Exception {
+        ospfLinkTed.setTeMetric(1234);
+        assertThat(ospfLinkTed.teMetric(), is(1234));
+    }
+
+    /**
+     * Tests maxReserved() getter method.
+     */
+    @Test
+    public void testMaxReserved() throws Exception {
+        ospfLinkTed.setMaxReserved(Bandwidth.bps(1234));
+        assertThat(ospfLinkTed.maxReserved(), is(Bandwidth.bps(1234)));
+    }
+
+    /**
+     * Tests maxReserved() setter method.
+     */
+    @Test
+    public void testSetMaxReserved() throws Exception {
+        ospfLinkTed.setMaxReserved(Bandwidth.bps(1234));
+        assertThat(ospfLinkTed.maxReserved(), is(Bandwidth.bps(1234)));
+    }
+
+    /**
+     * Tests maxUnResBandwidth() getter method.
+     */
+    @Test
+    public void testMaxUnResBandwidth() throws Exception {
+        ospfLinkTed.setMaxUnResBandwidth(Bandwidth.bps(1234));
+        assertThat(ospfLinkTed.maxUnResBandwidth(), is(notNullValue()));
+    }
+
+    /**
+     * Tests maxUnResBandwidth() setter method.
+     */
+    @Test
+    public void testSetMaxUnResBandwidth() throws Exception {
+        ospfLinkTed.setMaxUnResBandwidth(Bandwidth.bps(1234.0));
+        assertThat(ospfLinkTed.maxUnResBandwidth(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageDecoderTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageDecoderTest.java
new file mode 100755
index 0000000..753ad6c
--- /dev/null
+++ b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageDecoderTest.java
@@ -0,0 +1,86 @@
+/*
+ * 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.channel.Channel;
+import org.jboss.netty.channel.ChannelHandlerContext;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+/**
+ * Unit test class for OspfMessageDecoder.
+ */
+public class OspfMessageDecoderTest {
+
+    private final byte[] hellopacket = {0, 0, 0, 0, 2, 1, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, 39, 59,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 10, 2, 1, 0, 0, 0,
+            40, -64, -88, -86, 8, 0, 0, 0, 0};
+    private final byte[] ddpacket = {0, 0, 0, 0, 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};
+    private final byte[] ddpacket44 = {0, 0, 0, 0, 2, 2, 0, 10, -64, -88};
+    private final byte[] lsAckpacket = {0, 0, 0, 0, 2, 5, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, -30, -12,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 16, 2, 1, -64, -88, -86, 2, -64,
+            -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48};
+    private final byte[] lsUpdatePacket = {0, 0, 0, 0, 2, 4, 0, 76, -64, -88, -86, 3, 0, 0, 0, 1, 7, 111,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 14, 16, 2, 1, -64, -88,
+            -86, 2, -64, -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48, 2, 0, 0, 2
+            , -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10, -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10};
+    private final byte[] lsRequestPacket = {0, 0, 0, 0, 2, 3, 0, 36, -64, -88, -86, 3, 0, 0, 0, 1, -67, -57,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -64, -88, -86, 8, -64, -88, -86, 8};
+    private OspfMessageDecoder ospfMessageDecoder;
+    private ChannelHandlerContext ctx;
+    private Channel channel;
+    private SocketAddress socketAddress;
+    private ChannelBuffer channelBuffer;
+
+    @Before
+    public void setUp() throws Exception {
+        ospfMessageDecoder = new OspfMessageDecoder();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        ospfMessageDecoder = null;
+        channel = null;
+        socketAddress = null;
+        channelBuffer = null;
+    }
+
+    /**
+     * Tests decode() method.
+     */
+    @Test
+    public void testDecode() throws Exception {
+
+        channel = EasyMock.createMock(Channel.class);
+        socketAddress = InetSocketAddress.createUnresolved("127.0.0.1", 7000);
+        channelBuffer = ChannelBuffers.copiedBuffer(hellopacket);
+        assertThat(ospfMessageDecoder.decode(ctx, channel, channelBuffer), is(nullValue()));
+
+
+    }
+}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageEncoderTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageEncoderTest.java
new file mode 100755
index 0000000..61613d0
--- /dev/null
+++ b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageEncoderTest.java
@@ -0,0 +1,132 @@
+/*
+ * 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.channel.Channel;
+import org.jboss.netty.channel.ChannelHandlerContext;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
+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.OspfInterfaceState;
+
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+/**
+ * Created by sdn on 13/1/16.
+ */
+public class OspfMessageEncoderTest {
+    private final byte[] hpacket = {2, 1, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, 39, 59,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 10, 2, 1, 0, 0, 0,
+            40, -64, -88, -86, 8, 0, 0, 0, 0};
+    private final byte[] dpacket = {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};
+    private final byte[] lrpacket = {2, 3, 0, 36, -64, -88, -86, 3, 0, 0, 0, 1, -67, -57,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -64, -88, -86, 8, -64, -88, -86, 8};
+    private byte[] lAckpacket = {2, 5, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, -30, -12,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 16, 2, 1, -64, -88, -86, 2, -64,
+            -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48};
+    private HelloPacket helloPacket;
+    private DdPacket ddPacket;
+    private LsAcknowledge lsAcknowledge;
+    private LsRequest lsRequest;
+    private LsUpdate lsUpdate;
+    private ChannelHandlerContext ctx;
+    private OspfMessageEncoder ospfMessageEncoder;
+    private ChannelBuffer buf;
+    private SocketAddress socketAddress;
+    private Channel channel;
+
+    @Before
+    public void setUp() throws Exception {
+        ospfMessageEncoder = new OspfMessageEncoder();
+        helloPacket = new HelloPacket();
+        ddPacket = new DdPacket();
+        lsAcknowledge = new LsAcknowledge();
+        lsRequest = new LsRequest();
+        lsUpdate = new LsUpdate();
+        helloPacket.setOspftype(1);
+        ddPacket.setOspftype(2);
+        lsAcknowledge.setOspftype(5);
+        lsRequest.setOspftype(3);
+        lsUpdate.setOspftype(4);
+        OspfInterfaceImpl ospfInterface = new OspfInterfaceImpl();
+        ospfInterface.setState(OspfInterfaceState.DROTHER);
+        ospfMessageEncoder = new OspfMessageEncoder(ospfInterface);
+
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        helloPacket = null;
+        ddPacket = null;
+        lsAcknowledge = null;
+        lsRequest = null;
+        lsUpdate = null;
+        ospfMessageEncoder = null;
+        buf = null;
+    }
+
+    /**
+     * Tests encode() method.
+     */
+    @Test
+    public void testEncode() throws Exception {
+        socketAddress = InetSocketAddress.createUnresolved("127.0.0.1", 8600);
+        channel = EasyMock.createMock(Channel.class);
+        helloPacket = new HelloPacket();
+        helloPacket.setDestinationIp(Ip4Address.valueOf("15.15.15.15"));
+        buf = ChannelBuffers.buffer(hpacket.length);
+        buf.writeBytes(hpacket);
+        helloPacket.readFrom(buf);
+        ospfMessageEncoder.encode(ctx, channel, helloPacket);
+        ddPacket = new DdPacket();
+        ddPacket.setDestinationIp(Ip4Address.valueOf("15.15.15.15"));
+        buf = ChannelBuffers.buffer(dpacket.length);
+        buf.writeBytes(dpacket);
+        ddPacket.readFrom(buf);
+        ospfMessageEncoder.encode(ctx, channel, ddPacket);
+        lsRequest = new LsRequest();
+        lsRequest.setDestinationIp(Ip4Address.valueOf("15.15.15.15"));
+        buf = ChannelBuffers.buffer(lrpacket.length);
+        buf.writeBytes(lrpacket);
+        lsRequest.readFrom(buf);
+        ospfMessageEncoder.encode(ctx, channel, lsRequest);
+
+        lsAcknowledge = new LsAcknowledge();
+        lsAcknowledge.setDestinationIp(Ip4Address.valueOf("15.15.15.15"));
+        buf = ChannelBuffers.buffer(lAckpacket.length);
+        buf.writeBytes(lAckpacket);
+        lsAcknowledge.readFrom(buf);
+        ospfMessageEncoder.encode(ctx, channel, lsAcknowledge);
+        assertThat(ospfMessageEncoder, is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfPipelineFactoryTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfPipelineFactoryTest.java
new file mode 100755
index 0000000..939dd39
--- /dev/null
+++ b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfPipelineFactoryTest.java
@@ -0,0 +1,65 @@
+/*
+ * 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.channel.ChannelPipeline;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.ospf.controller.area.OspfAreaImpl;
+import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+/**
+ * Unit test class for OspfPipelineFactory.
+ */
+public class OspfPipelineFactoryTest {
+
+    private OspfPipelineFactory ospfPipelineFactory;
+    private ChannelPipeline channelPipeline;
+
+    @Before
+    public void setUp() throws Exception {
+        ospfPipelineFactory = new OspfPipelineFactory(new Controller(), new OspfAreaImpl(), new OspfInterfaceImpl());
+
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        ospfPipelineFactory = null;
+        channelPipeline = null;
+    }
+
+    /**
+     * Tests getPipeline() method.
+     */
+    @Test
+    public void testGetPipeline() throws Exception {
+        channelPipeline = ospfPipelineFactory.getPipeline();
+        assertThat(channelPipeline, is(notNullValue()));
+    }
+
+    /**
+     * Tests releaseExternalResources() method.
+     */
+    @Test
+    public void testReleaseExternalResources() throws Exception {
+        ospfPipelineFactory.releaseExternalResources();
+        assertThat(channelPipeline, is(nullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfRouterImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfRouterImplTest.java
new file mode 100755
index 0000000..7db6931
--- /dev/null
+++ b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfRouterImplTest.java
@@ -0,0 +1,174 @@
+/*
+ * 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.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+import org.onlab.packet.IpAddress;
+import org.onosproject.ospf.controller.OspfDeviceTed;
+
+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 OspfRouterImpl.
+ */
+public class OspfRouterImplTest {
+    private OspfRouterImpl ospfRouter;
+    private OspfDeviceTed ospfDeviceTed;
+    private List<OspfDeviceTed> list;
+
+    @Before
+    public void setUp() throws Exception {
+        ospfRouter = new OspfRouterImpl();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        ospfRouter = null;
+    }
+
+    /**
+     * Tests routerIp() getter method.
+     */
+    @Test
+    public void testRouterIp() throws Exception {
+        ospfRouter.setRouterIp(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfRouter.routerIp(), is(IpAddress.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests routerIp() setter method.
+     */
+    @Test
+    public void testSetRouterIp() throws Exception {
+        ospfRouter.setRouterIp(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfRouter.routerIp(), is(IpAddress.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests areaIdOfInterface() getter method.
+     */
+    @Test
+    public void testAreaIdOfInterface() throws Exception {
+        ospfRouter.setAreaIdOfInterface(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfRouter.areaIdOfInterface(), is(IpAddress.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests areaIdOfInterface() setter method.
+     */
+    @Test
+    public void testSetAreaIdOfInterface() throws Exception {
+        ospfRouter.setAreaIdOfInterface(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfRouter.areaIdOfInterface(), is(IpAddress.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests interfaceId() getter method.
+     */
+    @Test
+    public void testInterfaceId() throws Exception {
+        ospfRouter.setInterfaceId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfRouter.interfaceId(), is(IpAddress.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests interfaceId() setter method.
+     */
+    @Test
+    public void testSetInterfaceId() throws Exception {
+        ospfRouter.setInterfaceId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfRouter.interfaceId(), is(IpAddress.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests isDr() setter method.
+     */
+    @Test
+    public void testSetDr() throws Exception {
+        ospfRouter.setDr(true);
+        assertThat(ospfRouter.isDr(), is(true));
+    }
+
+    /**
+     * Tests isDr() getter method.
+     */
+    @Test
+    public void testIsDr() throws Exception {
+        ospfRouter.setDr(true);
+        assertThat(ospfRouter.isDr(), is(true));
+    }
+
+    /**
+     * Tests isOpaque() setter method.
+     */
+    @Test
+    public void testSetOpaque() throws Exception {
+        ospfRouter.setOpaque(true);
+        assertThat(ospfRouter.isOpaque(), is(true));
+    }
+
+    /**
+     * Tests isOpaque() getter method.
+     */
+    @Test
+    public void testisOpaque() throws Exception {
+        ospfRouter.setOpaque(true);
+        assertThat(ospfRouter.isOpaque(), is(true));
+    }
+
+    /**
+     * Tests deviceTed() getter method.
+     */
+    @Test
+    public void testDeviceTed() throws Exception {
+        ospfRouter.setDeviceTed(new OspfDeviceTedImpl());
+        assertThat(ospfRouter.deviceTed(), is(notNullValue()));
+    }
+
+    /**
+     * Tests deviceTed() Setter method.
+     */
+    @Test
+    public void testSetDeviceTed() throws Exception {
+        ospfRouter.setDeviceTed(new OspfDeviceTedImpl());
+        assertThat(ospfRouter.deviceTed(), is(notNullValue()));
+    }
+
+    /**
+     * Tests neighborRouterId() getter method.
+     */
+    @Test
+    public void testNeighborRouterId() throws Exception {
+        ospfRouter.setNeighborRouterId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfRouter.neighborRouterId(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+
+    /**
+     * Tests neighborRouterId() Setter method.
+     */
+    @Test
+    public void testSetNeighborRouterId() throws Exception {
+        ospfRouter.setNeighborRouterId(Ip4Address.valueOf("1.1.1.1"));
+        assertThat(ospfRouter.neighborRouterId(), is(Ip4Address.valueOf("1.1.1.1")));
+    }
+}
\ No newline at end of file