GUI2 Fixed bug of edge link not being added dynamically
Change-Id: If5a2b546f23274bbdac09a55bdd18357c72414fe
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/model/ModelCache.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/model/ModelCache.java
index 41e6090..1399847 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/model/ModelCache.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/model/ModelCache.java
@@ -511,6 +511,9 @@
updateHost(uiHost, host);
postEvent(HOST_ADDED_OR_UPDATED, uiHost, memo);
+ // Link event must be sent after the host event
+ UiEdgeLink uiEdgeLink = uiTopology.findEdgeLink(uiHost.edgeLinkId());
+ postEvent(LINK_ADDED_OR_UPDATED, uiEdgeLink, memo);
}
// invoked from UiSharedTopologyModel host listener
@@ -536,6 +539,7 @@
if (uiHost != null) {
UiEdgeLink edgeLink = uiTopology.findEdgeLink(uiHost.edgeLinkId());
uiTopology.remove(edgeLink);
+ postEvent(LINK_REMOVED, edgeLink, MEMO_REMOVED);
uiTopology.remove(uiHost);
postEvent(HOST_REMOVED, uiHost, MEMO_REMOVED);
} else {
diff --git a/web/gui/src/test/java/org/onosproject/ui/impl/topo/model/ModelCacheTest.java b/web/gui/src/test/java/org/onosproject/ui/impl/topo/model/ModelCacheTest.java
index 84068ba..ea82b9a 100644
--- a/web/gui/src/test/java/org/onosproject/ui/impl/topo/model/ModelCacheTest.java
+++ b/web/gui/src/test/java/org/onosproject/ui/impl/topo/model/ModelCacheTest.java
@@ -310,22 +310,24 @@
// add a host
cache.addOrUpdateHost(hostA);
- dispatcher.assertLast(Type.HOST_ADDED_OR_UPDATED, hostA.id().toString());
- dispatcher.assertEventCount(1);
+ UiLinkId hostALinkId = cache.accessHost(hostA.id()).edgeLinkId();
+ dispatcher.assertLast(Type.LINK_ADDED_OR_UPDATED, hostALinkId.toString());
+ dispatcher.assertEventCount(2);
assertHostLinkCounts(1, 1);
assertLocation(hostA.id(), DEVID_1, 101);
// add a second host
cache.addOrUpdateHost(hostB);
- dispatcher.assertLast(Type.HOST_ADDED_OR_UPDATED, hostB.id().toString());
- dispatcher.assertEventCount(2);
+ UiLinkId hostBLinkId = cache.accessHost(hostB.id()).edgeLinkId();
+ dispatcher.assertLast(Type.LINK_ADDED_OR_UPDATED, hostBLinkId.toString());
+ dispatcher.assertEventCount(4);
assertHostLinkCounts(2, 2);
assertLocation(hostB.id(), DEVID_1, 102);
// update the first host
cache.addOrUpdateHost(hostA);
- dispatcher.assertLast(Type.HOST_ADDED_OR_UPDATED, hostA.id().toString());
- dispatcher.assertEventCount(3);
+ dispatcher.assertLast(Type.LINK_ADDED_OR_UPDATED, hostALinkId.toString());
+ dispatcher.assertEventCount(6);
assertHostLinkCounts(2, 2);
assertLocation(hostA.id(), DEVID_1, 101);
@@ -334,7 +336,7 @@
// remove the second host
cache.removeHost(hostB);
dispatcher.assertLast(Type.HOST_REMOVED, hostB.id().toString());
- dispatcher.assertEventCount(4);
+ dispatcher.assertEventCount(8);
assertHostLinkCounts(1, 1);
assertNull("still host B?", cache.accessHost(hostB.id()));
@@ -350,7 +352,7 @@
cache.moveHost(movedHost, hostA);
dispatcher.assertLast(Type.HOST_MOVED, hostA.id().toString());
- dispatcher.assertEventCount(5);
+ dispatcher.assertEventCount(9);
assertHostLinkCounts(1, 1);
assertLocation(hostA.id(), DEVID_1, 200);
@@ -362,7 +364,7 @@
cache.moveHost(movedAgain, movedHost);
dispatcher.assertLast(Type.HOST_MOVED, hostA.id().toString());
- dispatcher.assertEventCount(6);
+ dispatcher.assertEventCount(10);
assertHostLinkCounts(1, 1);
assertLocation(hostA.id(), DEVID_8, 800);