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%2Fconfig%2FAbstractConfig.java;h=3c9f100f2c10aad455fa79cf7b866375a373ff14;hb=071fa16673a41ef6fdc3b9adaf899489df4d8f4d;hp=0985852752d604ac7137e99f4c4a7ff16e5c03b6;hpb=1441c59233fca7a55c16a121bd75a32ca67776a9;p=bgpcep.git diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/AbstractConfig.java b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/AbstractConfig.java index 0985852752..3c9f100f2c 100644 --- a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/AbstractConfig.java +++ b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/AbstractConfig.java @@ -11,50 +11,47 @@ package org.opendaylight.protocol.bgp.rib.impl.config; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import io.netty.util.concurrent.Future; import java.net.InetSocketAddress; import java.util.Collections; import java.util.concurrent.Executor; -import java.util.concurrent.atomic.LongAdder; import org.junit.Before; import org.mockito.Mock; import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeService; import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain; -import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService; -import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration; -import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier; +import org.opendaylight.mdsal.common.api.CommitInfo; import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer; import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl; -import org.opendaylight.protocol.bgp.rib.impl.spi.AbstractImportPolicy; +import org.opendaylight.protocol.bgp.rib.impl.BGPPeerTrackerImpl; +import org.opendaylight.protocol.bgp.rib.impl.DefaultRibPoliciesMockTest; import org.opendaylight.protocol.bgp.rib.impl.spi.BGPDispatcher; import org.opendaylight.protocol.bgp.rib.impl.spi.BGPPeerRegistry; import org.opendaylight.protocol.bgp.rib.impl.spi.BGPSessionPreferences; -import org.opendaylight.protocol.bgp.rib.impl.spi.BgpDeployer; -import org.opendaylight.protocol.bgp.rib.impl.spi.ImportPolicyPeerTracker; import org.opendaylight.protocol.bgp.rib.impl.spi.RIB; import org.opendaylight.protocol.bgp.rib.impl.spi.RIBSupportContextRegistry; +import org.opendaylight.protocol.bgp.rib.spi.BGPPeerTracker; import org.opendaylight.protocol.bgp.rib.spi.BGPSessionListener; import org.opendaylight.protocol.concepts.KeyMapping; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.BgpRib; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.PeerId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.PeerRole; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.Rib; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.RibId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.bgp.rib.RibKey; -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.BgpId; -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.UnicastSubsequentAddressFamily; +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.Rib; +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.bgp.rib.RibKey; +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.BgpId; +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.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -62,19 +59,16 @@ import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.osgi.framework.ServiceRegistration; -class AbstractConfig { - static final TablesKey TABLES_KEY = new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class); +class AbstractConfig extends DefaultRibPoliciesMockTest { protected static final AsNumber AS = new AsNumber(72L); - protected ClusterSingletonService singletonService; + protected static final AsNumber LOCAL_AS = new AsNumber(73L); + protected static final RibId RIB_ID = new RibId("test"); + static final TablesKey TABLES_KEY = new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class); @Mock protected RIB rib; @Mock - protected ClusterSingletonServiceRegistration singletonServiceRegistration; - @Mock protected BGPTableTypeRegistryConsumer tableTypeRegistry; @Mock - protected BgpDeployer.WriteConfiguration configurationWriter; - @Mock protected DOMTransactionChain domTx; @Mock protected BGPDispatcher dispatcher; @@ -89,69 +83,71 @@ class AbstractConfig { @Mock protected DOMDataWriteTransaction domDW; @Mock - private ImportPolicyPeerTracker importPolicyPeerTracker; + protected PeerGroupConfigLoader peerGroupLoader; @Mock private DOMDataTreeChangeService dataTreeChangeService; - protected static final RibId RIB_ID = new RibId("test"); + private final BGPPeerTracker peerTracker = new BGPPeerTrackerImpl(); @Before public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - Mockito.doAnswer(invocationOnMock -> { - this.singletonService = (ClusterSingletonService) invocationOnMock.getArguments()[0]; - return this.singletonServiceRegistration; - }).when(this.rib).registerClusterSingletonService(any(ClusterSingletonService.class)); - Mockito.doReturn(InstanceIdentifier.create(BgpRib.class).child(org.opendaylight.yang.gen.v1.urn.opendaylight - .params.xml.ns.yang.bgp.rib.rev130925.bgp.rib.Rib.class, new RibKey(RIB_ID))).when(this.rib) + super.setUp(); + doReturn(InstanceIdentifier.create(BgpRib.class).child(org.opendaylight.yang.gen.v1.urn.opendaylight + .params.xml.ns.yang.bgp.rib.rev180329.bgp.rib.Rib.class, new RibKey(RIB_ID))).when(this.rib) .getInstanceIdentifier(); - Mockito.doReturn(this.domTx).when(this.rib).createPeerChain(any(TransactionChainListener.class)); - Mockito.doReturn(AS).when(this.rib).getLocalAs(); - Mockito.doReturn(this.importPolicyPeerTracker).when(this.rib).getImportPolicyPeerTracker(); - Mockito.doNothing().when(this.importPolicyPeerTracker).peerRoleChanged(any(YangInstanceIdentifier.class), any(PeerRole.class)); - Mockito.doReturn(mock(AbstractImportPolicy.class)).when(this.importPolicyPeerTracker).policyFor(any(PeerId.class)); - Mockito.doReturn(mock(RIBSupportContextRegistry.class)).when(this.rib).getRibSupportContext(); - Mockito.doReturn(Collections.emptySet()).when(this.rib).getLocalTablesKeys(); - Mockito.doNothing().when(this.domTx).close(); - Mockito.doReturn(this.domDW).when(this.domTx).newWriteOnlyTransaction(); - Mockito.doNothing().when(this.domDW).put(eq(LogicalDatastoreType.OPERATIONAL), any(YangInstanceIdentifier.class), any(MapEntryNode.class)); - Mockito.doNothing().when(this.domDW).delete(eq(LogicalDatastoreType.OPERATIONAL), any(YangInstanceIdentifier.class)); - Mockito.doNothing().when(this.domDW).merge(eq(LogicalDatastoreType.OPERATIONAL), any(YangInstanceIdentifier.class), any(NormalizedNode.class)); - final CheckedFuture checkedFuture = mock(CheckedFuture.class); - Mockito.doAnswer(invocation -> { + doReturn(this.domTx).when(this.rib).createPeerDOMChain(any(TransactionChainListener.class)); + doAnswer(invocation -> { + final Object[] args = invocation.getArguments(); + return getDataBroker().createTransactionChain((TransactionChainListener) args[0]); + }).when(this.rib).createPeerChain(any(TransactionChainListener.class)); + + doReturn(getDataBroker()).when(this.rib).getDataBroker(); + doReturn(AS).when(this.rib).getLocalAs(); + doReturn(mock(RIBSupportContextRegistry.class)).when(this.rib).getRibSupportContext(); + doReturn(Collections.emptySet()).when(this.rib).getLocalTablesKeys(); + doNothing().when(this.domTx).close(); + doReturn(this.domDW).when(this.domTx).newWriteOnlyTransaction(); + doNothing().when(this.domDW).put(eq(LogicalDatastoreType.OPERATIONAL), + any(YangInstanceIdentifier.class), any(MapEntryNode.class)); + doNothing().when(this.domDW).delete(eq(LogicalDatastoreType.OPERATIONAL), + any(YangInstanceIdentifier.class)); + doNothing().when(this.domDW).merge(eq(LogicalDatastoreType.OPERATIONAL), + any(YangInstanceIdentifier.class), any(NormalizedNode.class)); + final FluentFuture checkedFuture = mock(FluentFuture.class); + doAnswer(invocation -> { final Runnable callback = (Runnable) invocation.getArguments()[0]; callback.run(); return null; }).when(checkedFuture).addListener(Mockito.any(Runnable.class), Mockito.any(Executor.class)); - Mockito.doReturn(checkedFuture).when(this.domDW).submit(); - Mockito.doReturn(null).when(checkedFuture).checkedGet(); - Mockito.doReturn(null).when(checkedFuture).get(); - Mockito.doReturn(true).when(checkedFuture).isDone(); - Mockito.doReturn("checkedFuture").when(checkedFuture).toString(); - Mockito.doAnswer(invocationOnMock -> { - this.singletonService.closeServiceInstance(); - return null; - }).when(this.singletonServiceRegistration).close(); - Mockito.doReturn(YangInstanceIdentifier.of(Rib.QNAME)).when(this.rib).getYangRibId(); - Mockito.doReturn(this.dataTreeChangeService).when(this.rib).getService(); - Mockito.doReturn(this.listener).when(this.dataTreeChangeService).registerDataTreeChangeListener(any(), any()); - Mockito.doReturn(mock(ServiceGroupIdentifier.class)).when(this.rib).getRibIServiceGroupIdentifier(); - Mockito.doReturn(new BgpId("127.0.0.1")).when(this.rib).getBgpIdentifier(); - Mockito.doReturn(true).when(this.future).cancel(true); - Mockito.doReturn(this.future).when(this.dispatcher) - .createReconnectingClient(any(InetSocketAddress.class), anyInt(), any(KeyMapping.class)); - Mockito.doReturn(this.dispatcher).when(this.rib).getDispatcher(); + doReturn(checkedFuture).when(this.domDW).commit(); + doReturn(null).when(checkedFuture).get(); + doReturn(true).when(checkedFuture).isDone(); + doReturn("checkedFuture").when(checkedFuture).toString(); + doReturn(YangInstanceIdentifier.of(Rib.QNAME)).when(this.rib).getYangRibId(); + doReturn(this.dataTreeChangeService).when(this.rib).getService(); + doReturn(this.listener).when(this.dataTreeChangeService).registerDataTreeChangeListener(any(), any()); + doReturn(new BgpId("127.0.0.1")).when(this.rib).getBgpIdentifier(); + doReturn(true).when(this.future).cancel(true); + doReturn(this.future).when(this.dispatcher).createReconnectingClient(any(InetSocketAddress.class), + any(InetSocketAddress.class), anyInt(), any(KeyMapping.class)); + doReturn(this.dispatcher).when(this.rib).getDispatcher(); - Mockito.doReturn(java.util.Optional.of(new BgpTableTypeImpl(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class))) + doReturn(java.util.Optional.of(new BgpTableTypeImpl(Ipv4AddressFamily.class, + UnicastSubsequentAddressFamily.class))) .when(this.tableTypeRegistry).getTableType(any()); - Mockito.doReturn(java.util.Optional.of(TABLES_KEY)).when(this.tableTypeRegistry).getTableKey(any()); - Mockito.doReturn(Collections.singleton(new BgpTableTypeImpl(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class))) + doReturn(java.util.Optional.of(TABLES_KEY)).when(this.tableTypeRegistry).getTableKey(any()); + doReturn(Collections.singleton(new BgpTableTypeImpl(Ipv4AddressFamily.class, + UnicastSubsequentAddressFamily.class))) .when(this.rib).getLocalTables(); - Mockito.doNothing().when(this.configurationWriter).apply(); - Mockito.doNothing().when(this.bgpPeerRegistry).addPeer(any(IpAddress.class), any(BGPSessionListener.class), any(BGPSessionPreferences.class)); - Mockito.doNothing().when(this.bgpPeerRegistry).removePeer(any(IpAddress.class)); - Mockito.doReturn("registry").when(this.bgpPeerRegistry).toString(); - Mockito.doNothing().when(this.listener).close(); - Mockito.doReturn(this.bgpPeerRegistry).when(this.dispatcher).getBGPPeerRegistry(); + doNothing().when(this.bgpPeerRegistry).addPeer(any(IpAddress.class), + any(BGPSessionListener.class), any(BGPSessionPreferences.class)); + doNothing().when(this.bgpPeerRegistry).removePeer(any(IpAddress.class)); + doReturn("registry").when(this.bgpPeerRegistry).toString(); + doNothing().when(this.listener).close(); + doReturn(this.bgpPeerRegistry).when(this.dispatcher).getBGPPeerRegistry(); + doReturn(this.peerTracker).when(this.rib).getPeerTracker(); + doReturn(this.policies).when(this.rib).getRibPolicies(); + doReturn(null).when(this.peerGroupLoader) + .getPeerGroup(any(InstanceIdentifier.class), any(String.class)); } -} +} \ No newline at end of file