From 79aa81188eec10b3176a68e5ee19a66114dd77a6 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 12 Mar 2015 23:32:54 +0100 Subject: [PATCH] BUG-2383: wire DOMDataBroker into RIBImpl We will need DOMDataBroker, so let's be sure to wire it in. Change-Id: I04dafd0e394291c9146c19a0bb88e9cf6410efdc Signed-off-by: Robert Varga Signed-off-by: Dana Kutenicsova --- .../yang/bgp/rib/impl/RIBImplModule.java | 4 +- .../protocol/bgp/rib/impl/RIBImpl.java | 11 ++- .../protocol/bgp/rib/impl/spi/RIB.java | 10 ++ .../src/main/yang/odl-bgp-rib-impl-cfg.yang | 10 ++ .../rib/impl/AbstractRIBImplModuleTest.java | 99 ++++++++++--------- .../bgp/rib/impl/ApplicationPeerTest.java | 6 +- .../topology/provider/ParserToSalTest.java | 2 +- 7 files changed, 89 insertions(+), 53 deletions(-) diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/RIBImplModule.java b/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/RIBImplModule.java index 1500453a0a..821bc5c59a 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/RIBImplModule.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/RIBImplModule.java @@ -51,6 +51,8 @@ public final class RIBImplModule extends org.opendaylight.controller.config.yang @Override public java.lang.AutoCloseable createInstance() { - return new RIBImpl(getRibId(), new AsNumber(getLocalAs()), getBgpRibId(), getExtensionsDependency(), getBgpDispatcherDependency(), getTcpReconnectStrategyDependency(), getSessionReconnectStrategyDependency(), getDataProviderDependency(), getLocalTableDependency()); + return new RIBImpl(getRibId(), new AsNumber(getLocalAs()), getBgpRibId(), getExtensionsDependency(), + getBgpDispatcherDependency(), getTcpReconnectStrategyDependency(), getSessionReconnectStrategyDependency(), + getDataProviderDependency(), getDomDataProviderDependency(), getLocalTableDependency()); } } diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBImpl.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBImpl.java index a68282392e..c2cf319b09 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBImpl.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBImpl.java @@ -32,6 +32,8 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.controller.md.sal.common.api.data.TransactionChain; import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; +import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; +import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain; import org.opendaylight.protocol.bgp.rib.DefaultRibReference; import org.opendaylight.protocol.bgp.rib.impl.spi.AdjRIBsOut; import org.opendaylight.protocol.bgp.rib.impl.spi.AdjRIBsOutRegistration; @@ -118,6 +120,7 @@ public final class RIBImpl extends DefaultRibReference implements AutoCloseable, private final RIBTables tables; private final BlockingQueue peers; private final DataBroker dataBroker; + private final DOMDataBroker domDataBroker; private final Runnable scheduler = new Runnable() { @Override @@ -151,7 +154,7 @@ public final class RIBImpl extends DefaultRibReference implements AutoCloseable, public RIBImpl(final RibId ribId, final AsNumber localAs, final Ipv4Address localBgpId, final RIBExtensionConsumerContext extensions, final BGPDispatcher dispatcher, final ReconnectStrategyFactory tcpStrategyFactory, - final ReconnectStrategyFactory sessionStrategyFactory, final DataBroker dps, final List localTables) { + final ReconnectStrategyFactory sessionStrategyFactory, final DataBroker dps, final DOMDataBroker domDataBroker, final List localTables) { super(InstanceIdentifier.create(BgpRib.class).child(Rib.class, new RibKey(Preconditions.checkNotNull(ribId)))); this.chain = dps.createTransactionChain(this); this.localAs = Preconditions.checkNotNull(localAs); @@ -164,6 +167,7 @@ public final class RIBImpl extends DefaultRibReference implements AutoCloseable, this.tables = new RIBTables(extensions); this.peers = new LinkedBlockingQueue<>(); this.dataBroker = dps; + this.domDataBroker = Preconditions.checkNotNull(domDataBroker); LOG.debug("Instantiating RIB table {} at {}", ribId, getInstanceIdentifier()); @@ -440,4 +444,9 @@ public final class RIBImpl extends DefaultRibReference implements AutoCloseable, } return 0; } + + @Override + public DOMTransactionChain createPeerChain(final TransactionChainListener listener) { + return domDataBroker.createTransactionChain(listener); + } } diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/RIB.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/RIB.java index 882ff6d669..4c09213ab9 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/RIB.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/RIB.java @@ -9,6 +9,8 @@ package org.opendaylight.protocol.bgp.rib.impl.spi; import java.util.Set; import javax.annotation.Nonnull; +import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; +import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain; import org.opendaylight.protocol.bgp.rib.spi.Peer; import org.opendaylight.protocol.framework.ReconnectStrategyFactory; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber; @@ -48,4 +50,12 @@ public interface RIB { AdjRIBsOutRegistration registerRIBsOut(Peer bgpPeer, AdjRIBsOut aro); long getRoutesCount(TablesKey key); + + /** + * Allocate a new transaction chain for use with a peer. + * + * @param listener {@link TransactionChainListener} handling recovery + * @return A new transaction chain. + */ + DOMTransactionChain createPeerChain(TransactionChainListener listener); } diff --git a/bgp/rib-impl/src/main/yang/odl-bgp-rib-impl-cfg.yang b/bgp/rib-impl/src/main/yang/odl-bgp-rib-impl-cfg.yang index 98c5f500a2..c84f70d14f 100644 --- a/bgp/rib-impl/src/main/yang/odl-bgp-rib-impl-cfg.yang +++ b/bgp/rib-impl/src/main/yang/odl-bgp-rib-impl-cfg.yang @@ -12,6 +12,7 @@ module odl-bgp-rib-impl-cfg { import odl-bgp-rib-spi-cfg { prefix ribspi; revision-date 2013-11-15; } import ietf-inet-types { prefix inet; revision-date 2010-09-24; } import opendaylight-md-sal-binding {prefix mdsb; revision-date 2013-10-28; } + import opendaylight-md-sal-dom {prefix sal; revision-date 2013-10-28; } import netty { prefix netty; revision-date 2013-11-19; } import config { prefix config; revision-date 2013-04-05; } import protocol-framework { prefix pf; revision-date 2014-03-13; } @@ -637,6 +638,15 @@ module odl-bgp-rib-impl-cfg { } } + container dom-data-provider { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity sal:dom-async-data-broker; + } + } + } + leaf local-as { description "Our local AS number. Needed by best selection path attribute."; type uint32; diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/AbstractRIBImplModuleTest.java b/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/AbstractRIBImplModuleTest.java index cc9e1b5ffa..ce75133e7e 100644 --- a/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/AbstractRIBImplModuleTest.java +++ b/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/AbstractRIBImplModuleTest.java @@ -111,55 +111,55 @@ public abstract class AbstractRIBImplModuleTest extends AbstractConfigTest { public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - List moduleFactories = getModuleFactories(); - super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, moduleFactories.toArray(new ModuleFactory[moduleFactories.size()]))); + final List moduleFactories = getModuleFactories(); + super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.mockedContext, moduleFactories.toArray(new ModuleFactory[moduleFactories.size()]))); - Filter mockedFilter = mock(Filter.class); - Mockito.doReturn(mockedFilter).when(mockedContext).createFilter(Mockito.anyString()); + final Filter mockedFilter = mock(Filter.class); + Mockito.doReturn(mockedFilter).when(this.mockedContext).createFilter(Mockito.anyString()); final ServiceReference emptyServiceReference = mock(ServiceReference.class, "Empty"); final ServiceReference classLoadingStrategySR = mock(ServiceReference.class, "ClassLoadingStrategy"); final ServiceReference dataProviderServiceReference = mock(ServiceReference.class, "Data Provider"); - Mockito.doReturn(mockedFilter).when(mockedContext).createFilter(Mockito.anyString()); + Mockito.doReturn(mockedFilter).when(this.mockedContext).createFilter(Mockito.anyString()); - Mockito.doNothing().when(mockedContext).addServiceListener(any(ServiceListener.class), Mockito.anyString()); - Mockito.doNothing().when(mockedContext).removeServiceListener(any(ServiceListener.class)); + Mockito.doNothing().when(this.mockedContext).addServiceListener(any(ServiceListener.class), Mockito.anyString()); + Mockito.doNothing().when(this.mockedContext).removeServiceListener(any(ServiceListener.class)); - Mockito.doNothing().when(mockedContext).addBundleListener(any(BundleListener.class)); - Mockito.doNothing().when(mockedContext).removeBundleListener(any(BundleListener.class)); + Mockito.doNothing().when(this.mockedContext).addBundleListener(any(BundleListener.class)); + Mockito.doNothing().when(this.mockedContext).removeBundleListener(any(BundleListener.class)); - Mockito.doReturn(new Bundle[] {}).when(mockedContext).getBundles(); + Mockito.doReturn(new Bundle[] {}).when(this.mockedContext).getBundles(); - Mockito.doReturn(new ServiceReference[] {}).when(mockedContext).getServiceReferences(Matchers.anyString(), Matchers.anyString()); + Mockito.doReturn(new ServiceReference[] {}).when(this.mockedContext).getServiceReferences(Matchers.anyString(), Matchers.anyString()); Mockito.doReturn("Empty reference").when(emptyServiceReference).toString(); Mockito.doReturn("Data Provider Service Reference").when(dataProviderServiceReference).toString(); Mockito.doReturn("Class loading stategy reference").when(classLoadingStrategySR).toString(); - Mockito.doReturn(emptyServiceReference).when(mockedContext).getServiceReference(any(Class.class)); - Mockito.doReturn(dataProviderServiceReference).when(mockedContext).getServiceReference(DataBroker.class); - Mockito.doReturn(classLoadingStrategySR).when(mockedContext).getServiceReference(GeneratedClassLoadingStrategy.class); + Mockito.doReturn(emptyServiceReference).when(this.mockedContext).getServiceReference(any(Class.class)); + Mockito.doReturn(dataProviderServiceReference).when(this.mockedContext).getServiceReference(DataBroker.class); + Mockito.doReturn(classLoadingStrategySR).when(this.mockedContext).getServiceReference(GeneratedClassLoadingStrategy.class); - Mockito.doReturn(mockedDataProvider).when(mockedContext).getService(dataProviderServiceReference); - Mockito.doReturn(GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy()).when(mockedContext).getService(classLoadingStrategySR); - Mockito.doReturn(null).when(mockedContext).getService(emptyServiceReference); + Mockito.doReturn(this.mockedDataProvider).when(this.mockedContext).getService(dataProviderServiceReference); + Mockito.doReturn(GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy()).when(this.mockedContext).getService(classLoadingStrategySR); + Mockito.doReturn(null).when(this.mockedContext).getService(emptyServiceReference); - Mockito.doReturn(mockedTransaction).when(mockedDataProvider).newReadWriteTransaction(); + Mockito.doReturn(this.mockedTransaction).when(this.mockedDataProvider).newReadWriteTransaction(); - Mockito.doReturn(null).when(mockedTransaction).read(Mockito.eq(LogicalDatastoreType.OPERATIONAL), any(InstanceIdentifier.class)); - Mockito.doNothing().when(mockedTransaction).put(Mockito.eq(LogicalDatastoreType.OPERATIONAL), any(InstanceIdentifier.class), any(DataObject.class)); - Mockito.doNothing().when(mockedTransaction).delete(Mockito.eq(LogicalDatastoreType.OPERATIONAL), any(InstanceIdentifier.class)); + Mockito.doReturn(null).when(this.mockedTransaction).read(Mockito.eq(LogicalDatastoreType.OPERATIONAL), any(InstanceIdentifier.class)); + Mockito.doNothing().when(this.mockedTransaction).put(Mockito.eq(LogicalDatastoreType.OPERATIONAL), any(InstanceIdentifier.class), any(DataObject.class)); + Mockito.doNothing().when(this.mockedTransaction).delete(Mockito.eq(LogicalDatastoreType.OPERATIONAL), any(InstanceIdentifier.class)); - Mockito.doReturn(mockedFuture).when(mockedTransaction).submit(); - Mockito.doReturn(TRANSACTION_NAME).when(mockedTransaction).getIdentifier(); + Mockito.doReturn(this.mockedFuture).when(this.mockedTransaction).submit(); + Mockito.doReturn(TRANSACTION_NAME).when(this.mockedTransaction).getIdentifier(); - Mockito.doReturn(null).when(mockedFuture).get(); + Mockito.doReturn(null).when(this.mockedFuture).get(); - GlobalBundleScanningSchemaServiceImpl schemaService = GlobalBundleScanningSchemaServiceImpl.createInstance(this.mockedContext); - YangContextParser parser = new YangParserImpl(); - SchemaContext context = parser.parseSources(getFilesAsByteSources(getYangModelsPaths())); - URLSchemaContextResolver mockedContextResolver = Mockito.mock(URLSchemaContextResolver.class); + final GlobalBundleScanningSchemaServiceImpl schemaService = GlobalBundleScanningSchemaServiceImpl.createInstance(this.mockedContext); + final YangContextParser parser = new YangParserImpl(); + final SchemaContext context = parser.parseSources(getFilesAsByteSources(getYangModelsPaths())); + final URLSchemaContextResolver mockedContextResolver = Mockito.mock(URLSchemaContextResolver.class); Mockito.doReturn(Optional.of(context)).when(mockedContextResolver).getSchemaContext(); final Field contextResolverField = schemaService.getClass().getDeclaredField("contextResolver"); @@ -187,8 +187,8 @@ public abstract class AbstractRIBImplModuleTest extends AbstractConfigTest { return new BundleContextServiceRegistrationHandler() { @Override public void handleServiceRegistration(final Class clazz, final Object serviceInstance, final Dictionary props) { - SchemaContextListener listener = (SchemaContextListener) serviceInstance; - YangContextParser parser = new YangParserImpl(); + final SchemaContextListener listener = (SchemaContextListener) serviceInstance; + final YangContextParser parser = new YangParserImpl(); final SchemaContext context; try { context = parser.parseSources(getFilesAsByteSources(getYangModelsPaths())); @@ -211,25 +211,26 @@ public abstract class AbstractRIBImplModuleTest extends AbstractConfigTest { } protected CommitStatus createInstance() throws Exception { - ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); + final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction(); createRIBImplModuleInstance(transaction); return transaction.commit(); } protected CommitStatus createRIBImplModuleInstance(final RibId ribId, final Long localAs, final Ipv4Address bgpId) throws Exception { - ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); + final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction(); createRIBImplModuleInstance(transaction, ribId, localAs, bgpId, createAsyncDataBrokerInstance(transaction)); return transaction.commit(); } private ObjectName createRIBImplModuleInstance(final ConfigTransactionJMXClient transaction, final RibId ribId, final Long localAs, final Ipv4Address bgpId, final ObjectName dataBroker) throws Exception { - ObjectName nameCreated = transaction.createModule(FACTORY_NAME, INSTANCE_NAME); - RIBImplModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, RIBImplModuleMXBean.class); - ObjectName reconnectObjectName = TimedReconnectStrategyModuleTest.createInstance(transaction, SESSION_RS_INSTANCE_NAME); + final ObjectName nameCreated = transaction.createModule(FACTORY_NAME, INSTANCE_NAME); + final RIBImplModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, RIBImplModuleMXBean.class); + final ObjectName reconnectObjectName = TimedReconnectStrategyModuleTest.createInstance(transaction, SESSION_RS_INSTANCE_NAME); mxBean.setSessionReconnectStrategy(reconnectObjectName); mxBean.setDataProvider(dataBroker); - ObjectName reconnectStrategyON = TimedReconnectStrategyModuleTest.createInstance(transaction, TCP_RS_INSTANCE_NAME); + mxBean.setDomDataProvider(lookupDomAsyncDataBroker(transaction)); + final ObjectName reconnectStrategyON = TimedReconnectStrategyModuleTest.createInstance(transaction, TCP_RS_INSTANCE_NAME); mxBean.setTcpReconnectStrategy(reconnectStrategyON); mxBean.setBgpDispatcher(BGPDispatcherImplModuleTest.createInstance(transaction)); mxBean.setExtensions(createRibExtensionsInstance(transaction)); @@ -260,14 +261,14 @@ public abstract class AbstractRIBImplModuleTest extends AbstractConfigTest { private static ObjectName lookupDomAsyncDataBroker(final ConfigTransactionJMXClient transaction) throws InstanceAlreadyExistsException { try { - return transaction.lookupConfigBean(DomInmemoryDataBrokerModuleFactory.NAME, DOM_ASYNC_DATA_BROKER_INSTANCE); - } catch (InstanceNotFoundException e) { + return transaction.lookupConfigBean(DomInmemoryDataBrokerModuleFactory.NAME, DOM_BROKER_INSTANCE_NAME); + } catch (final InstanceNotFoundException e) { try { - final ObjectName nameCreated = transaction.createModule(DomInmemoryDataBrokerModuleFactory.NAME, DOM_ASYNC_DATA_BROKER_INSTANCE); + final ObjectName nameCreated = transaction.createModule(DomInmemoryDataBrokerModuleFactory.NAME, DOM_BROKER_INSTANCE_NAME); final DomInmemoryDataBrokerModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, DomInmemoryDataBrokerModuleMXBean.class); mxBean.setSchemaService(lookupSchemaServiceInstance(transaction)); return nameCreated; - } catch (InstanceAlreadyExistsException e1) { + } catch (final InstanceAlreadyExistsException e1) { throw new IllegalStateException(e1); } } @@ -276,10 +277,10 @@ public abstract class AbstractRIBImplModuleTest extends AbstractConfigTest { private static ObjectName lookupMappingServiceInstance(final ConfigTransactionJMXClient transaction) { try { return transaction.lookupConfigBean(RuntimeMappingModuleFactory.NAME, RuntimeMappingModuleFactory.SINGLETON_NAME); - } catch (InstanceNotFoundException e) { + } catch (final InstanceNotFoundException e) { try { return transaction.createModule(RuntimeMappingModuleFactory.NAME, RuntimeMappingModuleFactory.SINGLETON_NAME); - } catch (InstanceAlreadyExistsException e1) { + } catch (final InstanceAlreadyExistsException e1) { throw new IllegalStateException(e1); } } @@ -288,23 +289,23 @@ public abstract class AbstractRIBImplModuleTest extends AbstractConfigTest { private static ObjectName lookupSchemaServiceInstance(final ConfigTransactionJMXClient transaction) { try { return transaction.lookupConfigBean(SchemaServiceImplSingletonModuleFactory.NAME, SchemaServiceImplSingletonModuleFactory.SINGLETON_NAME); - } catch (InstanceNotFoundException e) { + } catch (final InstanceNotFoundException e) { try { return transaction.createModule(SchemaServiceImplSingletonModuleFactory.NAME, SchemaServiceImplSingletonModuleFactory.SINGLETON_NAME); - } catch (InstanceAlreadyExistsException e1) { + } catch (final InstanceAlreadyExistsException e1) { throw new IllegalStateException(e1); } } } private ObjectName createRibExtensionsInstance(final ConfigTransactionJMXClient transaction) throws InstanceAlreadyExistsException { - ObjectName nameCreated = transaction.createModule(RIBExtensionsImplModuleFactory.NAME, RIB_EXTENSIONS_INSTANCE_NAME); + final ObjectName nameCreated = transaction.createModule(RIBExtensionsImplModuleFactory.NAME, RIB_EXTENSIONS_INSTANCE_NAME); transaction.newMXBeanProxy(nameCreated, RIBExtensionsImplModuleMXBean.class); return nameCreated; } public List getYangModelsPaths() { - List paths = Lists.newArrayList("/META-INF/yang/bgp-rib.yang", "/META-INF/yang/ietf-inet-types.yang", + final List paths = Lists.newArrayList("/META-INF/yang/bgp-rib.yang", "/META-INF/yang/ietf-inet-types.yang", "/META-INF/yang/bgp-message.yang", "/META-INF/yang/bgp-multiprotocol.yang", "/META-INF/yang/bgp-types.yang", "/META-INF/yang/network-concepts.yang", "/META-INF/yang/ieee754.yang"); return paths; @@ -313,9 +314,9 @@ public abstract class AbstractRIBImplModuleTest extends AbstractConfigTest { // TODO move back to AbstractConfigTest private static Collection getFilesAsByteSources(final List paths) { final Collection resources = new ArrayList<>(); - List failedToFind = new ArrayList<>(); - for (String path : paths) { - URL url = AbstractRIBImplModuleTest.class.getResource(path); + final List failedToFind = new ArrayList<>(); + for (final String path : paths) { + final URL url = AbstractRIBImplModuleTest.class.getResource(path); if (url == null) { failedToFind.add(path); } else { diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/ApplicationPeerTest.java b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/ApplicationPeerTest.java index 995d486151..3a6ea4fe6f 100644 --- a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/ApplicationPeerTest.java +++ b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/ApplicationPeerTest.java @@ -45,6 +45,7 @@ import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl; import org.opendaylight.protocol.bgp.rib.impl.spi.BGPDispatcher; import org.opendaylight.protocol.bgp.rib.spi.AdjRIBsIn; @@ -128,6 +129,9 @@ public class ApplicationPeerTest { @Mock DataBroker dps; + @Mock + DOMDataBroker dom; + @Mock WriteTransaction transWrite; @@ -209,7 +213,7 @@ public class ApplicationPeerTest { } }).when(this.transWrite).delete(Mockito.eq(LogicalDatastoreType.OPERATIONAL), Mockito.any(InstanceIdentifier.class)); this.r = new RIBImpl(new RibId("test"), new AsNumber(5L), new Ipv4Address("127.0.0.1"), - context , this.dispatcher, this.tcpStrategyFactory, this.tcpStrategyFactory, this.dps, localTables); + context , this.dispatcher, this.tcpStrategyFactory, this.tcpStrategyFactory, this.dps, this.dom, localTables); this.peer = new ApplicationPeer(new ApplicationRibId("t"), new Ipv4Address("127.0.0.1"), this.r); final ReadOnlyTransaction readTx = Mockito.mock(ReadOnlyTransaction.class); Mockito.doReturn(readTx).when(this.dps).newReadOnlyTransaction(); diff --git a/bgp/topology-provider/src/test/java/org/opendaylight/bgpcep/bgp/topology/provider/ParserToSalTest.java b/bgp/topology-provider/src/test/java/org/opendaylight/bgpcep/bgp/topology/provider/ParserToSalTest.java index 8df98253f6..8c07f7d8fe 100644 --- a/bgp/topology-provider/src/test/java/org/opendaylight/bgpcep/bgp/topology/provider/ParserToSalTest.java +++ b/bgp/topology-provider/src/test/java/org/opendaylight/bgpcep/bgp/topology/provider/ParserToSalTest.java @@ -105,7 +105,7 @@ public class ParserToSalTest extends AbstractDataBrokerTest { } private void runTestWithTables(final List tables) { - final RIBImpl rib = new RIBImpl(new RibId(TEST_RIB_ID), new AsNumber(72L), new Ipv4Address("127.0.0.1"), this.ext, this.dispatcher, this.tcpStrategyFactory, this.sessionStrategy, getDataBroker(), tables); + final RIBImpl rib = new RIBImpl(new RibId(TEST_RIB_ID), new AsNumber(72L), new Ipv4Address("127.0.0.1"), this.ext, this.dispatcher, this.tcpStrategyFactory, this.sessionStrategy, getDataBroker(), getDomBroker(), tables); final BGPPeer peer = new BGPPeer("peer-" + this.mock.toString(), rib); final ListenerRegistration reg = this.mock.registerUpdateListener(peer); -- 2.36.6