X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=bgp%2Frib-impl%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fprotocol%2Fbgp%2Frib%2Fimpl%2FParserToSalTest.java;h=2597f8bbd1d2e184b50b698043f6eef8bf7b66d0;hb=8896ea0a68188dba41c89d23be96ccc15e60c546;hp=67e9c04ba4ce745c94a7218ef0976476058b9f2e;hpb=f61f81300cab3c489f0f5925c93f94592019d9de;p=bgpcep.git diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/ParserToSalTest.java b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/ParserToSalTest.java old mode 100755 new mode 100644 index 67e9c04ba4..2597f8bbd1 --- a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/ParserToSalTest.java +++ b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/ParserToSalTest.java @@ -8,54 +8,53 @@ package org.opendaylight.protocol.bgp.rib.impl; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyInt; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Mockito.doReturn; import static org.opendaylight.protocol.bgp.rib.impl.AbstractAddPathTest.AS_NUMBER; import static org.opendaylight.protocol.bgp.rib.impl.AbstractAddPathTest.BGP_ID; import static org.opendaylight.protocol.util.CheckUtil.readDataOperational; import com.google.common.collect.Collections2; -import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.eventbus.EventBus; import io.netty.util.concurrent.GlobalEventExecutor; import java.net.InetSocketAddress; import java.util.Collection; -import java.util.Collections; import java.util.List; -import org.junit.After; +import java.util.Map; +import java.util.ServiceLoader; +import java.util.concurrent.ExecutionException; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.mockito.Mock; -import org.mockito.Mockito; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy; +import org.opendaylight.mdsal.binding.dom.adapter.CurrentAdapterSerializer; import org.opendaylight.protocol.bgp.inet.RIBActivator; import org.opendaylight.protocol.bgp.mode.impl.base.BasePathSelectionModeFactory; import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl; -import org.opendaylight.protocol.bgp.parser.spi.pojo.ServiceLoaderBGPExtensionProviderContext; +import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionConsumerContext; import org.opendaylight.protocol.bgp.rib.impl.spi.BGPDispatcher; import org.opendaylight.protocol.bgp.rib.mock.BGPMock; -import org.opendaylight.protocol.bgp.rib.spi.AbstractRIBExtensionProviderActivator; +import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderActivator; import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderContext; import org.opendaylight.protocol.bgp.rib.spi.SimpleRIBExtensionProviderContext; import org.opendaylight.protocol.bgp.util.HexDumpBGPFileParser; import org.opendaylight.protocol.concepts.KeyMapping; -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.Ipv4Address; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.LinkstateAddressFamily; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.LinkstateSubsequentAddressFamily; +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.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.multiprotocol.rev180329.BgpTableType; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.BgpRib; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.PeerRole; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.RibId; 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.Ipv4AddressFamily; -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.Ipv4AddressFamily; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.UnicastSubsequentAddressFamily; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -64,81 +63,69 @@ public class ParserToSalTest extends DefaultRibPoliciesMockTest { private static final String TEST_RIB_ID = "testRib"; private static final TablesKey TABLE_KEY - = new TablesKey(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class); + = new TablesKey(LinkstateAddressFamily.VALUE, LinkstateSubsequentAddressFamily.VALUE); private static final InstanceIdentifier BGP_IID = InstanceIdentifier.create(BgpRib.class); + private final IpAddressNoZone localAddress = new IpAddressNoZone(new Ipv4AddressNoZone("127.0.0.1")); private BGPMock mock; - private AbstractRIBExtensionProviderActivator baseact, lsact; - private RIBExtensionProviderContext ext1, ext2; - private final IpAddress localAddress = new IpAddress(new Ipv4Address("127.0.0.1")); - + private final RIBExtensionProviderActivator baseact = new RIBActivator(); + private final RIBExtensionProviderActivator lsact = new org.opendaylight.protocol.bgp.linkstate.impl.RIBActivator(); + private final RIBExtensionProviderContext ext1 = new SimpleRIBExtensionProviderContext(); + private final RIBExtensionProviderContext ext2 = new SimpleRIBExtensionProviderContext(); @Mock private BGPDispatcher dispatcher; - private CodecsRegistryImpl codecsRegistry; + private ConstantCodecsRegistry codecsRegistry; + @Override @Before public void setUp() throws Exception { super.setUp(); final String hexMessages = "/bgp_hex.txt"; final List bgpMessages = HexDumpBGPFileParser .parseMessages(ParserToSalTest.class.getResourceAsStream(hexMessages)); - this.mock = new BGPMock(new EventBus("test"), ServiceLoaderBGPExtensionProviderContext - .getSingletonInstance().getMessageRegistry(), Lists.newArrayList(fixMessages(bgpMessages))); + mock = new BGPMock(new EventBus("test"), + ServiceLoader.load(BGPExtensionConsumerContext.class).findFirst().orElseThrow().getMessageRegistry(), + Lists.newArrayList(fixMessages(bgpMessages))); - Mockito.doReturn(GlobalEventExecutor.INSTANCE.newSucceededFuture(null)).when(this.dispatcher) + doReturn(GlobalEventExecutor.INSTANCE.newSucceededFuture(null)).when(dispatcher) .createReconnectingClient(any(InetSocketAddress.class), any(InetSocketAddress.class), anyInt(), any(KeyMapping.class)); - this.ext1 = new SimpleRIBExtensionProviderContext(); - this.ext2 = new SimpleRIBExtensionProviderContext(); - this.baseact = new RIBActivator(); - this.lsact = new org.opendaylight.protocol.bgp.linkstate.impl.RIBActivator(); - - this.baseact.startRIBExtensionProvider(this.ext1, this.mappingService); - this.lsact.startRIBExtensionProvider(this.ext2, this.mappingService); - this.codecsRegistry = CodecsRegistryImpl.create(this.bindingCodecTreeFactory, - GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy()); - } - - @After - public void tearDown() { - this.lsact.close(); - this.baseact.close(); + final CurrentAdapterSerializer serializer = mappingService.currentSerializer(); + baseact.startRIBExtensionProvider(ext1, serializer); + lsact.startRIBExtensionProvider(ext2, serializer); + codecsRegistry = new ConstantCodecsRegistry(serializer); } @Test - public void testWithLinkstate() throws ReadFailedException { - final List tables = ImmutableList.of(new BgpTableTypeImpl(LinkstateAddressFamily.class, - LinkstateSubsequentAddressFamily.class)); + public void testWithLinkstate() throws InterruptedException, ExecutionException { + final List tables = List.of(new BgpTableTypeImpl(LinkstateAddressFamily.VALUE, + LinkstateSubsequentAddressFamily.VALUE)); - final RIBImpl rib = new RIBImpl(this.tableRegistry, new RibId(TEST_RIB_ID), AS_NUMBER, BGP_ID, this.ext2, - this.dispatcher, this.codecsRegistry, getDomBroker(), getDataBroker(), this.policies, - tables, Collections.singletonMap(TABLE_KEY, BasePathSelectionModeFactory - .createBestPathSelectionStrategy())); + final RIBImpl rib = new RIBImpl(tableRegistry, new RibId(TEST_RIB_ID), AS_NUMBER, BGP_ID, ext2, + dispatcher, codecsRegistry, getDomBroker(), policies, + tables, Map.of(TABLE_KEY, BasePathSelectionModeFactory.createBestPathSelectionStrategy())); rib.instantiateServiceInstance(); assertTablesExists(tables); - rib.onGlobalContextUpdated(this.schemaService.getGlobalContext()); - final BGPPeer peer = new BGPPeer(this.tableRegistry, this.localAddress, rib, PeerRole.Ibgp, null, - Collections.emptySet(), Collections.emptySet()); + final BGPPeer peer = AbstractAddPathTest.configurePeer(tableRegistry, + localAddress.getIpv4AddressNoZone(), rib, null, PeerRole.Ibgp, new StrictBGPPeerRegistry()); peer.instantiateServiceInstance(); - final ListenerRegistration reg = this.mock.registerUpdateListener(peer); + final ListenerRegistration reg = mock.registerUpdateListener(peer); reg.close(); } @Test - public void testWithoutLinkstate() throws ReadFailedException { - final List tables = ImmutableList.of(new BgpTableTypeImpl(Ipv4AddressFamily.class, - UnicastSubsequentAddressFamily.class)); - final RIBImpl rib = new RIBImpl(this.tableRegistry, new RibId(TEST_RIB_ID), AS_NUMBER, BGP_ID, this.ext1, - this.dispatcher, this.codecsRegistry, getDomBroker(), getDataBroker(), this.policies, - tables, Collections.singletonMap(TABLE_KEY, - BasePathSelectionModeFactory.createBestPathSelectionStrategy())); + public void testWithoutLinkstate() throws InterruptedException, ExecutionException { + final List tables = List.of(new BgpTableTypeImpl(Ipv4AddressFamily.VALUE, + UnicastSubsequentAddressFamily.VALUE)); + final RIBImpl rib = new RIBImpl(tableRegistry, new RibId(TEST_RIB_ID), AS_NUMBER, BGP_ID, ext1, + dispatcher, codecsRegistry, getDomBroker(), policies, + tables, Map.of(TABLE_KEY, BasePathSelectionModeFactory.createBestPathSelectionStrategy())); rib.instantiateServiceInstance(); - rib.onGlobalContextUpdated(this.schemaService.getGlobalContext()); assertTablesExists(tables); - final BGPPeer peer = new BGPPeer(this.tableRegistry, this.localAddress, rib, PeerRole.Ibgp, null, - Collections.emptySet(), Collections.emptySet()); + final BGPPeer peer = AbstractAddPathTest.configurePeer(tableRegistry, + localAddress.getIpv4AddressNoZone(), rib, null, PeerRole.Ibgp, new StrictBGPPeerRegistry()); peer.instantiateServiceInstance(); - final ListenerRegistration reg = this.mock.registerUpdateListener(peer); + final ListenerRegistration reg = mock.registerUpdateListener(peer); reg.close(); } @@ -152,17 +139,18 @@ public class ParserToSalTest extends DefaultRibPoliciesMockTest { }); } - private void assertTablesExists(final List expectedTables) throws ReadFailedException { + private void assertTablesExists(final List expectedTables) throws InterruptedException, + ExecutionException { readDataOperational(getDataBroker(), BGP_IID, bgpRib -> { - final List tables = bgpRib.getRib().get(0).getLocRib().getTables(); - assertFalse(tables.isEmpty()); + final var tables = bgpRib.nonnullRib().values().iterator().next().getLocRib().getTables(); + assertNotNull(tables); for (final BgpTableType tableType : expectedTables) { boolean found = false; - for (final Tables table : tables) { + for (final Tables table : tables.values()) { if (table.getAfi().equals(tableType.getAfi()) && table.getSafi().equals(tableType.getSafi())) { found = true; - assertEquals(Boolean.valueOf(true), table.getAttributes().isUptodate()); + assertEquals(Boolean.TRUE, table.getAttributes().getUptodate()); } } assertTrue(found);