HONEYCOMB-325 - Null pointer while routing attr not defined 46/4546/4
authorJan Srnicek <jsrnicek@cisco.com>
Thu, 12 Jan 2017 09:46:28 +0000 (10:46 +0100)
committerJan Srnicek <jsrnicek@cisco.com>
Thu, 12 Jan 2017 14:07:40 +0000 (14:07 +0000)
Fixes multiple null pointers

Change-Id: Iaa1df9a8b0a886d1835fe7cb87bcf7cf5130c6f5
Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
32 files changed:
routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/MultipathHopRequestFactory.java
routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/SimpleHopRequestFactory.java
routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/Ipv4RouteNamesFactoryTest.java
routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/Ipv6RouteNamesFactoryTest.java
routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/write/Ipv4RouteCustomizerTest.java
routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/write/Ipv6RouteCustomizerTest.java
routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/write/factory/MultipathHopRequestFactoryIpv4Test.java
routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/write/factory/MultipathHopRequestFactoryIpv6Test.java
routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/write/factory/SimpleHopRequestFactoryIpv4Test.java
routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/write/factory/SimpleHopRequestFactoryIpv6Test.java
routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/write/factory/SpecialNextHopRequestFactoryIpv4Test.java
routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/write/factory/SpecialNextHopRequestFactoryIpv6Test.java
routing/routing-impl/src/test/resources/ipv4/multihop/multiHopRouteWithClassifier.json [moved from routing/routing-impl/src/test/resources/ipv4/multiHopRouteWithClassifier.json with 100% similarity]
routing/routing-impl/src/test/resources/ipv4/multihop/multiHopRouteWithNoRouteAttrs.json [new file with mode: 0644]
routing/routing-impl/src/test/resources/ipv4/multihop/multiHopRouteWithoutClassifier.json [moved from routing/routing-impl/src/test/resources/ipv4/multiHopRouteWithoutClassifier.json with 100% similarity]
routing/routing-impl/src/test/resources/ipv4/simplehop/simpleHopRouteNoRouteAttrs.json [new file with mode: 0644]
routing/routing-impl/src/test/resources/ipv4/simplehop/simpleHopRouteWithClassifier.json [moved from routing/routing-impl/src/test/resources/ipv4/simpleHopRouteWithClassifier.json with 100% similarity]
routing/routing-impl/src/test/resources/ipv4/simplehop/simpleHopRouteWithoutClassifier.json [moved from routing/routing-impl/src/test/resources/ipv4/simpleHopRouteWithoutClassifier.json with 100% similarity]
routing/routing-impl/src/test/resources/ipv4/specialhop/specialHopRouteBlackhole.json [moved from routing/routing-impl/src/test/resources/ipv4/specialHopRouteBlackhole.json with 100% similarity]
routing/routing-impl/src/test/resources/ipv4/specialhop/specialHopRouteProhibited.json [moved from routing/routing-impl/src/test/resources/ipv4/specialHopRouteProhibited.json with 100% similarity]
routing/routing-impl/src/test/resources/ipv4/specialhop/specialHopRouteReceive.json [moved from routing/routing-impl/src/test/resources/ipv4/specialHopRouteReceive.json with 100% similarity]
routing/routing-impl/src/test/resources/ipv4/specialhop/specialHopRouteUnreachable.json [moved from routing/routing-impl/src/test/resources/ipv4/specialHopRouteUnreachable.json with 100% similarity]
routing/routing-impl/src/test/resources/ipv6/multihop/multiHopRouteWithClassifier.json [moved from routing/routing-impl/src/test/resources/ipv6/multiHopRouteWithClassifier.json with 100% similarity]
routing/routing-impl/src/test/resources/ipv6/multihop/multiHopRouteWithoutClassifier.json [moved from routing/routing-impl/src/test/resources/ipv6/multiHopRouteWithoutClassifier.json with 100% similarity]
routing/routing-impl/src/test/resources/ipv6/multihop/multiHopRouteWithoutRouteAttrs.json [new file with mode: 0644]
routing/routing-impl/src/test/resources/ipv6/simplehop/simpleHopRouteWithClassifier.json [moved from routing/routing-impl/src/test/resources/ipv6/simpleHopRouteWithClassifier.json with 100% similarity]
routing/routing-impl/src/test/resources/ipv6/simplehop/simpleHopRouteWithoutClassifier.json [moved from routing/routing-impl/src/test/resources/ipv6/simpleHopRouteWithoutClassifier.json with 100% similarity]
routing/routing-impl/src/test/resources/ipv6/simplehop/simpleHopRouteWithoutRouteAttrs.json [new file with mode: 0644]
routing/routing-impl/src/test/resources/ipv6/specialhop/specialHopRouteBlackhole.json [moved from routing/routing-impl/src/test/resources/ipv6/specialHopRouteBlackhole.json with 100% similarity]
routing/routing-impl/src/test/resources/ipv6/specialhop/specialHopRouteProhibited.json [moved from routing/routing-impl/src/test/resources/ipv6/specialHopRouteProhibited.json with 100% similarity]
routing/routing-impl/src/test/resources/ipv6/specialhop/specialHopRouteReceive.json [moved from routing/routing-impl/src/test/resources/ipv6/specialHopRouteReceive.json with 100% similarity]
routing/routing-impl/src/test/resources/ipv6/specialhop/specialHopRouteUnreachable.json [moved from routing/routing-impl/src/test/resources/ipv6/specialHopRouteUnreachable.json with 100% similarity]

