[ONOS-6806] Add getAvailableDeviceCount method to DeviceService
Change-Id: Ieda7e66c1a1d25aa92b55542ecfe59652dac3bc5
diff --git a/core/api/src/main/java/org/onosproject/net/device/DeviceService.java b/core/api/src/main/java/org/onosproject/net/device/DeviceService.java
index 1cb90e8..b1ab0e6 100644
--- a/core/api/src/main/java/org/onosproject/net/device/DeviceService.java
+++ b/core/api/src/main/java/org/onosproject/net/device/DeviceService.java
@@ -39,6 +39,15 @@
int getDeviceCount();
/**
+ * Returns the number of currently available devices known to the system.
+ *
+ * @return number of available devices
+ */
+ default int getAvailableDeviceCount() {
+ return getDeviceCount();
+ }
+
+ /**
* Returns a collection of the currently known infrastructure
* devices.
*
diff --git a/core/api/src/main/java/org/onosproject/net/device/DeviceServiceAdapter.java b/core/api/src/main/java/org/onosproject/net/device/DeviceServiceAdapter.java
index 9c6887c..146a93a 100644
--- a/core/api/src/main/java/org/onosproject/net/device/DeviceServiceAdapter.java
+++ b/core/api/src/main/java/org/onosproject/net/device/DeviceServiceAdapter.java
@@ -56,6 +56,11 @@
}
@Override
+ public int getAvailableDeviceCount() {
+ return 0;
+ }
+
+ @Override
public Iterable<Device> getDevices() {
return Collections.emptyList();
}
diff --git a/core/api/src/main/java/org/onosproject/net/utils/ForwardingDeviceService.java b/core/api/src/main/java/org/onosproject/net/utils/ForwardingDeviceService.java
index e1f8110..60ae84e 100644
--- a/core/api/src/main/java/org/onosproject/net/utils/ForwardingDeviceService.java
+++ b/core/api/src/main/java/org/onosproject/net/utils/ForwardingDeviceService.java
@@ -63,6 +63,11 @@
}
@Override
+ public int getAvailableDeviceCount() {
+ return delegate.getAvailableDeviceCount();
+ }
+
+ @Override
public Iterable<Device> getDevices() {
return delegate.getDevices();
}
diff --git a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
index cc80502..c0bf128 100644
--- a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
+++ b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
@@ -209,6 +209,12 @@
}
@Override
+ public int getAvailableDeviceCount() {
+ checkPermission(DEVICE_READ);
+ return store.getAvailableDeviceCount();
+ }
+
+ @Override
public Iterable<Device> getDevices() {
checkPermission(DEVICE_READ);
return store.getDevices();
diff --git a/core/net/src/test/java/org/onosproject/net/device/impl/DeviceManagerTest.java b/core/net/src/test/java/org/onosproject/net/device/impl/DeviceManagerTest.java
index 941944f..84028c4 100644
--- a/core/net/src/test/java/org/onosproject/net/device/impl/DeviceManagerTest.java
+++ b/core/net/src/test/java/org/onosproject/net/device/impl/DeviceManagerTest.java
@@ -144,6 +144,7 @@
assertNotNull("one device expected", it.next());
assertFalse("only one device expected", it.hasNext());
assertEquals("incorrect device count", 1, service.getDeviceCount());
+ assertEquals("incorrect available device count", 1, service.getAvailableDeviceCount());
assertTrue("device should be available", service.isAvailable(DID1));
}
@@ -165,6 +166,7 @@
validateEvents(DEVICE_AVAILABILITY_CHANGED);
assertEquals("incorrect device count", 2, service.getDeviceCount());
+ assertEquals("incorrect available device count", 2, service.getAvailableDeviceCount());
}
@Test
@@ -225,8 +227,8 @@
assertEquals("wrong port count", 2, service.getPorts(DID1).size());
Port port = service.getPort(DID1, P1);
- assertEquals("incorrect port", P1, service.getPort(DID1, P1).number());
- assertEquals("incorrect state", true, service.getPort(DID1, P1).isEnabled());
+ assertEquals("incorrect port", P1, port.number());
+ assertEquals("incorrect state", true, port.isEnabled());
}
@Test
@@ -234,10 +236,12 @@
connectDevice(DID1, SW1);
connectDevice(DID2, SW2);
assertEquals("incorrect device count", 2, service.getDeviceCount());
+ assertEquals("incorrect available device count", 2, service.getAvailableDeviceCount());
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());
+ assertEquals("incorrect available device count", 1, service.getAvailableDeviceCount());
}