Update MRI projects for Aluminium
[bgpcep.git] / bgp / rib-impl / src / test / java / org / opendaylight / protocol / bgp / rib / impl / GracefulRestartTest.java
index 3a47d6215e2d43258e2bb584e483eaf3d2cc65e4..73a6ba9d41dcbe03486d1e4e4c09f347c87e3b71 100644 (file)
@@ -28,8 +28,8 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
-import java.util.concurrent.ExecutionException;
 import java.util.stream.Collectors;
 import org.junit.After;
 import org.junit.Before;
@@ -39,19 +39,19 @@ import org.opendaylight.protocol.bgp.mode.api.PathSelectionMode;
 import org.opendaylight.protocol.bgp.mode.impl.add.all.paths.AllPathSelection;
 import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
 import org.opendaylight.protocol.bgp.rib.impl.config.BgpPeer;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+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.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
+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;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6AddressNoZone;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev180329.bgp.rib.rib.loc.rib.tables.routes.Ipv4RoutesCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev180329.bgp.rib.rib.loc.rib.tables.routes.Ipv6RoutesCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.Open;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.OpenBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.ProtocolVersion;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.Update;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.BgpParameters;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.Open;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.OpenBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.ProtocolVersion;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.Update;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.BgpParameters;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.BgpTableType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.update.attributes.MpReachNlri;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.BgpRib;
@@ -62,12 +62,14 @@ 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.bgp.rib.rib.LocRib;
 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.BgpOrigin;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.Ipv4AddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.Ipv6AddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.UnicastSubsequentAddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.BgpOrigin;
