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%2FAbstractRIBTestSetup.java;h=41eed3acdb9006488857c247abf0e219c4f6e25c;hb=2d24365bfd849bd565e52ff5abf628896ddc2072;hp=a41dda02a5ca4665e410be66aacac11d616524b1;hpb=490da953ae4393f65d7ff7a633dcebdda175bf71;p=bgpcep.git diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/AbstractRIBTestSetup.java b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/AbstractRIBTestSetup.java index a41dda02a5..41eed3acdb 100644 --- a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/AbstractRIBTestSetup.java +++ b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/AbstractRIBTestSetup.java @@ -18,19 +18,15 @@ 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.After; import org.junit.Before; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.mdsal.binding.api.ReadTransaction; -import org.opendaylight.mdsal.binding.api.TransactionChain; -import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.binding.dom.adapter.CurrentAdapterSerializer; import org.opendaylight.mdsal.common.api.CommitInfo; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; @@ -40,6 +36,7 @@ import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import org.opendaylight.mdsal.dom.api.DOMTransactionChain; +import org.opendaylight.mdsal.dom.api.DOMTransactionChainListener; import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService; import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider; import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration; @@ -56,16 +53,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mult 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.RibId; 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.AddressFamily; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.BgpId; 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.SubsequentAddressFamily; 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.util.concurrent.FluentFutures; -import org.opendaylight.yangtools.yang.binding.DataObject; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.Uint32; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -74,35 +66,25 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; -import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode; -import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType; +import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder; +import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidate; +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 Class IPV4_AFI = Ipv4AddressFamily.class; - private static final Class IPV6_AFI = Ipv6AddressFamily.class; - static final Class SAFI = UnicastSubsequentAddressFamily.class; - 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 RIBActivator a1; + private final RIBActivator a1 = new RIBActivator(); @Mock private BGPDispatcher dispatcher; @Mock private DOMDataBroker dom; - @Mock - private TransactionChain chain; - - @Mock - private WriteTransaction transWrite; - @Mock private DOMTransactionChain domChain; @@ -128,63 +110,52 @@ public class AbstractRIBTestSetup extends DefaultRibPoliciesMockTest { public void mockRib() throws Exception { final RIBExtensionProviderContext context = new SimpleRIBExtensionProviderContext(); final List 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(); - this.a1 = new RIBActivator(); - this.a1.startRIBExtensionProvider(context, serializer); + a1.startRIBExtensionProvider(context, serializer); mockedMethods(); - doReturn(mock(ClusterSingletonServiceRegistration.class)).when(this.clusterSingletonServiceProvider) + doReturn(mock(ClusterSingletonServiceRegistration.class)).when(clusterSingletonServiceProvider) .registerClusterSingletonService(any(ClusterSingletonService.class)); - this.rib = new RIBImpl(this.tableRegistry, new RibId("test"), new AsNumber(Uint32.valueOf(5)), RIB_ID, context, - this.dispatcher, new ConstantCodecsRegistry(serializer), this.dom, getDataBroker(), this.policies, - localTables, Collections.singletonMap(KEY, + rib = new RIBImpl(tableRegistry, new RibId("test"), new AsNumber(Uint32.valueOf(5)), RIB_ID, context, + dispatcher, new ConstantCodecsRegistry(serializer), dom, policies, localTables, + Map.of(new TablesKey(Ipv4AddressFamily.VALUE, UnicastSubsequentAddressFamily.VALUE), BasePathSelectionModeFactory.createBestPathSelectionStrategy())); } - @SuppressWarnings("unchecked") private void mockedMethods() throws Exception { MockitoAnnotations.initMocks(this); - final ReadTransaction readTx = mock(ReadTransaction.class); - doReturn(new TestListenerRegistration()).when(this.service) + doReturn(new TestListenerRegistration()).when(service) .registerDataTreeChangeListener(any(DOMDataTreeIdentifier.class), any(ClusteredDOMDataTreeChangeListener.class)); - doNothing().when(readTx).close(); - doNothing().when(this.domTransWrite).put(eq(LogicalDatastoreType.OPERATIONAL), + doNothing().when(domTransWrite).put(eq(LogicalDatastoreType.OPERATIONAL), any(YangInstanceIdentifier.class), any(NormalizedNode.class)); - doNothing().when(this.domTransWrite).delete(eq(LogicalDatastoreType.OPERATIONAL), + doNothing().when(domTransWrite).delete(eq(LogicalDatastoreType.OPERATIONAL), any(YangInstanceIdentifier.class)); - doNothing().when(this.domTransWrite).merge(eq(LogicalDatastoreType.OPERATIONAL), + doNothing().when(domTransWrite).merge(eq(LogicalDatastoreType.OPERATIONAL), any(YangInstanceIdentifier.class), any(NormalizedNode.class)); - doReturn(FluentFutures.immediateFluentFuture(Optional.empty())).when(readTx) - .read(eq(LogicalDatastoreType.OPERATIONAL), any(InstanceIdentifier.class)); - doNothing().when(this.domChain).close(); - doReturn(this.domTransWrite).when(this.domChain).newWriteOnlyTransaction(); + doNothing().when(domChain).close(); + doReturn(domTransWrite).when(domChain).newWriteOnlyTransaction(); doNothing().when(getTransaction()).put(eq(LogicalDatastoreType.OPERATIONAL), eq(YangInstanceIdentifier.of(BgpRib.QNAME)), any(NormalizedNode.class)); - doReturn(ImmutableClassToInstanceMap.of(DOMDataTreeChangeService.class, this.service)).when(this.dom) + doReturn(ImmutableClassToInstanceMap.of(DOMDataTreeChangeService.class, service)).when(dom) .getExtensions(); - doReturn(this.domChain).when(this.dom).createMergingTransactionChain(any(AbstractPeer.class)); - doReturn(this.transWrite).when(this.chain).newWriteOnlyTransaction(); - doReturn(Optional.empty()).when(this.future).get(); - doReturn(this.future).when(this.domTransWrite).commit(); - doNothing().when(this.future).addListener(any(Runnable.class), any(Executor.class)); - doNothing().when(this.transWrite).mergeParentStructurePut(eq(LogicalDatastoreType.OPERATIONAL), - any(InstanceIdentifier.class), any(DataObject.class)); - doNothing().when(this.transWrite).put(eq(LogicalDatastoreType.OPERATIONAL), - any(InstanceIdentifier.class), any(DataObject.class)); - doReturn(this.future).when(this.transWrite).commit(); + doReturn(domChain).when(dom).createMergingTransactionChain(any(DOMTransactionChainListener.class)); + doReturn(Optional.empty()).when(future).get(); + doReturn(future).when(domTransWrite).commit(); + doCallRealMethod().when(future).addCallback(any(), any()); + doNothing().when(future).addListener(any(Runnable.class), any(Executor.class)); } - public Collection ipv4Input(final YangInstanceIdentifier target, + public List ipv4Input(final YangInstanceIdentifier target, final ModificationType type, final Ipv4Prefix... prefix) { - final Collection col = new HashSet<>(); + final List col = new ArrayList<>(); final DataTreeCandidate candidate = mock(DataTreeCandidate.class); final DataTreeCandidateNode rootNode = mock(DataTreeCandidateNode.class); doReturn(rootNode).when(candidate).getRootNode(); - doReturn(type).when(rootNode).getModificationType(); + doReturn(type).when(rootNode).modificationType(); doCallRealMethod().when(rootNode).toString(); doReturn(target).when(candidate).getRootPath(); doCallRealMethod().when(candidate).toString(); @@ -199,12 +170,12 @@ public class AbstractRIBTestSetup extends DefaultRibPoliciesMockTest { .withNodeIdentifier(new NodeIdentifier(PREFIX_QNAME)).withValue(p).build()); final DataTreeCandidateNode child = mock(DataTreeCandidateNode.class); - doReturn(createIdentifier(p)).when(child).getIdentifier(); - doReturn(java.util.Optional.of(b.build())).when(child).getDataAfter(); - doReturn(type).when(child).getModificationType(); + doReturn(createIdentifier(p)).when(child).name(); + doReturn(b.build()).when(child).dataAfter(); + doReturn(type).when(child).modificationType(); children.add(child); } - doReturn(children).when(rootNode).getChildNodes(); + doReturn(children).when(rootNode).childNodes(); col.add(candidate); return col; } @@ -216,19 +187,14 @@ public class AbstractRIBTestSetup extends DefaultRibPoliciesMockTest { } public RIBImpl getRib() { - return this.rib; + return rib; } public DOMDataTreeWriteTransaction getTransaction() { - return this.domTransWrite; - } - - @After - public void tearDown() { - this.a1.close(); + return domTransWrite; } - private class TestListenerRegistration implements ListenerRegistration { + private static final class TestListenerRegistration implements ListenerRegistration { @Override public EventListener getInstance() { return null;