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
index b11f537..db3cdaf 100644
--- 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
@@ -21,7 +21,6 @@
 import org.onlab.packet.Ip4Address;
 import org.onlab.packet.Ip6Address;
 
-import java.net.InetAddress;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -127,10 +126,10 @@
     /**
      * Tests ipv6RouterIds() getter method.
      */
-    @Test(expected = Exception.class)
+    @Test
     public void testIpv6RouterIds() throws Exception {
         List list = new ArrayList();
-        list.add(Ip6Address.valueOf(InetAddress.getLocalHost()));
+        list.add(Ip6Address.valueOf(1));
         ospfDeviceTed.setIpv6RouterIds(list);
         assertThat(ospfDeviceTed.ipv6RouterIds().size(), is(1));
     }
@@ -138,11 +137,11 @@
     /**
      * Tests ipv6RouterIds() setter method.
      */
-    @Test(expected = Exception.class)
+    @Test
     public void testSetIpv6RouterIds() throws Exception {
         List list = new ArrayList();
-        list.add(Ip6Address.valueOf(InetAddress.getLocalHost()));
+        list.add(Ip6Address.valueOf(1));
         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
index d4f0e2e..778e285 100644
--- 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
@@ -21,7 +21,6 @@
 import org.onlab.packet.Ip4Address;
 import org.onlab.util.Bandwidth;
 
-import java.net.InetAddress;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -90,7 +89,7 @@
     @Test
     public void testIpv4RemRouterId() throws Exception {
         List list = new ArrayList();
-        list.add(Ip4Address.valueOf(InetAddress.getLocalHost()));
+        list.add(Ip4Address.valueOf(1));
         ospfLinkTed.setIpv4RemRouterId(list);
         assertThat(ospfLinkTed.ipv4RemRouterId().size(), is(1));
     }
@@ -101,7 +100,7 @@
     @Test
     public void testSetIpv4RemRouterId() throws Exception {
         List list = new ArrayList();
-        list.add(Ip4Address.valueOf(InetAddress.getLocalHost()));
+        list.add(Ip4Address.valueOf(1));
         ospfLinkTed.setIpv4RemRouterId(list);
         assertThat(ospfLinkTed.ipv4RemRouterId().size(), is(1));
     }
@@ -132,7 +131,7 @@
     @Test
     public void testIpv4LocRouterId() throws Exception {
         List list = new ArrayList();
-        list.add(Ip4Address.valueOf(InetAddress.getLocalHost()));
+        list.add(Ip4Address.valueOf(1));
         ospfLinkTed.setIpv4LocRouterId(list);
         assertThat(ospfLinkTed.ipv4LocRouterId().size(), is(1));
     }
@@ -143,7 +142,7 @@
     @Test
     public void testSetIpv4LocRouterId() throws Exception {
         List list = new ArrayList();
-        list.add(Ip4Address.valueOf(InetAddress.getLocalHost()));
+        list.add(Ip4Address.valueOf(1));
         ospfLinkTed.setIpv4LocRouterId(list);
         assertThat(ospfLinkTed.ipv4LocRouterId().size(), is(1));
     }
@@ -201,4 +200,4 @@
         ospfLinkTed.setMaxUnResBandwidth(Bandwidth.bps(1234.0));
         assertThat(ospfLinkTed.maxUnResBandwidth(), is(notNullValue()));
     }
-}
\ No newline at end of file
+}
