diff --git a/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java b/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java
index 91ce5af..0a4c705 100644
--- a/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java
+++ b/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java
@@ -206,7 +206,7 @@
     }
 
     // default constructor for serialization
-    private DefaultDeviceDescription() {
+    DefaultDeviceDescription() {
         this.uri = null;
         this.type = null;
         this.manufacturer = null;
diff --git a/core/api/src/test/java/org/onosproject/net/device/DefaultDeviceDescriptionTest.java b/core/api/src/test/java/org/onosproject/net/device/DefaultDeviceDescriptionTest.java
index 7f06e9c..97e4a59 100644
--- a/core/api/src/test/java/org/onosproject/net/device/DefaultDeviceDescriptionTest.java
+++ b/core/api/src/test/java/org/onosproject/net/device/DefaultDeviceDescriptionTest.java
@@ -18,11 +18,17 @@
 import org.junit.Test;
 import org.onlab.packet.ChassisId;
 import org.onosproject.net.DefaultAnnotations;
+import org.onosproject.net.Device;
 
 import java.net.URI;
 
+import com.google.common.testing.EqualsTester;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutableBaseClass;
+import static org.onosproject.net.Device.Type.ROADM;
+import static org.onosproject.net.Device.Type.ROUTER;
 import static org.onosproject.net.Device.Type.SWITCH;
 
 /**
@@ -30,6 +36,7 @@
  */
 public class DefaultDeviceDescriptionTest {
 
+
     private static final URI DURI = URI.create("of:foo");
     private static final String MFR = "whitebox";
     private static final String HW = "1.1.x";
@@ -39,19 +46,150 @@
     private static final DefaultAnnotations DA =
             DefaultAnnotations.builder().set("Key", "Value").build();
 
+    private static final URI DURI2 = URI.create("of:foo2");
+    private static final String MFR2 = "whitebox2";
+    private static final String HW2 = "1.1.x2";
+    private static final String SW2 = "3.9.12";
+    private static final String SN2 = "43311-123452";
+    private static final ChassisId CID2 = new ChassisId(2);
+    private static final DefaultAnnotations DA2 =
+            DefaultAnnotations.builder().set("2ndKey", "2ndValue").build();
+
+    private void checkValues(DeviceDescription device,
+                             URI uri,
+                             Device.Type type,
+                             String manufacturer,
+                             String hw,
+                             String sw,
+                             String serial,
+                             String containsUri,
+                             long chassisId,
+                             String annotationsString,
+                             boolean defaultAvailable) {
+        assertEquals("incorrect uri", uri, device.deviceUri());
+        assertEquals("incorrect type", type, device.type());
+        assertEquals("incorrect manufacturer", device.manufacturer(), manufacturer);
+        assertEquals("incorrect hw", device.hwVersion(), hw);
+        assertEquals("incorrect sw", device.swVersion(), sw);
+        assertEquals("incorrect serial", device.serialNumber(), serial);
+        assertTrue("incorrect toString", device.toString().contains(containsUri));
+        assertTrue("Incorrect chassis",
+                   device.chassisId() == null ? chassisId == 0 :
+                                                chassisId == device.chassisId().value());
+        assertTrue("incorrect annotations", device.toString().contains(annotationsString));
+        assertEquals("incorrect default available", defaultAvailable, device.isDefaultAvailable());
+    }
+
     @Test
     public void basics() {
         DeviceDescription device =
                 new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID, DA);
-        assertEquals("incorrect uri", DURI, device.deviceUri());
-        assertEquals("incorrect type", SWITCH, device.type());
-        assertEquals("incorrect manufacturer", MFR, device.manufacturer());
-        assertEquals("incorrect hw", HW, device.hwVersion());
-        assertEquals("incorrect sw", SW, device.swVersion());
-        assertEquals("incorrect serial", SN, device.serialNumber());
-        assertTrue("incorrect toString", device.toString().contains("uri=of:foo"));
-        assertTrue("Incorrect chassis", device.chassisId().value() == 0);
-        assertTrue("incorrect annotatios", device.toString().contains("Key=Value"));
+        checkValues(device, DURI, SWITCH, MFR, HW, SW, SN, "uri=of:foo",
+                    CID.value(), "Key=Value", true);
+    }
+
+    /**
+     * Tests equals, hashCode, and toString.
+     */
+    @Test
+    public void testEquals() {
+        DeviceDescription device1 =
+                new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID, DA);
+        DeviceDescription sameAsDevice1 =
+                new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID, DA);
+        DeviceDescription device2 =
+                new DefaultDeviceDescription(DURI2, SWITCH, MFR, HW, SW, SN, CID, DA);
+        DeviceDescription device3 =
+                new DefaultDeviceDescription(DURI, ROUTER, MFR2, HW, SW, SN, CID, DA);
+        DeviceDescription device4 =
+                new DefaultDeviceDescription(DURI, SWITCH, MFR, HW2, SW, SN, CID, DA);
+        DeviceDescription device5 =
+                new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW2, SN, CID, DA);
+        DeviceDescription device6 =
+                new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN2, CID, DA);
+        DeviceDescription device7 =
+                new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID2, DA);
+        DeviceDescription device8 =
+                new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID, DA2);
+
+        new EqualsTester()
+                .addEqualityGroup(device1, sameAsDevice1)
+                .addEqualityGroup(device2)
+                .addEqualityGroup(device3)
+                .addEqualityGroup(device4)
+                .addEqualityGroup(device5)
+                .addEqualityGroup(device6)
+                .addEqualityGroup(device7)
+                .addEqualityGroup(device8)
+                .testEquals();
+    }
+
+    /**
+     * Tests base + annotations constructor.
+     */
+    @Test
+    public void testConstructorWithBaseAndAnnotations() {
+        DeviceDescription base =
+                new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID, DA);
+        DeviceDescription device = new DefaultDeviceDescription(base, DA2);
+
+        checkValues(device, DURI, SWITCH, MFR, HW, SW, SN, "uri=of:foo",
+                    CID.value(), "2ndKey=2ndValue", true);
+    }
+
+    /**
+     * Tests base + type + annotations constructor.
+     */
+    @Test
+    public void testConstructorWithBaseAndType() {
+        DeviceDescription base =
+                new DefaultDeviceDescription(DURI, ROADM, MFR, HW, SW, SN, CID, DA);
+        DeviceDescription device = new DefaultDeviceDescription(base, ROADM, DA);
+
+        checkValues(device, DURI, ROADM, MFR, HW, SW, SN, "uri=of:foo",
+                    CID.value(), "Key=Value", true);
+    }
+
+    /**
+     * Tests base + annotations + isDefaultAvailable constructor.
+     */
+    @Test
+    public void testConstructorWithBaseAndIsDefault() {
+        DeviceDescription base =
+                new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID, DA);
+        DeviceDescription device = new DefaultDeviceDescription(base, false, DA2);
+
+        checkValues(device, DURI, SWITCH, MFR, HW, SW, SN, "uri=of:foo",
+                    CID.value(), "2ndKey=2ndValue", false);
+    }
+
+    /**
+     * Tests empty constructor.
+     */
+    @Test
+    public void testBareConstructor() {
+        DeviceDescription device = new DefaultDeviceDescription();
+
+        checkValues(device, null, null, null, null, null, null, "uri=null",
+                    CID.value(), "", true);
+
+        assertEquals("incorrect uri", null, device.deviceUri());
+        assertEquals("incorrect type", null, device.type());
+        assertEquals("incorrect manufacturer", null, device.manufacturer());
+        assertEquals("incorrect hw", null, device.hwVersion());
+        assertEquals("incorrect sw", null, device.swVersion());
+        assertEquals("incorrect serial", null, device.serialNumber());
+        assertEquals("Incorrect chassis", null, device.chassisId());
+        assertEquals("incorrect annotations", null, device.annotations());
+        assertTrue("incorrect default available", device.isDefaultAvailable());
+    }
+
+    /**
+     * Tests immutability.
+     */
+    @Test
+    public void testImmutable() {
+        assertThatClassIsImmutableBaseClass(DefaultDeviceDescription.class);
     }
 
 }
