Fix: allow to obtains the added or removed internal on router event
Change-Id: I18bb5b361bf3c16d14cddec24ec9101812f3d4b9
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/impl/KubevirtRouterManagerTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/impl/KubevirtRouterManagerTest.java
index 2b90712..94b3161 100644
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/impl/KubevirtRouterManagerTest.java
+++ b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/impl/KubevirtRouterManagerTest.java
@@ -38,7 +38,9 @@
import org.onosproject.kubevirtnetworking.api.KubevirtRouterListener;
import org.onosproject.store.service.TestStorageService;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -96,6 +98,14 @@
.enableSnat(true)
.build();
+ private static final KubevirtRouter ROUTER_WITH_SINGLE_INTERNAL = DefaultKubevirtRouter.builder()
+ .name(ROUTER_NAME)
+ .description(ROUTER_NAME)
+ .internal(ImmutableSet.of("vxlan-1"))
+ .external(ImmutableMap.of())
+ .enableSnat(true)
+ .build();
+
private static final KubevirtRouter ROUTER_WITH_EXTERNAL = DefaultKubevirtRouter.builder()
.name(ROUTER_NAME)
.description(ROUTER_NAME)
@@ -236,6 +246,22 @@
KUBEVIRT_ROUTER_INTERNAL_NETWORKS_DETACHED);
}
+ @Test
+ public void testRouterInternalShrink() {
+ target.createRouter(ROUTER_WITH_INTERNAL);
+ assertEquals("Number of router did not match", 1, target.routers().size());
+ assertEquals("Router internal did not match", 2, target.router(ROUTER_NAME).internal().size());
+
+ target.updateRouter(ROUTER_WITH_SINGLE_INTERNAL);
+ assertEquals("Number of router did not match", 1, target.routers().size());
+ assertEquals("Router internal did not match", 1, target.router(ROUTER_NAME).internal().size());
+
+ validateEvents(KUBEVIRT_ROUTER_CREATED, KUBEVIRT_ROUTER_UPDATED,
+ KUBEVIRT_ROUTER_INTERNAL_NETWORKS_DETACHED);
+
+ validateInternalRemoval(ImmutableSet.of("vxlan-2"));
+ }
+
/**
* Tests router's external networks attached and detached.
*/
@@ -439,10 +465,18 @@
private static class TestKubevirtRouterListener implements KubevirtRouterListener {
private List<KubevirtRouterEvent> events = Lists.newArrayList();
+ private Set<String> internalAdded = new HashSet<>();
+ private Set<String> internalRemoved = new HashSet<>();
@Override
public void event(KubevirtRouterEvent event) {
events.add(event);
+ if (event.type() == KUBEVIRT_ROUTER_INTERNAL_NETWORKS_ATTACHED) {
+ internalAdded = event.internal();
+ }
+ if (event.type() == KUBEVIRT_ROUTER_INTERNAL_NETWORKS_DETACHED) {
+ internalRemoved = event.internal();
+ }
}
}
@@ -455,4 +489,14 @@
}
testListener.events.clear();
}
+
+ private void validateInternalAddition(Set<String> internal) {
+ assertEquals("internal addition entries", internal, testListener.internalAdded);
+ testListener.internalAdded.clear();
+ }
+
+ private void validateInternalRemoval(Set<String> internal) {
+ assertEquals("internal addition entries", internal, testListener.internalRemoved);
+ testListener.internalRemoved.clear();
+ }
}