Bump upstreams to 2022.09
[bgpcep.git] / bgp / rib-impl / src / test / java / org / opendaylight / protocol / bgp / rib / impl / SynchronizationTest.java
index d7af3f5a75b3fdbd7c0a2829424ad7e8bd926116..353d79fa0aab8d59e0209c42e7b3b56044833ba7 100644 (file)
@@ -8,35 +8,34 @@
 package org.opendaylight.protocol.bgp.rib.impl;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
+import java.util.List;
 import java.util.Set;
 import org.junit.Before;
 import org.junit.Test;
-import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
-import org.opendaylight.protocol.bgp.rib.spi.BGPSession;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.LinkstateAddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.LinkstateSubsequentAddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.Update;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.UpdateBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.update.NlriBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.update.PathAttributesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.PathAttributes1;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.PathAttributes1Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.PathAttributes2;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.update.path.attributes.MpReachNlriBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv6AddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.UnicastSubsequentAddressFamily;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.LinkstateAddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.LinkstateSubsequentAddressFamily;
+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.UpdateBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.AttributesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.update.message.NlriBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.AttributesReachBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.attributes.reach.MpReachNlriBuilder;
+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.Ipv6AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.UnicastSubsequentAddressFamily;
 
 public class SynchronizationTest {
 
+    private final TablesKey ipv4
+            = new TablesKey(Ipv4AddressFamily.VALUE, UnicastSubsequentAddressFamily.VALUE);
+    private final TablesKey linkstate
+            = new TablesKey(LinkstateAddressFamily.VALUE, LinkstateSubsequentAddressFamily.VALUE);
+
     private BGPSynchronization bs;
 
     private SimpleSessionListener listener;
@@ -51,88 +50,64 @@ public class SynchronizationTest {
 
     @Before
     public void setUp() {
-        this.listener = new SimpleSessionListener();
-        this.ipv4m = new UpdateBuilder().setNlri(new NlriBuilder().setNlri(Lists.newArrayList(new Ipv4Prefix("1.1.1.1/32"))).build()).build();
-
-        MpReachNlriBuilder mpBuilder = new MpReachNlriBuilder();
-        mpBuilder.setAfi(Ipv6AddressFamily.class);
-        mpBuilder.setSafi(UnicastSubsequentAddressFamily.class);
-
-        PathAttributesBuilder paBuilder = new PathAttributesBuilder().addAugmentation(PathAttributes1.class,
-                new PathAttributes1Builder().setMpReachNlri(mpBuilder.build()).build());
-
-        this.ipv6m = new UpdateBuilder().setPathAttributes(paBuilder.build()).build();
-
-        mpBuilder = new MpReachNlriBuilder();
-        mpBuilder.setAfi(LinkstateAddressFamily.class);
-        mpBuilder.setSafi(LinkstateSubsequentAddressFamily.class);
-
-        paBuilder = new PathAttributesBuilder().addAugmentation(PathAttributes1.class, new PathAttributes1Builder().setMpReachNlri(
-                mpBuilder.build()).build());
+        listener = new SimpleSessionListener();
+        ipv4m = new UpdateBuilder()
+                .setNlri(List.of(new NlriBuilder().setPrefix(new Ipv4Prefix("1.1.1.1/32")).build()))
+                .build();
 
-        this.lsm = new UpdateBuilder().setPathAttributes(paBuilder.build()).build();
+        MpReachNlriBuilder mpBuilder = new MpReachNlriBuilder()
+            .setAfi(Ipv6AddressFamily.VALUE)
+            .setSafi(UnicastSubsequentAddressFamily.VALUE);
 
-        this.eorm = new UpdateBuilder().build();
+        AttributesBuilder paBuilder = new AttributesBuilder()
+                .addAugmentation(new AttributesReachBuilder().setMpReachNlri(mpBuilder.build()).build());
 
-        final Set<TablesKey> types = Sets.newHashSet();
-        types.add(new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class));
-        types.add(new TablesKey(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class));
+        ipv6m = new UpdateBuilder().setAttributes(paBuilder.build()).build();
 
-        this.bs = new BGPSynchronization(new BGPSession() {
+        mpBuilder = new MpReachNlriBuilder()
+            .setAfi(LinkstateAddressFamily.VALUE)
+            .setSafi(LinkstateSubsequentAddressFamily.VALUE);
 
-            @Override
-            public void close() {
-            }
+        paBuilder = new AttributesBuilder()
+                .addAugmentation(new AttributesReachBuilder().setMpReachNlri(mpBuilder.build()).build());
 
-            @Override
-            public Set<BgpTableType> getAdvertisedTableTypes() {
-                final Set<BgpTableType> types = Sets.newHashSet();
-                types.add(new BgpTableTypeImpl(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class));
-                types.add(new BgpTableTypeImpl(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class));
-                return types;
-            }
+        lsm = new UpdateBuilder().setAttributes(paBuilder.build()).build();
 
-            @Override
-            public Ipv4Address getBgpId() {
-                return new Ipv4Address("127.0.0.1");
-            }
+        eorm = new UpdateBuilder().build();
 
-            @Override
-            public AsNumber getAsNumber() {
-                return new AsNumber(30L);
-            }
-        }, this.listener, types);
+        bs = new BGPSynchronization(listener, Set.of(ipv4, linkstate));
     }
 
     @Test
     public void testSynchronize() {
         // simulate sync
-        this.bs.updReceived(this.ipv6m);
-        this.bs.updReceived(this.ipv4m);
-        this.bs.updReceived(this.lsm);
-        this.bs.kaReceived(); // nothing yet
-        this.bs.updReceived(this.ipv4m);
-        this.bs.kaReceived(); // linkstate
-        assertEquals(1, this.listener.getListMsg().size());
-        assertEquals(LinkstateAddressFamily.class, ((Update) this.listener.getListMsg().get(0)).getPathAttributes().getAugmentation(
-                PathAttributes2.class).getMpUnreachNlri().getAfi());
-        this.bs.kaReceived(); // ipv4 sync
-        assertEquals(2, this.listener.getListMsg().size());
+        bs.updReceived(ipv6m);
+        bs.updReceived(ipv4m);
+        bs.updReceived(lsm);
+        bs.kaReceived(); // nothing yet
+        assertFalse(bs.syncStorage.get(linkstate).getEor());
+        assertFalse(bs.syncStorage.get(ipv4).getEor());
+        bs.updReceived(ipv4m);
+        bs.kaReceived(); // linkstate
+        assertTrue(bs.syncStorage.get(linkstate).getEor());
+        bs.kaReceived(); // ipv4 sync
+        assertTrue(bs.syncStorage.get(ipv4).getEor());
     }
 
     @Test
     public void testSynchronizeWithEOR() {
-        this.bs.updReceived(this.ipv4m);
-        this.bs.updReceived(this.lsm);
+        bs.updReceived(ipv4m);
+        bs.updReceived(lsm);
         // Ipv4 Unicast synchronized by EOR message
-        this.bs.updReceived(this.eorm);
+        assertFalse(bs.syncStorage.get(ipv4).getEor());
+        bs.updReceived(eorm);
+        assertTrue(bs.syncStorage.get(ipv4).getEor());
         // Linkstate not synchronized yet
-        this.bs.kaReceived();
+        assertFalse(bs.syncStorage.get(linkstate).getEor());
+        bs.kaReceived();
         // no message sent by BGPSychchronization
-        assertEquals(0, this.listener.getListMsg().size());
-        this.bs.kaReceived();
-        assertEquals(1, this.listener.getListMsg().size());
-        assertEquals(LinkstateAddressFamily.class, ((Update) this.listener.getListMsg().get(0)).getPathAttributes().getAugmentation(
-                PathAttributes2.class).getMpUnreachNlri().getAfi());
+        assertEquals(0, listener.getListMsg().size());
+        bs.kaReceived();
+        assertTrue(bs.syncStorage.get(linkstate).getEor());
     }
 }