diff --git a/src/main/java/net/onrc/onos/core/hostmanager/Host.java b/src/main/java/net/onrc/onos/core/hostmanager/Host.java
index 0f20fac..6ba3501 100644
--- a/src/main/java/net/onrc/onos/core/hostmanager/Host.java
+++ b/src/main/java/net/onrc/onos/core/hostmanager/Host.java
@@ -192,7 +192,7 @@
         StringBuilder builder = new StringBuilder();
         builder.append("Host [macAddress=");
         builder.append(macAddress.toString());
-        builder.append(", ipAddressn=");
+        builder.append(", ipAddress=");
         builder.append(ipAddress);
         builder.append(", vlan=");
         builder.append(vlan);
diff --git a/src/test/java/net/floodlightcontroller/core/internal/OFChannelHandlerTest.java b/src/test/java/net/floodlightcontroller/core/internal/OFChannelHandlerTest.java
index 1dc2706..4d6639b 100644
--- a/src/test/java/net/floodlightcontroller/core/internal/OFChannelHandlerTest.java
+++ b/src/test/java/net/floodlightcontroller/core/internal/OFChannelHandlerTest.java
@@ -1390,7 +1390,7 @@
         .andReturn(xid).anyTimes();
 
         // prepare mocks and inject the role reply message
-        swImplBase.setRole(Role.SLAVE);
+        swImplBase.setRole(Role.EQUAL);
         expectLastCall().once();
         expect(swImplBase.getId())
         .andReturn(1000L).once();
diff --git a/src/test/java/net/onrc/onos/core/hostmanager/HostManagerTest.java b/src/test/java/net/onrc/onos/core/hostmanager/HostManagerTest.java
index 8461334..ae2bd41 100644
--- a/src/test/java/net/onrc/onos/core/hostmanager/HostManagerTest.java
+++ b/src/test/java/net/onrc/onos/core/hostmanager/HostManagerTest.java
@@ -241,8 +241,9 @@
     public void testGetSourceHostFromPacket() {
         byte[] address = new byte[] {0x00, 0x44, 0x33, 0x22, 0x11, 0x01};
         MACAddress srcMac = new MACAddress(address);
+        int ipAddr = IPv4.toIPv4Address("192.168.1.1");
         Host host1 = new Host(srcMac,
-                0,
+                ipAddr,
                 null,
                 sw1Dpid,
                 sw1DevPort,
diff --git a/src/test/java/net/onrc/onos/core/util/serializers/KryoFactoryTest.java b/src/test/java/net/onrc/onos/core/util/serializers/KryoFactoryTest.java
index 75e3bc8..eb6bcba 100644
--- a/src/test/java/net/onrc/onos/core/util/serializers/KryoFactoryTest.java
+++ b/src/test/java/net/onrc/onos/core/util/serializers/KryoFactoryTest.java
@@ -1,6 +1,9 @@
 package net.onrc.onos.core.util.serializers;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import java.io.PrintStream;
 import java.lang.reflect.Constructor;
@@ -14,10 +17,10 @@
 import net.onrc.onos.core.topology.HostData;
 import net.onrc.onos.core.topology.LinkData;
 import net.onrc.onos.core.topology.PortData;
+import net.onrc.onos.core.topology.SwitchData;
 import net.onrc.onos.core.topology.TopologyBatchOperation;
 import net.onrc.onos.core.topology.TopologyElement;
 import net.onrc.onos.core.topology.TopologyEvent;
-import net.onrc.onos.core.topology.SwitchData;
 import net.onrc.onos.core.util.Dpid;
 import net.onrc.onos.core.util.OnosInstanceId;
 import net.onrc.onos.core.util.PortNumber;
@@ -285,7 +288,7 @@
             Result result = benchType(obj, EqualityCheck.EQUALS);
             results.add(result);
             // update me if serialized form is expected to change
-            assertEquals(43, result.size);
+            assertEquals(44, result.size);
         }
 
         { // CHECKSTYLE IGNORE THIS LINE
