tom

Added getDeviceCount and tests.

......@@ -14,12 +14,11 @@ import java.util.List;
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 @@ public interface DeviceService {
*/
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.
......
......@@ -69,9 +69,8 @@ public class SimpleDeviceManager
}
@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 @@ public class SimpleDeviceManager
}
@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);
......
......@@ -28,7 +28,8 @@ import static com.google.common.base.Preconditions.checkArgument;
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 @@ class SimpleDeviceStore {
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 @@ class SimpleDeviceStore {
new DeviceEvent(DEVICE_REMOVED, device, null);
}
}
}
......
......@@ -103,6 +103,7 @@ public class SimpleDeviceManagerTest {
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 @@ public class SimpleDeviceManagerTest {
// Reconnect
connectDevice(DID1, SW1);
validateEvents(DEVICE_AVAILABILITY_CHANGED);
assertEquals("incorrect device count", 2, service.getDeviceCount());
}
@Test
......@@ -197,9 +200,12 @@ public class SimpleDeviceManagerTest {
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) {
......