Unit tests for NetworkCongifLinksProvider
Also fixed a few bugs in the provider that were turned up by the new tests.
Change-Id: Icafc945251b4d35ac3f285302af150c0a4d646d6
diff --git a/providers/netcfglinks/src/main/java/org/onosproject/provider/netcfglinks/NetworkConfigLinksProvider.java b/providers/netcfglinks/src/main/java/org/onosproject/provider/netcfglinks/NetworkConfigLinksProvider.java
index edbc25c..2671d93 100644
--- a/providers/netcfglinks/src/main/java/org/onosproject/provider/netcfglinks/NetworkConfigLinksProvider.java
+++ b/providers/netcfglinks/src/main/java/org/onosproject/provider/netcfglinks/NetworkConfigLinksProvider.java
@@ -117,7 +117,7 @@
private final InternalDeviceListener deviceListener = new InternalDeviceListener();
private final InternalConfigListener cfgListener = new InternalConfigListener();
- private Set<LinkKey> configuredLinks = new HashSet<>();
+ protected Set<LinkKey> configuredLinks = new HashSet<>();
public NetworkConfigLinksProvider() {
super(new ProviderId("lldp", PROVIDER_NAME));
@@ -259,6 +259,35 @@
}
/**
+ * Removes after stopping discovery helper for specified device.
+ * @param deviceId device to remove
+ */
+ private void removeDevice(final DeviceId deviceId) {
+ discoverers.computeIfPresent(deviceId, (did, ld) -> {
+ ld.stop();
+ return null;
+ });
+
+ }
+
+ /**
+ * Removes a port from the specified discovery helper.
+ * @param port the port
+ */
+ private void removePort(Port port) {
+ if (port.element() instanceof Device) {
+ Device d = (Device) port.element();
+ LinkDiscovery ld = discoverers.get(d.id());
+ if (ld != null) {
+ ld.removePort(port.number());
+ }
+ } else {
+ log.warn("Attempted to remove non-Device port", port);
+ }
+ }
+
+
+ /**
* Processes incoming packets.
*/
private class InternalPacketProcessor implements PacketProcessor {
@@ -355,21 +384,21 @@
updateDevice(device).ifPresent(ld -> updatePort(ld, port));
} else {
log.debug("Port down {}", port);
- //removePort(port);
+ removePort(port);
providerService.linksVanished(new ConnectPoint(port.element().id(),
port.number()));
}
break;
case PORT_REMOVED:
log.debug("Port removed {}", port);
- //removePort(port);
+ removePort(port);
providerService.linksVanished(new ConnectPoint(port.element().id(),
port.number()));
break;
case DEVICE_REMOVED:
case DEVICE_SUSPENDED:
log.debug("Device removed {}", deviceId);
- //removeDevice(deviceId);
+ removeDevice(deviceId);
providerService.linksVanished(deviceId);
break;
case DEVICE_AVAILABILITY_CHANGED:
@@ -378,7 +407,7 @@
updateDevice(device).ifPresent(ld -> updatePorts(ld, deviceId));
} else {
log.debug("Device down {}", deviceId);
- //removeDevice(deviceId);
+ removeDevice(deviceId);
providerService.linksVanished(deviceId);
}
break;