From 0d0c6831cc3b08116cef60f02b62a00d8ffdf56d Mon Sep 17 00:00:00 2001 From: mskala Date: Wed, 12 Jul 2017 11:21:23 +0200 Subject: [PATCH] [ONOS-6806] Add getAvailableDeviceCount method to DeviceStore Change-Id: I3f9e0bbd502e2a592da98436685fa2a192436ef8 --- .../org/onosproject/net/device/DeviceStore.java | 7 +++++++ .../net/device/DeviceStoreAdapter.java | 5 +++++ .../store/trivial/SimpleDeviceStore.java | 5 +++++ .../store/trivial/SimpleDeviceStoreTest.java | 16 ++++++++++++++++ .../store/device/impl/ECDeviceStore.java | 5 +++++ .../store/device/impl/GossipDeviceStore.java | 5 +++++ .../store/device/impl/GossipDeviceStoreTest.java | 16 ++++++++++++++++ 7 files changed, 59 insertions(+) diff --git a/core/api/src/main/java/org/onosproject/net/device/DeviceStore.java b/core/api/src/main/java/org/onosproject/net/device/DeviceStore.java index 626097dd6b..cadfa25ac5 100644 --- a/core/api/src/main/java/org/onosproject/net/device/DeviceStore.java +++ b/core/api/src/main/java/org/onosproject/net/device/DeviceStore.java @@ -38,6 +38,13 @@ public interface DeviceStore extends Store { */ int getDeviceCount(); + /** + * Returns the number of currently available devices known to the system. + * + * @return number of devices + */ + int getAvailableDeviceCount(); + /** * Returns an iterable collection of all devices known to the system. * diff --git a/core/api/src/test/java/org/onosproject/net/device/DeviceStoreAdapter.java b/core/api/src/test/java/org/onosproject/net/device/DeviceStoreAdapter.java index b09b35f64e..b4861eaba3 100644 --- a/core/api/src/test/java/org/onosproject/net/device/DeviceStoreAdapter.java +++ b/core/api/src/test/java/org/onosproject/net/device/DeviceStoreAdapter.java @@ -35,6 +35,11 @@ public class DeviceStoreAdapter implements DeviceStore { return 0; } + @Override + public int getAvailableDeviceCount() { + return 0; + } + @Override public Iterable getDevices() { return null; diff --git a/core/common/src/test/java/org/onosproject/store/trivial/SimpleDeviceStore.java b/core/common/src/test/java/org/onosproject/store/trivial/SimpleDeviceStore.java index 04d376c40d..a3761b07ac 100644 --- a/core/common/src/test/java/org/onosproject/store/trivial/SimpleDeviceStore.java +++ b/core/common/src/test/java/org/onosproject/store/trivial/SimpleDeviceStore.java @@ -125,6 +125,11 @@ public class SimpleDeviceStore return devices.size(); } + @Override + public int getAvailableDeviceCount() { + return availableDevices.size(); + } + @Override public Iterable getDevices() { return Collections.unmodifiableCollection(devices.values()); diff --git a/core/common/src/test/java/org/onosproject/store/trivial/SimpleDeviceStoreTest.java b/core/common/src/test/java/org/onosproject/store/trivial/SimpleDeviceStoreTest.java index f8eb1bad6a..c4ceb1828e 100644 --- a/core/common/src/test/java/org/onosproject/store/trivial/SimpleDeviceStoreTest.java +++ b/core/common/src/test/java/org/onosproject/store/trivial/SimpleDeviceStoreTest.java @@ -155,6 +155,22 @@ public class SimpleDeviceStoreTest { assertEquals("expect 2 uniq devices", 2, deviceStore.getDeviceCount()); } + @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()); + + putDevice(DID1, SW1); + + assertEquals("expect 2 available devices", 2, deviceStore.getAvailableDeviceCount()); + } + @Test public final void testGetDevices() { assertEquals("initialy empty", 0, Iterables.size(deviceStore.getDevices())); 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 062fd464c6..e73eaea4b7 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 @@ -246,6 +246,11 @@ public class ECDeviceStore return devices.size(); } + @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 00dacc23bf..7f1539d133 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 @@ -275,6 +275,11 @@ public class GossipDeviceStore return devices.size(); } + @Override + public int getAvailableDeviceCount() { + return availableDevices.size(); + } + @Override public Iterable 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 4df97a10f8..4f9f20cd49 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 @@ -298,6 +298,22 @@ public class GossipDeviceStoreTest { assertEquals("expect 2 uniq devices", 2, deviceStore.getDeviceCount()); } + @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()));