Do not use RibSupportUtils in PeerTest 54/106654/1
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 23 Jun 2023 14:01:54 +0000 (16:01 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 23 Jun 2023 14:02:40 +0000 (16:02 +0200)
Use a plain constant instead of relying on reflection. Also centralize
references to AFI/SAFI QNames.

JIRA: BGPCEP-1016
Change-Id: Ibb4e18ee7f83229386a483a912c0ce49e1ffca0e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RibSupportUtils.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/AbstractRIBTestSetup.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/AdjRibsInWriterTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/PeerTest.java

index db7038df8240316bbb4580387050d2ef6e8449f1..a4a7aae289c08f7e3bf0ac45cb0a21156885ea0f 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.protocol.bgp.rib.impl;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
+import org.opendaylight.protocol.bgp.rib.spi.RIBQNames;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.Tables;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
 import org.opendaylight.yangtools.util.ImmutableOffsetMapTemplate;
@@ -17,8 +18,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent
 
 final class RibSupportUtils {
     private static final ImmutableOffsetMapTemplate<QName> AFI_SAFI_TEMPLATE =
-            ImmutableOffsetMapTemplate.ordered(ImmutableList.of(QName.create(Tables.QNAME, "afi").intern(),
-                QName.create(Tables.QNAME, "safi").intern()));
+            ImmutableOffsetMapTemplate.ordered(ImmutableList.of(RIBQNames.AFI_QNAME, RIBQNames.SAFI_QNAME));
 
     private RibSupportUtils() {
         // Hidden on purpose
index e019c4aad51ff3a6f0b8cd8a9a9ab6ae2f68299b..55464e22a635267567a5dd5978b5a463c5edc6b4 100644 (file)
@@ -18,10 +18,10 @@ import com.google.common.collect.ImmutableClassToInstanceMap;
 import com.google.common.util.concurrent.FluentFuture;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.EventListener;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.Executor;
 import org.junit.Before;
@@ -74,13 +74,9 @@ import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidateNode;
 import org.opendaylight.yangtools.yang.data.tree.api.ModificationType;
 
 public class AbstractRIBTestSetup extends DefaultRibPoliciesMockTest {
-
-    static final Ipv4AddressFamily IPV4_AFI = Ipv4AddressFamily.VALUE;
-    private static final Ipv6AddressFamily IPV6_AFI = Ipv6AddressFamily.VALUE;
-    static final UnicastSubsequentAddressFamily SAFI = UnicastSubsequentAddressFamily.VALUE;
-    static final TablesKey KEY = new TablesKey(IPV4_AFI, SAFI);
     static final QName PREFIX_QNAME = QName.create(Ipv4Route.QNAME, "prefix").intern();
     private static final BgpId RIB_ID = new BgpId("127.0.0.1");
+
     private RIBImpl rib;
     private final RIBActivator a1 = new RIBActivator();
     @Mock
@@ -114,8 +110,8 @@ public class AbstractRIBTestSetup extends DefaultRibPoliciesMockTest {
     public void mockRib() throws Exception {
         final RIBExtensionProviderContext context = new SimpleRIBExtensionProviderContext();
         final List<BgpTableType> localTables = new ArrayList<>();
-        localTables.add(new BgpTableTypeImpl(IPV4_AFI, SAFI));
-        localTables.add(new BgpTableTypeImpl(IPV6_AFI, SAFI));
+        localTables.add(new BgpTableTypeImpl(Ipv4AddressFamily.VALUE, UnicastSubsequentAddressFamily.VALUE));
+        localTables.add(new BgpTableTypeImpl(Ipv6AddressFamily.VALUE, UnicastSubsequentAddressFamily.VALUE));
 
         final CurrentAdapterSerializer serializer = mappingService.currentSerializer();
         a1.startRIBExtensionProvider(context, serializer);
@@ -124,8 +120,8 @@ public class AbstractRIBTestSetup extends DefaultRibPoliciesMockTest {
         doReturn(mock(ClusterSingletonServiceRegistration.class)).when(clusterSingletonServiceProvider)
                 .registerClusterSingletonService(any(ClusterSingletonService.class));
         rib = new RIBImpl(tableRegistry, new RibId("test"), new AsNumber(Uint32.valueOf(5)), RIB_ID, context,
-                dispatcher, new ConstantCodecsRegistry(serializer), dom, policies,
-                localTables, Collections.singletonMap(KEY,
+            dispatcher, new ConstantCodecsRegistry(serializer), dom, policies, localTables,
+            Map.of(new TablesKey(Ipv4AddressFamily.VALUE, UnicastSubsequentAddressFamily.VALUE),
                 BasePathSelectionModeFactory.createBestPathSelectionStrategy()));
     }
 
index f2cadeceb8778a0721912b259e6bc08369bc239a..d0960d45eaf1f61101cf26b712fc712a0181e53a 100644 (file)
@@ -47,7 +47,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.Ipv4AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.UnicastSubsequentAddressFamily;
-import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@@ -55,9 +54,8 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 @RunWith(MockitoJUnitRunner.StrictStubs.class)
 public class AdjRibsInWriterTest {
     private static final TablesKey K4 = new TablesKey(Ipv4AddressFamily.VALUE, UnicastSubsequentAddressFamily.VALUE);
-    private static final NodeIdentifierWithPredicates DOM_K4 = NodeIdentifierWithPredicates.of(Tables.QNAME,
-        Map.of(QName.create(Tables.QNAME, "afi"), Ipv4AddressFamily.QNAME,
-            QName.create(Tables.QNAME, "safi"), UnicastSubsequentAddressFamily.QNAME));
+    private static final NodeIdentifierWithPredicates DOM_K4 = NodeIdentifierWithPredicates.of(Tables.QNAME, Map.of(
+        RIBQNames.AFI_QNAME, Ipv4AddressFamily.QNAME, RIBQNames.SAFI_QNAME, UnicastSubsequentAddressFamily.QNAME));
     private static final Map<TablesKey, SendReceive> ADD_PATH_TABLE_MAPS = Map.of(K4, SendReceive.Both);
 
     private final Set<TablesKey> tableTypes = Set.of(K4);
index 3f7f51dd031c8c2a09d3a600e6c0346708ec678e..b91c156fd8f4148b0a7dd542bd6d3573933b9284 100644 (file)
@@ -33,6 +33,7 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
 import org.opendaylight.protocol.bgp.parser.BGPError;
 import org.opendaylight.protocol.bgp.parser.impl.message.update.LocalPreferenceAttributeParser;
+import org.opendaylight.protocol.bgp.rib.spi.RIBQNames;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressNoZone;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
@@ -71,10 +72,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.type
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.next.hop.c.next.hop.Ipv4NextHopCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.next.hop.c.next.hop.ipv4.next.hop._case.Ipv4NextHopBuilder;
 import org.opendaylight.yangtools.yang.binding.Notification;
-import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.Uint16;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.tree.api.ModificationType;
 
@@ -96,21 +97,18 @@ public class PeerTest extends AbstractRIBTestSetup {
 
     private void overrideMockedBehaviour() {
         doAnswer(invocation -> {
-            final Object[] args = invocation.getArguments();
-            final NormalizedNode node = (NormalizedNode) args[2];
-            final QName nodeType = node.getIdentifier().getNodeType();
-
+            final var node = invocation.getArgument(2, NormalizedNode.class);
+            final var nodeType = node.getIdentifier().getNodeType();
             if (nodeType.equals(Ipv4Route.QNAME) || nodeType.equals(PREFIX_QNAME)) {
-                routes.put((YangInstanceIdentifier) args[1], node);
+                routes.put(invocation.getArgument(1), node);
             }
-            return args[1];
+            return null;
         }).when(getTransaction()).put(eq(LogicalDatastoreType.OPERATIONAL),
                 any(YangInstanceIdentifier.class), any(NormalizedNode.class));
 
         doAnswer(invocation -> {
-            final Object[] args = invocation.getArguments();
-            routes.remove(args[1]);
-            return args[1];
+            routes.remove(invocation.getArgument(1));
+            return null;
         }).when(getTransaction()).delete(eq(LogicalDatastoreType.OPERATIONAL), any(YangInstanceIdentifier.class));
     }
 
@@ -124,7 +122,9 @@ public class PeerTest extends AbstractRIBTestSetup {
                 neighborAddress.getIpv4AddressNoZone(), getRib());
         peer.instantiateServiceInstance(null, null);
         final YangInstanceIdentifier base = getRib().getYangRibId().node(LocRib.QNAME)
-                .node(Tables.QNAME).node(RibSupportUtils.toYangTablesKey(KEY));
+                .node(Tables.QNAME).node(NodeIdentifierWithPredicates.of(Tables.QNAME, Map.of(
+                    RIBQNames.AFI_QNAME, Ipv4AddressFamily.QNAME,
+                    RIBQNames.SAFI_QNAME, UnicastSubsequentAddressFamily.QNAME)));
         peer.onDataTreeChanged(ipv4Input(base, ModificationType.WRITE, first, second, third));
         assertEquals(3, routes.size());
 
@@ -194,14 +194,20 @@ public class PeerTest extends AbstractRIBTestSetup {
         classic.onMessage(session, new UpdateBuilder()
             .setAttributes(new AttributesBuilder()
                 .addAugmentation(new AttributesUnreachBuilder()
-                    .setMpUnreachNlri(new MpUnreachNlriBuilder().setAfi(IPV4_AFI).setSafi(SAFI).build())
+                    .setMpUnreachNlri(new MpUnreachNlriBuilder()
+                        .setAfi(Ipv4AddressFamily.VALUE)
+                        .setSafi(UnicastSubsequentAddressFamily.VALUE)
+                        .build())
                     .build())
                 .build())
             .build());
-        classic.onMessage(session, new RouteRefreshBuilder().setAfi(IPV4_AFI).setSafi(SAFI).build());
+        classic.onMessage(session, new RouteRefreshBuilder()
+            .setAfi(Ipv4AddressFamily.VALUE)
+            .setSafi(UnicastSubsequentAddressFamily.VALUE)
+            .build());
         classic.onMessage(session, new RouteRefreshBuilder()
                 .setAfi(Ipv6AddressFamily.VALUE)
-                .setSafi(SAFI).build());
+                .setSafi(UnicastSubsequentAddressFamily.VALUE).build());
         assertEquals(2, routes.size());
         classic.releaseConnection();
     }