[ONOS-6806] Add getAvailableDeviceCount method to DeviceStore

Change-Id: I3f9e0bbd502e2a592da98436685fa2a192436ef8
diff --git a/core/store/dist/src/main/java/org/onosproject/store/device/impl/ECDeviceStore.java b/core/store/dist/src/main/java/org/onosproject/store/device/impl/ECDeviceStore.java
index 062fd46..e73eaea 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/device/impl/ECDeviceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/device/impl/ECDeviceStore.java
@@ -247,6 +247,11 @@
     }
 
     @Override
+    public int getAvailableDeviceCount() {
+        return availableDevices.size();
+    }
+
+    @Override
     public Device getDevice(DeviceId deviceId) {
         return devices.get(deviceId);
     }
diff --git a/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java b/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
index 00dacc2..7f1539d 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
@@ -276,6 +276,11 @@
     }
 
     @Override
+    public int getAvailableDeviceCount() {
+        return availableDevices.size();
+    }
+
+    @Override
     public Iterable<Device> getDevices() {
         return Collections.unmodifiableCollection(devices.values());
     }
diff --git a/core/store/dist/src/test/java/org/onosproject/store/device/impl/GossipDeviceStoreTest.java b/core/store/dist/src/test/java/org/onosproject/store/device/impl/GossipDeviceStoreTest.java
index 4df97a1..4f9f20cd 100644
--- a/core/store/dist/src/test/java/org/onosproject/store/device/impl/GossipDeviceStoreTest.java
+++ b/core/store/dist/src/test/java/org/onosproject/store/device/impl/GossipDeviceStoreTest.java
@@ -299,6 +299,22 @@
     }
 
     @Test
+    public final void testGetAvailableDeviceCount() {
+        assertEquals("initialy empty", 0, deviceStore.getAvailableDeviceCount());
+
+        putDevice(DID1, SW1);
+        putDevice(DID2, SW2);
+
+        deviceStore.markOffline(DID1);
+
+        assertEquals("expect 1 available device", 1, deviceStore.getAvailableDeviceCount());
+
+        deviceStore.markOnline(DID1);
+
+        assertEquals("expect 2 available devices", 2, deviceStore.getAvailableDeviceCount());
+    }
+
+    @Test
     public final void testGetDevices() {
         assertEquals("initialy empty", 0, Iterables.size(deviceStore.getDevices()));