diff --git a/src/main/java/net/floodlightcontroller/devicemanager/Device.java b/src/main/java/net/floodlightcontroller/devicemanager/Device.java
index d25d61963f67f17b0009f2d368f4584c10546b59..69bd9b6ff466e65b0d059f9c6ff27da83c05f754 100755
--- a/src/main/java/net/floodlightcontroller/devicemanager/Device.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/Device.java
@@ -366,7 +366,7 @@ public class Device {
         return "Device [dataLayerAddress=" + 
                 dlAddrString +
                 ", attachmentPoints=" + attachmentPoints + ", networkAddresses="
-                + IPv4.fromIPv4AddressCollection(networkAddresses.keySet()) + "]";
+                + "[" + IPv4.fromIPv4AddressCollection(networkAddresses.keySet()) + "]";
     }
 
     public Date getLastSeenInStorage() {
diff --git a/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java b/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java
index 6fbc303771ff6f983f92fcdee5646f064c0cdabf..fec599bf3db5932043238bd98362842883b82ab0 100644
--- a/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java
+++ b/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java
@@ -333,9 +333,13 @@ public class DeviceManagerImplTest extends FloodlightTestCase {
         assertEquals(2, rdevice.getAttachmentPoints().size());
         assertEquals(2, rdevice.getNetworkAddresses().size());
 
-        // Sleep to make sure the aging thread has run
-        Thread.sleep(Math.max(DeviceManagerImpl.DEVICE_NA_MAX_AGE, DeviceManagerImpl.DEVICE_AP_MAX_AGE)*1000);
-        deviceManager.removeAgedDevices(new Date());
+        // Wait until device's network address expired.
+        Date boundaryTime = new Date(new Date().getTime() + DeviceManagerImpl.DEVICE_MAX_AGE*1000);
+        while (deviceManager.getDeviceByDataLayerAddress(dataLayerSource).getNetworkAddresses().size() != 0) {
+        	Date curTime = new Date();
+        	assertFalse(curTime.after(boundaryTime));
+        	deviceManager.removeAgedDevices(curTime);
+        }
 
         rdevice = deviceManager.getDeviceByDataLayerAddress(dataLayerSource);
         assertEquals(0, rdevice.getNetworkAddresses().size());
@@ -346,13 +350,14 @@ public class DeviceManagerImplTest extends FloodlightTestCase {
         assertEquals(0, rdevice.getAttachmentPoints().size());
         assertEquals(0, rdevice.getNetworkAddresses().size());
 
-        // Sleep a bit longer seconds to allow device age
-        Thread.sleep((DeviceManagerImpl.DEVICE_MAX_AGE - 
-                      Math.max(DeviceManagerImpl.DEVICE_NA_MAX_AGE, DeviceManagerImpl.DEVICE_AP_MAX_AGE))*1000);
-        deviceManager.removeAgedDevices(new Date());
-
-        assertNull(deviceManager.getDeviceByDataLayerAddress(dataLayerSource));
-
+        // Wait until device expired.
+        boundaryTime = new Date(new Date().getTime() + DeviceManagerImpl.DEVICE_MAX_AGE*1000);
+        while (deviceManager.getDeviceByDataLayerAddress(dataLayerSource) != null) {
+        	Date curTime = new Date();
+        	assertFalse(curTime.after(boundaryTime));
+        	deviceManager.removeAgedDevices(curTime);
+        }
+ 
         // Make sure the device's AP and NA were removed from storage
         deviceManager.readAllDeviceStateFromStorage();
         assertNull(deviceManager.getDeviceByDataLayerAddress(dataLayerSource));