index 4599c8b..4497e81 100644 (file)
@@ -16,8 +16,6 @@
 
 package io.fd.hc2vpp.routing.write.factory;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-
 import io.fd.hc2vpp.common.translate.util.NamingContext;
 import io.fd.hc2vpp.routing.write.factory.base.BasicHopRequestFactory;
 import io.fd.hc2vpp.routing.write.trait.RouteRequestProducer;
@@ -57,13 +55,12 @@ public class MultipathHopRequestFactory extends BasicHopRequestFactory implement
                                                        @Nonnull final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev140524.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv4.Route route,
                                                        @Nonnull final NextHop hop,
                                                        @Nonnull final MappingContext mappingContext) {
-
-        final VppIpv4Route routingAttributes = checkNotNull(route.getVppIpv4Route(), "VppIpv4Route not defined");
+        final VppIpv4Route routingAttributes = route.getVppIpv4Route();
 
         final int nextHopInterfaceIndex =
                 getInterfaceNamingContext().getIndex(hop.getOutgoingInterface(), mappingContext);
 
-        if (classifyTablePresent(routingAttributes.getClassifyTable(), getVppClassifierContextManager(),
+        if (routingAttributes!= null && classifyTablePresent(routingAttributes.getClassifyTable(), getVppClassifierContextManager(),
                 mappingContext)) {
             return getMultipathHopRequest(add,
                     route.getDestinationPrefix(),
@@ -82,7 +79,7 @@ public class MultipathHopRequestFactory extends BasicHopRequestFactory implement
                     hop.getAddress(),
                     toByte(hop.getWeight()),
                     getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext),
-                    optionalVni(routingAttributes.getSecondaryVrf()),
+                    optionalVni(null),
                     0,
                     false);
         }
@@ -93,12 +90,12 @@ public class MultipathHopRequestFactory extends BasicHopRequestFactory implement
                                                        @Nonnull final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev140525.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.Route route,
                                                        @Nonnull final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev140525.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.route.next.hop.options.next.hop.list.next.hop.list.NextHop hop,
                                                        @Nonnull final MappingContext mappingContext) {
-        final VppIpv6Route routingAttributes = checkNotNull(route.getVppIpv6Route(), "VppIpv6Route not defined");
+        final VppIpv6Route routingAttributes = route.getVppIpv6Route();
 
         final int nextHopInterfaceIndex =
                 getInterfaceNamingContext().getIndex(hop.getOutgoingInterface(), mappingContext);
 
-        if (classifyTablePresent(routingAttributes.getClassifyTable(), getVppClassifierContextManager(),
+        if (routingAttributes != null && classifyTablePresent(routingAttributes.getClassifyTable(), getVppClassifierContextManager(),
                 mappingContext)) {
             return getMultipathHopRequest(add,
                     route.getDestinationPrefix(),
@@ -117,7 +114,7 @@ public class MultipathHopRequestFactory extends BasicHopRequestFactory implement
                     hop.getAddress(),
                     toByte(hop.getWeight()),
                     getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext),
-                    optionalVni(routingAttributes.getSecondaryVrf()),
+                    optionalVni(null),
                     0,
                     false);
         }
index 68a5f3d..98c36e4 100644 (file)
@@ -16,8 +16,6 @@
 
 package io.fd.hc2vpp.routing.write.factory;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-
 import io.fd.hc2vpp.common.translate.util.NamingContext;
 import io.fd.hc2vpp.routing.write.factory.base.BasicHopRequestFactory;
 import io.fd.hc2vpp.routing.write.trait.RouteRequestProducer;
@@ -58,12 +56,13 @@ public class SimpleHopRequestFactory extends BasicHopRequestFactory implements R
                                                     @Nonnull final MappingContext mappingContext) {
 
         final SimpleNextHop hop = SimpleNextHop.class.cast(route.getNextHopOptions());
-        final VppIpv4Route routingAttributes = checkNotNull(route.getVppIpv4Route(), "VppIpv4Route not defined");
+        final VppIpv4Route routingAttributes = route.getVppIpv4Route();
         final int nextHopInterfaceIndex =
                 getInterfaceNamingContext().getIndex(hop.getOutgoingInterface(), mappingContext);
 
-        if (classifyTablePresent(routingAttributes.getClassifyTable(), getVppClassifierContextManager(),
-                mappingContext)) {
+        if (routingAttributes != null &&
+                classifyTablePresent(routingAttributes.getClassifyTable(), getVppClassifierContextManager(),
+                        mappingContext)) {
             return getSimpleHopRequest(add,
                     route.getDestinationPrefix(),
                     nextHopInterfaceIndex,
@@ -79,7 +78,7 @@ public class SimpleHopRequestFactory extends BasicHopRequestFactory implements R
                     nextHopInterfaceIndex,
                     hop.getNextHop(),
                     getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext),
-                    optionalVni(routingAttributes.getSecondaryVrf()),
+                    optionalVni(null),
                     0,
                     false);
         }
@@ -93,12 +92,13 @@ public class SimpleHopRequestFactory extends BasicHopRequestFactory implements R
                 hop =
                 (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev140525.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.route.next.hop.options.SimpleNextHop) route
                         .getNextHopOptions();
-        final VppIpv6Route routingAttributes = checkNotNull(route.getVppIpv6Route(), "VppIpv6Route not defined");
+        final VppIpv6Route routingAttributes = route.getVppIpv6Route();
         final int nextHopInterfaceIndex =
                 getInterfaceNamingContext().getIndex(hop.getOutgoingInterface(), mappingContext);
 
-        if (classifyTablePresent(routingAttributes.getClassifyTable(), getVppClassifierContextManager(),
-                mappingContext)) {
+        if (routingAttributes != null &&
+                classifyTablePresent(routingAttributes.getClassifyTable(), getVppClassifierContextManager(),
+                        mappingContext)) {
             return getSimpleHopRequest(add,
                     route.getDestinationPrefix(),
                     nextHopInterfaceIndex,
@@ -114,7 +114,7 @@ public class SimpleHopRequestFactory extends BasicHopRequestFactory implements R
                     nextHopInterfaceIndex,
                     hop.getNextHop(),
                     getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext),
-                    optionalVni(routingAttributes.getSecondaryVrf()),
+                    optionalVni(null),
                     0,
                     false);
         }
index 1fc8152..79650e8 100644 (file)
@@ -72,7 +72,7 @@ public class Ipv4RouteNamesFactoryTest
 
     @Test
     public void testUniqueRouteName(
-            @InjectTestData(resourcePath = "/ipv4/simpleHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH)
+            @InjectTestData(resourcePath = "/ipv4/simplehop/simpleHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH)
                     StaticRoutes data) {
         assertEquals("tst-protocol_19216821_24",
                 factory.uniqueRouteName(ROUTE_PROTOCOL_NAME, getIpv4RouteWithId(data, 1L)));
index 4f95ae3..a993b9b 100644 (file)
@@ -72,7 +72,7 @@ public class Ipv6RouteNamesFactoryTest implements RoutingRequestTestHelper, Sche
 
     @Test
     public void testUniqueRouteName(
-            @InjectTestData(resourcePath = "/ipv6/simpleHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH)
+            @InjectTestData(resourcePath = "/ipv6/simplehop/simpleHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH)
                     StaticRoutes data) {
         assertEquals("tst-protocol_2001db8a0b12f01_64",
                 factory.uniqueRouteName(ROUTE_PROTOCOL_NAME, getIpv6RouteWithId(data, 1L)));
index 13b4347..9cefb34 100644 (file)
@@ -96,7 +96,7 @@ public class Ipv4RouteCustomizerTest extends WriterCustomizerTest
 
     @Test
     public void testWriteSingleHop(
-            @InjectTestData(resourcePath = "/ipv4/simpleHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
+            @InjectTestData(resourcePath = "/ipv4/simplehop/simpleHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
             throws WriteFailedException {
         final Route route1 = getIpv4RouteWithId(route, 1L);
         noMappingDefined(mappingContext, namesFactory.uniqueRouteName(ROUTE_PROTOCOL_NAME, route1), "route-context");
@@ -111,7 +111,7 @@ public class Ipv4RouteCustomizerTest extends WriterCustomizerTest
 
     @Test
     public void testWriteHopList(
-            @InjectTestData(resourcePath = "/ipv4/multiHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
+            @InjectTestData(resourcePath = "/ipv4/multihop/multiHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
             throws WriteFailedException {
         final Route route1 = getIpv4RouteWithId(route, 1L);
         noMappingDefined(mappingContext, namesFactory.uniqueRouteName(ROUTE_PROTOCOL_NAME, route1), "route-context");
@@ -141,7 +141,7 @@ public class Ipv4RouteCustomizerTest extends WriterCustomizerTest
 
     @Test
     public void testWriteSpecialHop(
-            @InjectTestData(resourcePath = "/ipv4/specialHopRouteBlackhole.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
+            @InjectTestData(resourcePath = "/ipv4/specialhop/specialHopRouteBlackhole.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
             throws WriteFailedException {
         final Route route1 = getIpv4RouteWithId(route, 1L);
         noMappingDefined(mappingContext, namesFactory.uniqueRouteName(ROUTE_PROTOCOL_NAME, route1), "route-context");
@@ -154,7 +154,7 @@ public class Ipv4RouteCustomizerTest extends WriterCustomizerTest
 
     @Test
     public void testUpdate(
-            @InjectTestData(resourcePath = "/ipv4/specialHopRouteBlackhole.json", id = STATIC_ROUTE_PATH) StaticRoutes route) {
+            @InjectTestData(resourcePath = "/ipv4/specialhop/specialHopRouteBlackhole.json", id = STATIC_ROUTE_PATH) StaticRoutes route) {
         try {
             customizer.updateCurrentAttributes(validId, new RouteBuilder().build(), getIpv4RouteWithId(route, 1L),
                     writeContext);
@@ -169,7 +169,7 @@ public class Ipv4RouteCustomizerTest extends WriterCustomizerTest
 
     @Test
     public void testDeleteSingleHop(
-            @InjectTestData(resourcePath = "/ipv4/simpleHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
+            @InjectTestData(resourcePath = "/ipv4/simplehop/simpleHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
             throws WriteFailedException {
         customizer.deleteCurrentAttributes(validId, getIpv4RouteWithId(route, 1L), writeContext);
         verifyInvocation(1, ImmutableList
@@ -180,7 +180,7 @@ public class Ipv4RouteCustomizerTest extends WriterCustomizerTest
 
     @Test
     public void testDeleteHopList(
-            @InjectTestData(resourcePath = "/ipv4/multiHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
+            @InjectTestData(resourcePath = "/ipv4/multihop/multiHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
             throws WriteFailedException {
         final Route route1 = getIpv4RouteWithId(route, 1L);
         noMappingDefined(mappingContext, namesFactory.uniqueRouteName(ROUTE_PROTOCOL_NAME, route1), "route-context");
@@ -209,7 +209,7 @@ public class Ipv4RouteCustomizerTest extends WriterCustomizerTest
 
     @Test
     public void testDeleteSpecialHop(
-            @InjectTestData(resourcePath = "/ipv4/specialHopRouteBlackhole.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
+            @InjectTestData(resourcePath = "/ipv4/specialhop/specialHopRouteBlackhole.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
             throws WriteFailedException {
         customizer.deleteCurrentAttributes(validId, getIpv4RouteWithId(route, 1L), writeContext);
 
index c776ca7..6ba9733 100644 (file)
@@ -91,7 +91,7 @@ public class Ipv6RouteCustomizerTest extends WriterCustomizerTest
 
     @Test
     public void testWriteSingleHop(
-            @InjectTestData(resourcePath = "/ipv6/simpleHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
+            @InjectTestData(resourcePath = "/ipv6/simplehop/simpleHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
             throws WriteFailedException {
         whenAddRouteThenSuccess(api);
         customizer.writeCurrentAttributes(validId, getIpv6RouteWithId(route, 1L), writeContext);
@@ -103,7 +103,7 @@ public class Ipv6RouteCustomizerTest extends WriterCustomizerTest
 
     @Test
     public void testWriteHopList(
-            @InjectTestData(resourcePath = "/ipv6/multiHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
+            @InjectTestData(resourcePath = "/ipv6/multihop/multiHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
             throws WriteFailedException {
         whenAddRouteThenSuccess(api);
         customizer.writeCurrentAttributes(validId, getIpv6RouteWithId(route, 1L), writeContext);
@@ -133,7 +133,7 @@ public class Ipv6RouteCustomizerTest extends WriterCustomizerTest
 
     @Test
     public void testDeleteSpecialHop(
-            @InjectTestData(resourcePath = "/ipv6/specialHopRouteBlackhole.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
+            @InjectTestData(resourcePath = "/ipv6/specialhop/specialHopRouteBlackhole.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
             throws WriteFailedException {
         whenAddRouteThenSuccess(api);
         customizer.deleteCurrentAttributes(validId, getIpv6RouteWithId(route, 1L),
@@ -145,7 +145,7 @@ public class Ipv6RouteCustomizerTest extends WriterCustomizerTest
 
     @Test
     public void testDeleteSingleHop(
-            @InjectTestData(resourcePath = "/ipv6/simpleHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
+            @InjectTestData(resourcePath = "/ipv6/simplehop/simpleHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
             throws WriteFailedException {
         whenAddRouteThenSuccess(api);
         customizer.deleteCurrentAttributes(validId, getIpv6RouteWithId(route, 1L), writeContext);
@@ -157,7 +157,7 @@ public class Ipv6RouteCustomizerTest extends WriterCustomizerTest
 
     @Test
     public void testDeleteHopList(
-            @InjectTestData(resourcePath = "/ipv6/multiHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
+            @InjectTestData(resourcePath = "/ipv6/multihop/multiHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
             throws WriteFailedException {
         whenAddRouteThenSuccess(api);
         customizer.deleteCurrentAttributes(validId, getIpv6RouteWithId(route, 1L), writeContext);
@@ -174,7 +174,7 @@ public class Ipv6RouteCustomizerTest extends WriterCustomizerTest
 
     @Test
     public void testWriteSpecialHop(
-            @InjectTestData(resourcePath = "/ipv6/specialHopRouteBlackhole.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
+            @InjectTestData(resourcePath = "/ipv6/specialhop/specialHopRouteBlackhole.json", id = STATIC_ROUTE_PATH) StaticRoutes route)
             throws WriteFailedException {
         whenAddRouteThenSuccess(api);
         customizer.writeCurrentAttributes(validId, getIpv6RouteWithId(route, 1L),
index 43d01ab..1eb91aa 100644 (file)
@@ -51,18 +51,24 @@ public class MultipathHopRequestFactoryIpv4Test
     @Mock
     private MappingContext mappingContext;
 
-    @InjectTestData(resourcePath = "/ipv4/multiHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH)
+    @InjectTestData(resourcePath = "/ipv4/multihop/multiHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH)
     private StaticRoutes ipv4StaticRoutesWithClassifier;
 
-    @InjectTestData(resourcePath = "/ipv4/multiHopRouteWithoutClassifier.json", id = STATIC_ROUTE_PATH)
+    @InjectTestData(resourcePath = "/ipv4/multihop/multiHopRouteWithoutClassifier.json", id = STATIC_ROUTE_PATH)
     private StaticRoutes ipv4StaticRoutesWithoutClassifier;
 
+    @InjectTestData(resourcePath = "/ipv4/multihop/multiHopRouteWithNoRouteAttrs.json", id = STATIC_ROUTE_PATH)
+    private StaticRoutes ipv4StaticRoutesWithoutRouteAttrs;
+
     private Route ipv4MutlipathRouteWithClassifier;
     private NextHop ipv4nextHopWithClassifier;
 
     private Route ipv4MutlipathRouteWithoutClassifier;
     private NextHop ipv4nextHopWithoutClassifier;
 
+    private Route ipv4MutlipathRouteWithoutRouteAtts;
+    private NextHop ipv4nextHopWithoutRouteAtts;
+
     private NamingContext interfaceContext;
     private NamingContext routingProtocolContext;
     private MultipathHopRequestFactory factory;
@@ -88,10 +94,17 @@ public class MultipathHopRequestFactoryIpv4Test
 
         ipv4MutlipathRouteWithoutClassifier = getIpv4RouteWithId(ipv4StaticRoutesWithoutClassifier, 1L);
         final List<NextHop> ipv4HopsNonClassified =
-                NextHopList.class.cast(ipv4MutlipathRouteWithClassifier.getNextHopOptions()).getNextHopList()
+                NextHopList.class.cast(ipv4MutlipathRouteWithoutClassifier.getNextHopOptions()).getNextHopList()
                         .getNextHop();
         ipv4nextHopWithoutClassifier =
                 ipv4HopsNonClassified.stream().filter(nextHop -> nextHop.getId() == 1L).findFirst().get();
+
+        ipv4MutlipathRouteWithoutRouteAtts = getIpv4RouteWithId(ipv4StaticRoutesWithoutRouteAttrs, 1L);
+        final List<NextHop> ipv4HopsNonRouteAttrs =
+                NextHopList.class.cast(ipv4MutlipathRouteWithoutRouteAtts.getNextHopOptions()).getNextHopList()
+                        .getNextHop();
+        ipv4nextHopWithoutRouteAtts =
+                ipv4HopsNonClassified.stream().filter(nextHop -> nextHop.getId() == 1L).findFirst().get();
     }
 
     @Test
@@ -116,4 +129,16 @@ public class MultipathHopRequestFactoryIpv4Test
                 desiredFlaglessResult(0, 0, 1, Ipv4RouteData.FIRST_ADDRESS_AS_ARRAY, 24,
                         Ipv4RouteData.FIRST_ADDRESS_AS_ARRAY, INTERFACE_INDEX, 2, 1, 1, 0, 0, 0), request);
     }
+
+    @Test
+    public void testIpv4WithoutRouteAttrs() {
+        final IpAddDelRoute request =
+                factory.createIpv4MultipathHopRequest(false, ROUTE_PROTOCOL_NAME, ipv4MutlipathRouteWithoutRouteAtts,
+                        ipv4nextHopWithoutRouteAtts,
+                        mappingContext);
+
+        assertEquals(
+                desiredFlaglessResult(0, 0, 1, Ipv4RouteData.FIRST_ADDRESS_AS_ARRAY, 24,
+                        Ipv4RouteData.FIRST_ADDRESS_AS_ARRAY, INTERFACE_INDEX, 2, 1, 1, 0, 0, 0), request);
+    }
 }
index 9fc5fae..dfbd093 100644 (file)
@@ -50,10 +50,10 @@ public class MultipathHopRequestFactoryIpv6Test
     @Mock
     private MappingContext mappingContext;
 
-    @InjectTestData(resourcePath = "/ipv6/multiHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH)
+    @InjectTestData(resourcePath = "/ipv6/multihop/multiHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH)
     private StaticRoutes ipv6StaticRoutesWithClassifier;
 
-    @InjectTestData(resourcePath = "/ipv6/multiHopRouteWithoutClassifier.json", id = STATIC_ROUTE_PATH)
+    @InjectTestData(resourcePath = "/ipv6/multihop/multiHopRouteWithoutClassifier.json", id = STATIC_ROUTE_PATH)
     private StaticRoutes ipv6StaticRoutesWithoutClassifier;
 
     private Route ipv6MultipathRouteWithClassifier;
index cfb352d..d344e01 100644 (file)
@@ -46,12 +46,6 @@ public class SimpleHopRequestFactoryIpv4Test
     @Mock
     private MappingContext mappingContext;
 
-    @InjectTestData(resourcePath = "/ipv4/simpleHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH)
-    private StaticRoutes ipv4StaticRouteWithClassifier;
-
-    @InjectTestData(resourcePath = "/ipv4/simpleHopRouteWithoutClassifier.json", id = STATIC_ROUTE_PATH)
-    private StaticRoutes ipv4StaticRouteWithoutClassifier;
-
     private NamingContext interfaceContext;
     private NamingContext routingProtocolContext;
     private SimpleHopRequestFactory factory;
@@ -70,7 +64,9 @@ public class SimpleHopRequestFactoryIpv4Test
     }
 
     @Test
-    public void testIpv4WithClassifier() {
+    public void testIpv4WithClassifier(
+            @InjectTestData(resourcePath = "/ipv4/simplehop/simpleHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH)
+                    StaticRoutes ipv4StaticRouteWithClassifier) {
         final IpAddDelRoute request =
                 factory.createIpv4SimpleHopRequest(false, ROUTE_PROTOCOL_NAME,
                         getIpv4RouteWithId(ipv4StaticRouteWithClassifier, 1L),
@@ -82,7 +78,9 @@ public class SimpleHopRequestFactoryIpv4Test
     }
 
     @Test
-    public void testIpv4WithoutClassifier() {
+    public void testIpv4WithoutClassifier(
+            @InjectTestData(resourcePath = "/ipv4/simplehop/simpleHopRouteWithoutClassifier.json", id = STATIC_ROUTE_PATH)
+                    StaticRoutes ipv4StaticRouteWithoutClassifier) {
         final IpAddDelRoute request =
                 factory.createIpv4SimpleHopRequest(false, ROUTE_PROTOCOL_NAME,
                         ipv4StaticRouteWithoutClassifier.getAugmentation(StaticRoutes1.class).getIpv4().getRoute()
@@ -92,4 +90,18 @@ public class SimpleHopRequestFactoryIpv4Test
                 desiredFlaglessResult(0, 0, 0, Ipv4RouteData.FIRST_ADDRESS_AS_ARRAY, 24,
                         Ipv4RouteData.SECOND_ADDRESS_AS_ARRAY, INTERFACE_INDEX, 0, 1, 1, 0, 0, 0), request);
     }
+
+    @Test
+    public void testIpv4WithoutVppAttrs(
+            @InjectTestData(resourcePath = "/ipv4/simplehop/simpleHopRouteNoRouteAttrs.json", id = STATIC_ROUTE_PATH)
+                    StaticRoutes ipv4StaticRouteWithoutRouteAttrs) {
+        final IpAddDelRoute request =
+                factory.createIpv4SimpleHopRequest(false, ROUTE_PROTOCOL_NAME,
+                        ipv4StaticRouteWithoutRouteAttrs.getAugmentation(StaticRoutes1.class).getIpv4().getRoute()
+                                .get(0), mappingContext);
+
+        assertEquals(
+                desiredFlaglessResult(0, 0, 0, Ipv4RouteData.FIRST_ADDRESS_AS_ARRAY, 24,
+                        Ipv4RouteData.SECOND_ADDRESS_AS_ARRAY, INTERFACE_INDEX, 0, 1, 1, 0, 0, 0), request);
+    }
 }
index e95a667..721fac3 100644 (file)
@@ -47,12 +47,6 @@ public class SimpleHopRequestFactoryIpv6Test
     @Mock
     private MappingContext mappingContext;
 
-    @InjectTestData(resourcePath = "/ipv6/simpleHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH)
-    private StaticRoutes ipv6StaticRouteWithClassifier;
-
-    @InjectTestData(resourcePath = "/ipv6/simpleHopRouteWithoutClassifier.json", id = STATIC_ROUTE_PATH)
-    private StaticRoutes ipv6StaticRouteWithoutClassifier;
-
     private NamingContext interfaceContext;
     private NamingContext routingProtocolContext;
     private SimpleHopRequestFactory factory;
@@ -71,7 +65,9 @@ public class SimpleHopRequestFactoryIpv6Test
     }
 
     @Test
-    public void testIpv6WithClassifier() {
+    public void testIpv6WithClassifier(
+            @InjectTestData(resourcePath = "/ipv6/simplehop/simpleHopRouteWithClassifier.json", id = STATIC_ROUTE_PATH)
+                    StaticRoutes ipv6StaticRouteWithClassifier) {
         final IpAddDelRoute request =
                 factory.createIpv6SimpleHopRequest(false, ROUTE_PROTOCOL_NAME,
                         ipv6StaticRouteWithClassifier.getAugmentation(StaticRoutes1.class).getIpv6().getRoute().get(0),
@@ -83,7 +79,9 @@ public class SimpleHopRequestFactoryIpv6Test
     }
 
     @Test
-    public void testIpv6WithoutClassifier() {
+    public void testIpv6WithoutClassifier(
+            @InjectTestData(resourcePath = "/ipv6/simplehop/simpleHopRouteWithoutClassifier.json", id = STATIC_ROUTE_PATH)
+                    StaticRoutes ipv6StaticRouteWithoutClassifier) {
         final IpAddDelRoute request =
                 factory.createIpv6SimpleHopRequest(false, ROUTE_PROTOCOL_NAME,
                         ipv6StaticRouteWithoutClassifier.getAugmentation(StaticRoutes1.class).getIpv6().getRoute()
@@ -93,4 +91,17 @@ public class SimpleHopRequestFactoryIpv6Test
         assertEquals(desiredFlaglessResult(0, 1, 0, Ipv6RouteData.FIRST_ADDRESS_AS_ARRAY, 64,
                 Ipv6RouteData.SECOND_ADDRESS_AS_ARRAY, INTERFACE_INDEX, 0, 1, 1, 0, 0, 0), request);
     }
+
+    @Test
+    public void testIpv6WithoutRouteAttrs(@InjectTestData(resourcePath = "/ipv6/simplehop/simpleHopRouteWithoutRouteAttrs.json", id = STATIC_ROUTE_PATH)
+                                                      StaticRoutes ipv6StaticRouteWithoutRouteAttrs) {
+        final IpAddDelRoute request =
+                factory.createIpv6SimpleHopRequest(false, ROUTE_PROTOCOL_NAME,
+                        ipv6StaticRouteWithoutRouteAttrs.getAugmentation(StaticRoutes1.class).getIpv6().getRoute()
+                                .get(0),
+                        mappingContext);
+
+        assertEquals(desiredFlaglessResult(0, 1, 0, Ipv6RouteData.FIRST_ADDRESS_AS_ARRAY, 64,
+                Ipv6RouteData.SECOND_ADDRESS_AS_ARRAY, INTERFACE_INDEX, 0, 1, 1, 0, 0, 0), request);
+    }
 }
index dd93de5..253a1b1 100644 (file)
@@ -65,7 +65,7 @@ public class SpecialNextHopRequestFactoryIpv4Test
 
     @Test
     public void testIpv4WithClassifierBlackhole(
-            @InjectTestData(resourcePath = "/ipv4/specialHopRouteBlackhole.json", id = STATIC_ROUTE_PATH)
+            @InjectTestData(resourcePath = "/ipv4/specialhop/specialHopRouteBlackhole.json", id = STATIC_ROUTE_PATH)
                     StaticRoutes routes) {
         final IpAddDelRoute request =
                 factory.createIpv4SpecialHopRequest(true, extractSingleRoute(routes, 1L), mappingContext,
@@ -76,7 +76,7 @@ public class SpecialNextHopRequestFactoryIpv4Test
 
     @Test
     public void testIpv4WithClassifierReceive(
-            @InjectTestData(resourcePath = "/ipv4/specialHopRouteReceive.json", id = STATIC_ROUTE_PATH)
+            @InjectTestData(resourcePath = "/ipv4/specialhop/specialHopRouteReceive.json", id = STATIC_ROUTE_PATH)
                     StaticRoutes routes) {
         final IpAddDelRoute request =
                 factory.createIpv4SpecialHopRequest(true, extractSingleRoute(routes, 1L), mappingContext, Receive);
@@ -86,7 +86,7 @@ public class SpecialNextHopRequestFactoryIpv4Test
 
     @Test
     public void testIpv4WithClassifierUnreach(
-            @InjectTestData(resourcePath = "/ipv4/specialHopRouteUnreachable.json", id = STATIC_ROUTE_PATH)
+            @InjectTestData(resourcePath = "/ipv4/specialhop/specialHopRouteUnreachable.json", id = STATIC_ROUTE_PATH)
                     StaticRoutes routes) {
         final IpAddDelRoute request =
                 factory.createIpv4SpecialHopRequest(true, extractSingleRoute(routes, 1L), mappingContext, Unreachable);
@@ -96,7 +96,7 @@ public class SpecialNextHopRequestFactoryIpv4Test
 
     @Test
     public void testIpv4WithClassifierProhibited(
-            @InjectTestData(resourcePath = "/ipv4/specialHopRouteProhibited.json", id = STATIC_ROUTE_PATH)
+            @InjectTestData(resourcePath = "/ipv4/specialhop/specialHopRouteProhibited.json", id = STATIC_ROUTE_PATH)
                     StaticRoutes routes) {
         final IpAddDelRoute request =
                 factory.createIpv4SpecialHopRequest(true, extractSingleRoute(routes, 1L), mappingContext, Prohibit);
index b129eef..d5f5040 100644 (file)
@@ -63,7 +63,7 @@ public class SpecialNextHopRequestFactoryIpv6Test
 
     @Test
     public void testIpv6Blackhole(
-            @InjectTestData(resourcePath = "/ipv6/specialHopRouteBlackhole.json", id = STATIC_ROUTE_PATH)
+            @InjectTestData(resourcePath = "/ipv6/specialhop/specialHopRouteBlackhole.json", id = STATIC_ROUTE_PATH)
                     StaticRoutes routes) {
         final IpAddDelRoute request =
                 factory.createIpv6SpecialHopRequest(true, extractSingleRoute(routes, 1L), mappingContext, Blackhole);
@@ -74,7 +74,7 @@ public class SpecialNextHopRequestFactoryIpv6Test
 
     @Test
     public void testIpv6Receive(
-            @InjectTestData(resourcePath = "/ipv6/specialHopRouteReceive.json", id = STATIC_ROUTE_PATH)
+            @InjectTestData(resourcePath = "/ipv6/specialhop/specialHopRouteReceive.json", id = STATIC_ROUTE_PATH)
                     StaticRoutes routes) {
         final IpAddDelRoute request =
                 factory.createIpv6SpecialHopRequest(true, extractSingleRoute(routes, 1L), mappingContext, Receive);
@@ -84,7 +84,7 @@ public class SpecialNextHopRequestFactoryIpv6Test
 
     @Test
     public void testIpv6Unreach(
-            @InjectTestData(resourcePath = "/ipv6/specialHopRouteUnreachable.json", id = STATIC_ROUTE_PATH)
+            @InjectTestData(resourcePath = "/ipv6/specialhop/specialHopRouteUnreachable.json", id = STATIC_ROUTE_PATH)
                     StaticRoutes routes) {
         final IpAddDelRoute request =
                 factory.createIpv6SpecialHopRequest(true, extractSingleRoute(routes, 1L), mappingContext, Unreachable);
@@ -94,7 +94,7 @@ public class SpecialNextHopRequestFactoryIpv6Test
 
     @Test
     public void testIpv6Prohibited(
-            @InjectTestData(resourcePath = "/ipv6/specialHopRouteProhibited.json", id = STATIC_ROUTE_PATH)
+            @InjectTestData(resourcePath = "/ipv6/specialhop/specialHopRouteProhibited.json", id = STATIC_ROUTE_PATH)
                     StaticRoutes routes) {
         final IpAddDelRoute request =
                 factory.createIpv6SpecialHopRequest(true, extractSingleRoute(routes, 1L), mappingContext, Prohibit);
diff --git a/routing/routing-impl/src/test/resources/ipv4/multihop/multiHopRouteWithNoRouteAttrs.json b/routing/routing-impl/src/test/resources/ipv4/multihop/multiHopRouteWithNoRouteAttrs.json
new file mode 100644 (file)
index 0000000..71cefa6
--- /dev/null
@@ -0,0 +1,28 @@
+{
+  "static-routes": {
+    "ipv4": {
+      "route": [
+        {
+          "id": 1,
+          "destination-prefix": "192.168.2.1/24",
+          "next-hop-list": {
+            "next-hop": [
+              {
+                "id": "1",
+                "address": "192.168.2.1",
+                "outgoing-interface": "iface",
+                "weight": "2"
+              },
+              {
+                "id": "2",
+                "address": "192.168.2.2",
+                "outgoing-interface": "iface",
+                "weight": "3"
+              }
+            ]
+          }
+        }
+      ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/routing/routing-impl/src/test/resources/ipv4/simplehop/simpleHopRouteNoRouteAttrs.json b/routing/routing-impl/src/test/resources/ipv4/simplehop/simpleHopRouteNoRouteAttrs.json
new file mode 100644 (file)
index 0000000..d987bb6
--- /dev/null
@@ -0,0 +1,14 @@
+{
+  "static-routes": {
+    "ipv4": {
+      "route": [
+        {
+          "id": 1,
+          "destination-prefix": "192.168.2.1/24",
+          "next-hop": "192.168.2.2",
+          "outgoing-interface": "iface"
+        }
+      ]
+    }
+  }
+}
diff --git a/routing/routing-impl/src/test/resources/ipv6/multihop/multiHopRouteWithoutRouteAttrs.json b/routing/routing-impl/src/test/resources/ipv6/multihop/multiHopRouteWithoutRouteAttrs.json
new file mode 100644 (file)
index 0000000..f85b1b7
--- /dev/null
@@ -0,0 +1,28 @@
+{
+  "static-routes": {
+    "ipv6": {
+      "route": [
+        {
+          "id": 1,
+          "destination-prefix": "2001:0db8:0a0b:12f0:0000:0000:0000:0001/64",
+          "next-hop-list": {
+            "next-hop": [
+              {
+                "id": "1",
+                "address": "2001:0db8:0a0b:12f0:0000:0000:0000:0002",
+                "outgoing-interface": "iface",
+                "weight": "2"
+              },
+              {
+                "id": "2",
+                "address": "2001:0db8:0a0b:12f0:0000:0000:0000:0002",
+                "outgoing-interface": "iface",
+                "weight": "2"
+              }
+            ]
+          }
+        }
+      ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/routing/routing-impl/src/test/resources/ipv6/simplehop/simpleHopRouteWithoutRouteAttrs.json b/routing/routing-impl/src/test/resources/ipv6/simplehop/simpleHopRouteWithoutRouteAttrs.json
new file mode 100644 (file)
index 0000000..a735c19
--- /dev/null
@@ -0,0 +1,14 @@
+{
+  "static-routes": {
+    "ipv6": {
+      "route": [
+        {
+          "id": 1,
+          "destination-prefix": "2001:0db8:0a0b:12f0:0000:0000:0000:0001/64",
+          "next-hop": "2001:0db8:0a0b:12f0:0000:0000:0000:0002",
+          "outgoing-interface": "iface"
+        }
+      ]
+    }
+  }
+}
\ No newline at end of file