Carry previous next hop information in RouteEvent

Change-Id: Ib66a9191892c0e62b54fddcbfdc5645f305e9fcf
diff --git a/incubator/net/src/test/java/org/onosproject/incubator/net/routing/impl/RouteManagerTest.java b/incubator/net/src/test/java/org/onosproject/incubator/net/routing/impl/RouteManagerTest.java
index 86ba6f6..ba73cde 100644
--- a/incubator/net/src/test/java/org/onosproject/incubator/net/routing/impl/RouteManagerTest.java
+++ b/incubator/net/src/test/java/org/onosproject/incubator/net/routing/impl/RouteManagerTest.java
@@ -215,23 +215,26 @@
     public void testRouteUpdate() {
         Route route = new Route(Route.Source.STATIC, V4_PREFIX1, V4_NEXT_HOP1);
         Route updatedRoute = new Route(Route.Source.STATIC, V4_PREFIX1, V4_NEXT_HOP2);
+        ResolvedRoute resolvedRoute = new ResolvedRoute(updatedRoute, MAC1, CP1);
         ResolvedRoute updatedResolvedRoute = new ResolvedRoute(updatedRoute, MAC2, CP1);
 
-        verifyRouteRemoveThenAdd(route, updatedRoute, updatedResolvedRoute);
+        verifyRouteRemoveThenAdd(route, updatedRoute, resolvedRoute, updatedResolvedRoute);
 
         // Different prefix pointing to the same next hop.
         // In this case we expect to receive a ROUTE_UPDATED event.
         route = new Route(Route.Source.STATIC, V4_PREFIX2, V4_NEXT_HOP1);
         updatedRoute = new Route(Route.Source.STATIC, V4_PREFIX2, V4_NEXT_HOP2);
+        resolvedRoute = new ResolvedRoute(route, MAC1, CP1);
         updatedResolvedRoute = new ResolvedRoute(updatedRoute, MAC2, CP1);
 
-        verifyRouteUpdated(route, updatedRoute, updatedResolvedRoute);
+        verifyRouteUpdated(route, updatedRoute, resolvedRoute, updatedResolvedRoute);
 
         route = new Route(Route.Source.STATIC, V6_PREFIX1, V6_NEXT_HOP1);
         updatedRoute = new Route(Route.Source.STATIC, V6_PREFIX1, V6_NEXT_HOP2);
+        resolvedRoute = new ResolvedRoute(route, MAC3, CP1);
         updatedResolvedRoute = new ResolvedRoute(updatedRoute, MAC4, CP1);
 
-        verifyRouteRemoveThenAdd(route, updatedRoute, updatedResolvedRoute);
+        verifyRouteRemoveThenAdd(route, updatedRoute, resolvedRoute, updatedResolvedRoute);
     }
 
     /**
@@ -240,16 +243,18 @@
      *
      * @param original original route
      * @param updated updated route
+     * @param resolvedRoute resolved route before update
      * @param updatedResolvedRoute resolved route that is expected to be sent to
      *                             the route listener
      */
     private void verifyRouteRemoveThenAdd(Route original, Route updated,
+                                          ResolvedRoute resolvedRoute,
                                           ResolvedRoute updatedResolvedRoute) {
         // First add the original route
         addRoute(original);
 
         routeListener.event(new RouteEvent(RouteEvent.Type.ROUTE_REMOVED,
-                new ResolvedRoute(original, null, null)));
+                new ResolvedRoute(original, resolvedRoute.nextHopMac(), resolvedRoute.location())));
         expectLastCall().once();
         routeListener.event(new RouteEvent(RouteEvent.Type.ROUTE_ADDED, updatedResolvedRoute));
         expectLastCall().once();
@@ -267,15 +272,18 @@
      *
      * @param original original route
      * @param updated updated route
+     * @param resolvedRoute resolved route before update
      * @param updatedResolvedRoute resolved route that is expected to be sent to
      *                             the route listener
      */
     private void verifyRouteUpdated(Route original, Route updated,
+                                    ResolvedRoute resolvedRoute,
                                     ResolvedRoute updatedResolvedRoute) {
         // First add the original route
         addRoute(original);
 
-        routeListener.event(new RouteEvent(RouteEvent.Type.ROUTE_UPDATED, updatedResolvedRoute));
+        routeListener.event(new RouteEvent(RouteEvent.Type.ROUTE_UPDATED,
+                updatedResolvedRoute, resolvedRoute));
         expectLastCall().once();
 
         replay(routeListener);
@@ -291,12 +299,14 @@
     @Test
     public void testRouteDelete() {
         Route route = new Route(Route.Source.STATIC, V4_PREFIX1, V4_NEXT_HOP1);
+        ResolvedRoute removedResolvedRoute = new ResolvedRoute(route, MAC1, CP1);
 
-        verifyDelete(route);
+        verifyDelete(route, removedResolvedRoute);
 
         route = new Route(Route.Source.STATIC, V6_PREFIX1, V6_NEXT_HOP1);
+        removedResolvedRoute = new ResolvedRoute(route, MAC3, CP1);
 
-        verifyDelete(route);
+        verifyDelete(route, removedResolvedRoute);
     }
 
     /**
@@ -304,12 +314,13 @@
      * the route listener.
      *
      * @param route route to delete
+     * @param removedResolvedRoute the resolved route being removed
      */
-    private void verifyDelete(Route route) {
+    private void verifyDelete(Route route, ResolvedRoute removedResolvedRoute) {
         addRoute(route);
 
         RouteEvent withdrawRouteEvent = new RouteEvent(RouteEvent.Type.ROUTE_REMOVED,
-                new ResolvedRoute(route, null, null));
+                removedResolvedRoute);
 
         reset(routeListener);
         routeListener.event(withdrawRouteEvent);