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) {