+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.Ipv6AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.UnicastSubsequentAddressFamily;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.Notification;
+import org.opendaylight.yangtools.yang.common.Uint16;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class GracefulRestartTest extends AbstractAddPathTest {
 
@@ -77,13 +79,13 @@ public class GracefulRestartTest extends AbstractAddPathTest {
     private final Set<TablesKey> gracefulAfiSafiAdvertised = new HashSet<>();
     private RIBImpl ribImpl;
     private Channel serverChannel;
-    private SimpleSessionListener listener = new SimpleSessionListener();
+    private final SimpleSessionListener listener = new SimpleSessionListener();
     private final BgpParameters parameters = createParameter(false, true, Collections.singletonMap(TABLES_KEY, true));
     private static final int DEFERRAL_TIMER = 5;
     private static final RibId RIBID = new RibId("test-rib");
-    private final Ipv4Prefix PREFIX2 = new Ipv4Prefix("2.2.2.2/32");
-    private final Ipv6Prefix PREFIX3 = new Ipv6Prefix("dead:beef::/64");
-    private final Ipv6Address IPV6_NEXT_HOP = new Ipv6Address("dead:beef::1");
+    private static final Ipv4Prefix PREFIX2 = new Ipv4Prefix("2.2.2.2/32");
+    private static final Ipv6Prefix PREFIX3 = new Ipv6Prefix("dead:beef::/64");
+    private static final Ipv6AddressNoZone IPV6_NEXT_HOP = new Ipv6AddressNoZone("dead:beef::1");
     private static final TablesKey IPV6_TABLES_KEY = new TablesKey(Ipv6AddressFamily.class,
             UnicastSubsequentAddressFamily.class);
 
@@ -111,8 +113,8 @@ public class GracefulRestartTest extends AbstractAddPathTest {
                 getDomBroker(), getDataBroker(), this.policies, tableTypes, pathTables);
 
         this.ribImpl.instantiateServiceInstance();
-        this.ribImpl.onGlobalContextUpdated(this.schemaService.getGlobalContext());
-        final ChannelFuture channelFuture = this.serverDispatcher.createServer(new InetSocketAddress(RIB_ID, PORT));
+        final ChannelFuture channelFuture = this.serverDispatcher.createServer(
+            new InetSocketAddress(RIB_ID, PORT.toJava()));
         waitFutureSuccess(channelFuture);
         this.serverChannel = channelFuture.channel();
 
@@ -121,15 +123,17 @@ public class GracefulRestartTest extends AbstractAddPathTest {
         afiSafiAdvertised.add(IPV6_TABLES_KEY);
         final BgpPeer bgpPeer = Mockito.mock(BgpPeer.class);
         Mockito.doReturn(GRACEFUL_RESTART_TIME).when(bgpPeer).getGracefulRestartTimer();
+        Mockito.doReturn(Optional.empty()).when(bgpPeer).getErrorHandling();
         Mockito.doReturn(createParameter(false, true, Collections.singletonMap(TABLES_KEY, false))
                 .getOptionalCapabilities()).when(bgpPeer).getBgpFixedCapabilities();
         this.peer = configurePeer(this.tableRegistry, PEER1, this.ribImpl, parameters, PeerRole.Ibgp,
-                this.serverRegistry, afiSafiAdvertised, gracefulAfiSafiAdvertised, bgpPeer);
+                this.serverRegistry, afiSafiAdvertised, gracefulAfiSafiAdvertised, Collections.emptyMap(), bgpPeer);
         this.session = createPeerSession(PEER1, parameters, this.listener);
     }
 
+    @Override
     @After
-    public void tearDown() throws ExecutionException, InterruptedException {
+    public void tearDown() throws Exception {
         waitFutureSuccess(this.serverChannel.close());
         this.session.close();
         super.tearDown();
@@ -143,6 +147,7 @@ public class GracefulRestartTest extends AbstractAddPathTest {
     @Test
     public void resetConnectionOnOpenTest() {
 
+        checkReceivedMessages(this.listener, 2);
         final Open open = createClassicOpen(true);
         this.session.writeAndFlush(open);
         checkIdleState(this.peer);
@@ -341,16 +346,16 @@ public class GracefulRestartTest extends AbstractAddPathTest {
         org.opendaylight.protocol.util.CheckUtil.checkReceivedMessages(this.listener, 6);
         // verify sending of Ipv4 update with route, Ipv4 EOT and Ipv6 EOT; order can vary based on ODTC order
         final List<Notification> subList = this.listener.getListMsg().subList(3, 6);
-        int EOTCount = 0;
+        int eotCount = 0;
         int routeUpdateCount = 0;
         for (Notification message : subList) {
             if (BgpPeerUtil.isEndOfRib((Update) message)) {
-                EOTCount++;
+                eotCount++;
             } else {
                 routeUpdateCount++;
             }
         }
-        assertEquals(2, EOTCount);
+        assertEquals(2, eotCount);
         assertEquals(1, routeUpdateCount);
     }
 
@@ -358,8 +363,8 @@ public class GracefulRestartTest extends AbstractAddPathTest {
         readDataOperational(getDataBroker(), IPV4_IID, table -> {
             int size = 0;
             final Ipv4RoutesCase routesCase = (Ipv4RoutesCase) table.getRoutes();
-            if (routesCase != null && routesCase.getIpv4Routes() != null &&
-                    routesCase.getIpv4Routes().getIpv4Route() != null) {
+            if (routesCase != null && routesCase.getIpv4Routes() != null
+                    && routesCase.getIpv4Routes().getIpv4Route() != null) {
                 size = routesCase.getIpv4Routes().getIpv4Route().size();
             }
             assertEquals(expectedRoutesOnDS, size);
@@ -371,8 +376,8 @@ public class GracefulRestartTest extends AbstractAddPathTest {
         readDataOperational(getDataBroker(), IPV6_IID, table -> {
             int size = 0;
             final Ipv6RoutesCase routesCase = (Ipv6RoutesCase) table.getRoutes();
-            if (routesCase != null && routesCase.getIpv6Routes() != null &&
-                    routesCase.getIpv6Routes().getIpv6Route() != null) {
+            if (routesCase != null && routesCase.getIpv6Routes() != null
+                    && routesCase.getIpv6Routes().getIpv6Route() != null) {
                 size = routesCase.getIpv6Routes().getIpv6Route().size();
             }
             assertEquals(expectedRoutesOnDS, size);
@@ -380,12 +385,12 @@ public class GracefulRestartTest extends AbstractAddPathTest {
         });
     }
 
-    private void insertRoutes(List<Ipv4Prefix> ipv4prefixes, List<Ipv6Prefix> ipv6prefixes) {
+    private void insertRoutes(final List<Ipv4Prefix> ipv4prefixes, final List<Ipv6Prefix> ipv6prefixes) {
         insertRoutes(ipv4prefixes, PEER1, ipv6prefixes, IPV6_NEXT_HOP, this.session, BgpOrigin.Igp);
     }
 
-    private void insertRoutes(final List<Ipv4Prefix> ipv4prefixes, final Ipv4Address ipv4NeighborAddress,
-                              final List<Ipv6Prefix> ipv6prefixes, final Ipv6Address ipv6NeighborAddress,
+    private static void insertRoutes(final List<Ipv4Prefix> ipv4prefixes, final Ipv4AddressNoZone ipv4NeighborAddress,
+                              final List<Ipv6Prefix> ipv6prefixes, final Ipv6AddressNoZone ipv6NeighborAddress,
                               final BGPSessionImpl session, final BgpOrigin peerRole) {
         if (ipv4prefixes == null && ipv6prefixes == null) {
             waitFutureSuccess(session.writeAndFlush(BgpPeerUtil.createEndOfRib(TABLES_KEY)));
@@ -394,7 +399,7 @@ public class GracefulRestartTest extends AbstractAddPathTest {
         }
 
         if (ipv4prefixes != null && !ipv4prefixes.isEmpty()) {
-            final MpReachNlri reachIpv4 = PeerUtil.createMpReachNlri(new IpAddress(ipv4NeighborAddress), 0,
+            final MpReachNlri reachIpv4 = PeerUtil.createMpReachNlri(new IpAddressNoZone(ipv4NeighborAddress),
                     ipv4prefixes.stream()
                             .map(IpPrefix::new)
                             .collect(Collectors.toList()));
@@ -403,7 +408,7 @@ public class GracefulRestartTest extends AbstractAddPathTest {
         }
 
         if (ipv6prefixes != null && !ipv4prefixes.isEmpty()) {
-            final MpReachNlri reachIpv6 = PeerUtil.createMpReachNlri(new IpAddress(ipv6NeighborAddress), 0,
+            final MpReachNlri reachIpv6 = PeerUtil.createMpReachNlri(new IpAddressNoZone(ipv6NeighborAddress),
                     ipv6prefixes.stream()
                             .map(IpPrefix::new)
                             .collect(Collectors.toList()));
@@ -412,15 +417,15 @@ public class GracefulRestartTest extends AbstractAddPathTest {
         }
     }
 
-    private static Open createClassicOpen(boolean addGraceful) {
+    private static Open createClassicOpen(final boolean addGraceful) {
         final Map<TablesKey, Boolean> graceful = new HashMap<>();
         if (addGraceful) {
             graceful.put(new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class), true);
         }
         return new OpenBuilder()
-                .setMyAsNumber((int) AS)
-                .setHoldTimer(HOLDTIMER)
-                .setVersion(new ProtocolVersion((short) 4))
+                .setMyAsNumber(Uint16.valueOf(AS))
+                .setHoldTimer(Uint16.valueOf(HOLDTIMER))
+                .setVersion(new ProtocolVersion(Uint8.valueOf(4)))
                 .setBgpParameters(Collections.singletonList(createParameter(false, true, graceful)))
                 .setBgpIdentifier(PEER1)
                 .build();