Added getDeviceCount and tests.
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceService.java b/net/api/src/main/java/org/onlab/onos/net/device/DeviceService.java
index 42b9a31..6c46627 100644
--- a/net/api/src/main/java/org/onlab/onos/net/device/DeviceService.java
+++ b/net/api/src/main/java/org/onlab/onos/net/device/DeviceService.java
@@ -14,12 +14,11 @@
 public interface DeviceService {
 
     /**
-     * Returns the current mastership role for the specified device.
+     * Returns the number of infrastructure devices known to the system.
      *
-     * @param deviceId device identifier
-     * @return designated mastership role
+     * @return number of infrastructure devices
      */
-    MastershipRole getRole(DeviceId deviceId);
+    int getDeviceCount();
 
     /**
      * Returns a collection of the currently known infrastructure
@@ -37,6 +36,14 @@
      */
     Device getDevice(DeviceId deviceId);
 
+    /**
+     * Returns the current mastership role for the specified device.
+     *
+     * @param deviceId device identifier
+     * @return designated mastership role
+     */
+    MastershipRole getRole(DeviceId deviceId);
+
 
     /**
      * Returns the list of ports associated with the device.
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java
index 9986b0d..b8f5788 100644
--- a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java
+++ b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java
@@ -69,9 +69,8 @@
     }
 
     @Override
-    public MastershipRole getRole(DeviceId deviceId) {
-        checkNotNull(deviceId, DEVICE_ID_NULL);
-        return store.getRole(deviceId);
+    public int getDeviceCount() {
+        return store.getDeviceCount();
     }
 
     @Override
@@ -86,6 +85,12 @@
     }
 
     @Override
+    public MastershipRole getRole(DeviceId deviceId) {
+        checkNotNull(deviceId, DEVICE_ID_NULL);
+        return store.getRole(deviceId);
+    }
+
+    @Override
     public List<Port> getPorts(DeviceId deviceId) {
         checkNotNull(deviceId, DEVICE_ID_NULL);
         return store.getPorts(deviceId);
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java
index a49384b..dd63469 100644
--- a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java
+++ b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java
@@ -28,7 +28,8 @@
 import static org.onlab.onos.net.device.DeviceEvent.Type.*;
 
 /**
- * Manages inventory of infrastructure devices.
+ * Manages inventory of infrastructure devices using trivial in-memory
+ * implementation.
  */
 class SimpleDeviceStore {
 
@@ -40,6 +41,15 @@
     private final Map<DeviceId, Map<PortNumber, Port>> devicePorts = new HashMap<>();
 
     /**
+     * Returns the number of devices known to the system.
+     *
+     * @return number of devices
+     */
+    public int getDeviceCount() {
+        return devices.size();
+    }
+
+    /**
      * Returns an iterable collection of all devices known to the system.
      *
      * @return device collection
@@ -301,5 +311,4 @@
                     new DeviceEvent(DEVICE_REMOVED, device, null);
         }
     }
-
 }
diff --git a/net/core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManagerTest.java b/net/core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManagerTest.java
index be08cea..a6c9414 100644
--- a/net/core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManagerTest.java
+++ b/net/core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManagerTest.java
@@ -103,6 +103,7 @@
         Iterator<Device> it = service.getDevices().iterator();
         assertNotNull("one device expected", it.next());
         assertFalse("only one device expected", it.hasNext());
+        assertEquals("incorrect device count", 1, service.getDeviceCount());
     }
 
     @Test
@@ -119,6 +120,8 @@
         // Reconnect
         connectDevice(DID1, SW1);
         validateEvents(DEVICE_AVAILABILITY_CHANGED);
+
+        assertEquals("incorrect device count", 2, service.getDeviceCount());
     }
 
     @Test
@@ -197,9 +200,12 @@
     public void removeDevice() {
         connectDevice(DID1, SW1);
         connectDevice(DID2, SW2);
+        assertEquals("incorrect device count", 2, service.getDeviceCount());
         admin.removeDevice(DID1);
         assertNull("device should not be found", service.getDevice(DID1));
         assertNotNull("device should be found", service.getDevice(DID2));
+        assertEquals("incorrect device count", 1, service.getDeviceCount());
+
     }
 
     protected void validateEvents(Enum... types) {